mammoth-cli 2.2.7__tar.gz → 2.2.8__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 (253) hide show
  1. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/PKG-INFO +2 -2
  2. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/__init__.py +1 -1
  3. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/bundled_skill/mammoth-cli/references/capabilities.md +1 -1
  4. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/bundled_skill/mammoth-cli/references/command-index.md +2 -2
  5. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/support.md +210 -0
  6. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/commands/registry.py +21 -0
  7. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/commands/schema.py +21 -0
  8. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/commands/support.py +248 -1
  9. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/services/positionals.py +56 -0
  10. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/pyproject.toml +2 -2
  11. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/spec/manifests/commands/support.yaml +909 -0
  12. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/spec/manifests/edits-target.source.yaml +11 -0
  13. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/spec/manifests/sdk-catalog.source.yaml +147 -0
  14. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/spec/manifests/sdk-methods.yaml +252 -0
  15. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/.gitignore +0 -0
  16. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/LICENSE +0 -0
  17. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/README.md +0 -0
  18. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/__main__.py +0 -0
  19. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/app.py +0 -0
  20. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/bundled_skill/mammoth-cli/SKILL.md +0 -0
  21. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/bundled_skill/mammoth-cli/references/about-mammoth.md +0 -0
  22. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/bundled_skill/mammoth-cli/references/auth.md +0 -0
  23. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/bundled_skill/mammoth-cli/references/capabilities-misc.md +0 -0
  24. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/activity.md +0 -0
  25. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/addon.md +0 -0
  26. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/agent.md +0 -0
  27. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/ai.md +0 -0
  28. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/annotation.md +0 -0
  29. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/auth.md +0 -0
  30. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/automation.md +0 -0
  31. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/batch.md +0 -0
  32. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/billing.md +0 -0
  33. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/browse.md +0 -0
  34. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/calc.md +0 -0
  35. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/capability.md +0 -0
  36. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/client-app.md +0 -0
  37. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/completion.md +0 -0
  38. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/config.md +0 -0
  39. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/connector.md +0 -0
  40. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/context.md +0 -0
  41. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dashboard-qa.md +0 -0
  42. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dashboard-template.md +0 -0
  43. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dashboard.md +0 -0
  44. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/data-app.md +0 -0
  45. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dataset.md +0 -0
  46. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/doctor.md +0 -0
  47. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/external-key.md +0 -0
  48. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/file.md +0 -0
  49. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/folder.md +0 -0
  50. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/job.md +0 -0
  51. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/link.md +0 -0
  52. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/log.md +0 -0
  53. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/notification.md +0 -0
  54. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/parameter.md +0 -0
  55. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/project.md +0 -0
  56. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/report.md +0 -0
  57. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/schedule.md +0 -0
  58. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/schema.md +0 -0
  59. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/skill.md +0 -0
  60. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/snippet.md +0 -0
  61. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/template.md +0 -0
  62. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/trash.md +0 -0
  63. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/upgrade.md +0 -0
  64. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/user.md +0 -0
  65. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/version.md +0 -0
  66. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/view-transform.md +0 -0
  67. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/view.md +0 -0
  68. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/webhook.md +0 -0
  69. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/workflow.md +0 -0
  70. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/workspace.md +0 -0
  71. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/bundled_skill/mammoth-cli/references/handoff.md +0 -0
  72. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/bundled_skill/mammoth-cli/references/input.md +0 -0
  73. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/bundled_skill/mammoth-cli/references/jobs-drafts.md +0 -0
  74. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/bundled_skill/mammoth-cli/references/machine-output.md +0 -0
  75. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/bundled_skill/mammoth-cli/references/operations.md +0 -0
  76. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/auth-scope.md +0 -0
  77. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/cleanup.md +0 -0
  78. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/dashboards.md +0 -0
  79. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/database-import.md +0 -0
  80. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/end-to-end.md +0 -0
  81. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/exports.md +0 -0
  82. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/index.md +0 -0
  83. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/need-action.md +0 -0
  84. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/resources.md +0 -0
  85. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/scheduling.md +0 -0
  86. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/transforms.md +0 -0
  87. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/typed-etl-discovery.md +0 -0
  88. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/bundled_skill/mammoth-cli/references/recovery.md +0 -0
  89. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/bundled_skill/mammoth-cli/references/report-checklist.md +0 -0
  90. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/bundled_skill/mammoth-cli/references/retention.md +0 -0
  91. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/bundled_skill/mammoth-cli/references/safety.md +0 -0
  92. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/bundled_skill/mammoth-cli/references/task-start.md +0 -0
  93. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/commands/__init__.py +0 -0
  94. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/commands/activity.py +0 -0
  95. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/commands/addon.py +0 -0
  96. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/commands/agent.py +0 -0
  97. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/commands/ai.py +0 -0
  98. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/commands/annotation.py +0 -0
  99. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/commands/auth.py +0 -0
  100. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/commands/automation.py +0 -0
  101. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/commands/batch.py +0 -0
  102. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/commands/billing.py +0 -0
  103. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/commands/browse.py +0 -0
  104. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/commands/calc.py +0 -0
  105. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/commands/capability.py +0 -0
  106. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/commands/client_app.py +0 -0
  107. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/commands/completion.py +0 -0
  108. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/commands/config.py +0 -0
  109. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/commands/connector.py +0 -0
  110. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/commands/context.py +0 -0
  111. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/commands/dashboard.py +0 -0
  112. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/commands/data_app.py +0 -0
  113. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/commands/dataset.py +0 -0
  114. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/commands/doctor.py +0 -0
  115. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/commands/external_key.py +0 -0
  116. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/commands/file.py +0 -0
  117. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/commands/folder.py +0 -0
  118. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/commands/job.py +0 -0
  119. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/commands/link.py +0 -0
  120. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/commands/notification.py +0 -0
  121. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/commands/parameter.py +0 -0
  122. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/commands/project.py +0 -0
  123. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/commands/report.py +0 -0
  124. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/commands/schedule.py +0 -0
  125. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/commands/skill.py +0 -0
  126. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/commands/snippet.py +0 -0
  127. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/commands/template.py +0 -0
  128. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/commands/trash.py +0 -0
  129. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/commands/upgrade.py +0 -0
  130. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/commands/user.py +0 -0
  131. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/commands/view.py +0 -0
  132. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/commands/view_ops.py +0 -0
  133. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/commands/view_profile.py +0 -0
  134. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/commands/webhook.py +0 -0
  135. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/commands/workflow.py +0 -0
  136. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/commands/workspace.py +0 -0
  137. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/context/__init__.py +0 -0
  138. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/context/credentials.py +0 -0
  139. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/context/endpoint.py +0 -0
  140. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/context/profiles.py +0 -0
  141. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/context/resolver.py +0 -0
  142. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/contracts/__init__.py +0 -0
  143. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/contracts/auth.py +0 -0
  144. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/embed.py +0 -0
  145. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/errors/__init__.py +0 -0
  146. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/errors/envelope.py +0 -0
  147. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/manifest/__init__.py +0 -0
  148. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/manifest/loader.py +0 -0
  149. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/messages/__init__.py +0 -0
  150. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/output/__init__.py +0 -0
  151. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/output/envelope.py +0 -0
  152. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/output/normalize.py +0 -0
  153. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/output/policy.py +0 -0
  154. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/output/progress.py +0 -0
  155. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/output/render.py +0 -0
  156. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/py.typed +0 -0
  157. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/runtime/__init__.py +0 -0
  158. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/runtime/confirm.py +0 -0
  159. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/runtime/dataset_health.py +0 -0
  160. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/runtime/dryrun.py +0 -0
  161. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/runtime/dryrun_targets.py +0 -0
  162. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/runtime/embedded.py +0 -0
  163. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/runtime/executor.py +0 -0
  164. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/runtime/input_loader.py +0 -0
  165. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/runtime/intent_only.py +0 -0
  166. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/runtime/invocation.py +0 -0
  167. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/runtime/new_data.py +0 -0
  168. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/runtime/options.py +0 -0
  169. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/runtime/parents.py +0 -0
  170. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/runtime/runlog.py +0 -0
  171. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/runtime/session.py +0 -0
  172. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/runtime/state.py +0 -0
  173. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/runtime/strict.py +0 -0
  174. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/runtime/updates.py +0 -0
  175. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/runtime/validate.py +0 -0
  176. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/runtime/verify.py +0 -0
  177. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/services/__init__.py +0 -0
  178. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/services/argspec.py +0 -0
  179. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/services/board_values.py +0 -0
  180. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/services/coerce.py +0 -0
  181. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/services/command_contract.py +0 -0
  182. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/services/conditions.py +0 -0
  183. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/services/dashboard_filters.py +0 -0
  184. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/services/dashboard_pages.py +0 -0
  185. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/services/dashboard_review.py +0 -0
  186. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/services/data_profile.py +0 -0
  187. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/services/data_quality.py +0 -0
  188. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/services/dispatch.py +0 -0
  189. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/services/factory.py +0 -0
  190. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/services/input_fields.py +0 -0
  191. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/services/listing.py +0 -0
  192. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/services/mapping.py +0 -0
  193. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/services/openapi_types.py +0 -0
  194. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/services/protocol.py +0 -0
  195. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/services/read_queries.py +0 -0
  196. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/services/sdk_service.py +0 -0
  197. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/services/stored_stats.py +0 -0
  198. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/services/testing.py +0 -0
  199. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/services/text_dates.py +0 -0
  200. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/services/type_system.py +0 -0
  201. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/services/write_impact.py +0 -0
  202. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/skills/__init__.py +0 -0
  203. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/skills/installer.py +0 -0
  204. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/skills/steering.py +0 -0
  205. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/mammoth_cli/testing.py +0 -0
  206. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/spec/manifests/commands/activity.yaml +0 -0
  207. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/spec/manifests/commands/addon.yaml +0 -0
  208. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/spec/manifests/commands/agent.yaml +0 -0
  209. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/spec/manifests/commands/ai.yaml +0 -0
  210. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/spec/manifests/commands/annotation.yaml +0 -0
  211. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/spec/manifests/commands/auth.yaml +0 -0
  212. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/spec/manifests/commands/automation.yaml +0 -0
  213. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/spec/manifests/commands/batch.yaml +0 -0
  214. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/spec/manifests/commands/billing.yaml +0 -0
  215. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/spec/manifests/commands/browse.yaml +0 -0
  216. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/spec/manifests/commands/calc.yaml +0 -0
  217. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/spec/manifests/commands/capability.yaml +0 -0
  218. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/spec/manifests/commands/client-app.yaml +0 -0
  219. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/spec/manifests/commands/completion.yaml +0 -0
  220. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/spec/manifests/commands/config.yaml +0 -0
  221. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/spec/manifests/commands/connector.yaml +0 -0
  222. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/spec/manifests/commands/context.yaml +0 -0
  223. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/spec/manifests/commands/dashboard.yaml +0 -0
  224. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/spec/manifests/commands/data-app.yaml +0 -0
  225. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/spec/manifests/commands/dataset.yaml +0 -0
  226. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/spec/manifests/commands/doctor.yaml +0 -0
  227. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/spec/manifests/commands/external-key.yaml +0 -0
  228. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/spec/manifests/commands/file.yaml +0 -0
  229. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/spec/manifests/commands/folder.yaml +0 -0
  230. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/spec/manifests/commands/job.yaml +0 -0
  231. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/spec/manifests/commands/link.yaml +0 -0
  232. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/spec/manifests/commands/log.yaml +0 -0
  233. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/spec/manifests/commands/notification.yaml +0 -0
  234. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/spec/manifests/commands/parameter.yaml +0 -0
  235. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/spec/manifests/commands/project.yaml +0 -0
  236. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/spec/manifests/commands/report.yaml +0 -0
  237. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/spec/manifests/commands/schedule.yaml +0 -0
  238. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/spec/manifests/commands/schema.yaml +0 -0
  239. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/spec/manifests/commands/skill.yaml +0 -0
  240. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/spec/manifests/commands/snippet.yaml +0 -0
  241. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/spec/manifests/commands/template.yaml +0 -0
  242. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/spec/manifests/commands/trash.yaml +0 -0
  243. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/spec/manifests/commands/upgrade.yaml +0 -0
  244. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/spec/manifests/commands/user.yaml +0 -0
  245. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/spec/manifests/commands/version.yaml +0 -0
  246. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/spec/manifests/commands/view.yaml +0 -0
  247. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/spec/manifests/commands/webhook.yaml +0 -0
  248. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/spec/manifests/commands/workflow.yaml +0 -0
  249. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/spec/manifests/commands/workspace.yaml +0 -0
  250. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/spec/manifests/openapi-operations.yaml +0 -0
  251. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/spec/manifests/schema-v1.json +0 -0
  252. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/spec/openapi/metadata.json +0 -0
  253. {mammoth_cli-2.2.7 → mammoth_cli-2.2.8}/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.7
