mammoth-cli 2.2.98__tar.gz → 2.2.99__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 (341) hide show
  1. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/PKG-INFO +1 -1
  2. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/__init__.py +1 -1
  3. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/bundled_skill/mammoth-cli/SKILL.md +1 -1
  4. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/commands/schema.py +4 -0
  5. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/commands/view/_common.py +39 -1
  6. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/commands/view/data_read.py +2 -31
  7. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/pyproject.toml +1 -1
  8. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/spec/manifests/commands/view.yaml +10 -12
  9. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/spec/manifests/compiled/commands.json +3 -3
  10. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/.gitignore +0 -0
  11. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/LICENSE +0 -0
  12. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/README.md +0 -0
  13. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/__main__.py +0 -0
  14. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/app.py +0 -0
  15. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/bundled_skill/mammoth-cli/references/about-mammoth.md +0 -0
  16. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/bundled_skill/mammoth-cli/references/auth.md +0 -0
  17. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/bundled_skill/mammoth-cli/references/capabilities-misc.md +0 -0
  18. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/bundled_skill/mammoth-cli/references/capabilities.md +0 -0
  19. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/bundled_skill/mammoth-cli/references/command-index.md +0 -0
  20. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/activity.md +0 -0
  21. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/addon.md +0 -0
  22. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/agent.md +0 -0
  23. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/ai.md +0 -0
  24. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/annotation.md +0 -0
  25. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/auth.md +0 -0
  26. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/automation.md +0 -0
  27. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/batch.md +0 -0
  28. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/billing.md +0 -0
  29. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/browse.md +0 -0
  30. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/calc.md +0 -0
  31. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/capabilities.md +0 -0
  32. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/capability.md +0 -0
  33. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/client-app.md +0 -0
  34. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/collection.md +0 -0
  35. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/completion.md +0 -0
  36. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/config.md +0 -0
  37. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/connector.md +0 -0
  38. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/context.md +0 -0
  39. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dashboard-embed.md +0 -0
  40. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dashboard-published.md +0 -0
  41. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dashboard-qa.md +0 -0
  42. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dashboard-style.md +0 -0
  43. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dashboard-template.md +0 -0
  44. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dashboard.md +0 -0
  45. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dataset.md +0 -0
  46. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/doctor.md +0 -0
  47. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/external-key.md +0 -0
  48. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/file.md +0 -0
  49. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/folder.md +0 -0
  50. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/how.md +0 -0
  51. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/job.md +0 -0
  52. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/link.md +0 -0
  53. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/log.md +0 -0
  54. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/notification.md +0 -0
  55. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/parameter.md +0 -0
  56. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/project.md +0 -0
  57. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/report.md +0 -0
  58. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/resolve.md +0 -0
  59. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/run.md +0 -0
  60. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/schedule.md +0 -0
  61. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/schema.md +0 -0
  62. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/skill.md +0 -0
  63. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/snippet.md +0 -0
  64. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/support.md +0 -0
  65. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/template.md +0 -0
  66. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/token.md +0 -0
  67. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/trash.md +0 -0
  68. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/upgrade.md +0 -0
  69. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/user.md +0 -0
  70. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/version.md +0 -0
  71. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/view-transform.md +0 -0
  72. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/view.md +0 -0
  73. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/webhook.md +0 -0
  74. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/workflow.md +0 -0
  75. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/workspace.md +0 -0
  76. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/bundled_skill/mammoth-cli/references/handoff.md +0 -0
  77. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/bundled_skill/mammoth-cli/references/input.md +0 -0
  78. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/bundled_skill/mammoth-cli/references/jobs-drafts.md +0 -0
  79. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/bundled_skill/mammoth-cli/references/machine-output.md +0 -0
  80. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/bundled_skill/mammoth-cli/references/operations.md +0 -0
  81. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/auth-scope.md +0 -0
  82. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/cleanup.md +0 -0
  83. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/dashboards.md +0 -0
  84. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/database-import.md +0 -0
  85. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/end-to-end.md +0 -0
  86. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/exports.md +0 -0
  87. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/file-import.md +0 -0
  88. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/index.md +0 -0
  89. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/need-action.md +0 -0
  90. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/resources.md +0 -0
  91. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/rest-api-import.md +0 -0
  92. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/scheduling.md +0 -0
  93. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/transforms.md +0 -0
  94. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/typed-etl-discovery.md +0 -0
  95. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/bundled_skill/mammoth-cli/references/recovery.md +0 -0
  96. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/bundled_skill/mammoth-cli/references/report-checklist.md +0 -0
  97. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/bundled_skill/mammoth-cli/references/retention.md +0 -0
  98. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/bundled_skill/mammoth-cli/references/safety.md +0 -0
  99. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/bundled_skill/mammoth-cli/references/task-start.md +0 -0
  100. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/commands/__init__.py +0 -0
  101. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/commands/_lazy.py +0 -0
  102. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/commands/activity.py +0 -0
  103. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/commands/addon.py +0 -0
  104. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/commands/agent.py +0 -0
  105. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/commands/ai.py +0 -0
  106. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/commands/annotation.py +0 -0
  107. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/commands/auth.py +0 -0
  108. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/commands/automation.py +0 -0
  109. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/commands/batch.py +0 -0
  110. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/commands/billing.py +0 -0
  111. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/commands/browse.py +0 -0
  112. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/commands/calc.py +0 -0
  113. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/commands/capabilities.py +0 -0
  114. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/commands/capability.py +0 -0
  115. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/commands/client_app.py +0 -0
  116. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/commands/completion.py +0 -0
  117. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/commands/config.py +0 -0
  118. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/commands/connector.py +0 -0
  119. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/commands/context.py +0 -0
  120. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/commands/dashboard.py +0 -0
  121. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/commands/dataset.py +0 -0
  122. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/commands/doctor.py +0 -0
  123. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/commands/external_key.py +0 -0
  124. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/commands/file.py +0 -0
  125. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/commands/folder.py +0 -0
  126. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/commands/help_summaries.json +0 -0
  127. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/commands/how.py +0 -0
  128. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/commands/job.py +0 -0
  129. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/commands/link.py +0 -0
  130. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/commands/notification.py +0 -0
  131. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/commands/parameter.py +0 -0
  132. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/commands/project.py +0 -0
  133. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/commands/registry.py +0 -0
  134. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/commands/report.py +0 -0
  135. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/commands/resolve.py +0 -0
  136. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/commands/run.py +0 -0
  137. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/commands/schedule.py +0 -0
  138. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/commands/skill.py +0 -0
  139. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/commands/snippet.py +0 -0
  140. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/commands/support.py +0 -0
  141. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/commands/template.py +0 -0
  142. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/commands/trash.py +0 -0
  143. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/commands/upgrade.py +0 -0
  144. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/commands/user.py +0 -0
  145. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/commands/view/__init__.py +0 -0
  146. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/commands/view/aggregate.py +0 -0
  147. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/commands/view/checks.py +0 -0
  148. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/commands/view/column_checks.py +0 -0
  149. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/commands/view/columns.py +0 -0
  150. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/commands/view/derivatives.py +0 -0
  151. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/commands/view/explore.py +0 -0
  152. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/commands/view/export.py +0 -0
  153. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/commands/view/export_dataset.py +0 -0
  154. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/commands/view/export_specialized.py +0 -0
  155. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/commands/view/formatting.py +0 -0
  156. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/commands/view/join_check.py +0 -0
  157. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/commands/view/lifecycle.py +0 -0
  158. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/commands/view/listing.py +0 -0
  159. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/commands/view/pipeline.py +0 -0
  160. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/commands/view/settle.py +0 -0
  161. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/commands/view/upload.py +0 -0
  162. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/commands/view_drivers.py +0 -0
  163. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/commands/view_explore.py +0 -0
  164. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/commands/view_forecast.py +0 -0
  165. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/commands/view_ops.py +0 -0
  166. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/commands/view_profile.py +0 -0
  167. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/commands/webhook.py +0 -0
  168. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/commands/workflow.py +0 -0
  169. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/commands/workspace.py +0 -0
  170. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/context/__init__.py +0 -0
  171. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/context/credentials.py +0 -0
  172. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/context/endpoint.py +0 -0
  173. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/context/keyring_backend.py +0 -0
  174. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/context/oauth.py +0 -0
  175. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/context/oauth_loopback.py +0 -0
  176. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/context/profiles.py +0 -0
  177. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/context/resolver.py +0 -0
  178. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/contracts/__init__.py +0 -0
  179. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/contracts/auth.py +0 -0
  180. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/discovery/__init__.py +0 -0
  181. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/discovery/limitations.json +0 -0
  182. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/discovery/next_commands.json +0 -0
  183. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/discovery/recipes.json +0 -0
  184. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/embed.py +0 -0
  185. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/errors/__init__.py +0 -0
  186. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/errors/envelope.py +0 -0
  187. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/manifest/__init__.py +0 -0
  188. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/manifest/loader.py +0 -0
  189. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/messages/__init__.py +0 -0
  190. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/output/__init__.py +0 -0
  191. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/output/envelope.py +0 -0
  192. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/output/normalize.py +0 -0
  193. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/output/policy.py +0 -0
  194. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/output/progress.py +0 -0
  195. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/output/render.py +0 -0
  196. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/py.typed +0 -0
  197. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/runtime/__init__.py +0 -0
  198. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/runtime/compact.py +0 -0
  199. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/runtime/confirm.py +0 -0
  200. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/runtime/dataset_health.py +0 -0
  201. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/runtime/dryrun.py +0 -0
  202. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/runtime/dryrun_targets.py +0 -0
  203. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/runtime/embed_pool.py +0 -0
  204. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/runtime/embedded.py +0 -0
  205. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/runtime/executor.py +0 -0
  206. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/runtime/input_loader.py +0 -0
  207. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/runtime/intent_only.py +0 -0
  208. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/runtime/invocation.py +0 -0
  209. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/runtime/labels.py +0 -0
  210. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/runtime/linecapture.py +0 -0
  211. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/runtime/local_paths.py +0 -0
  212. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/runtime/locked_files.py +0 -0
  213. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/runtime/new_data.py +0 -0
  214. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/runtime/next_commands.py +0 -0
  215. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/runtime/opens.py +0 -0
  216. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/runtime/options.py +0 -0
  217. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/runtime/parents.py +0 -0
  218. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/runtime/reveal.py +0 -0
  219. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/runtime/runlog.py +0 -0
  220. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/runtime/session.py +0 -0
  221. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/runtime/shared.py +0 -0
  222. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/runtime/state.py +0 -0
  223. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/runtime/strict.py +0 -0
  224. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/runtime/token_scope.py +0 -0
  225. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/runtime/updates.py +0 -0
  226. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/runtime/validate.py +0 -0
  227. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/runtime/verify.py +0 -0
  228. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/runtime/view_dataset_cache.py +0 -0
  229. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/services/__init__.py +0 -0
  230. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/services/append_blank_columns.py +0 -0
  231. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/services/argspec.py +0 -0
  232. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/services/board_values.py +0 -0
  233. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/services/coerce.py +0 -0
  234. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/services/column_type_guard.py +0 -0
  235. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/services/command_contract.py +0 -0
  236. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/services/conditional_format.py +0 -0
  237. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/services/conditions.py +0 -0
  238. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/services/dashboard_figures.py +0 -0
  239. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/services/dashboard_filters.py +0 -0
  240. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/services/dashboard_pages.py +0 -0
  241. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/services/dashboard_review.py +0 -0
  242. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/services/data_profile.py +0 -0
  243. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/services/data_quality.py +0 -0
  244. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/services/delete_check.py +0 -0
  245. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/services/dispatch.py +0 -0
  246. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/services/explore_card_edit.py +0 -0
  247. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/services/explore_cards.py +0 -0
  248. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/services/explore_to_figure.py +0 -0
  249. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/services/explore_to_image.py +0 -0
  250. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/services/factory.py +0 -0
  251. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/services/field_enums.py +0 -0
  252. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/services/folder_ids.py +0 -0
  253. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/services/held_change.py +0 -0
  254. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/services/input_fields.py +0 -0
  255. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/services/job_outcome.py +0 -0
  256. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/services/listing.py +0 -0
  257. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/services/local_files.py +0 -0
  258. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/services/local_time.py +0 -0
  259. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/services/mapping.py +0 -0
  260. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/services/openapi_types.py +0 -0
  261. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/services/paging.py +0 -0
  262. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/services/period_analysis.py +0 -0
  263. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/services/poll.py +0 -0
  264. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/services/positionals.py +0 -0
  265. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/services/protocol.py +0 -0
  266. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/services/read_memo.py +0 -0
  267. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/services/read_queries.py +0 -0
  268. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/services/schema_diff.py +0 -0
  269. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/services/sdk_service.py +0 -0
  270. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/services/sql_check.py +0 -0
  271. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/services/stored_stats.py +0 -0
  272. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/services/suggest.py +0 -0
  273. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/services/testing.py +0 -0
  274. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/services/text_dates.py +0 -0
  275. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/services/type_system.py +0 -0
  276. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/services/view_analysis.py +0 -0
  277. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/services/view_variants.py +0 -0
  278. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/services/write_impact.py +0 -0
  279. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/skills/__init__.py +0 -0
  280. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/skills/installer.py +0 -0
  281. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/skills/steering.py +0 -0
  282. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/mammoth_cli/testing.py +0 -0
  283. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/spec/manifests/commands/activity.yaml +0 -0
  284. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/spec/manifests/commands/addon.yaml +0 -0
  285. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/spec/manifests/commands/agent.yaml +0 -0
  286. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/spec/manifests/commands/ai.yaml +0 -0
  287. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/spec/manifests/commands/annotation.yaml +0 -0
  288. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/spec/manifests/commands/auth.yaml +0 -0
  289. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/spec/manifests/commands/automation.yaml +0 -0
  290. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/spec/manifests/commands/batch.yaml +0 -0
  291. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/spec/manifests/commands/billing.yaml +0 -0
  292. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/spec/manifests/commands/browse.yaml +0 -0
  293. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/spec/manifests/commands/calc.yaml +0 -0
  294. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/spec/manifests/commands/capabilities.yaml +0 -0
  295. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/spec/manifests/commands/capability.yaml +0 -0
  296. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/spec/manifests/commands/client-app.yaml +0 -0
  297. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/spec/manifests/commands/collection.yaml +0 -0
  298. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/spec/manifests/commands/completion.yaml +0 -0
  299. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/spec/manifests/commands/config.yaml +0 -0
  300. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/spec/manifests/commands/connector.yaml +0 -0
  301. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/spec/manifests/commands/context.yaml +0 -0
  302. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/spec/manifests/commands/dashboard.yaml +0 -0
  303. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/spec/manifests/commands/dataset.yaml +0 -0
  304. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/spec/manifests/commands/doctor.yaml +0 -0
  305. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/spec/manifests/commands/external-key.yaml +0 -0
  306. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/spec/manifests/commands/file.yaml +0 -0
  307. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/spec/manifests/commands/folder.yaml +0 -0
  308. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/spec/manifests/commands/how.yaml +0 -0
  309. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/spec/manifests/commands/job.yaml +0 -0
  310. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/spec/manifests/commands/link.yaml +0 -0
  311. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/spec/manifests/commands/log.yaml +0 -0
  312. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/spec/manifests/commands/notification.yaml +0 -0
  313. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/spec/manifests/commands/parameter.yaml +0 -0
  314. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/spec/manifests/commands/project.yaml +0 -0
  315. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/spec/manifests/commands/report.yaml +0 -0
  316. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/spec/manifests/commands/resolve.yaml +0 -0
  317. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/spec/manifests/commands/run.yaml +0 -0
  318. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/spec/manifests/commands/schedule.yaml +0 -0
  319. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/spec/manifests/commands/schema.yaml +0 -0
  320. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/spec/manifests/commands/skill.yaml +0 -0
  321. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/spec/manifests/commands/snippet.yaml +0 -0
  322. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/spec/manifests/commands/support.yaml +0 -0
  323. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/spec/manifests/commands/template.yaml +0 -0
  324. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/spec/manifests/commands/token.yaml +0 -0
  325. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/spec/manifests/commands/trash.yaml +0 -0
  326. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/spec/manifests/commands/upgrade.yaml +0 -0
  327. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/spec/manifests/commands/user.yaml +0 -0
  328. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/spec/manifests/commands/version.yaml +0 -0
  329. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/spec/manifests/commands/webhook.yaml +0 -0
  330. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/spec/manifests/commands/workflow.yaml +0 -0
  331. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/spec/manifests/commands/workspace.yaml +0 -0
  332. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/spec/manifests/compiled/openapi-operations.json +0 -0
  333. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/spec/manifests/compiled/sdk-methods.json +0 -0
  334. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/spec/manifests/edits-target.source.yaml +0 -0
  335. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/spec/manifests/openapi-operations.yaml +0 -0
  336. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/spec/manifests/schema-v1.json +0 -0
  337. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/spec/manifests/sdk-catalog.source.yaml +0 -0
  338. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/spec/manifests/sdk-methods.yaml +0 -0
  339. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/spec/manifests/server-status.json +0 -0
  340. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/spec/openapi/metadata.json +0 -0
  341. {mammoth_cli-2.2.98 → mammoth_cli-2.2.99}/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.98
