mammoth-cli 2.2.75__tar.gz → 2.2.77__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 (287) hide show
  1. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/PKG-INFO +2 -2
  2. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/__init__.py +1 -1
  3. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/app.py +24 -1
  4. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/capabilities.md +1 -1
  5. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/command-index.md +3 -3
  6. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dataset.md +50 -0
  7. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/view.md +20 -0
  8. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/workflow.md +1 -1
  9. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/operations.md +36 -9
  10. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/dashboards.md +6 -2
  11. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/transforms.md +5 -0
  12. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/capability.py +2 -42
  13. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/dashboard.py +51 -10
  14. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/dataset.py +253 -1
  15. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/help_summaries.json +106 -99
  16. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/registry.py +7 -0
  17. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/schema.py +89 -8
  18. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/view.py +165 -45
  19. mammoth_cli-2.2.77/mammoth_cli/commands/view_drivers.py +351 -0
  20. mammoth_cli-2.2.77/mammoth_cli/commands/view_forecast.py +335 -0
  21. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/view_profile.py +10 -2
  22. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/services/board_values.py +38 -1
  23. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/services/command_contract.py +30 -0
  24. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/services/dashboard_review.py +27 -4
  25. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/services/data_profile.py +43 -0
  26. mammoth_cli-2.2.77/mammoth_cli/services/period_analysis.py +293 -0
  27. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/services/positionals.py +56 -0
  28. mammoth_cli-2.2.77/mammoth_cli/services/schema_diff.py +117 -0
  29. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/pyproject.toml +2 -2
  30. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/commands/dataset.yaml +230 -0
  31. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/commands/view.yaml +131 -1
  32. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/commands/workflow.yaml +2 -2
  33. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/edits-target.source.yaml +2 -0
  34. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/sdk-catalog.source.yaml +2 -2
  35. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/sdk-methods.yaml +48 -0
  36. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/.gitignore +0 -0
  37. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/LICENSE +0 -0
  38. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/README.md +0 -0
  39. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/__main__.py +0 -0
  40. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/SKILL.md +0 -0
  41. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/about-mammoth.md +0 -0
  42. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/auth.md +0 -0
  43. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/capabilities-misc.md +0 -0
  44. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/activity.md +0 -0
  45. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/addon.md +0 -0
  46. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/agent.md +0 -0
  47. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/ai.md +0 -0
  48. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/annotation.md +0 -0
  49. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/auth.md +0 -0
  50. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/automation.md +0 -0
  51. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/batch.md +0 -0
  52. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/billing.md +0 -0
  53. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/browse.md +0 -0
  54. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/calc.md +0 -0
  55. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/capability.md +0 -0
  56. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/client-app.md +0 -0
  57. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/collection.md +0 -0
  58. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/completion.md +0 -0
  59. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/config.md +0 -0
  60. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/connector.md +0 -0
  61. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/context.md +0 -0
  62. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dashboard-qa.md +0 -0
  63. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dashboard-style.md +0 -0
  64. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dashboard-template.md +0 -0
  65. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dashboard.md +0 -0
  66. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/data-app.md +0 -0
  67. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/doctor.md +0 -0
  68. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/external-key.md +0 -0
  69. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/file.md +0 -0
  70. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/folder.md +0 -0
  71. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/job.md +0 -0
  72. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/link.md +0 -0
  73. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/log.md +0 -0
  74. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/notification.md +0 -0
  75. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/parameter.md +0 -0
  76. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/project.md +0 -0
  77. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/report.md +0 -0
  78. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/resolve.md +0 -0
  79. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/schedule.md +0 -0
  80. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/schema.md +0 -0
  81. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/skill.md +0 -0
  82. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/snippet.md +0 -0
  83. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/support.md +0 -0
  84. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/template.md +0 -0
  85. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/token.md +0 -0
  86. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/trash.md +0 -0
  87. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/upgrade.md +0 -0
  88. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/user.md +0 -0
  89. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/version.md +0 -0
  90. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/view-transform.md +0 -0
  91. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/webhook.md +0 -0
  92. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/workspace.md +0 -0
  93. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/handoff.md +0 -0
  94. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/input.md +0 -0
  95. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/jobs-drafts.md +0 -0
  96. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/machine-output.md +0 -0
  97. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/auth-scope.md +0 -0
  98. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/build-an-agent.md +0 -0
  99. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/cleanup.md +0 -0
  100. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/database-import.md +0 -0
  101. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/end-to-end.md +0 -0
  102. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/exports.md +0 -0
  103. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/file-import.md +0 -0
  104. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/index.md +0 -0
  105. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/need-action.md +0 -0
  106. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/resources.md +0 -0
  107. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/rest-api-import.md +0 -0
  108. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/scheduling.md +0 -0
  109. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/typed-etl-discovery.md +0 -0
  110. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/recovery.md +0 -0
  111. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/report-checklist.md +0 -0
  112. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/retention.md +0 -0
  113. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/safety.md +0 -0
  114. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/bundled_skill/mammoth-cli/references/task-start.md +0 -0
  115. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/__init__.py +0 -0
  116. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/_lazy.py +0 -0
  117. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/activity.py +0 -0
  118. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/addon.py +0 -0
  119. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/agent.py +0 -0
  120. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/ai.py +0 -0
  121. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/annotation.py +0 -0
  122. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/auth.py +0 -0
  123. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/automation.py +0 -0
  124. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/batch.py +0 -0
  125. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/billing.py +0 -0
  126. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/browse.py +0 -0
  127. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/calc.py +0 -0
  128. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/client_app.py +0 -0
  129. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/completion.py +0 -0
  130. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/config.py +0 -0
  131. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/connector.py +0 -0
  132. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/context.py +0 -0
  133. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/data_app.py +0 -0
  134. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/doctor.py +0 -0
  135. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/external_key.py +0 -0
  136. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/file.py +0 -0
  137. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/folder.py +0 -0
  138. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/job.py +0 -0
  139. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/link.py +0 -0
  140. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/notification.py +0 -0
  141. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/parameter.py +0 -0
  142. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/project.py +0 -0
  143. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/report.py +0 -0
  144. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/resolve.py +0 -0
  145. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/schedule.py +0 -0
  146. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/skill.py +0 -0
  147. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/snippet.py +0 -0
  148. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/support.py +0 -0
  149. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/template.py +0 -0
  150. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/trash.py +0 -0
  151. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/upgrade.py +0 -0
  152. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/user.py +0 -0
  153. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/view_explore.py +0 -0
  154. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/view_ops.py +0 -0
  155. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/webhook.py +0 -0
  156. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/workflow.py +0 -0
  157. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/commands/workspace.py +0 -0
  158. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/context/__init__.py +0 -0
  159. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/context/credentials.py +0 -0
  160. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/context/endpoint.py +0 -0
  161. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/context/keyring_backend.py +0 -0
  162. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/context/oauth.py +0 -0
  163. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/context/profiles.py +0 -0
  164. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/context/resolver.py +0 -0
  165. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/contracts/__init__.py +0 -0
  166. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/contracts/auth.py +0 -0
  167. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/embed.py +0 -0
  168. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/errors/__init__.py +0 -0
  169. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/errors/envelope.py +0 -0
  170. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/manifest/__init__.py +0 -0
  171. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/manifest/loader.py +0 -0
  172. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/messages/__init__.py +0 -0
  173. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/output/__init__.py +0 -0
  174. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/output/envelope.py +0 -0
  175. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/output/normalize.py +0 -0
  176. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/output/policy.py +0 -0
  177. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/output/progress.py +0 -0
  178. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/output/render.py +0 -0
  179. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/py.typed +0 -0
  180. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/runtime/__init__.py +0 -0
  181. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/runtime/confirm.py +0 -0
  182. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/runtime/dataset_health.py +0 -0
  183. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/runtime/dryrun.py +0 -0
  184. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/runtime/dryrun_targets.py +0 -0
  185. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/runtime/embedded.py +0 -0
  186. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/runtime/executor.py +0 -0
  187. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/runtime/input_loader.py +0 -0
  188. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/runtime/intent_only.py +0 -0
  189. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/runtime/invocation.py +0 -0
  190. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/runtime/locked_files.py +0 -0
  191. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/runtime/new_data.py +0 -0
  192. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/runtime/opens.py +0 -0
  193. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/runtime/options.py +0 -0
  194. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/runtime/parents.py +0 -0
  195. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/runtime/runlog.py +0 -0
  196. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/runtime/session.py +0 -0
  197. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/runtime/state.py +0 -0
  198. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/runtime/strict.py +0 -0
  199. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/runtime/updates.py +0 -0
  200. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/runtime/validate.py +0 -0
  201. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/runtime/verify.py +0 -0
  202. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/services/__init__.py +0 -0
  203. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/services/append_blank_columns.py +0 -0
  204. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/services/argspec.py +0 -0
  205. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/services/coerce.py +0 -0
  206. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/services/conditional_format.py +0 -0
  207. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/services/conditions.py +0 -0
  208. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/services/dashboard_filters.py +0 -0
  209. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/services/dashboard_pages.py +0 -0
  210. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/services/data_quality.py +0 -0
  211. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/services/dispatch.py +0 -0
  212. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/services/explore_card_edit.py +0 -0
  213. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/services/explore_cards.py +0 -0
  214. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/services/explore_to_figure.py +0 -0
  215. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/services/explore_to_image.py +0 -0
  216. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/services/factory.py +0 -0
  217. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/services/folder_ids.py +0 -0
  218. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/services/input_fields.py +0 -0
  219. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/services/job_outcome.py +0 -0
  220. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/services/listing.py +0 -0
  221. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/services/local_time.py +0 -0
  222. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/services/mapping.py +0 -0
  223. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/services/openapi_types.py +0 -0
  224. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/services/protocol.py +0 -0
  225. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/services/read_queries.py +0 -0
  226. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/services/sdk_service.py +0 -0
  227. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/services/sql_check.py +0 -0
  228. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/services/stored_stats.py +0 -0
  229. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/services/testing.py +0 -0
  230. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/services/text_dates.py +0 -0
  231. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/services/type_system.py +0 -0
  232. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/services/view_analysis.py +0 -0
  233. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/services/view_variants.py +0 -0
  234. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/services/write_impact.py +0 -0
  235. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/skills/__init__.py +0 -0
  236. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/skills/installer.py +0 -0
  237. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/skills/steering.py +0 -0
  238. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/mammoth_cli/testing.py +0 -0
  239. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/commands/activity.yaml +0 -0
  240. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/commands/addon.yaml +0 -0
  241. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/commands/agent.yaml +0 -0
  242. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/commands/ai.yaml +0 -0
  243. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/commands/annotation.yaml +0 -0
  244. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/commands/auth.yaml +0 -0
  245. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/commands/automation.yaml +0 -0
  246. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/commands/batch.yaml +0 -0
  247. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/commands/billing.yaml +0 -0
  248. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/commands/browse.yaml +0 -0
  249. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/commands/calc.yaml +0 -0
  250. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/commands/capability.yaml +0 -0
  251. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/commands/client-app.yaml +0 -0
  252. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/commands/collection.yaml +0 -0
  253. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/commands/completion.yaml +0 -0
  254. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/commands/config.yaml +0 -0
  255. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/commands/connector.yaml +0 -0
  256. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/commands/context.yaml +0 -0
  257. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/commands/dashboard.yaml +0 -0
  258. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/commands/data-app.yaml +0 -0
  259. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/commands/doctor.yaml +0 -0
  260. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/commands/external-key.yaml +0 -0
  261. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/commands/file.yaml +0 -0
  262. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/commands/folder.yaml +0 -0
  263. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/commands/job.yaml +0 -0
  264. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/commands/link.yaml +0 -0
  265. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/commands/log.yaml +0 -0
  266. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/commands/notification.yaml +0 -0
  267. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/commands/parameter.yaml +0 -0
  268. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/commands/project.yaml +0 -0
  269. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/commands/report.yaml +0 -0
  270. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/commands/resolve.yaml +0 -0
  271. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/commands/schedule.yaml +0 -0
  272. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/commands/schema.yaml +0 -0
  273. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/commands/skill.yaml +0 -0
  274. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/commands/snippet.yaml +0 -0
  275. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/commands/support.yaml +0 -0
  276. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/commands/template.yaml +0 -0
  277. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/commands/token.yaml +0 -0
  278. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/commands/trash.yaml +0 -0
  279. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/commands/upgrade.yaml +0 -0
  280. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/commands/user.yaml +0 -0
  281. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/commands/version.yaml +0 -0
  282. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/commands/webhook.yaml +0 -0
  283. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/commands/workspace.yaml +0 -0
  284. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/openapi-operations.yaml +0 -0
  285. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/manifests/schema-v1.json +0 -0
  286. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/openapi/metadata.json +0 -0
  287. {mammoth_cli-2.2.75 → mammoth_cli-2.2.77}/spec/openapi/openapi.json +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mammoth-cli