3
+ Version: 2.2.8
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.9,>=0.8.8
20
+ Requires-Dist: mammoth-io<0.9,>=0.8.9
21
21
  Requires-Dist: platformdirs<5,>=4.10
22
22
  Requires-Dist: pydantic<3,>=2.12.5
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.2.7"
9
+ __version__ = "2.2.8"
10
10
 
11
11
  # The versioned machine output envelope contract.
12
12
  SCHEMA_VERSION = 1
@@ -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 612 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. 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 633 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. 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 612; 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 633; 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
 
@@ -41,7 +41,7 @@ Load only the applicable domain file:
41
41
  - [schema](commands/schema.md) — 3 published commands
42
42
  - [skill](commands/skill.md) — 7 published commands
43
43
  - [snippet](commands/snippet.md) — 8 published commands
44
- - [support](commands/support.md) — 45 published commands
44
+ - [support](commands/support.md) — 66 published commands
45
45
  - [template](commands/template.md) — 5 published commands
46
46
  - [trash](commands/trash.md) — 3 published commands
47
47
  - [upgrade](commands/upgrade.md) — 1 published commands
@@ -262,6 +262,56 @@ Result: `SupportPlanSelfServeListResult`; mutation `read`, confirmation `none`,
262
262
 
263
263
  Status on release: ran once on CLI 2.0.15 — admin read sweep 2026-09-18: exit 0 on release with CLI 2.0.15. The CLI gates this GET behind --yes --confirm WORKSPACE_ID (confirm_target policy); with confirmation: exit 0; data.plans Single invocation only.