3
+ Version: 2.2.99
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
@@ -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.98"
9
+ __version__ = "2.2.99"
10
10
 
11
11
  # The versioned machine output envelope contract.
12
12
  SCHEMA_VERSION = 1
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: mammoth-cli
3
- version: 2.2.98
3
+ version: 2.2.99
4
4
  description: "Use Mammoth Analytics from a terminal: install or authenticate the CLI, discover its live command contract, and safely manage projects, data, views, pipelines (join, merge, pivot, filter, clean), dashboards, exports, and handoffs."
5
5
  ---
6
6
 
@@ -2373,6 +2373,10 @@ def _inline_call_detail(entries: list[dict[str, Any]]) -> None:
2373
2373
  record = command_by_id(entry["command_id"])
2374
2374
  if record is None:
2375
2375
  continue
2376
+ entry["positionals"] = [
2377
+ {key: item[key] for key in ("name", "metavar", "type", "required")}
2378
+ for item in _positionals(entry["command_id"])
2379
+ ]
2376
2380
  fields = _compact_accepted_fields(record)
2377
2381
  if fields is not None:
2378
2382
  entry["accepted_fields"] = fields
@@ -9,6 +9,7 @@ from mammoth_cli.errors.envelope import (
9
9
  CODE_INVALID_ARGUMENT,
10
10
  CODE_MISSING_ARGUMENT,
11
11
  CODE_MISSING_FIELD,
12
+ CODE_RESOURCE_NOT_FOUND,
12
13
  CODE_SDK_SYMBOL_UNRESOLVED,
13
14
  EXIT_USAGE,
14
15
  CliError,
@@ -188,6 +189,38 @@ def _view_parent_dataset_id(service: Any, invocation: Invocation, view_id: int)
188
189
  return dataset_id
189
190
 
190
191
 
192
+ def _explain_swapped_ids(
193
+ service: Any, error: CliError, invocation: Invocation, view_id: int, dataset_id: int
194
+ ) -> None:
195
+ """Raise a clear refusal when a not-found call was given DATASET_ID then VIEW_ID.
196
+
197
+ The arguments are ``VIEW_ID [DATASET_ID]``; passing them the other way round
198
+ only produces a bare 404. If the first number is really a view of the second,
199
+ say so. Any other outcome leaves the original error to be re-raised.
200
+ """
201
+ if error.code != CODE_RESOURCE_NOT_FOUND:
202
+ return
203
+ try:
204
+ parent = int(service.call(_FIND_DATASET_SYMBOL, dataview_id=dataset_id))
205
+ except CliError:
206
+ return
207
+ if parent != view_id:
208
+ return
209
+ raise CliError(
210
+ code=CODE_INVALID_ARGUMENT,
211
+ message=(
212
+ f"{view_id} is a dataset id and {dataset_id} is its view; "
213
+ "the order is VIEW_ID DATASET_ID"
214
+ ),
215
+ exit_status=EXIT_USAGE,
216
+ hint=(
217
+ f"Run it again as: mammoth {invocation.command_path} {dataset_id} {view_id}"
218
+ " (same options)"
219
+ ),
220
+ details={"view_id": dataset_id, "dataset_id": view_id},
221
+ ) from error
222
+
223
+
191
224
  def _verified_dataset_id(
192
225
  service: Any, invocation: Invocation, view_id: int, document: dict[str, Any]
193
226
  ) -> int:
@@ -199,7 +232,12 @@ def _verified_dataset_id(
199
232
  explicit = _int_positional_at(invocation, 1, "dataset id")
200
233
  if explicit is None and document.get(_DATASET_ID_FIELD) is not None:
201
234
  explicit = _int_field(document[_DATASET_ID_FIELD], _DATASET_ID_FIELD)
202
- real = _view_parent_dataset_id(service, invocation, view_id)
235
+ try:
236
+ real = _view_parent_dataset_id(service, invocation, view_id)
237
+ except CliError as exc:
238
+ if explicit is not None:
239
+ _explain_swapped_ids(service, exc, invocation, view_id, explicit)
240
+ raise
203
241
  if explicit is not None:
204
242
  _check_parent_matches(view_id, explicit, real)
205
243
  return real
@@ -6,10 +6,10 @@ from typing import Any
6
6
 
7
7
  from mammoth_cli.commands.view._common import (
8
8
  _COLUMNS_KEY,
9
- _FIND_DATASET_SYMBOL,
10
9
  _QUERY_DATA_SYMBOL,
11
10
  _ROWS_KEY,
12
11
  HandlerResult,
12
+ _explain_swapped_ids,
13
13
  _forward_optional,
14
14
  _int_field,
15
15
  _page_offset,
@@ -27,8 +27,6 @@ from mammoth_cli.commands.view.columns import (
27
27
  _compile_query_filters,
28
28
  )
29
29
  from mammoth_cli.errors.envelope import (
30
- CODE_INVALID_ARGUMENT,
31
- CODE_RESOURCE_NOT_FOUND,
32
30
  EXIT_USAGE,
33
31
  CliError,
34
32
  )
@@ -66,7 +64,7 @@ def view_data_get(invocation: Invocation) -> HandlerResult:
66
64
  service, invocation, auth.workspace_id, dataset_id, view_id, project_id
67
65
  )
68
66
  except CliError as exc:
69
- _explain_swapped_ids(service, exc, view_id, dataset_id)
67
+ _explain_swapped_ids(service, exc, invocation, view_id, dataset_id)
70
68
  raise
71
69
  mapping, types, _currencies = _profile_of_info(info)
72
70
  kwargs: dict[str, Any] = {
@@ -199,33 +197,6 @@ def _close_last_page(data: Any, offset: Any) -> Any:
199
197
  return closed
200
198
 
201
199
 
202
- def _explain_swapped_ids(service: Any, error: CliError, view_id: int, dataset_id: int) -> None:
203
- """Raise a clear refusal when a not-found read was given DATASET_ID then VIEW_ID.
204
-
205
- The arguments are ``VIEW_ID [DATASET_ID]``; passing them the other way round
206
- only produces a bare 404. If the first number is really a view of the second,
207
- say so. Any other outcome leaves the original error to be re-raised.
208
- """
209
- if error.code != CODE_RESOURCE_NOT_FOUND:
210
- return
211
- try:
212
- parent = int(service.call(_FIND_DATASET_SYMBOL, dataview_id=dataset_id))
213
- except CliError:
214
- return
215
- if parent != view_id:
216
- return
217
- raise CliError(
218
- code=CODE_INVALID_ARGUMENT,
219
- message=(
220
- f"{view_id} is a dataset id and {dataset_id} is its view; "
221
- "the order is VIEW_ID DATASET_ID"
222
- ),
223
- exit_status=EXIT_USAGE,
224
- hint=f"Run it again as: mammoth view data get {dataset_id} {view_id}",
225
- details={"view_id": dataset_id, "dataset_id": view_id},
226
- ) from error
227
-
228
-
229
200
  #: Rows a plain ``view data get`` returns unless ``limit`` says otherwise.
230
201
  _DATA_GET_DEFAULT_LIMIT = 50
231
202
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "mammoth-cli"
3
- version = "2.2.98"
3
+ version = "2.2.99"
4
4
  description = "Command-line interface for the Mammoth Analytics platform"
5
5
  authors = [{name = "Mammoth Analytics", email = "support@mammoth.io"}]
6
6
  readme = "README.md"
@@ -5449,8 +5449,7 @@ commands:
5449
5449
  help: ID of the view to act on.
5450
5450
  options: []
5451
5451
  sdk_symbol: mammoth._mixins._text_ops.TextOpsMixin.substring
5452
- sdk_conversion: 'CLI one-call op: View.substring with a first-word regex, then View.submit_draft when
5453
- the step was staged; from mammoth_cli.commands.view_ops. The accepted document fields are in command_contract.py.'
5452
+ sdk_conversion: 'CLI one-call op: View.substring with a first-word regex; from mammoth_cli.commands.view_ops. The accepted document fields are in command_contract.py.'
5454
5453
  request_model: ViewTransformFirstNameRequest
5455
5454
  result_model: ViewTransformFirstNameResult
5456
5455
  mutation_class: reversible_pipeline
@@ -5483,10 +5482,10 @@ commands:
5483
5482
  undo_test: null
5484
5483
  known_restrictions: 'Use for "extract the first name" or the first word of a text column. --input: "column"
5485
5484
  (a TEXT column, required) and exactly one of "new_column" or "existing_column". Takes the text up
5486
- to the first space. One call: if the view is in draft mode the step is staged, the draft is submitted
5487
- and the result waits on this step''s own run (run.transform_status DONE), not on the pipeline reading
5488
- ready. A draft that already held other staged steps is left staged (status staged) because submitting
5489
- would run them too; run view draft submit when that is intended.'
5485
+ to the first space. One call: if the view is in draft mode the step is staged (status staged) and the
5486
+ draft stays unsubmitted, whether or not it already held staged steps; run view draft submit when
5487
+ that is intended. Outside draft mode the result waits on this step''s own run (run.transform_status
5488
+ DONE), not on the pipeline reading ready.'
5490
5489
  reviewed_by: primary
5491
5490
  - command_id: view.transform.generate-sql
5492
5491
  command_path: view transform generate-sql
@@ -6330,8 +6329,7 @@ commands:
6330
6329
  help: ID of the view to act on.
6331
6330
  options: []
6332
6331
  sdk_symbol: mammoth._mixins._math_ops.MathOpsMixin.math
6333
- sdk_conversion: 'CLI one-call op: View.math with existing_column, then View.submit_draft when the step
6334
- was staged; from mammoth_cli.commands.view_ops. The accepted document fields are in command_contract.py.'
6332
+ sdk_conversion: 'CLI one-call op: View.math with existing_column; from mammoth_cli.commands.view_ops. The accepted document fields are in command_contract.py.'
6335
6333
  request_model: ViewTransformUpdateColumnRequest
6336
6334
  result_model: ViewTransformUpdateColumnResult
6337
6335
  mutation_class: reversible_pipeline
@@ -6365,9 +6363,9 @@ commands:
6365
6363
  known_restrictions: 'Use to overwrite a numeric column with an expression over its own values ("add
6366
6364
  5 to Cost"). --input: "column" (an existing column, required) and "expression" (required, as in view
6367
6365
  transform math). Same as view transform math with existing_column set. One call: if the view is in
6368
- draft mode the step is staged, the draft is submitted and the result waits on this step''s own run
6369
- (run.transform_status DONE), not on the pipeline reading ready. A draft that already held other staged
6370
- steps is left staged (status staged); run view draft submit when that is intended.'
6366
+ draft mode the step is staged (status staged) and the draft stays unsubmitted, whether or not it already
6367
+ held staged steps; run view draft submit when that is intended. Outside draft mode the result waits
6368
+ on this step''s own run (run.transform_status DONE), not on the pipeline reading ready.'
6371
6369
  reviewed_by: primary
6372
6370
  - command_id: view.transform.window
6373
6371
  command_path: view transform window
@@ -7065,7 +7063,7 @@ commands:
7065
7063
  - CT-VIEW-EXPLORE-PANEL-SET-ERROR
7066
7064
  draft_test: null
7067
7065
  undo_test: null
7068
- known_restrictions: 'This is the command that opens Explore cards in the UI. Open a card per column
7066
+ known_restrictions: 'Saves the Explore cards of the calling user for a view; it shows nothing by itself. Open a card per column
7069
7067
  with {"panel": {"columns": "all"}} or {"panel": {"columns": ["Region", "Amount"]}}: each named column
7070
7068
  that has no card gets one and the saved cards stay. To replace the whole panel, run view explore-panel
7071
7069
  get first and write back {"panel": {"cards": [...]}}. A panel with no cards list is refused, because
@@ -685,7 +685,7 @@
685
685
  {"command_id":"view.explore-panel.edit","command_path":"view explore-panel edit","disposition":"command","alias_of":null,"operation_ids":["Patch"],"positionals":[{"name":"view_id","type":"int","required":true,"metavar":"VIEW_ID","falls_back_to_field":null,"help":"ID of the view to act on."},{"name":"dataset_id","type":"int","required":false,"metavar":"DATASET_ID","falls_back_to_field":"dataset_id","help":"Optional parent dataset ID. Leave it out and the CLI looks up the view's dataset. A value that is not the view's dataset is refused before the write."}],"options":[],"sdk_symbol":"mammoth.api.dataviews.DataviewsAPI.set_explore_panel","sdk_conversion":"Call mammoth.api.dataviews.DataviewsAPI.set_explore_panel with validated request fields.","request_model":"ViewExplorePanelEditRequest","result_model":"ViewExplorePanelEditResult","mutation_class":"benign_mutation","edits_target":true,"confirmation":"none","wait_policy":"not_async","pagination_policy":"none","acceptance_evidence":"contract_only_no_disposable_fixture","no_readback":"the command reads the saved panel back itself and returns it as \"panel\" (the same data view explore-panel get returns)","live_test":null,"live_exemption_reason":"Needs a disposable project; no live config locally.","contract_fixture":null,"required_fixture_guard":null,"secret_fields":[],"human_example":"mammoth view explore-panel edit VIEW_ID --help","agent_example":"mammoth view explore-panel edit 123 456 --input '{\"edits\": [{\"op\": \"metric\", \"card\": \"Region\", \"agg\": \"SUM\", \"of\": \"Amount\"}]}'","unit_tests":["UT-VIEW-EXPLORE-PANEL-EDIT"],"contract_tests":["CT-VIEW-EXPLORE-PANEL-EDIT-HUMAN","CT-VIEW-EXPLORE-PANEL-EDIT-JSON","CT-VIEW-EXPLORE-PANEL-EDIT-ERROR"],"draft_test":null,"undo_test":null,"known_restrictions":"Changes the Explore cards the way the card menus do, with display names and no card JSON, and writes the panel once. The card must be open (view explore-panel set). Input {\"edits\": [...]}, applied in order; each edit is {\"op\", \"card\": COLUMN NAME, ...}. metric: {\"agg\": COUNT} or {\"agg\": SUM|AVG|MIN|MAX|STDDEV|DISTINCT_COUNT, \"of\": NUMERIC COLUMN} (DISTINCT_COUNT takes any column). sort: {\"by\": metric|value, \"direction\": ASC|DESC}, list views only. view: {\"view\": list|columns|timeline|donut|treemap}, which depends on the column type. level: {\"level\": a date level or a number bucket width}. filter / exclude: {\"values\": [...]} for text, {\"from\", \"to\"} for ranges, {\"blanks\": true} for blanks; clear: the filter off; remove: the card off. Query cards: {\"op\": \"search\", \"text\": \"...\", \"columns\": [...]}, {\"op\": \"scatter\", \"x\": NUMERIC, \"y\": NUMERIC, \"box\": {...}} and {\"op\": \"ask\", \"question\": \"...\"} (the question goes to the same suggestions call the web app makes and its condition is kept). An unknown column, a column of the wrong type or a value outside the web app's options is refused with the valid choices. The result carries \"panel\", the panel read back. It is a per-user preference: it does not change the view or what other users see.","reviewed_by":"primary"},
686
686
  {"command_id":"view.explore-panel.export-image","command_path":"view explore-panel export-image","disposition":"command","alias_of":null,"operation_ids":["RenderFigureSvg"],"positionals":[{"name":"view_id","type":"int","required":true,"metavar":"VIEW_ID","falls_back_to_field":null,"help":"ID of the view to act on."},{"name":"dataset_id","type":"int","required":false,"metavar":"DATASET_ID","falls_back_to_field":"dataset_id","help":"ID of the dataset the view belongs to; resolved from the view when omitted."}],"options":[],"sdk_symbol":"mammoth.api.dashboards.DashboardsAPI.render_figure_svg","sdk_conversion":"Read the view's saved Explore panel and the card's grouped rows, build the engine figure spec from them, call mammoth.api.dashboards.DashboardsAPI.render_figure_svg, and write the returned SVG to output_path.","request_model":"ViewExplorePanelExportImageRequest","result_model":"ViewExplorePanelExportImageResult","mutation_class":"read","edits_target":false,"confirmation":"none","wait_policy":"not_async","pagination_policy":"none","acceptance_evidence":"contract_only_no_disposable_fixture","no_readback":"the result carries output_path, the file written; the SVG is not echoed","live_test":null,"live_exemption_reason":"The render route is not deployed to koyal yet (mvc-service PR","contract_fixture":null,"required_fixture_guard":null,"secret_fields":[],"human_example":"mammoth view explore-panel export-image VIEW_ID --help","agent_example":"mammoth view explore-panel export-image 123 --input '{\"card\": \"Region\", \"output_path\": \"card.svg\", \"style_id\": null}'","unit_tests":["UT-VIEW-EXPLORE-PANEL-EXPORT-IMAGE"],"contract_tests":["CT-VIEW-EXPLORE-PANEL-EXPORT-IMAGE-HUMAN","CT-VIEW-EXPLORE-PANEL-EXPORT-IMAGE-JSON","CT-VIEW-EXPLORE-PANEL-EXPORT-IMAGE-ERROR"],"draft_test":null,"undo_test":null,"known_restrictions":"Writes the open Explore card \"card\" (its column display name) as an SVG file at \"output_path\" (default explore-card-VIEW_ID.svg). The backend has no rasterizer, so this writes SVG only; the web app's PNG is a browser screenshot. A bar card becomes a bar chart (one bar per group, its value the card's metric); a list card becomes a table of its rows. The rows are read as view data explore reads them, so the list is the top values the backend returns (TEXT: 20). \"style_id\" optionally renders with a saved style. The card must be open (view explore-panel set). Not available inside the Mammoth app: it writes a file on the host. It is a per-user preference read; it does not change the view or the panel.","reviewed_by":"primary"},
687
687
  {"command_id":"view.explore-panel.get","command_path":"view explore-panel get","disposition":"command","alias_of":null,"operation_ids":[],"positionals":[{"name":"view_id","type":"int","required":true,"metavar":"VIEW_ID","falls_back_to_field":null,"help":"ID of the view to act on."},{"name":"dataset_id","type":"int","required":false,"metavar":"DATASET_ID","falls_back_to_field":"dataset_id","help":"ID of the dataset the view belongs to; resolved from the view when omitted."}],"options":[],"sdk_symbol":"mammoth.api.dataviews.DataviewsAPI.explore_panel","sdk_conversion":"Call mammoth.api.dataviews.DataviewsAPI.explore_panel with validated request fields.","request_model":"ViewExplorePanelGetRequest","result_model":"ViewExplorePanelGetResult","mutation_class":"read","confirmation":"none","wait_policy":"not_async","pagination_policy":"none","acceptance_evidence":"contract_only_no_disposable_fixture","live_test":null,"live_exemption_reason":"Needs a disposable project with a saved Explore panel; no live config locally.","contract_fixture":null,"required_fixture_guard":null,"secret_fields":[],"human_example":"mammoth view explore-panel get VIEW_ID --help","agent_example":"mammoth view explore-panel get 123 456","unit_tests":["UT-VIEW-EXPLORE-PANEL-GET"],"contract_tests":["CT-VIEW-EXPLORE-PANEL-GET-HUMAN","CT-VIEW-EXPLORE-PANEL-GET-JSON","CT-VIEW-EXPLORE-PANEL-GET-ERROR"],"draft_test":null,"undo_test":null,"known_restrictions":"Read-only. Returns the Explore panel the caller saved on this view, {height, cards}, or {} when none is saved. It is a per-user preference: other users do not see it. VIEW_ID is the only id needed.","reviewed_by":"primary"},
688
- {"command_id":"view.explore-panel.set","command_path":"view explore-panel set","disposition":"command","alias_of":null,"operation_ids":["Patch"],"positionals":[{"name":"view_id","type":"int","required":true,"metavar":"VIEW_ID","falls_back_to_field":null,"help":"ID of the view to act on."},{"name":"dataset_id","type":"int","required":false,"metavar":"DATASET_ID","falls_back_to_field":"dataset_id","help":"Optional parent dataset ID. Leave it out and the CLI looks up the view's dataset. A value that is not the view's dataset is refused before the write."}],"options":[],"sdk_symbol":"mammoth.api.dataviews.DataviewsAPI.set_explore_panel","sdk_conversion":"Call mammoth.api.dataviews.DataviewsAPI.set_explore_panel with validated request fields.","request_model":"ViewExplorePanelSetRequest","result_model":"ViewExplorePanelSetResult","mutation_class":"benign_mutation","edits_target":true,"confirmation":"none","wait_policy":"not_async","pagination_policy":"none","acceptance_evidence":"contract_only_no_disposable_fixture","no_readback":"the command reads the saved panel back itself and returns it as \"panel\" (the same data view explore-panel get returns); a generic state block would drop the open flag and nested fields","live_test":null,"live_exemption_reason":"Needs a disposable project; no live config locally.","contract_fixture":null,"required_fixture_guard":null,"secret_fields":[],"human_example":"mammoth view explore-panel set VIEW_ID --help","agent_example":"mammoth view explore-panel set 123 456 --input '{\"panel\": {\"columns\": \"all\"}}'","unit_tests":["UT-VIEW-EXPLORE-PANEL-SET"],"contract_tests":["CT-VIEW-EXPLORE-PANEL-SET-HUMAN","CT-VIEW-EXPLORE-PANEL-SET-JSON","CT-VIEW-EXPLORE-PANEL-SET-ERROR"],"draft_test":null,"undo_test":null,"known_restrictions":"This is the command that opens Explore cards in the UI. Open a card per column with {\"panel\": {\"columns\": \"all\"}} or {\"panel\": {\"columns\": [\"Region\", \"Amount\"]}}: each named column that has no card gets one and the saved cards stay. To replace the whole panel, run view explore-panel get first and write back {\"panel\": {\"cards\": [...]}}. A panel with no cards list is refused, because the web app shows only cards. The result carries \"panel\", the panel read back after the write (what get returns): check its cards to see which are open. It is a per-user preference: it does not change the view or what other users see.","reviewed_by":"primary"},
688
+ {"command_id":"view.explore-panel.set","command_path":"view explore-panel set","disposition":"command","alias_of":null,"operation_ids":["Patch"],"positionals":[{"name":"view_id","type":"int","required":true,"metavar":"VIEW_ID","falls_back_to_field":null,"help":"ID of the view to act on."},{"name":"dataset_id","type":"int","required":false,"metavar":"DATASET_ID","falls_back_to_field":"dataset_id","help":"Optional parent dataset ID. Leave it out and the CLI looks up the view's dataset. A value that is not the view's dataset is refused before the write."}],"options":[],"sdk_symbol":"mammoth.api.dataviews.DataviewsAPI.set_explore_panel","sdk_conversion":"Call mammoth.api.dataviews.DataviewsAPI.set_explore_panel with validated request fields.","request_model":"ViewExplorePanelSetRequest","result_model":"ViewExplorePanelSetResult","mutation_class":"benign_mutation","edits_target":true,"confirmation":"none","wait_policy":"not_async","pagination_policy":"none","acceptance_evidence":"contract_only_no_disposable_fixture","no_readback":"the command reads the saved panel back itself and returns it as \"panel\" (the same data view explore-panel get returns); a generic state block would drop the open flag and nested fields","live_test":null,"live_exemption_reason":"Needs a disposable project; no live config locally.","contract_fixture":null,"required_fixture_guard":null,"secret_fields":[],"human_example":"mammoth view explore-panel set VIEW_ID --help","agent_example":"mammoth view explore-panel set 123 456 --input '{\"panel\": {\"columns\": \"all\"}}'","unit_tests":["UT-VIEW-EXPLORE-PANEL-SET"],"contract_tests":["CT-VIEW-EXPLORE-PANEL-SET-HUMAN","CT-VIEW-EXPLORE-PANEL-SET-JSON","CT-VIEW-EXPLORE-PANEL-SET-ERROR"],"draft_test":null,"undo_test":null,"known_restrictions":"Saves the Explore cards of the calling user for a view; it shows nothing by itself. Open a card per column with {\"panel\": {\"columns\": \"all\"}} or {\"panel\": {\"columns\": [\"Region\", \"Amount\"]}}: each named column that has no card gets one and the saved cards stay. To replace the whole panel, run view explore-panel get first and write back {\"panel\": {\"cards\": [...]}}. A panel with no cards list is refused, because the web app shows only cards. The result carries \"panel\", the panel read back after the write (what get returns): check its cards to see which are open. It is a per-user preference: it does not change the view or what other users see.","reviewed_by":"primary"},
689
689
  {"command_id":"view.export.azure-blob","command_path":"view export azure-blob","disposition":"command","alias_of":null,"operation_ids":["AddExport"],"positionals":[{"name":"view_id","type":"int","required":true,"metavar":"VIEW_ID","falls_back_to_field":null,"help":"ID of the view to export."},{"name":"dataset_id","type":"int","required":false,"metavar":"DATASET_ID","falls_back_to_field":"dataset_id","help":"Exact parent dataset ID. Required for this command: pass it here or as the 'dataset_id' input field; only read commands may omit it and discover the parent."}],"options":[],"sdk_symbol":"mammoth.view.ViewExport.to_azure_blob","sdk_conversion":"Call mammoth.view.ViewExport.to_azure_blob with validated request fields.","request_model":"ViewExportAzureBlobRequest","result_model":"ViewExportAzureBlobResult","mutation_class":"external_effect","edits_target":false,"confirmation":"yes_always","wait_policy":"returns_job","pagination_policy":"none","acceptance_evidence":"contract_only_high_impact","readback":{"command":"job.get","ids":{"job_id":"result.future_id|result.job.id"},"kind":"delivery"},"live_test":null,"live_exemption_reason":"High-impact or external-effect operation without a disposable fixture.","contract_fixture":null,"required_fixture_guard":null,"secret_fields":["client_secret"],"human_example":"mammoth view export azure-blob VIEW_ID --help","agent_example":"mammoth view export azure-blob 123 456 --input /private/path/request.json --yes","unit_tests":["UT-VIEW-EXPORT-AZURE-BLOB"],"contract_tests":["CT-VIEW-EXPORT-AZURE-BLOB-HUMAN","CT-VIEW-EXPORT-AZURE-BLOB-JSON","CT-VIEW-EXPORT-AZURE-BLOB-ERROR"],"draft_test":null,"undo_test":null,"known_restrictions":null,"reviewed_by":"primary"},
690
690
  {"command_id":"view.export.bigquery","command_path":"view export bigquery","disposition":"command","alias_of":null,"operation_ids":["AddExport"],"positionals":[{"name":"view_id","type":"int","required":true,"metavar":"VIEW_ID","falls_back_to_field":null,"help":"ID of the view to export."},{"name":"dataset_id","type":"int","required":false,"metavar":"DATASET_ID","falls_back_to_field":"dataset_id","help":"Exact parent dataset ID. Required for this command: pass it here or as the 'dataset_id' input field; only read commands may omit it and discover the parent."}],"options":[],"sdk_symbol":"mammoth.view.ViewExport.to_bigquery","sdk_conversion":"Call mammoth.view.ViewExport.to_bigquery with validated request fields.","request_model":"ViewExportBigqueryRequest","result_model":"ViewExportBigqueryResult","mutation_class":"external_effect","edits_target":false,"confirmation":"yes_always","wait_policy":"returns_job","pagination_policy":"none","acceptance_evidence":"contract_only_high_impact","readback":{"command":"job.get","ids":{"job_id":"result.future_id|result.job.id"},"kind":"delivery"},"live_test":null,"live_exemption_reason":"High-impact or external-effect operation without a disposable fixture.","contract_fixture":null,"required_fixture_guard":null,"secret_fields":[],"human_example":"mammoth view export bigquery VIEW_ID --help","agent_example":"mammoth view export bigquery 123 456 --input '{\"selected_profile\": {}, \"selected_identity\": {}, \"table\": \"exports\"}' --yes","unit_tests":["UT-VIEW-EXPORT-BIGQUERY"],"contract_tests":["CT-VIEW-EXPORT-BIGQUERY-HUMAN","CT-VIEW-EXPORT-BIGQUERY-JSON","CT-VIEW-EXPORT-BIGQUERY-ERROR"],"draft_test":null,"undo_test":null,"known_restrictions":"Require upsert keys for UPSERT and type both partition variants. With export_type REPLACE (the default) it drops and recreates the destination table on this export and on every later run of the view's pipeline; refused unless the input sets replace_table to true (replace_table_not_acknowledged). The result carries refreshes_on_pipeline_run and a note saying so.","reviewed_by":"primary"},
691
691
  {"command_id":"view.export.create","command_path":"view export create","disposition":"command","alias_of":null,"operation_ids":["AddExport"],"positionals":[{"name":"dataview_id","type":"int","required":true,"metavar":"DATAVIEW_ID","falls_back_to_field":null,"help":"ID of the dataview."}],"options":[],"sdk_symbol":"mammoth.api.exports.ExportsAPI.create","sdk_conversion":"Call mammoth.api.exports.ExportsAPI.create with validated request fields.","request_model":"ViewExportCreateRequest","result_model":"ViewExportCreateResult","mutation_class":"external_effect","edits_target":false,"confirmation":"yes_always","wait_policy":"returns_job","pagination_policy":"none","acceptance_evidence":"contract_only_high_impact","readback":{"command":"job.get","ids":{"job_id":"result.future_id|result.job.id"},"kind":"delivery"},"live_test":null,"live_exemption_reason":"High-impact or external-effect operation without a disposable fixture.","contract_fixture":null,"required_fixture_guard":null,"secret_fields":[],"human_example":"mammoth view export create DATAVIEW_ID --help","agent_example":"mammoth view export create 123 --input '{\"export_spec\": {\"DATAVIEW_ID\": 1, \"handler_type\": \"postgres\", \"trigger_type\": \"none\", \"run_immediately\": true}}' --yes","unit_tests":["UT-VIEW-EXPORT-CREATE"],"contract_tests":["CT-VIEW-EXPORT-CREATE-HUMAN","CT-VIEW-EXPORT-CREATE-JSON","CT-VIEW-EXPORT-CREATE-ERROR"],"draft_test":null,"undo_test":null,"known_restrictions":"Replace open destination dictionaries with the typed destination union.","reviewed_by":"primary"},
@@ -753,7 +753,7 @@
753
753
  {"command_id":"view.transform.extract-date","command_path":"view transform extract-date","disposition":"command","alias_of":null,"operation_ids":["AddTask"],"positionals":[{"name":"view_id","type":"int","required":true,"metavar":"VIEW_ID","falls_back_to_field":null,"help":"ID of the view to act on."}],"options":[],"sdk_symbol":"mammoth._mixins._date_ops.DateOpsMixin.extract_date","sdk_conversion":"Call mammoth._mixins._date_ops.DateOpsMixin.extract_date with validated request fields.","request_model":"ViewTransformExtractDateRequest","result_model":"ViewTransformExtractDateResult","mutation_class":"reversible_pipeline","edits_target":true,"confirmation":"none","wait_policy":"always_wait","pagination_policy":"none","acceptance_evidence":"live_disposable_project","readback":{"command":"view.data.get","ids":{"view_id":"positional.0"},"kind":"data"},"live_test":"LT-VIEW-TRANSFORM-EXTRACT-DATE","live_exemption_reason":null,"contract_fixture":null,"required_fixture_guard":null,"secret_fields":[],"human_example":"mammoth view transform extract-date VIEW_ID --help","agent_example":"mammoth view transform extract-date 123 --input '{\"column\": \"Status\", \"component\": \"year\", \"dataset_id\": 456}'","unit_tests":["UT-VIEW-TRANSFORM-EXTRACT-DATE"],"contract_tests":["CT-VIEW-TRANSFORM-EXTRACT-DATE-HUMAN","CT-VIEW-TRANSFORM-EXTRACT-DATE-JSON","CT-VIEW-TRANSFORM-EXTRACT-DATE-ERROR"],"draft_test":"LT-VIEW-TRANSFORM-EXTRACT-DATE-DRAFT","undo_test":"LT-VIEW-TRANSFORM-EXTRACT-DATE-UNDO","known_restrictions":"Observe first: `view get VIEW_ID` to confirm the column type is DATE (run convert-type first if TEXT) and `view data get` to check a few values. For a month bucket use `year_month_number` (\"2026-10\"), which sorts in time order; `year_month` (\"2026, October\") sorts alphabetically on a chart axis.","reviewed_by":"primary"},
754
754
  {"command_id":"view.transform.fill-missing","command_path":"view transform fill-missing","disposition":"command","alias_of":null,"operation_ids":["AddTask"],"positionals":[{"name":"view_id","type":"int","required":true,"metavar":"VIEW_ID","falls_back_to_field":null,"help":"ID of the view to act on."}],"options":[],"sdk_symbol":"mammoth._mixins._row_ops.RowOpsMixin.fill_missing","sdk_conversion":"Call mammoth._mixins._row_ops.RowOpsMixin.fill_missing with validated request fields.","request_model":"ViewTransformFillMissingRequest","result_model":"ViewTransformFillMissingResult","mutation_class":"reversible_pipeline","edits_target":true,"confirmation":"none","wait_policy":"always_wait","pagination_policy":"none","acceptance_evidence":"live_disposable_project","readback":{"command":"view.data.get","ids":{"view_id":"positional.0"},"kind":"data"},"live_test":"LT-VIEW-TRANSFORM-FILL-MISSING","live_exemption_reason":null,"contract_fixture":null,"required_fixture_guard":null,"secret_fields":[],"human_example":"mammoth view transform fill-missing VIEW_ID --help","agent_example":"mammoth view transform fill-missing 123 --input '{\"column\": \"Status\", \"direction\": \"FIRST_VALUE\", \"dataset_id\": 456}'","unit_tests":["UT-VIEW-TRANSFORM-FILL-MISSING"],"contract_tests":["CT-VIEW-TRANSFORM-FILL-MISSING-HUMAN","CT-VIEW-TRANSFORM-FILL-MISSING-JSON","CT-VIEW-TRANSFORM-FILL-MISSING-ERROR"],"draft_test":"LT-VIEW-TRANSFORM-FILL-MISSING-DRAFT","undo_test":"LT-VIEW-TRANSFORM-FILL-MISSING-UNDO","known_restrictions":"Observe first: `view data profile VIEW_ID` for the blank count of the column, so the result can be compared to it.","reviewed_by":"primary"},
755
755
  {"command_id":"view.transform.filter","command_path":"view transform filter","disposition":"command","alias_of":null,"operation_ids":["AddTask"],"positionals":[{"name":"view_id","type":"int","required":true,"metavar":"VIEW_ID","falls_back_to_field":null,"help":"ID of the view to act on."}],"options":[],"sdk_symbol":"mammoth._mixins._filter_ops.FilterOpsMixin.filter_rows","sdk_conversion":"Call mammoth._mixins._filter_ops.FilterOpsMixin.filter_rows with validated request fields.","request_model":"ViewTransformFilterRequest","result_model":"ViewTransformFilterResult","mutation_class":"reversible_pipeline","edits_target":true,"confirmation":"none","wait_policy":"always_wait","pagination_policy":"none","acceptance_evidence":"live_disposable_project","readback":{"command":"view.data.get","ids":{"view_id":"positional.0"},"kind":"data"},"live_test":"LT-VIEW-TRANSFORM-FILTER","live_exemption_reason":null,"contract_fixture":null,"required_fixture_guard":null,"secret_fields":[],"human_example":"mammoth view transform filter VIEW_ID --help","agent_example":"mammoth view transform filter 123 --input '{\"condition\": {\"column\": \"Status\", \"operator\": \"EQ\", \"value\": \"Active\"}, \"dataset_id\": 456}'","unit_tests":["UT-VIEW-TRANSFORM-FILTER"],"contract_tests":["CT-VIEW-TRANSFORM-FILTER-HUMAN","CT-VIEW-TRANSFORM-FILTER-JSON","CT-VIEW-TRANSFORM-FILTER-ERROR"],"draft_test":"LT-VIEW-TRANSFORM-FILTER-DRAFT","undo_test":"LT-VIEW-TRANSFORM-FILTER-UNDO","known_restrictions":"Observe first: count the rows that match with `view data aggregate` using the same condition, and the total with no condition.","reviewed_by":"primary"},
756
- {"command_id":"view.transform.first-name","command_path":"view transform first-name","disposition":"command","alias_of":null,"operation_ids":["AddTask"],"positionals":[{"name":"view_id","type":"int","required":true,"metavar":"VIEW_ID","falls_back_to_field":null,"help":"ID of the view to act on."}],"options":[],"sdk_symbol":"mammoth._mixins._text_ops.TextOpsMixin.substring","sdk_conversion":"CLI one-call op: View.substring with a first-word regex, then View.submit_draft when the step was staged; from mammoth_cli.commands.view_ops. The accepted document fields are in command_contract.py.","request_model":"ViewTransformFirstNameRequest","result_model":"ViewTransformFirstNameResult","mutation_class":"reversible_pipeline","edits_target":true,"confirmation":"none","wait_policy":"always_wait","pagination_policy":"none","acceptance_evidence":"live_disposable_project","readback":{"command":"view.data.get","ids":{"view_id":"positional.0"},"kind":"data"},"live_test":null,"live_exemption_reason":"Covered by tests/realcode/test_one_call_transform_ops.py, which drives the real CLI and SDK against a recording HTTP socket; no live case is recorded yet.","contract_fixture":null,"required_fixture_guard":null,"secret_fields":[],"human_example":"mammoth view transform first-name VIEW_ID --help","agent_example":"mammoth view transform first-name 123 --input '{\"column\": \"Name\", \"new_column\": \"First name\", \"dataset_id\": 456}'","unit_tests":["UT-VIEW-TRANSFORM-FIRST-NAME"],"contract_tests":["CT-VIEW-TRANSFORM-FIRST-NAME-HUMAN","CT-VIEW-TRANSFORM-FIRST-NAME-JSON","CT-VIEW-TRANSFORM-FIRST-NAME-ERROR"],"draft_test":null,"undo_test":null,"known_restrictions":"Use for \"extract the first name\" or the first word of a text column. --input: \"column\" (a TEXT column, required) and exactly one of \"new_column\" or \"existing_column\". Takes the text up to the first space. One call: if the view is in draft mode the step is staged, the draft is submitted and the result waits on this step's own run (run.transform_status DONE), not on the pipeline reading ready. A draft that already held other staged steps is left staged (status staged) because submitting would run them too; run view draft submit when that is intended.","reviewed_by":"primary"},
756
+ {"command_id":"view.transform.first-name","command_path":"view transform first-name","disposition":"command","alias_of":null,"operation_ids":["AddTask"],"positionals":[{"name":"view_id","type":"int","required":true,"metavar":"VIEW_ID","falls_back_to_field":null,"help":"ID of the view to act on."}],"options":[],"sdk_symbol":"mammoth._mixins._text_ops.TextOpsMixin.substring","sdk_conversion":"CLI one-call op: View.substring with a first-word regex; from mammoth_cli.commands.view_ops. The accepted document fields are in command_contract.py.","request_model":"ViewTransformFirstNameRequest","result_model":"ViewTransformFirstNameResult","mutation_class":"reversible_pipeline","edits_target":true,"confirmation":"none","wait_policy":"always_wait","pagination_policy":"none","acceptance_evidence":"live_disposable_project","readback":{"command":"view.data.get","ids":{"view_id":"positional.0"},"kind":"data"},"live_test":null,"live_exemption_reason":"Covered by tests/realcode/test_one_call_transform_ops.py, which drives the real CLI and SDK against a recording HTTP socket; no live case is recorded yet.","contract_fixture":null,"required_fixture_guard":null,"secret_fields":[],"human_example":"mammoth view transform first-name VIEW_ID --help","agent_example":"mammoth view transform first-name 123 --input '{\"column\": \"Name\", \"new_column\": \"First name\", \"dataset_id\": 456}'","unit_tests":["UT-VIEW-TRANSFORM-FIRST-NAME"],"contract_tests":["CT-VIEW-TRANSFORM-FIRST-NAME-HUMAN","CT-VIEW-TRANSFORM-FIRST-NAME-JSON","CT-VIEW-TRANSFORM-FIRST-NAME-ERROR"],"draft_test":null,"undo_test":null,"known_restrictions":"Use for \"extract the first name\" or the first word of a text column. --input: \"column\" (a TEXT column, required) and exactly one of \"new_column\" or \"existing_column\". Takes the text up to the first space. One call: if the view is in draft mode the step is staged (status staged) and the draft stays unsubmitted, whether or not it already held staged steps; run view draft submit when that is intended. Outside draft mode the result waits on this step's own run (run.transform_status DONE), not on the pipeline reading ready.","reviewed_by":"primary"},
757
757
  {"command_id":"view.transform.generate-sql","command_path":"view transform generate-sql","disposition":"command","alias_of":null,"operation_ids":["AddTask"],"positionals":[{"name":"view_id","type":"int","required":true,"metavar":"VIEW_ID","falls_back_to_field":null,"help":"ID of the view to act on."}],"options":[],"sdk_symbol":"mammoth._mixins._advanced_ops.AdvancedOpsMixin.generate_sql","sdk_conversion":"Call mammoth._mixins._advanced_ops.AdvancedOpsMixin.generate_sql with validated request fields.","request_model":"ViewTransformGenerateSqlRequest","result_model":"ViewTransformGenerateSqlResult","mutation_class":"reversible_pipeline","edits_target":false,"confirmation":"none","wait_policy":"always_wait","pagination_policy":"none","acceptance_evidence":"live_disposable_project","readback":{"command":"view.data.get","ids":{"view_id":"positional.0"},"kind":"data"},"live_test":"LT-VIEW-TRANSFORM-GENERATE-SQL","live_exemption_reason":null,"contract_fixture":null,"required_fixture_guard":null,"secret_fields":[],"human_example":"mammoth view transform generate-sql VIEW_ID --help","agent_example":"mammoth view transform generate-sql 123 --input '{\"intent\": \"Summarize revenue by region\", \"dataset_id\": 456}'","unit_tests":["UT-VIEW-TRANSFORM-GENERATE-SQL"],"contract_tests":["CT-VIEW-TRANSFORM-GENERATE-SQL-HUMAN","CT-VIEW-TRANSFORM-GENERATE-SQL-JSON","CT-VIEW-TRANSFORM-GENERATE-SQL-ERROR"],"draft_test":"LT-VIEW-TRANSFORM-GENERATE-SQL-DRAFT","undo_test":"LT-VIEW-TRANSFORM-GENERATE-SQL-UNDO","known_restrictions":"Writes and validates a SQL query from the intent and returns it as data.sql; it does not change the view (release, 2026-09-25: no task was added). Apply the query with view transform add-sql (data.apply is the exact command); add-sql replaces the view's columns with the result.","reviewed_by":"primary"},
758
758
  {"command_id":"view.transform.increment-date","command_path":"view transform increment-date","disposition":"command","alias_of":null,"operation_ids":["AddTask"],"positionals":[{"name":"view_id","type":"int","required":true,"metavar":"VIEW_ID","falls_back_to_field":null,"help":"ID of the view to act on."}],"options":[],"sdk_symbol":"mammoth._mixins._date_ops.DateOpsMixin.increment_date","sdk_conversion":"Call mammoth._mixins._date_ops.DateOpsMixin.increment_date with validated request fields.","request_model":"ViewTransformIncrementDateRequest","result_model":"ViewTransformIncrementDateResult","mutation_class":"reversible_pipeline","edits_target":true,"confirmation":"none","wait_policy":"always_wait","pagination_policy":"none","acceptance_evidence":"live_disposable_project","readback":{"command":"view.data.get","ids":{"view_id":"positional.0"},"kind":"data"},"live_test":"LT-VIEW-TRANSFORM-INCREMENT-DATE","live_exemption_reason":null,"contract_fixture":null,"required_fixture_guard":null,"secret_fields":[],"human_example":"mammoth view transform increment-date VIEW_ID --help","agent_example":"mammoth view transform increment-date 123 --input '{\"column\": \"Status\", \"delta\": {}, \"dataset_id\": 456}'","unit_tests":["UT-VIEW-TRANSFORM-INCREMENT-DATE"],"contract_tests":["CT-VIEW-TRANSFORM-INCREMENT-DATE-HUMAN","CT-VIEW-TRANSFORM-INCREMENT-DATE-JSON","CT-VIEW-TRANSFORM-INCREMENT-DATE-ERROR"],"draft_test":"LT-VIEW-TRANSFORM-INCREMENT-DATE-DRAFT","undo_test":"LT-VIEW-TRANSFORM-INCREMENT-DATE-UNDO","known_restrictions":"Observe first: `view get VIEW_ID` to confirm the column type is DATE, and `view data get` to check a few values.","reviewed_by":"primary"},
759
759
  {"command_id":"view.transform.join","command_path":"view transform join","disposition":"command","alias_of":null,"operation_ids":["AddTask"],"positionals":[{"name":"view_id","type":"int","required":true,"metavar":"VIEW_ID","falls_back_to_field":null,"help":"ID of the view to act on."}],"options":[],"sdk_symbol":"mammoth._mixins._advanced_ops.AdvancedOpsMixin.join","sdk_conversion":"Call mammoth._mixins._advanced_ops.AdvancedOpsMixin.join with validated request fields.","request_model":"ViewTransformJoinRequest","result_model":"ViewTransformJoinResult","mutation_class":"reversible_pipeline","edits_target":true,"confirmation":"none","wait_policy":"always_wait","pagination_policy":"none","acceptance_evidence":"live_disposable_project","readback":{"command":"view.data.get","ids":{"view_id":"positional.0"},"kind":"data"},"live_test":"LT-VIEW-TRANSFORM-JOIN","live_exemption_reason":null,"contract_fixture":null,"required_fixture_guard":null,"secret_fields":[],"human_example":"mammoth view transform join VIEW_ID --help","agent_example":"mammoth view transform join 123 --input '{\"foreign_view\": 1, \"join_type\": \"INNER\", \"on\": [{\"left\": \"Customer ID\", \"right\": \"Customer ID\"}], \"select\": [\"Region\"], \"dataset_id\": 456, \"foreign_dataset_id\": 457}'","unit_tests":["UT-VIEW-TRANSFORM-JOIN"],"contract_tests":["CT-VIEW-TRANSFORM-JOIN-HUMAN","CT-VIEW-TRANSFORM-JOIN-JSON","CT-VIEW-TRANSFORM-JOIN-ERROR"],"draft_test":"LT-VIEW-TRANSFORM-JOIN-DRAFT","undo_test":"LT-VIEW-TRANSFORM-JOIN-UNDO","known_restrictions":"Observe first: read both key columns (`view data get`, `view data profile`) and run this with `--dry-run` for `join_preview.match_rate`.","reviewed_by":"primary"},
@@ -771,7 +771,7 @@
771
771
  {"command_id":"view.transform.substring","command_path":"view transform substring","disposition":"command","alias_of":null,"operation_ids":["AddTask"],"positionals":[{"name":"view_id","type":"int","required":true,"metavar":"VIEW_ID","falls_back_to_field":null,"help":"ID of the view to act on."}],"options":[],"sdk_symbol":"mammoth._mixins._text_ops.TextOpsMixin.substring","sdk_conversion":"Call mammoth._mixins._text_ops.TextOpsMixin.substring with validated request fields.","request_model":"ViewTransformSubstringRequest","result_model":"ViewTransformSubstringResult","mutation_class":"reversible_pipeline","edits_target":true,"confirmation":"none","wait_policy":"always_wait","pagination_policy":"none","acceptance_evidence":"live_disposable_project","readback":{"command":"view.data.get","ids":{"view_id":"positional.0"},"kind":"data"},"live_test":"LT-VIEW-TRANSFORM-SUBSTRING","live_exemption_reason":null,"contract_fixture":null,"required_fixture_guard":null,"secret_fields":[],"human_example":"mammoth view transform substring VIEW_ID --help","agent_example":"mammoth view transform substring 123 --input '{\"column\": \"Status\", \"dataset_id\": 456}'","unit_tests":["UT-VIEW-TRANSFORM-SUBSTRING"],"contract_tests":["CT-VIEW-TRANSFORM-SUBSTRING-HUMAN","CT-VIEW-TRANSFORM-SUBSTRING-JSON","CT-VIEW-TRANSFORM-SUBSTRING-ERROR"],"draft_test":"LT-VIEW-TRANSFORM-SUBSTRING-DRAFT","undo_test":"LT-VIEW-TRANSFORM-SUBSTRING-UNDO","known_restrictions":"Observe first: `view data get VIEW_ID` on the column to see the real value lengths and formats.","reviewed_by":"primary"},
772
772
  {"command_id":"view.transform.text","command_path":"view transform text","disposition":"command","alias_of":null,"operation_ids":["AddTask"],"positionals":[{"name":"view_id","type":"int","required":true,"metavar":"VIEW_ID","falls_back_to_field":null,"help":"ID of the view to act on."}],"options":[],"sdk_symbol":"mammoth._mixins._text_ops.TextOpsMixin.text_transform","sdk_conversion":"Call mammoth._mixins._text_ops.TextOpsMixin.text_transform with validated request fields.","request_model":"ViewTransformTextRequest","result_model":"ViewTransformTextResult","mutation_class":"reversible_pipeline","edits_target":true,"confirmation":"none","wait_policy":"always_wait","pagination_policy":"none","acceptance_evidence":"live_disposable_project","readback":{"command":"view.data.get","ids":{"view_id":"positional.0"},"kind":"data"},"live_test":"LT-VIEW-TRANSFORM-TEXT","live_exemption_reason":null,"contract_fixture":null,"required_fixture_guard":null,"secret_fields":[],"human_example":"mammoth view transform text VIEW_ID --help","agent_example":"mammoth view transform text 123 --input '{\"columns\": [\"Status\"], \"dataset_id\": 456}'","unit_tests":["UT-VIEW-TRANSFORM-TEXT"],"contract_tests":["CT-VIEW-TRANSFORM-TEXT-HUMAN","CT-VIEW-TRANSFORM-TEXT-JSON","CT-VIEW-TRANSFORM-TEXT-ERROR"],"draft_test":"LT-VIEW-TRANSFORM-TEXT-DRAFT","undo_test":"LT-VIEW-TRANSFORM-TEXT-UNDO","known_restrictions":"Observe first: `view data profile VIEW_ID` on the column to see the current values (case, padding, spelling variants).","reviewed_by":"primary"},
773
773
  {"command_id":"view.transform.unnest","command_path":"view transform unnest","disposition":"command","alias_of":null,"operation_ids":["AddTask"],"positionals":[{"name":"view_id","type":"int","required":true,"metavar":"VIEW_ID","falls_back_to_field":null,"help":"ID of the view to act on."}],"options":[],"sdk_symbol":"mammoth._mixins._row_ops.RowOpsMixin.unnest","sdk_conversion":"Call mammoth._mixins._row_ops.RowOpsMixin.unnest with validated request fields.","request_model":"ViewTransformUnnestRequest","result_model":"ViewTransformUnnestResult","mutation_class":"reversible_pipeline","edits_target":true,"confirmation":"none","wait_policy":"always_wait","pagination_policy":"none","acceptance_evidence":"live_disposable_project","readback":{"command":"view.data.get","ids":{"view_id":"positional.0"},"kind":"data"},"live_test":"LT-VIEW-TRANSFORM-UNNEST","live_exemption_reason":null,"contract_fixture":null,"required_fixture_guard":null,"secret_fields":[],"human_example":"mammoth view transform unnest VIEW_ID --help","agent_example":"mammoth view transform unnest 123 --input '{\"columns\": [\"Status\"], \"dataset_id\": 456}'","unit_tests":["UT-VIEW-TRANSFORM-UNNEST"],"contract_tests":["CT-VIEW-TRANSFORM-UNNEST-HUMAN","CT-VIEW-TRANSFORM-UNNEST-JSON","CT-VIEW-TRANSFORM-UNNEST-ERROR"],"draft_test":"LT-VIEW-TRANSFORM-UNNEST-DRAFT","undo_test":"LT-VIEW-TRANSFORM-UNNEST-UNDO","known_restrictions":"Observe first: `view data get VIEW_ID` on the column to see how the nested values are stored.","reviewed_by":"primary"},
774
- {"command_id":"view.transform.update-column","command_path":"view transform update-column","disposition":"command","alias_of":null,"operation_ids":["AddTask"],"positionals":[{"name":"view_id","type":"int","required":true,"metavar":"VIEW_ID","falls_back_to_field":null,"help":"ID of the view to act on."}],"options":[],"sdk_symbol":"mammoth._mixins._math_ops.MathOpsMixin.math","sdk_conversion":"CLI one-call op: View.math with existing_column, then View.submit_draft when the step was staged; from mammoth_cli.commands.view_ops. The accepted document fields are in command_contract.py.","request_model":"ViewTransformUpdateColumnRequest","result_model":"ViewTransformUpdateColumnResult","mutation_class":"reversible_pipeline","edits_target":true,"confirmation":"none","wait_policy":"always_wait","pagination_policy":"none","acceptance_evidence":"live_disposable_project","readback":{"command":"view.data.get","ids":{"view_id":"positional.0"},"kind":"data"},"live_test":null,"live_exemption_reason":"Covered by tests/realcode/test_one_call_transform_ops.py, which drives the real CLI and SDK against a recording HTTP socket; no live case is recorded yet.","contract_fixture":null,"required_fixture_guard":null,"secret_fields":[],"human_example":"mammoth view transform update-column VIEW_ID --help","agent_example":"mammoth view transform update-column 123 --input '{\"column\": \"Cost\", \"expression\": \"Cost + 5\", \"dataset_id\": 456}'","unit_tests":["UT-VIEW-TRANSFORM-UPDATE-COLUMN"],"contract_tests":["CT-VIEW-TRANSFORM-UPDATE-COLUMN-HUMAN","CT-VIEW-TRANSFORM-UPDATE-COLUMN-JSON","CT-VIEW-TRANSFORM-UPDATE-COLUMN-ERROR"],"draft_test":null,"undo_test":null,"known_restrictions":"Use to overwrite a numeric column with an expression over its own values (\"add 5 to Cost\"). --input: \"column\" (an existing column, required) and \"expression\" (required, as in view transform math). Same as view transform math with existing_column set. One call: if the view is in draft mode the step is staged, the draft is submitted and the result waits on this step's own run (run.transform_status DONE), not on the pipeline reading ready. A draft that already held other staged steps is left staged (status staged); run view draft submit when that is intended.","reviewed_by":"primary"},
774
+ {"command_id":"view.transform.update-column","command_path":"view transform update-column","disposition":"command","alias_of":null,"operation_ids":["AddTask"],"positionals":[{"name":"view_id","type":"int","required":true,"metavar":"VIEW_ID","falls_back_to_field":null,"help":"ID of the view to act on."}],"options":[],"sdk_symbol":"mammoth._mixins._math_ops.MathOpsMixin.math","sdk_conversion":"CLI one-call op: View.math with existing_column; from mammoth_cli.commands.view_ops. The accepted document fields are in command_contract.py.","request_model":"ViewTransformUpdateColumnRequest","result_model":"ViewTransformUpdateColumnResult","mutation_class":"reversible_pipeline","edits_target":true,"confirmation":"none","wait_policy":"always_wait","pagination_policy":"none","acceptance_evidence":"live_disposable_project","readback":{"command":"view.data.get","ids":{"view_id":"positional.0"},"kind":"data"},"live_test":null,"live_exemption_reason":"Covered by tests/realcode/test_one_call_transform_ops.py, which drives the real CLI and SDK against a recording HTTP socket; no live case is recorded yet.","contract_fixture":null,"required_fixture_guard":null,"secret_fields":[],"human_example":"mammoth view transform update-column VIEW_ID --help","agent_example":"mammoth view transform update-column 123 --input '{\"column\": \"Cost\", \"expression\": \"Cost + 5\", \"dataset_id\": 456}'","unit_tests":["UT-VIEW-TRANSFORM-UPDATE-COLUMN"],"contract_tests":["CT-VIEW-TRANSFORM-UPDATE-COLUMN-HUMAN","CT-VIEW-TRANSFORM-UPDATE-COLUMN-JSON","CT-VIEW-TRANSFORM-UPDATE-COLUMN-ERROR"],"draft_test":null,"undo_test":null,"known_restrictions":"Use to overwrite a numeric column with an expression over its own values (\"add 5 to Cost\"). --input: \"column\" (an existing column, required) and \"expression\" (required, as in view transform math). Same as view transform math with existing_column set. One call: if the view is in draft mode the step is staged (status staged) and the draft stays unsubmitted, whether or not it already held staged steps; run view draft submit when that is intended. Outside draft mode the result waits on this step's own run (run.transform_status DONE), not on the pipeline reading ready.","reviewed_by":"primary"},
775
775
  {"command_id":"view.transform.window","command_path":"view transform window","disposition":"command","alias_of":null,"operation_ids":["AddTask"],"positionals":[{"name":"view_id","type":"int","required":true,"metavar":"VIEW_ID","falls_back_to_field":null,"help":"ID of the view to act on."}],"options":[],"sdk_symbol":"mammoth._mixins._aggregate_ops.AggregateOpsMixin.window","sdk_conversion":"Call mammoth._mixins._aggregate_ops.AggregateOpsMixin.window with validated request fields.","request_model":"ViewTransformWindowRequest","result_model":"ViewTransformWindowResult","mutation_class":"reversible_pipeline","edits_target":true,"confirmation":"none","wait_policy":"always_wait","pagination_policy":"none","acceptance_evidence":"live_disposable_project","readback":{"command":"view.data.get","ids":{"view_id":"positional.0"},"kind":"data"},"live_test":"LT-VIEW-TRANSFORM-WINDOW","live_exemption_reason":null,"contract_fixture":null,"required_fixture_guard":null,"secret_fields":[],"human_example":"mammoth view transform window VIEW_ID --help","agent_example":"mammoth view transform window 123 --input '{\"function\": \"ROW_NUMBER\", \"dataset_id\": 456}'","unit_tests":["UT-VIEW-TRANSFORM-WINDOW"],"contract_tests":["CT-VIEW-TRANSFORM-WINDOW-HUMAN","CT-VIEW-TRANSFORM-WINDOW-JSON","CT-VIEW-TRANSFORM-WINDOW-ERROR"],"draft_test":"LT-VIEW-TRANSFORM-WINDOW-DRAFT","undo_test":"LT-VIEW-TRANSFORM-WINDOW-UNDO","known_restrictions":"Observe first: `view get VIEW_ID` for the column types, and `view data profile` for blanks in the partition and order columns. Exactly one of new_column or existing_column is required; both or neither is refused.","reviewed_by":"primary"},
776
776
  {"command_id":"view.trash","command_path":"view trash","disposition":"command","alias_of":null,"operation_ids":["TrashDataview"],"positionals":[{"name":"view_id","type":"int","required":true,"metavar":"VIEW_ID","falls_back_to_field":null,"help":"ID of the view to act on."},{"name":"dataset_id","type":"int","required":false,"metavar":"DATASET_ID","falls_back_to_field":"dataset_id","help":"Exact parent dataset ID. Required for this command: pass it here or as the 'dataset_id' input field; only read commands may omit it and discover the parent."}],"options":[],"sdk_symbol":"mammoth.api.dataviews.DataviewsAPI.trash","sdk_conversion":"Call mammoth.api.dataviews.DataviewsAPI.trash with validated request fields.","request_model":"ViewTrashRequest","result_model":"ViewTrashResult","mutation_class":"benign_mutation","edits_target":true,"confirmation":"none","wait_policy":"not_async","pagination_policy":"none","acceptance_evidence":"live_disposable_project","readback":{"command":"view.get","ids":{"view_id":"positional.0"},"kind":"object"},"live_test":"LT-VIEW-TRASH","live_exemption_reason":null,"contract_fixture":null,"required_fixture_guard":null,"secret_fields":[],"human_example":"mammoth view trash VIEW_ID --help","agent_example":"mammoth view trash 123 456","unit_tests":["UT-VIEW-TRASH"],"contract_tests":["CT-VIEW-TRASH-HUMAN","CT-VIEW-TRASH-JSON","CT-VIEW-TRASH-ERROR"],"draft_test":null,"undo_test":null,"known_restrictions":null,"reviewed_by":"primary"},
777
777
  {"command_id":"view.update","command_path":"view update","disposition":"command","alias_of":null,"operation_ids":["Patch"],"positionals":[{"name":"view_id","type":"int","required":true,"metavar":"VIEW_ID","falls_back_to_field":null,"help":"ID of the view to act on."},{"name":"dataset_id","type":"int","required":false,"metavar":"DATASET_ID","falls_back_to_field":"dataset_id","help":"Exact parent dataset ID. Required for this command: pass it here or as the 'dataset_id' input field; only read commands may omit it and discover the parent."}],"options":[],"sdk_symbol":"mammoth.api.dataviews.DataviewsAPI.update","sdk_conversion":"Call mammoth.api.dataviews.DataviewsAPI.update with validated request fields.","request_model":"ViewUpdateRequest","result_model":"ViewUpdateResult","mutation_class":"benign_mutation","edits_target":true,"confirmation":"none","wait_policy":"not_async","pagination_policy":"none","acceptance_evidence":"live_disposable_project","readback":{"command":"view.get","ids":{"view_id":"positional.0"},"kind":"object"},"live_test":"LT-VIEW-UPDATE","live_exemption_reason":null,"contract_fixture":null,"required_fixture_guard":null,"secret_fields":[],"human_example":"mammoth view update VIEW_ID --help","agent_example":"mammoth view update 123 456 --input '{\"name\": \"Revenue report\"}'","unit_tests":["UT-VIEW-UPDATE"],"contract_tests":["CT-VIEW-UPDATE-HUMAN","CT-VIEW-UPDATE-JSON","CT-VIEW-UPDATE-ERROR"],"draft_test":null,"undo_test":null,"known_restrictions":"Only the typed rename is offered (--input {\"name\": ...}); any other patch is refused with B09 DATAVIEW_INPUT_UNTYPED because patch_data is an arbitrary dictionary.","reviewed_by":"primary"},
File without changes
File without changes
File without changes