3
- Version: 2.2.75
3
+ Version: 2.2.77
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
@@ -18,7 +18,7 @@ Classifier: Topic :: Software Development :: Libraries :: Python Modules
18
18
  Requires-Python: <3.15,>=3.12
19
19
  Requires-Dist: jsonschema>=4.20
20
20
  Requires-Dist: keyring<26,>=25.7
21
- Requires-Dist: mammoth-io<0.9,>=0.8.39
21
+ Requires-Dist: mammoth-io<0.9,>=0.8.41
22
22
  Requires-Dist: platformdirs<5,>=4.10
23
23
  Requires-Dist: pydantic<3,>=2.12.5
24
24
  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.2.75"
9
+ __version__ = "2.2.77"
10
10
 
11
11
  # The versioned machine output envelope contract.
12
12
  SCHEMA_VERSION = 1
@@ -14,6 +14,7 @@ positionals and options are added per family as each handler is implemented.
14
14
 
15
15
  from __future__ import annotations
16
16
 
17
+ import importlib
17
18
  import inspect
18
19
  import json
19
20
  import re
@@ -202,6 +203,7 @@ _SUBGROUP_DESCRIPTIONS = {
202
203
  "dashboard video": "Export a dashboard as a video.",
203
204
  "data-app user": "List and remove the users of a data app.",
204
205
  "dataset broken-rows": "List and resolve rows that failed to load.",
206
+ "dataset definition": "List, save and remove what terms mean for a dataset.",
205
207
  "dataset file-settings": "Read, update and undo a dataset's file settings.",
206
208
  "dataset interpretation": "Preview and confirm how a file is interpreted.",
207
209
  "parameter group": "Create, list, update, reorder and delete parameter groups.",
@@ -1178,7 +1180,8 @@ def _dry_run(handler: Handler, invocation: Invocation) -> tuple[Any, dict[str, A
1178
1180
 
1179
1181
 
1180
1182
  #: One-line help for commands that share the generic ``generated_dashboard`` handler, whose
1181
- #: docstring describes the dispatch, not the command.
1183
+ #: docstring describes the dispatch, not the command. A command listed here overrides
1184
+ #: the SDK method summary :func:`_sdk_method_summary` gives every other generated command.
1182
1185
  _GENERATED_SUMMARIES = {
1183
1186
  "auth.connected-apps.list": "List the apps connected to your account; each id is a grant id.",
1184
1187
  "auth.connected-apps.revoke": (
@@ -1246,6 +1249,24 @@ _GENERATED_SUMMARIES = {
1246
1249
  }
1247
1250
 
1248
1251
 
1252
+ def _sdk_method_summary(command_id: str) -> str:
1253
+ """First docstring line of the SDK method a generated command calls.
1254
+
1255
+ The generic ``generated_dashboard`` handler's own docstring describes the
1256
+ dispatch, so these commands take their help from the SDK method instead.
1257
+ Raises when the manifest has no such method or it has no docstring.
1258
+ """
1259
+ record = command_by_id(command_id)
1260
+ if record is None:
1261
+ raise LookupError(f"{command_id}: no manifest record")
1262
+ module_name, class_name, method_name = str(record["sdk_symbol"]).rsplit(".", 2)
1263
+ method = getattr(getattr(importlib.import_module(module_name), class_name), method_name)
1264
+ doc = inspect.getdoc(method)
1265
+ if not doc:
1266
+ raise LookupError(f"{command_id}: {record['sdk_symbol']} has no docstring")
1267
+ return doc.splitlines()[0].strip().replace("``", "'")
1268
+
1269
+
1249
1270
  def live_command_summary(command_id: str) -> str | None:
1250
1271
  """The backing handler's docstring first line, the lead of a command's help.
1251
1272
 
@@ -1255,6 +1276,8 @@ def live_command_summary(command_id: str) -> str | None:
1255
1276
  if command_id in _GENERATED_SUMMARIES:
1256
1277
  return _GENERATED_SUMMARIES[command_id]
1257
1278
  handler = HANDLERS.get(command_id) or BESPOKE.get(command_id)
1279
+ if getattr(handler, "__name__", None) == "generated_dashboard":
1280
+ return _sdk_method_summary(command_id)
1258
1281
  doc = inspect.getdoc(handler) if handler is not None else None
1259
1282
  if not doc:
1260
1283
  return None
@@ -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 714 commands. 516 of them bind one of the 545 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, 1 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. Use an untried command normally: confirm a write with the user first, check its result with a read afterwards, and never refuse a command only because it is untried.
4
+ The CLI publishes 747 commands. 516 of them bind one of the 545 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, 1 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. Use an untried command normally: confirm a write with the user first, check its result with a read afterwards, and never refuse a command only because it is untried.
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 740; 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 747; 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
 
@@ -27,7 +27,7 @@ Load only the applicable domain file:
27
27
  - [dashboard-style](commands/dashboard-style.md) — 10 published commands
28
28
  - [dashboard](commands/dashboard.md) — 108 published commands
29
29
  - [data-app](commands/data-app.md) — 12 published commands
30
- - [dataset](commands/dataset.md) — 22 published commands
30
+ - [dataset](commands/dataset.md) — 27 published commands
31
31
  - [doctor](commands/doctor.md) — 1 published commands
32
32
  - [external-key](commands/external-key.md) — 4 published commands
33
33
  - [file](commands/file.md) — 11 published commands
@@ -52,7 +52,7 @@ Load only the applicable domain file:
52
52
  - [user](commands/user.md) — 8 published commands
53
53
  - [version](commands/version.md) — 1 published commands
54
54
  - [view-transform](commands/view-transform.md) — 34 published commands
55
- - [view](commands/view.md) — 101 published commands
55
+ - [view](commands/view.md) — 103 published commands
56
56
  - [webhook](commands/webhook.md) — 7 published commands
57
57
  - [workflow](commands/workflow.md) — 20 published commands
58
58
  - [workspace](commands/workspace.md) — 31 published commands
@@ -52,6 +52,16 @@ Execution is unavailable for the current contract and returns `unsupported_contr
52
52
 
53
53
  Known restriction: BLOCKED[B07 DATASET_PATCH_UNTYPED]; reserved, not registered.
54
54
 
55
+ ### `dataset.column-stats`
56
+
57
+ Run: `mammoth dataset column-stats`. Exact input fields: `mammoth schema get dataset.column-stats`.
58
+
59
+ Example: `mammoth dataset column-stats`. Placeholders are illustrative; resolve IDs and input from observed reads.
60
+
61
+ Result: `DatasetColumnStatsResult`; mutation `read`, confirmation `none`, wait policy `not_async`.
62
+
63
+ Status on release: untried; no live run recorded.
64
+
55
65
  ### `dataset.create`
56
66
 
57
67
  Run: `mammoth dataset create`. Exact input fields: `mammoth schema get dataset.create`.
@@ -82,6 +92,36 @@ Result: `DatasetDataResult`; mutation `read`, confirmation `none`, wait policy `
82
92
 
83
93
  Status on release: ran once on CLI 1.1.10 — Bounded retained-resource read with published CLI 1.1.10 and explicit timeout=30,poll_interval=1 returned 100 rows and five headers for dataset 28. No Full claim: retained ETL-owned resource and no option/error/lifecycle matrix beyond this read.
84
94
 
95
+ ### `dataset.definition.add`
96
+
97
+ Run: `mammoth dataset definition add`. Exact input fields: `mammoth schema get dataset.definition.add`.
98
+
99
+ Example: `mammoth dataset definition add 123 --input '{"term": "late", "definition": "delivered more than 5 days after shipped_date"}'`. Illustrative only: append `--yes --confirm <EXACT_TARGET>` after observing the target.
100
+
101
+ Result: `DatasetDefinitionAddResult`; mutation `benign_mutation`, confirmation `confirm_target`, wait policy `not_async`.
102
+
103
+ Status on release: untried; no live run recorded.
104
+
105
+ ### `dataset.definition.list`
106
+
107
+ Run: `mammoth dataset definition list`. Exact input fields: `mammoth schema get dataset.definition.list`.
108
+
109
+ Example: `mammoth dataset definition list 123`. Placeholders are illustrative; resolve IDs and input from observed reads.
110
+
111
+ Result: `DatasetDefinitionListResult`; mutation `read`, confirmation `none`, wait policy `not_async`.
112
+
113
+ Status on release: untried; no live run recorded.
114
+
115
+ ### `dataset.definition.remove`
116
+
117
+ Run: `mammoth dataset definition remove`. Exact input fields: `mammoth schema get dataset.definition.remove`.
118
+
119
+ Example: `mammoth dataset definition remove 123 a1b2c3d4`. Illustrative only: append `--yes` after observing an owned target.
120
+
121
+ Result: `DatasetDefinitionRemoveResult`; mutation `benign_mutation`, confirmation `prompt_or_yes`, wait policy `not_async`.
122
+
123
+ Status on release: untried; no live run recorded.
124
+
85
125
  ### `dataset.delete`
86
126
 
87
127
  Run: `mammoth dataset delete`. Exact input fields: `mammoth schema get dataset.delete`.
@@ -192,6 +232,16 @@ Result: `DatasetRestoreResult`; mutation `benign_mutation`, confirmation `none`,
192
232
 
193
233
  Status on release: ran once on CLI 2.0.14 — write sweep 2026-09-18: exit 0 on release with CLI 2.0.14. job 312 restore_datasource -> status success. dataset list --project 21 confirms dataset 49 (name 'stores.csv 2') is back and visible alongside 48. Single invocation only.
194
234
 
235
+ ### `dataset.schema-diff`
236
+
237
+ Run: `mammoth dataset schema-diff`. Exact input fields: `mammoth schema get dataset.schema-diff`.
238
+
239
+ Example: `mammoth dataset schema-diff 10 11`. Placeholders are illustrative; resolve IDs and input from observed reads.
240
+
241
+ Result: `DatasetSchemaDiffResult`; mutation `read`, confirmation `none`, wait policy `not_async`.
242
+
243
+ Status on release: untried; no live run recorded.
244
+
195
245
  ### `dataset.search`
196
246
 
197
247
  Run: `mammoth dataset search`. Exact input fields: `mammoth schema get dataset.search`.
@@ -252,6 +252,16 @@ Result: `ViewDataCompareResult`; mutation `read`, confirmation `none`, wait poli
252
252
 
253
253
  Status on release: untried; no live run recorded.
254
254
 
255
+ ### `view.data.drivers`
256
+
257
+ Run: `mammoth view data drivers`. Exact input fields: `mammoth schema get view.data.drivers`.
258
+
259
+ Example: `mammoth view data drivers 123 --input '{"measure": {"column": "revenue", "function": "SUM"}, "date_column": "sale_date", "compare": ["2026-07", "2026-08"], "by": ["store", "category"]}'`. Placeholders are illustrative; resolve IDs and input from observed reads.
260
+
261
+ Result: `ViewDataDriversResult`; mutation `read`, confirmation `none`, wait policy `not_async`.
262
+
263
+ Status on release: untried; no live run recorded.
264
+
255
265
  ### `view.data.explore`
256
266
 
257
267
  Run: `mammoth view data explore`. Exact input fields: `mammoth schema get view.data.explore`.
@@ -262,6 +272,16 @@ Result: `ViewDataExploreResult`; mutation `read`, confirmation `none`, wait poli
262
272
 
263
273
  Status on release: untried; no live run recorded.
264
274
 
275
+ ### `view.data.forecast`
276
+
277
+ Run: `mammoth view data forecast`. Exact input fields: `mammoth schema get view.data.forecast`.
278
+
279
+ Example: `mammoth view data forecast 123 --input '{"measure": {"column": "revenue", "function": "SUM"}, "date_column": "sale_date", "unit": "month", "periods": 2}'`. Placeholders are illustrative; resolve IDs and input from observed reads.
280
+
281
+ Result: `ViewDataForecastResult`; mutation `read`, confirmation `none`, wait policy `not_async`.
282
+
283
+ Status on release: untried; no live run recorded.
284
+
265
285
  ### `view.data.get`
266
286
 
267
287
  Run: `mammoth view data get`. Exact input fields: `mammoth schema get view.data.get`.
@@ -66,7 +66,7 @@ Status on release: untried; no live run recorded.
66
66
 
67
67
  Run: `mammoth workflow canvas`. Exact input fields: `mammoth schema get workflow.canvas`.
68
68
 
69
- Example: `mammoth workflow canvas 12 --input '{"canvas_state": {"proposed_changes": [{"op": "add_view", "dataset_id": 415, "name": "Urgent tickets", "ref": "urgent"}, {"op": "send_to_new_dataset", "dataset_id": 415, "view_ref": "urgent", "name": "Urgent tickets by team"}]}}'`. Placeholders are illustrative; resolve IDs and input from observed reads.
69
+ Example: `mammoth workflow canvas 12 --input '{"canvas_state": {"proposed_changes": [{"op": "add_view", "dataset_id": 415, "name": "Urgent tickets", "ref": "urgent"}, {"op": "add_step", "view_ref": "urgent", "transform": "filter", "params": {"condition": {"column": "Priority", "operator": "EQ", "value": "Urgent"}}, "label": "Keep urgent tickets"}, {"op": "send_to_new_dataset", "dataset_id": 415, "view_ref": "urgent", "name": "Urgent tickets by team"}]}}'`. Placeholders are illustrative; resolve IDs and input from observed reads.
70
70
 
71
71
  Result: `WorkflowCanvasResult`; mutation `benign_mutation`, confirmation `none`, wait policy `not_async`.
72
72
 
@@ -44,6 +44,18 @@ returns the project's datasets whose name, column names or sampled column
44
44
  values contain TERM, each with the matched column and value. `dataset find`
45
45
  and `browse` search match names only. A `browse` search hit carries `dataset_id` or `view_id`: use those,
46
46
  never the tree `id`.
47
+ To check missing values or blanks across a project's datasets, run
48
+ `dataset column-stats` once instead of profiling each view: it returns every
49
+ dataset's columns with their blank count and share, type and distinct count,
50
+ from stats stored at the last load or pipeline run.
51
+ When the user states what a term means for a dataset ("late means delivered
52
+ more than 5 days after shipped_date"), save it with
53
+ `dataset definition add DATASET_ID --input '{"term": "...", "definition": "..."}'`,
54
+ written in the dataset's real column names. A definition is shared by
55
+ everyone's chats on that dataset, so the save needs
56
+ `--yes --confirm DATASET_ID`, and a definition for an existing term replaces
57
+ it. Do not save one for a one-off question. `dataset definition list` and
58
+ `dataset definition remove DATASET_ID DEFINITION_ID` read and drop them.
47
59
 
48
60
  ```bash
49
61
  mammoth capability find "transform"
@@ -130,16 +142,19 @@ NAME --input '{"seed_datasource_id": ROOT_DATASET_ID}'`, which returns its
130
142
  record id. `workflow cleanup` deletes the project's orphaned skeleton
131
143
  ("ghost") workflows (destructive; needs `--yes`).
132
144
 
133
- To only *suggest* a workflow's shape for the user to review, use `workflow
145
+ To only *suggest* changes to a workflow for the user to review, use `workflow
134
146
  canvas WORKFLOW_ID --input '{"canvas_state": {"proposed_changes": [...]}}'`.
135
- Nothing is built until the user presses Save on the Workflows canvas; tell
136
- them the changes are waiting there. Changes are `add_view`, `rename_view`,
137
- `trash_view`, `rename_dataset`, `trash_dataset`, `send_to_new_dataset`,
138
- `send_to_dataset`, `join` and `export` (fields per op: `schema get
139
- workflow.canvas`). A later change in the same call can point at an earlier
140
- one: give the earlier change a `ref`, then use `view_ref`, `dataset_ref` or
141
- `target_dataset_ref` instead of an id. It cannot add filters, calculations or
142
- other tasks; if the request needs those, build it with `view` commands.
147
+ Nothing is built until the user presses Save on the Workflows canvas, which
148
+ builds every change in flow order; tell them the changes are waiting there.
149
+ Changes are `add_view`, `rename_view`, `trash_view`, `rename_dataset`,
150
+ `trash_dataset`, `send_to_new_dataset`, `send_to_dataset`, `join`, `export`,
151
+ and, for the steps inside a view, `add_step`, `update_step` and `remove_step`
152
+ (fields per op: `schema get workflow.canvas`). A later change in the same call
153
+ can point at an earlier one: give the earlier change a `ref`, then use
154
+ `view_ref`, `dataset_ref` or `target_dataset_ref` instead of an id. Propose the
155
+ filters, calculations and other tasks a view needs as `add_step` changes in the
156
+ same call (`transform` is a `view transform` kind, `params` its `--input`),
157
+ never as `view` commands run afterwards.
143
158
 
144
159
  Draft mode is server-side batching for view pipeline edits. Enter, inspect
145
160
  status, submit, and verify pipeline state; discard only with the required
@@ -158,6 +173,18 @@ applied.
158
173
  put a card on a dashboard, say it to `dashboard chat edit`. Figures
159
174
  from `explore` and `view data aggregate` are rounded for display (2
160
175
  decimals; 4 below 1); `view data compare` keeps full precision.
176
+ - "Why did revenue drop from July to August", "what drove the change": one
177
+ `view data drivers VIEW_ID` call, not a series of aggregates. It returns
178
+ each period's total and row count, the change, whether it came from volume
179
+ or value per row, and per `by` column the groups that moved most with their
180
+ signed `share_of_change`; `partial_period` names a period the data does not
181
+ cover to its end.
182
+ - "Forecast", "what will revenue be in October": `view data forecast
183
+ VIEW_ID` (a linear trend over the complete months, quarters or weeks, with a
184
+ 95% range; seasonal only with two full cycles). A last period the data does
185
+ not cover to its end is left out and reported as `excluded_partial`, and it
186
+ is the first period forecast: for October with data ending mid-September,
187
+ pass `periods` 2. Never scale a partial period up by its days.
161
188
  - "Who changed X": `activity list` (a change list of time, user, action and a
162
189
  `path` naming the dataset and view). Filter with `resource_id` in the log's
163
190
  typed form, `dataview_<id>` or `datasource_<id>` (a bare number matches
@@ -103,8 +103,9 @@ mammoth view transform math VIEW_ID --project PROJECT_ID \
103
103
  revenue. Say how many there are in your report.
104
104
  - A generate or edit result may carry `deliverable_check`: `money_not_shown`
105
105
  (with the `math` command in `fix`), `unit_price_summed`,
106
- `columns_not_on_dashboard` (view columns added after the dashboard was made)
107
- and one `blank_values` entry for each column on the board that has blanks.
106
+ `columns_not_on_dashboard` (view columns added after the dashboard was made),
107
+ `count_titled_as_rate` (a card or tile counts rows, but its title reads as a
108
+ rate) and one `blank_values` entry for each column on the board that has blanks.
108
109
  Fix each warning (add the column, then ask again in words), or say in your
109
110
  report why you kept it.
110
111
 
@@ -168,6 +169,9 @@ the user to use Download PDF in the app; never retry with `{"data": {}}`.
168
169
  not publish: `was_published` stays false until you also run
169
170
  `dashboard action DASHBOARD_ID --input '{"action":"publish-presentation"}'`.
170
171
  `share` returns `data: null`; read the url slug back with `dashboard get`.
172
+ `dashboard action` with `publish-data` on a board that was never published
173
+ publishes the presentation instead and says so. `share` and `action` print the
174
+ deliverable check in their confirmation text.
171
175
  Only then do `dashboard published canvas URL`, `published data URL`,
172
176
  `job-by-url URL JOB_ID` and the other `/dashboards/url/...` routes answer;
173
177
  before that they return 404 `DASHBOARD_NOT_FOUND`. Legacy widget routes
@@ -81,6 +81,11 @@ mammoth view transform math VIEW_ID --project PROJECT_ID \
81
81
  --input '{"dataset_id":DATASET_ID,"expression":"GDP / Population","new_column":"GDP per capita"}'
82
82
  ```
83
83
 
84
+ A TEXT column that writes numbers with a decimal comma (`1.234,5`) converts with
85
+ `"decimal_separator":","` on its `conversions` entry (`thousands_separator`
86
+ defaults to the other mark). `view data profile` lists such a column under
87
+ `summary.mixed_number_format` when its values mix notations.
88
+
84
89
  In a math `expression`, write a multi-word display name bare (`Quantity * Unit
85
90
  Price`) or quoted (`Quantity * \"Unit Price\"` inside the JSON string).
86
91
 
@@ -10,6 +10,7 @@ from __future__ import annotations
10
10
  import re
11
11
  from typing import Any
12
12
 
13
+ from mammoth_cli.commands.schema import command_scope
13
14
  from mammoth_cli.manifest.loader import command_by_id, load_operations
14
15
  from mammoth_cli.services.command_contract import resolve_command_contract
15
16
 
@@ -85,48 +86,7 @@ def _contract_fields(command: dict[str, Any]) -> dict[str, Any]:
85
86
  """
86
87
  command_id = str(command.get("command_id", ""))
87
88
  resolved = resolve_command_contract(command_id) if command_id else None
88
- path = str(command.get("command_path", ""))
89
- family = path.split()[0] if path else ""
90
- if family in {
91
- "project",
92
- "dataset",
93
- "file",
94
- "folder",
95
- "view",
96
- "batch",
97
- "annotation",
98
- "dashboard",
99
- "automation",
100
- "schedule",
101
- "snippet",
102
- "template",
103
- "workflow",
104
- }:
105
- scope = "project"
106
- elif family in {
107
- "workspace",
108
- "user",
109
- "support",
110
- "billing",
111
- "connector",
112
- "client-app",
113
- "external-key",
114
- }:
115
- scope = "workspace"
116
- elif family in {
117
- "auth",
118
- "config",
119
- "context",
120
- "completion",
121
- "doctor",
122
- "schema",
123
- "capability",
124
- "skill",
125
- "version",
126
- }:
127
- scope = "local"
128
- else:
129
- scope = "profile"
89
+ scope = command_scope(command)
130
90
  # Keep capability discovery aligned with the resolved command contract
131
91
  # consumed by runtime admission and binding. The manifest fallback is for
132
92
  # genuinely local/bespoke records without a resolvable SDK signature.
@@ -576,16 +576,30 @@ def dashboard_action(invocation: Invocation) -> HandlerResult:
576
576
  dashboard_id = _require_int_positional(invocation, "dashboard id")
577
577
  document = _bound_document(invocation)
578
578
  action = _require_field(document, "action")
579
- enforce_confirmation(
580
- invocation,
581
- policy=POLICY_YES_ALWAYS,
582
- action=f"apply an action to dashboard {dashboard_id}",
583
- )
584
579
  kwargs: dict[str, Any] = {"dashboard_id": dashboard_id, "action": action}
585
580
  assert document is not None
586
581
  _forward_optional(document, kwargs, ("params_enabled", "params_view_id"))
587
582
  with open_service(invocation) as (service, auth):
583
+ published = _was_published(service, dashboard_id)
584
+ enforce_confirmation(
585
+ invocation,
586
+ policy=POLICY_YES_ALWAYS,
587
+ action=f"apply an action to dashboard {dashboard_id}"
588
+ + _board_findings(invocation, service, auth, dashboard_id),
589
+ )
590
+ first_publish = action == "publish-data" and not published
591
+ if first_publish:
592
+ kwargs["action"] = "publish-presentation"
588
593
  data = service.call(_symbol(invocation), **kwargs)
594
+ if first_publish:
595
+ data = {
596
+ "action": "publish-presentation",
597
+ "note": (
598
+ "The board was never published, so publish-data was refused by the "
599
+ "server; the presentation was published instead."
600
+ ),
601
+ "response": data,
602
+ }
589
603
  return data, _meta(invocation, auth.workspace_id)
590
604
 
591
605
 
@@ -594,19 +608,45 @@ def dashboard_share(invocation: Invocation) -> HandlerResult:
594
608
  dashboard_id = _require_int_positional(invocation, "dashboard id")
595
609
  document = _bound_document(invocation)
596
610
  type_of_auth = _require_field(document, "type_of_auth")
597
- enforce_confirmation(
598
- invocation,
599
- policy=POLICY_YES_ALWAYS,
600
- action=f"share dashboard {dashboard_id}",
601
- )
602
611
  kwargs: dict[str, Any] = {"dashboard_id": dashboard_id, "type_of_auth": type_of_auth}
603
612
  assert document is not None
604
613
  _forward_optional(document, kwargs, ("users",))
605
614
  with open_service(invocation) as (service, auth):
615
+ unpublished = (
616
+ " (not published yet: sharing alone does not publish it; run dashboard action "
617
+ 'with {"action":"publish-presentation"} to publish)'
618
+ if not _was_published(service, dashboard_id)
619
+ else ""
620
+ )
621
+ enforce_confirmation(
622
+ invocation,
623
+ policy=POLICY_YES_ALWAYS,
624
+ action=f"share dashboard {dashboard_id}{unpublished}"
625
+ + _board_findings(invocation, service, auth, dashboard_id),
626
+ )
606
627
  data = service.call(_symbol(invocation), **kwargs)
607
628
  return data, _meta(invocation, auth.workspace_id)
608
629
 
609
630
 
631
+ def _was_published(service: Any, dashboard_id: int) -> bool:
632
+ """Whether the board was ever published; ``dashboard get`` carries ``was_published``."""
633
+ board = _dump_model(service.call(_DASHBOARD_GET, dashboard_id=dashboard_id))
634
+ return bool(board.get("was_published")) if isinstance(board, dict) else False
635
+
636
+
637
+ def _board_findings(invocation: Invocation, service: Any, auth: Any, dashboard_id: int) -> str:
638
+ """The deliverable check's findings as confirmation text; empty when clean or unreadable."""
639
+ try:
640
+ warnings = _deliverable_warnings(invocation, service, auth, dashboard_id)
641
+ except Exception: # noqa: BLE001 -- advice must never block the confirmation
642
+ return ""
643
+ if not warnings:
644
+ return ""
645
+ return " -- deliverable check: " + "; ".join(
646
+ f"{warning['issue']}: {warning['detail']}" for warning in warnings
647
+ )
648
+
649
+
610
650
  def _figure_page_kwargs(page: Any) -> dict[str, Any]:
611
651
  """Map the endpoint's ``page`` ({"id"} or {"new_title"}) onto the SDK's page arguments."""
612
652
  if not isinstance(page, dict) or set(page) not in ({"id"}, {"new_title"}):
@@ -923,6 +963,7 @@ def _deliverable_warnings(
923
963
  )
924
964
 
925
965
 
966
+ _DASHBOARD_GET = "mammoth.api.dashboards.DashboardsAPI.get"
926
967
  _CANVAS_SAVE = "mammoth.api.dashboards.DashboardsAPI.canvas_save"
927
968
  _FILTER_KEYS = ("field", "control", "label", "default")
928
969