264
264
 
265
+ ### `support.plan.storage-option.archive`
266
+
267
+ Run: `mammoth support plan storage-option archive`. Exact input fields: `mammoth schema get support.plan.storage-option.archive`.
268
+
269
+ Example: `mammoth support plan storage-option archive 123 123`. Illustrative only: append `--yes --confirm <EXACT_TARGET>` after observing the target.
270
+
271
+ Result: `SupportPlanStorageOptionArchiveResult`; mutation `high_impact`, confirmation `confirm_target`, wait policy `not_async`.
272
+
273
+ Status on release: untried; no live run recorded.
274
+
275
+ ### `support.plan.storage-option.create`
276
+
277
+ Run: `mammoth support plan storage-option create`. Exact input fields: `mammoth schema get support.plan.storage-option.create`.
278
+
279
+ Example: `mammoth support plan storage-option create 123 --input '{"storage_gb": 1, "monthly_price": 1.0, "annual_price": 1.0}'`. Illustrative only: append `--yes --confirm <EXACT_TARGET>` after observing the target.
280
+
281
+ Result: `SupportPlanStorageOptionCreateResult`; mutation `high_impact`, confirmation `confirm_target`, wait policy `not_async`.
282
+
283
+ Status on release: untried; no live run recorded.
284
+
285
+ ### `support.plan.storage-option.list`
286
+
287
+ Run: `mammoth support plan storage-option list`. Exact input fields: `mammoth schema get support.plan.storage-option.list`.
288
+
289
+ Example: `mammoth support plan storage-option list 123`. Placeholders are illustrative; resolve IDs and input from observed reads.
290
+
291
+ Result: `SupportPlanStorageOptionListResult`; mutation `read`, confirmation `none`, wait policy `not_async`.
292
+
293
+ Status on release: untried; no live run recorded.
294
+
295
+ ### `support.plan.storage-option.update`
296
+
297
+ Run: `mammoth support plan storage-option update`. Exact input fields: `mammoth schema get support.plan.storage-option.update`.
298
+
299
+ Example: `mammoth support plan storage-option update 123 123`. Illustrative only: append `--yes --confirm <EXACT_TARGET>` after observing the target.
300
+
301
+ Result: `SupportPlanStorageOptionUpdateResult`; mutation `high_impact`, confirmation `confirm_target`, wait policy `not_async`.
302
+
303
+ Status on release: untried; no live run recorded.
304
+
305
+ ### `support.plan.unarchive`
306
+
307
+ Run: `mammoth support plan unarchive`. Exact input fields: `mammoth schema get support.plan.unarchive`.
308
+
309
+ Example: `mammoth support plan unarchive 123`. Illustrative only: append `--yes --confirm <EXACT_TARGET>` after observing the target.
310
+
311
+ Result: `SupportPlanUnarchiveResult`; mutation `high_impact`, confirmation `confirm_target`, wait policy `not_async`.
312
+
313
+ Status on release: untried; no live run recorded.
314
+
265
315
  ### `support.plan.update`
266
316
 
267
317
  Run: `mammoth support plan update`. Exact input fields: `mammoth schema get support.plan.update`.
@@ -312,6 +362,166 @@ Result: `SupportSubscriptionUpdateResult`; mutation `high_impact`, confirmation
312
362
 
313
363
  Status on release: untried; no live run recorded.
314
364
 
365
+ ### `support.template.audit`
366
+
367
+ Run: `mammoth support template audit`. Exact input fields: `mammoth schema get support.template.audit`.
368
+
369
+ Example: `mammoth support template audit`. Placeholders are illustrative; resolve IDs and input from observed reads.
370
+
371
+ Result: `SupportTemplateAuditResult`; mutation `read`, confirmation `none`, wait policy `not_async`.
372
+
373
+ Status on release: untried; no live run recorded.
374
+
375
+ ### `support.template.canvas`
376
+
377
+ Run: `mammoth support template canvas`. Exact input fields: `mammoth schema get support.template.canvas`.
378
+
379
+ Example: `mammoth support template canvas sample`. Placeholders are illustrative; resolve IDs and input from observed reads.
380
+
381
+ Result: `SupportTemplateCanvasResult`; mutation `read`, confirmation `none`, wait policy `not_async`.
382
+
383
+ Status on release: untried; no live run recorded.
384
+
385
+ ### `support.template.data-preview`
386
+
387
+ Run: `mammoth support template data-preview`. Exact input fields: `mammoth schema get support.template.data-preview`.
388
+
389
+ Example: `mammoth support template data-preview sample`. Placeholders are illustrative; resolve IDs and input from observed reads.
390
+
391
+ Result: `SupportTemplateDataPreviewResult`; mutation `read`, confirmation `none`, wait policy `not_async`.
392
+
393
+ Status on release: untried; no live run recorded.
394
+
395
+ ### `support.template.discard`
396
+
397
+ Run: `mammoth support template discard`. Exact input fields: `mammoth schema get support.template.discard`.
398
+
399
+ Example: `mammoth support template discard sample`. Illustrative only: append `--yes --confirm <EXACT_TARGET>` after observing the target.
400
+
401
+ Result: `SupportTemplateDiscardResult`; mutation `destructive`, confirmation `confirm_target`, wait policy `not_async`.
402
+
403
+ Status on release: untried; no live run recorded.
404
+
405
+ ### `support.template.edit`
406
+
407
+ Run: `mammoth support template edit`. Exact input fields: `mammoth schema get support.template.edit`.
408
+
409
+ Example: `mammoth support template edit sample --input '{"changes": {"sample_key": "Status"}}'`. Illustrative only: append `--yes --confirm <EXACT_TARGET>` after observing the target.
410
+
411
+ Result: `SupportTemplateEditResult`; mutation `high_impact`, confirmation `confirm_target`, wait policy `not_async`.
412
+
413
+ Status on release: untried; no live run recorded.
414
+
415
+ ### `support.template.export`
416
+
417
+ Run: `mammoth support template export`. Exact input fields: `mammoth schema get support.template.export`.
418
+
419
+ Example: `mammoth support template export sample`. Placeholders are illustrative; resolve IDs and input from observed reads.
420
+
421
+ Result: `SupportTemplateExportResult`; mutation `read`, confirmation `none`, wait policy `not_async`.
422
+
423
+ Status on release: untried; no live run recorded.
424
+
425
+ ### `support.template.export-dashboard`
426
+
427
+ Run: `mammoth support template export-dashboard`. Exact input fields: `mammoth schema get support.template.export-dashboard`.
428
+
429
+ Example: `mammoth support template export-dashboard 123 --input '{"slug": "sample"}'`. Placeholders are illustrative; resolve IDs and input from observed reads.
430
+
431
+ Result: `SupportTemplateExportDashboardResult`; mutation `read`, confirmation `none`, wait policy `not_async`.
432
+
433
+ Status on release: untried; no live run recorded.
434
+
435
+ ### `support.template.import`
436
+
437
+ Run: `mammoth support template import`. Exact input fields: `mammoth schema get support.template.import`.
438
+
439
+ Example: `mammoth support template import template.zip`. Illustrative only: append `--yes` after observing an owned target.
440
+
441
+ Result: `SupportTemplateImportResult`; mutation `high_impact`, confirmation `yes_always`, wait policy `not_async`.
442
+
443
+ Status on release: untried; no live run recorded.
444
+
445
+ ### `support.template.inspect`
446
+
447
+ Run: `mammoth support template inspect`. Exact input fields: `mammoth schema get support.template.inspect`.
448
+
449
+ Example: `mammoth support template inspect template.zip`. Placeholders are illustrative; resolve IDs and input from observed reads.
450
+
451
+ Result: `SupportTemplateInspectResult`; mutation `read`, confirmation `none`, wait policy `not_async`.
452
+
453
+ Status on release: untried; no live run recorded.
454
+
455
+ ### `support.template.list`
456
+
457
+ Run: `mammoth support template list`. Exact input fields: `mammoth schema get support.template.list`.
458
+
459
+ Example: `mammoth support template list`. Placeholders are illustrative; resolve IDs and input from observed reads.
460
+
461
+ Result: `SupportTemplateListResult`; mutation `read`, confirmation `none`, wait policy `not_async`.
462
+
463
+ Status on release: untried; no live run recorded.
464
+
465
+ ### `support.template.publish`
466
+
467
+ Run: `mammoth support template publish`. Exact input fields: `mammoth schema get support.template.publish`.
468
+
469
+ Example: `mammoth support template publish sample`. Illustrative only: append `--yes --confirm <EXACT_TARGET>` after observing the target.
470
+
471
+ Result: `SupportTemplatePublishResult`; mutation `high_impact`, confirmation `confirm_target`, wait policy `not_async`.
472
+
473
+ Status on release: untried; no live run recorded.
474
+
475
+ ### `support.template.retire`
476
+
477
+ Run: `mammoth support template retire`. Exact input fields: `mammoth schema get support.template.retire`.
478
+
479
+ Example: `mammoth support template retire sample`. Illustrative only: append `--yes --confirm <EXACT_TARGET>` after observing the target.
480
+
481
+ Result: `SupportTemplateRetireResult`; mutation `high_impact`, confirmation `confirm_target`, wait policy `not_async`.
482
+
483
+ Status on release: untried; no live run recorded.
484
+
485
+ ### `support.template.snapshots`
486
+
487
+ Run: `mammoth support template snapshots`. Exact input fields: `mammoth schema get support.template.snapshots`.
488
+
489
+ Example: `mammoth support template snapshots`. Placeholders are illustrative; resolve IDs and input from observed reads.
490
+
491
+ Result: `SupportTemplateSnapshotsResult`; mutation `read`, confirmation `none`, wait policy `not_async`.
492
+
493
+ Status on release: untried; no live run recorded.
494
+
495
+ ### `support.template.thumbnail.clear`
496
+
497
+ Run: `mammoth support template thumbnail clear`. Exact input fields: `mammoth schema get support.template.thumbnail.clear`.
498
+
499
+ Example: `mammoth support template thumbnail clear sample`. Illustrative only: append `--yes --confirm <EXACT_TARGET>` after observing the target.
500
+
501
+ Result: `SupportTemplateThumbnailClearResult`; mutation `high_impact`, confirmation `confirm_target`, wait policy `not_async`.
502
+
503
+ Status on release: untried; no live run recorded.
504
+
505
+ ### `support.template.thumbnail.set`
506
+
507
+ Run: `mammoth support template thumbnail set`. Exact input fields: `mammoth schema get support.template.thumbnail.set`.
508
+
509
+ Example: `mammoth support template thumbnail set sample card.png`. Illustrative only: append `--yes --confirm <EXACT_TARGET>` after observing the target.
510
+
511
+ Result: `SupportTemplateThumbnailSetResult`; mutation `high_impact`, confirmation `confirm_target`, wait policy `not_async`.
512
+
513
+ Status on release: untried; no live run recorded.
514
+
515
+ ### `support.template.unpublish`
516
+
517
+ Run: `mammoth support template unpublish`. Exact input fields: `mammoth schema get support.template.unpublish`.
518
+
519
+ Example: `mammoth support template unpublish sample`. Illustrative only: append `--yes --confirm <EXACT_TARGET>` after observing the target.
520
+
521
+ Result: `SupportTemplateUnpublishResult`; mutation `high_impact`, confirmation `confirm_target`, wait policy `not_async`.
522
+
523
+ Status on release: untried; no live run recorded.
524
+
315
525
  ### `support.user.list-all`
316
526
 
317
527
  Run: `mammoth support user list-all`. Exact input fields: `mammoth schema get support.user.list-all`.
@@ -648,6 +648,27 @@ HANDLERS: dict[str, Handler] = {
648
648
  "support.feature-profile.update": support_cmd.support_feature_profile_update,
649
649
  "support.ownership.transfer": support_cmd.support_ownership_transfer,
650
650
  "support.plan.archive": support_cmd.support_plan_archive,
651
+ "support.plan.unarchive": support_cmd.support_plan_unarchive,
652
+ "support.plan.storage-option.list": support_cmd.support_plan_storage_option_list,
653
+ "support.plan.storage-option.create": support_cmd.support_plan_storage_option_create,
654
+ "support.plan.storage-option.update": support_cmd.support_plan_storage_option_update,
655
+ "support.plan.storage-option.archive": support_cmd.support_plan_storage_option_archive,
656
+ "support.template.list": support_cmd.support_template_list,
657
+ "support.template.edit": support_cmd.support_template_edit,
658
+ "support.template.data-preview": support_cmd.support_template_data_preview,
659
+ "support.template.canvas": support_cmd.support_template_canvas,
660
+ "support.template.publish": support_cmd.support_template_publish,
661
+ "support.template.unpublish": support_cmd.support_template_unpublish,
662
+ "support.template.retire": support_cmd.support_template_retire,
663
+ "support.template.inspect": support_cmd.support_template_inspect,
664
+ "support.template.import": support_cmd.support_template_import,
665
+ "support.template.thumbnail.set": support_cmd.support_template_thumbnail_set,
666
+ "support.template.thumbnail.clear": support_cmd.support_template_thumbnail_clear,
667
+ "support.template.discard": support_cmd.support_template_discard,
668
+ "support.template.snapshots": support_cmd.support_template_snapshots,
669
+ "support.template.audit": support_cmd.support_template_audit,
670
+ "support.template.export": support_cmd.support_template_export,
671
+ "support.template.export-dashboard": support_cmd.support_template_export_dashboard,
651
672
  "support.plan.chargebee-list": support_cmd.support_plan_chargebee_list,
652
673
  "support.plan.create": support_cmd.support_plan_create,
653
674
  "support.plan.delete": support_cmd.support_plan_delete,
@@ -427,6 +427,27 @@ _COMMAND_DISCOVERY_PURPOSES = {
427
427
  "dashboard.template.thumbnail.clear": "remove delete template picture card image thumbnail",
428
428
  "dashboard.gallery.list": "public template gallery curated templates catalog examples browse",
429
429
  "dashboard.gallery.get": "one public gallery template card by slug",
430
+ "support.plan.unarchive": "platform admin restore an archived subscription plan",
431
+ "support.plan.storage-option.list": "platform admin plan storage sizes prices options",
432
+ "support.plan.storage-option.create": "platform admin add a storage size price to a plan",
433
+ "support.plan.storage-option.update": "platform admin reprice resize a plan storage option",
434
+ "support.plan.storage-option.archive": "platform admin retire a plan storage option",
435
+ "support.template.list": "platform admin curated template catalog worklist drafts faults",
436
+ "support.template.edit": "platform admin retag rename reorder curated template filing",
437
+ "support.template.data-preview": "platform admin curated template sample rows",
438
+ "support.template.canvas": "platform admin curated template draft canvas review",
439
+ "support.template.publish": "platform admin take curated template live in gallery",
440
+ "support.template.unpublish": "platform admin take curated template down back to draft",
441
+ "support.template.retire": "platform admin retire curated template stop offering",
442
+ "support.template.inspect": "platform admin read template bundle zip before import",
443
+ "support.template.import": "platform admin import template bundle zip curated draft",
444
+ "support.template.thumbnail.set": "platform admin upload curated template picture",
445
+ "support.template.thumbnail.clear": "platform admin remove curated template picture",
446
+ "support.template.discard": "platform admin undo template import discard curated draft",
447
+ "support.template.snapshots": "platform admin stored datasets behind curated templates",
448
+ "support.template.audit": "platform admin audit curated template catalog gates faults",
449
+ "support.template.export": "platform admin download curated template bundle zip",
450
+ "support.template.export-dashboard": "platform admin download a board as template bundle zip",
430
451
  "connector.ai.chat": (
431
452
  "connect our own internal custom api build a connector for an unsupported source"
432
453
  ),
@@ -23,7 +23,11 @@ from mammoth_cli.errors.envelope import (
23
23
  CliError,
24
24
  )
25
25
  from mammoth_cli.manifest.loader import command_by_id
26
- from mammoth_cli.runtime.confirm import POLICY_CONFIRM_TARGET, enforce_confirmation
26
+ from mammoth_cli.runtime.confirm import (
27
+ POLICY_CONFIRM_TARGET,
28
+ POLICY_YES_ALWAYS,
29
+ enforce_confirmation,
30
+ )
27
31
  from mammoth_cli.runtime.invocation import Invocation
28
32
  from mammoth_cli.runtime.session import open_service
29
33
  from mammoth_cli.services.command_contract import bind_command_inputs
@@ -491,6 +495,87 @@ def support_plan_archive(invocation: Invocation) -> HandlerResult:
491
495
  return data, _meta(invocation, auth.workspace_id)
492
496
 
493
497
 
498
+ def _require_named_int(invocation: Invocation, name: str, human: str) -> int:
499
+ """Return a required integer positional by its declared name, or raise usage."""
500
+ raw = invocation.positional(name)
501
+ if raw is None:
502
+ raise CliError(
503
+ code=CODE_MISSING_ARGUMENT, message=f"A {human} is required.", exit_status=EXIT_USAGE
504
+ )
505
+ try:
506
+ return int(raw)
507
+ except ValueError as exc:
508
+ raise CliError(
509
+ code=CODE_INVALID_ARGUMENT,
510
+ message=f"The {human} argument '{raw}' is not an integer.",
511
+ exit_status=EXIT_USAGE,
512
+ ) from exc
513
+
514
+
515
+ def support_plan_unarchive(invocation: Invocation) -> HandlerResult:
516
+ """Platform admin only: unarchive one subscription plan by id."""
517
+ plan_id = _require_int_positional(invocation, "plan id")
518
+ _confirm(invocation, action=f"unarchive plan {plan_id}", target=str(plan_id))
519
+ with open_service(invocation) as (service, auth):
520
+ data = service.call(_symbol(invocation), plan_id=plan_id)
521
+ return data, _meta(invocation, auth.workspace_id)
522
+
523
+
524
+ def support_plan_storage_option_list(invocation: Invocation) -> HandlerResult:
525
+ """Platform admin only: list a plan's storage options, archived ones included."""
526
+ plan_id = _require_int_positional(invocation, "plan id")
527
+ with open_service(invocation) as (service, auth):
528
+ data = service.call(_symbol(invocation), plan_id=plan_id)
529
+ return data, _meta(invocation, auth.workspace_id)
530
+
531
+
532
+ def support_plan_storage_option_create(invocation: Invocation) -> HandlerResult:
533
+ """Platform admin only: add a storage option (total GB and prices) to a plan."""
534
+ plan_id = _require_int_positional(invocation, "plan id")
535
+ document = _bound_document(invocation)
536
+ kwargs: dict[str, Any] = {
537
+ "plan_id": plan_id,
538
+ "storage_gb": _require_field(document, "storage_gb"),
539
+ "monthly_price": _require_field(document, "monthly_price"),
540
+ "annual_price": _require_field(document, "annual_price"),
541
+ }
542
+ _confirm(invocation, action=f"add a storage option to plan {plan_id}", target=str(plan_id))
543
+ with open_service(invocation) as (service, auth):
544
+ data = service.call(_symbol(invocation), **kwargs)
545
+ return data, _meta(invocation, auth.workspace_id)
546
+
547
+
548
+ def support_plan_storage_option_update(invocation: Invocation) -> HandlerResult:
549
+ """Platform admin only: re-price or resize one storage option of a plan."""
550
+ plan_id = _require_int_positional(invocation, "plan id")
551
+ option_id = _require_named_int(invocation, "option_id", "storage option id")
552
+ document = _bound_document(invocation)
553
+ kwargs: dict[str, Any] = {"plan_id": plan_id, "option_id": option_id}
554
+ _forward_optional(document, kwargs, ("storage_gb", "monthly_price", "annual_price"))
555
+ _confirm(
556
+ invocation,
557
+ action=f"update storage option {option_id} of plan {plan_id}",
558
+ target=str(option_id),
559
+ )
560
+ with open_service(invocation) as (service, auth):
561
+ data = service.call(_symbol(invocation), **kwargs)
562
+ return data, _meta(invocation, auth.workspace_id)
563
+
564
+
565
+ def support_plan_storage_option_archive(invocation: Invocation) -> HandlerResult:
566
+ """Platform admin only: archive one storage option of a plan (never deleted)."""
567
+ plan_id = _require_int_positional(invocation, "plan id")
568
+ option_id = _require_named_int(invocation, "option_id", "storage option id")
569
+ _confirm(
570
+ invocation,
571
+ action=f"archive storage option {option_id} of plan {plan_id}",
572
+ target=str(option_id),
573
+ )
574
+ with open_service(invocation) as (service, auth):
575
+ data = service.call(_symbol(invocation), plan_id=plan_id, option_id=option_id)
576
+ return data, _meta(invocation, auth.workspace_id)
577
+
578
+
494
579
  # -- Subscriptions ------------------------------------------------------------------
495
580
 
496
581
 
@@ -784,3 +869,165 @@ def support_workspace_user_transfer(invocation: Invocation) -> HandlerResult:
784
869
  with open_service(invocation) as (service, auth):
785
870
  data = service.call(_symbol(invocation), **kwargs)
786
871
  return data, _meta(invocation, auth.workspace_id)
872
+
873
+
874
+ # -- Curated template catalog (dashboards v3 admin) ---------------------------------
875
+ #
876
+ # Every route refuses a caller without a Mammoth staff (platform-admin) role, and
877
+ # acts on CURATED templates only. The help line of each command says so first.
878
+
879
+
880
+ def _require_text_positional(invocation: Invocation, name: str, human: str) -> str:
881
+ """Return a required string positional by its declared name, or raise usage."""
882
+ value = invocation.positional(name)
883
+ if not value:
884
+ raise CliError(
885
+ code=CODE_MISSING_ARGUMENT,
886
+ message=f"A {human} is required.",
887
+ exit_status=EXIT_USAGE,
888
+ hint=f"Pass the {human} as a positional argument.",
889
+ )
890
+ return str(value)
891
+
892
+
893
+ def _template_read(invocation: Invocation) -> HandlerResult:
894
+ """Call a slug-addressed read of the curated catalog."""
895
+ slug = _require_text_positional(invocation, "slug", "template slug")
896
+ with open_service(invocation) as (service, auth):
897
+ data = service.call(_symbol(invocation), slug=slug)
898
+ return data, _meta(invocation, auth.workspace_id)
899
+
900
+
901
+ def _template_write(invocation: Invocation, verb: str) -> HandlerResult:
902
+ """Call a slug-addressed write of the curated catalog after ``--confirm SLUG``."""
903
+ slug = _require_text_positional(invocation, "slug", "template slug")
904
+ _confirm(invocation, action=f"{verb} curated template '{slug}'", target=slug)
905
+ with open_service(invocation) as (service, auth):
906
+ data = service.call(_symbol(invocation), slug=slug)
907
+ return data, _meta(invocation, auth.workspace_id)
908
+
909
+
910
+ def support_template_list(invocation: Invocation) -> HandlerResult:
911
+ """Platform admin only: list every curated template, drafts and faults first."""
912
+ with open_service(invocation) as (service, auth):
913
+ data = service.call(_symbol(invocation))
914
+ return data, _meta(invocation, auth.workspace_id)
915
+
916
+
917
+ def support_template_edit(invocation: Invocation) -> HandlerResult:
918
+ """Platform admin only: edit a curated template's filing ('changes' from '--input')."""
919
+ slug = _require_text_positional(invocation, "slug", "template slug")
920
+ document = _bound_document(invocation)
921
+ changes = _require_field(document, "changes")
922
+ _confirm(invocation, action=f"edit curated template '{slug}'", target=slug)
923
+ with open_service(invocation) as (service, auth):
924
+ data = service.call(_symbol(invocation), slug=slug, changes=changes)
925
+ return data, _meta(invocation, auth.workspace_id)
926
+
927
+
928
+ def support_template_data_preview(invocation: Invocation) -> HandlerResult:
929
+ """Platform admin only: read up to 50 rows of the data a curated template opens on."""
930
+ return _template_read(invocation)
931
+
932
+
933
+ def support_template_canvas(invocation: Invocation) -> HandlerResult:
934
+ """Platform admin only: read a curated template's canvas, drafts included."""
935
+ return _template_read(invocation)
936
+
937
+
938
+ def support_template_publish(invocation: Invocation) -> HandlerResult:
939
+ """Platform admin only: take a curated draft live in every customer's gallery."""
940
+ return _template_write(invocation, "publish")
941
+
942
+
943
+ def support_template_unpublish(invocation: Invocation) -> HandlerResult:
944
+ """Platform admin only: take a live or retired curated template back to draft."""
945
+ return _template_write(invocation, "unpublish")
946
+
947
+
948
+ def support_template_retire(invocation: Invocation) -> HandlerResult:
949
+ """Platform admin only: retire a curated template (kept, no longer offered)."""
950
+ return _template_write(invocation, "retire")
951
+
952
+
953
+ def support_template_thumbnail_clear(invocation: Invocation) -> HandlerResult:
954
+ """Platform admin only: remove a curated template's picture."""
955
+ return _template_write(invocation, "remove the picture of")
956
+
957
+
958
+ def support_template_discard(invocation: Invocation) -> HandlerResult:
959
+ """Platform admin only: permanently remove a curated draft, its board and its data."""
960
+ return _template_write(invocation, "discard")
961
+
962
+
963
+ def support_template_thumbnail_set(invocation: Invocation) -> HandlerResult:
964
+ """Platform admin only: upload or replace a curated template's picture from FILE."""
965
+ slug = _require_text_positional(invocation, "slug", "template slug")
966
+ file_path = _require_text_positional(invocation, "file", "image file path")
967
+ _confirm(invocation, action=f"replace the picture of curated template '{slug}'", target=slug)
968
+ with open_service(invocation) as (service, auth):
969
+ data = service.call(_symbol(invocation), slug=slug, file=file_path)
970
+ return data, _meta(invocation, auth.workspace_id)
971
+
972
+
973
+ def support_template_inspect(invocation: Invocation) -> HandlerResult:
974
+ """Platform admin only: read a template file (.zip) without importing it."""
975
+ file_path = _require_text_positional(invocation, "file", "template file path")
976
+ with open_service(invocation) as (service, auth):
977
+ data = service.call(_symbol(invocation), file=file_path)
978
+ return data, _meta(invocation, auth.workspace_id)
979
+
980
+
981
+ def support_template_import(invocation: Invocation) -> HandlerResult:
982
+ """Platform admin only: import a template file (.zip) as a curated draft. '--yes' required."""
983
+ file_path = _require_text_positional(invocation, "file", "template file path")
984
+ document = _bound_document(invocation)
985
+ kwargs: dict[str, Any] = {"file": file_path}
986
+ _forward_optional(document, kwargs, ("dataset",))
987
+ enforce_confirmation(
988
+ invocation,
989
+ policy=POLICY_YES_ALWAYS,
990
+ action=f"import template file {file_path} into the curated catalog",
991
+ )
992
+ with open_service(invocation) as (service, auth):
993
+ data = service.call(_symbol(invocation), **kwargs)
994
+ return data, _meta(invocation, auth.workspace_id)
995
+
996
+
997
+ def support_template_snapshots(invocation: Invocation) -> HandlerResult:
998
+ """Platform admin only: list every stored dataset the template catalog holds."""
999
+ with open_service(invocation) as (service, auth):
1000
+ data = service.call(_symbol(invocation))
1001
+ return data, _meta(invocation, auth.workspace_id)
1002
+
1003
+
1004
+ def support_template_audit(invocation: Invocation) -> HandlerResult:
1005
+ """Platform admin only: re-run every curated-catalog gate (read-only)."""
1006
+ with open_service(invocation) as (service, auth):
1007
+ data = service.call(_symbol(invocation))
1008
+ return data, _meta(invocation, auth.workspace_id)
1009
+
1010
+
1011
+ def support_template_export(invocation: Invocation) -> HandlerResult:
1012
+ """Platform admin only: download a curated template as a .zip template file."""
1013
+ slug = _require_text_positional(invocation, "slug", "template slug")
1014
+ document = _bound_document(invocation)
1015
+ kwargs: dict[str, Any] = {"slug": slug}
1016
+ _forward_optional(document, kwargs, ("output_path", "with_data"))
1017
+ with open_service(invocation) as (service, auth):
1018
+ path = service.call(_symbol(invocation), **kwargs)
1019
+ return {"output_path": str(path)}, _meta(invocation, auth.workspace_id)
1020
+
1021
+
1022
+ def support_template_export_dashboard(invocation: Invocation) -> HandlerResult:
1023
+ """Platform admin only: download a dashboard you can edit as a .zip template file."""
1024
+ dashboard_id = _require_int_positional(invocation, "dashboard id")
1025
+ document = _bound_document(invocation)
1026
+ kwargs: dict[str, Any] = {
1027
+ "dashboard_id": dashboard_id,
1028
+ "slug": _require_field(document, "slug"),
1029
+ }
1030
+ _forward_optional(document, kwargs, ("output_path", "with_data"))
1031
+ with open_service(invocation) as (service, auth):
1032
+ path = service.call(_symbol(invocation), **kwargs)
1033
+ return {"output_path": str(path)}, _meta(invocation, auth.workspace_id)