mammoth-cli 2.2.85__tar.gz → 2.2.86__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 (315) hide show
  1. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/PKG-INFO +2 -2
  2. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/__init__.py +1 -1
  3. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/__main__.py +5 -0
  4. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/app.py +136 -33
  5. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/bundled_skill/mammoth-cli/SKILL.md +8 -8
  6. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/bundled_skill/mammoth-cli/references/auth.md +10 -6
  7. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/bundled_skill/mammoth-cli/references/capabilities.md +1 -1
  8. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/bundled_skill/mammoth-cli/references/command-index.md +10 -6
  9. mammoth_cli-2.2.86/mammoth_cli/bundled_skill/mammoth-cli/references/commands/capabilities.md +13 -0
  10. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/collection.md +50 -0
  11. mammoth_cli-2.2.86/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dashboard-embed.md +93 -0
  12. mammoth_cli-2.2.86/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dashboard-published.md +83 -0
  13. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dashboard.md +94 -134
  14. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dataset.md +1 -1
  15. mammoth_cli-2.2.86/mammoth_cli/bundled_skill/mammoth-cli/references/commands/how.md +13 -0
  16. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/view.md +30 -0
  17. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/workflow.md +30 -0
  18. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/workspace.md +20 -0
  19. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/bundled_skill/mammoth-cli/references/machine-output.md +25 -3
  20. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/dashboards.md +13 -0
  21. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/commands/auth.py +98 -13
  22. mammoth_cli-2.2.86/mammoth_cli/commands/capabilities.py +102 -0
  23. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/commands/dashboard.py +139 -5
  24. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/commands/dataset.py +99 -22
  25. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/commands/doctor.py +17 -14
  26. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/commands/file.py +95 -11
  27. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/commands/folder.py +78 -4
  28. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/commands/help_summaries.json +30 -2
  29. mammoth_cli-2.2.86/mammoth_cli/commands/how.py +350 -0
  30. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/commands/project.py +30 -20
  31. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/commands/registry.py +37 -0
  32. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/commands/schedule.py +4 -0
  33. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/commands/schema.py +51 -2
  34. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/commands/view.py +194 -27
  35. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/commands/view_ops.py +61 -21
  36. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/commands/workflow.py +126 -16
  37. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/commands/workspace.py +29 -0
  38. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/context/credentials.py +3 -0
  39. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/context/keyring_backend.py +9 -3
  40. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/context/oauth.py +14 -0
  41. mammoth_cli-2.2.86/mammoth_cli/discovery/__init__.py +1 -0
  42. mammoth_cli-2.2.86/mammoth_cli/discovery/limitations.json +150 -0
  43. mammoth_cli-2.2.86/mammoth_cli/discovery/next_commands.json +36 -0
  44. mammoth_cli-2.2.86/mammoth_cli/discovery/recipes.json +588 -0
  45. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/errors/envelope.py +12 -2
  46. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/output/envelope.py +4 -0
  47. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/output/policy.py +9 -1
  48. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/output/render.py +51 -5
  49. mammoth_cli-2.2.86/mammoth_cli/runtime/compact.py +117 -0
  50. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/runtime/dataset_health.py +19 -3
  51. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/runtime/dryrun_targets.py +1 -0
  52. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/runtime/executor.py +28 -8
  53. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/runtime/invocation.py +16 -3
  54. mammoth_cli-2.2.86/mammoth_cli/runtime/labels.py +45 -0
  55. mammoth_cli-2.2.86/mammoth_cli/runtime/next_commands.py +144 -0
  56. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/runtime/session.py +44 -6
  57. mammoth_cli-2.2.86/mammoth_cli/runtime/shared.py +43 -0
  58. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/runtime/state.py +81 -5
  59. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/runtime/strict.py +28 -3
  60. mammoth_cli-2.2.86/mammoth_cli/runtime/token_scope.py +187 -0
  61. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/runtime/verify.py +26 -4
  62. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/services/command_contract.py +8 -2
  63. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/services/dashboard_figures.py +2 -1
  64. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/services/dashboard_pages.py +21 -5
  65. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/services/field_enums.py +47 -0
  66. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/services/listing.py +9 -4
  67. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/services/local_files.py +10 -1
  68. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/services/mapping.py +53 -8
  69. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/services/paging.py +37 -0
  70. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/services/positionals.py +62 -0
  71. mammoth_cli-2.2.86/mammoth_cli/services/read_memo.py +73 -0
  72. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/services/sdk_service.py +34 -2
  73. mammoth_cli-2.2.86/mammoth_cli/services/suggest.py +123 -0
  74. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/services/testing.py +7 -0
  75. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/skills/steering.py +15 -1
  76. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/pyproject.toml +2 -2
  77. mammoth_cli-2.2.86/spec/manifests/commands/capabilities.yaml +33 -0
  78. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/spec/manifests/commands/collection.yaml +220 -2
  79. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/spec/manifests/commands/dashboard.yaml +695 -80
  80. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/spec/manifests/commands/dataset.yaml +1 -1
  81. mammoth_cli-2.2.86/spec/manifests/commands/how.yaml +39 -0
  82. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/spec/manifests/commands/view.yaml +553 -180
  83. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/spec/manifests/commands/workflow.yaml +208 -12
  84. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/spec/manifests/commands/workspace.yaml +128 -33
  85. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/spec/manifests/openapi-operations.yaml +1083 -21
  86. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/spec/manifests/sdk-catalog.source.yaml +1380 -1090
  87. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/spec/manifests/sdk-methods.yaml +343 -13
  88. mammoth_cli-2.2.86/spec/openapi/metadata.json +10 -0
  89. mammoth_cli-2.2.86/spec/openapi/openapi.json +1 -0
  90. mammoth_cli-2.2.85/mammoth_cli/runtime/token_scope.py +0 -81
  91. mammoth_cli-2.2.85/spec/openapi/metadata.json +0 -25
  92. mammoth_cli-2.2.85/spec/openapi/openapi.json +0 -1
  93. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/.gitignore +0 -0
  94. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/LICENSE +0 -0
  95. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/README.md +0 -0
  96. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/bundled_skill/mammoth-cli/references/about-mammoth.md +0 -0
  97. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/bundled_skill/mammoth-cli/references/capabilities-misc.md +0 -0
  98. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/activity.md +0 -0
  99. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/addon.md +0 -0
  100. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/agent.md +0 -0
  101. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/ai.md +0 -0
  102. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/annotation.md +0 -0
  103. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/auth.md +0 -0
  104. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/automation.md +0 -0
  105. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/batch.md +0 -0
  106. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/billing.md +0 -0
  107. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/browse.md +0 -0
  108. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/calc.md +0 -0
  109. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/capability.md +0 -0
  110. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/client-app.md +0 -0
  111. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/completion.md +0 -0
  112. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/config.md +0 -0
  113. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/connector.md +0 -0
  114. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/context.md +0 -0
  115. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dashboard-qa.md +0 -0
  116. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dashboard-style.md +0 -0
  117. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dashboard-template.md +0 -0
  118. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/data-app.md +0 -0
  119. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/doctor.md +0 -0
  120. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/external-key.md +0 -0
  121. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/file.md +0 -0
  122. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/folder.md +0 -0
  123. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/job.md +0 -0
  124. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/link.md +0 -0
  125. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/log.md +0 -0
  126. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/notification.md +0 -0
  127. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/parameter.md +0 -0
  128. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/project.md +0 -0
  129. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/report.md +0 -0
  130. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/resolve.md +0 -0
  131. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/schedule.md +0 -0
  132. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/schema.md +0 -0
  133. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/skill.md +0 -0
  134. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/snippet.md +0 -0
  135. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/support.md +0 -0
  136. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/template.md +0 -0
  137. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/token.md +0 -0
  138. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/trash.md +0 -0
  139. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/upgrade.md +0 -0
  140. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/user.md +0 -0
  141. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/version.md +0 -0
  142. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/view-transform.md +0 -0
  143. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/webhook.md +0 -0
  144. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/bundled_skill/mammoth-cli/references/handoff.md +0 -0
  145. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/bundled_skill/mammoth-cli/references/input.md +0 -0
  146. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/bundled_skill/mammoth-cli/references/jobs-drafts.md +0 -0
  147. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/bundled_skill/mammoth-cli/references/operations.md +0 -0
  148. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/auth-scope.md +0 -0
  149. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/build-an-agent.md +0 -0
  150. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/cleanup.md +0 -0
  151. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/database-import.md +0 -0
  152. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/end-to-end.md +0 -0
  153. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/exports.md +0 -0
  154. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/file-import.md +0 -0
  155. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/index.md +0 -0
  156. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/need-action.md +0 -0
  157. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/resources.md +0 -0
  158. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/rest-api-import.md +0 -0
  159. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/scheduling.md +0 -0
  160. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/transforms.md +0 -0
  161. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/typed-etl-discovery.md +0 -0
  162. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/bundled_skill/mammoth-cli/references/recovery.md +0 -0
  163. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/bundled_skill/mammoth-cli/references/report-checklist.md +0 -0
  164. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/bundled_skill/mammoth-cli/references/retention.md +0 -0
  165. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/bundled_skill/mammoth-cli/references/safety.md +0 -0
  166. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/bundled_skill/mammoth-cli/references/task-start.md +0 -0
  167. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/commands/__init__.py +0 -0
  168. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/commands/_lazy.py +0 -0
  169. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/commands/activity.py +0 -0
  170. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/commands/addon.py +0 -0
  171. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/commands/agent.py +0 -0
  172. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/commands/ai.py +0 -0
  173. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/commands/annotation.py +0 -0
  174. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/commands/automation.py +0 -0
  175. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/commands/batch.py +0 -0
  176. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/commands/billing.py +0 -0
  177. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/commands/browse.py +0 -0
  178. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/commands/calc.py +0 -0
  179. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/commands/capability.py +0 -0
  180. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/commands/client_app.py +0 -0
  181. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/commands/completion.py +0 -0
  182. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/commands/config.py +0 -0
  183. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/commands/connector.py +0 -0
  184. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/commands/context.py +0 -0
  185. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/commands/data_app.py +0 -0
  186. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/commands/external_key.py +0 -0
  187. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/commands/job.py +0 -0
  188. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/commands/link.py +0 -0
  189. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/commands/notification.py +0 -0
  190. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/commands/parameter.py +0 -0
  191. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/commands/report.py +0 -0
  192. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/commands/resolve.py +0 -0
  193. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/commands/skill.py +0 -0
  194. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/commands/snippet.py +0 -0
  195. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/commands/support.py +0 -0
  196. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/commands/template.py +0 -0
  197. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/commands/trash.py +0 -0
  198. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/commands/upgrade.py +0 -0
  199. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/commands/user.py +0 -0
  200. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/commands/view_drivers.py +0 -0
  201. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/commands/view_explore.py +0 -0
  202. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/commands/view_forecast.py +0 -0
  203. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/commands/view_profile.py +0 -0
  204. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/commands/webhook.py +0 -0
  205. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/context/__init__.py +0 -0
  206. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/context/endpoint.py +0 -0
  207. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/context/profiles.py +0 -0
  208. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/context/resolver.py +0 -0
  209. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/contracts/__init__.py +0 -0
  210. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/contracts/auth.py +0 -0
  211. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/embed.py +0 -0
  212. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/errors/__init__.py +0 -0
  213. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/manifest/__init__.py +0 -0
  214. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/manifest/loader.py +0 -0
  215. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/messages/__init__.py +0 -0
  216. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/output/__init__.py +0 -0
  217. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/output/normalize.py +0 -0
  218. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/output/progress.py +0 -0
  219. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/py.typed +0 -0
  220. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/runtime/__init__.py +0 -0
  221. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/runtime/confirm.py +0 -0
  222. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/runtime/dryrun.py +0 -0
  223. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/runtime/embedded.py +0 -0
  224. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/runtime/input_loader.py +0 -0
  225. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/runtime/intent_only.py +0 -0
  226. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/runtime/locked_files.py +0 -0
  227. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/runtime/new_data.py +0 -0
  228. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/runtime/opens.py +0 -0
  229. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/runtime/options.py +0 -0
  230. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/runtime/parents.py +0 -0
  231. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/runtime/runlog.py +0 -0
  232. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/runtime/updates.py +0 -0
  233. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/runtime/validate.py +0 -0
  234. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/services/__init__.py +0 -0
  235. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/services/append_blank_columns.py +0 -0
  236. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/services/argspec.py +0 -0
  237. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/services/board_values.py +0 -0
  238. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/services/coerce.py +0 -0
  239. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/services/column_type_guard.py +0 -0
  240. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/services/conditional_format.py +0 -0
  241. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/services/conditions.py +0 -0
  242. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/services/dashboard_filters.py +0 -0
  243. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/services/dashboard_review.py +0 -0
  244. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/services/data_profile.py +0 -0
  245. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/services/data_quality.py +0 -0
  246. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/services/delete_check.py +0 -0
  247. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/services/dispatch.py +0 -0
  248. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/services/explore_card_edit.py +0 -0
  249. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/services/explore_cards.py +0 -0
  250. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/services/explore_to_figure.py +0 -0
  251. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/services/explore_to_image.py +0 -0
  252. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/services/factory.py +0 -0
  253. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/services/folder_ids.py +0 -0
  254. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/services/input_fields.py +0 -0
  255. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/services/job_outcome.py +0 -0
  256. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/services/local_time.py +0 -0
  257. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/services/openapi_types.py +0 -0
  258. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/services/period_analysis.py +0 -0
  259. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/services/protocol.py +0 -0
  260. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/services/read_queries.py +0 -0
  261. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/services/schema_diff.py +0 -0
  262. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/services/sql_check.py +0 -0
  263. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/services/stored_stats.py +0 -0
  264. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/services/text_dates.py +0 -0
  265. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/services/type_system.py +0 -0
  266. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/services/view_analysis.py +0 -0
  267. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/services/view_variants.py +0 -0
  268. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/services/write_impact.py +0 -0
  269. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/skills/__init__.py +0 -0
  270. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/skills/installer.py +0 -0
  271. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/mammoth_cli/testing.py +0 -0
  272. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/spec/manifests/commands/activity.yaml +0 -0
  273. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/spec/manifests/commands/addon.yaml +0 -0
  274. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/spec/manifests/commands/agent.yaml +0 -0
  275. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/spec/manifests/commands/ai.yaml +0 -0
  276. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/spec/manifests/commands/annotation.yaml +0 -0
  277. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/spec/manifests/commands/auth.yaml +0 -0
  278. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/spec/manifests/commands/automation.yaml +0 -0
  279. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/spec/manifests/commands/batch.yaml +0 -0
  280. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/spec/manifests/commands/billing.yaml +0 -0
  281. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/spec/manifests/commands/browse.yaml +0 -0
  282. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/spec/manifests/commands/calc.yaml +0 -0
  283. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/spec/manifests/commands/capability.yaml +0 -0
  284. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/spec/manifests/commands/client-app.yaml +0 -0
  285. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/spec/manifests/commands/completion.yaml +0 -0
  286. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/spec/manifests/commands/config.yaml +0 -0
  287. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/spec/manifests/commands/connector.yaml +0 -0
  288. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/spec/manifests/commands/context.yaml +0 -0
  289. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/spec/manifests/commands/data-app.yaml +0 -0
  290. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/spec/manifests/commands/doctor.yaml +0 -0
  291. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/spec/manifests/commands/external-key.yaml +0 -0
  292. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/spec/manifests/commands/file.yaml +0 -0
  293. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/spec/manifests/commands/folder.yaml +0 -0
  294. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/spec/manifests/commands/job.yaml +0 -0
  295. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/spec/manifests/commands/link.yaml +0 -0
  296. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/spec/manifests/commands/log.yaml +0 -0
  297. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/spec/manifests/commands/notification.yaml +0 -0
  298. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/spec/manifests/commands/parameter.yaml +0 -0
  299. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/spec/manifests/commands/project.yaml +0 -0
  300. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/spec/manifests/commands/report.yaml +0 -0
  301. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/spec/manifests/commands/resolve.yaml +0 -0
  302. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/spec/manifests/commands/schedule.yaml +0 -0
  303. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/spec/manifests/commands/schema.yaml +0 -0
  304. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/spec/manifests/commands/skill.yaml +0 -0
  305. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/spec/manifests/commands/snippet.yaml +0 -0
  306. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/spec/manifests/commands/support.yaml +0 -0
  307. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/spec/manifests/commands/template.yaml +0 -0
  308. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/spec/manifests/commands/token.yaml +0 -0
  309. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/spec/manifests/commands/trash.yaml +0 -0
  310. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/spec/manifests/commands/upgrade.yaml +0 -0
  311. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/spec/manifests/commands/user.yaml +0 -0
  312. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/spec/manifests/commands/version.yaml +0 -0
  313. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/spec/manifests/commands/webhook.yaml +0 -0
  314. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/spec/manifests/edits-target.source.yaml +0 -0
  315. {mammoth_cli-2.2.85 → mammoth_cli-2.2.86}/spec/manifests/schema-v1.json +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mammoth-cli
3
- Version: 2.2.85
3
+ Version: 2.2.86
4
4
  Summary: Command-line interface for the Mammoth Analytics platform
5
5
  Project-URL: homepage, https://mammoth.io
6
6
  Project-URL: repository, https://github.com/EdgeMetric/mammothsdk
@@ -18,7 +18,7 @@ Classifier: Topic :: Software Development :: Libraries :: Python Modules
18
18
  Requires-Python: <3.15,>=3.12
19
19
  Requires-Dist: jsonschema>=4.20
20
20
  Requires-Dist: keyring<26,>=25.7
21
- Requires-Dist: mammoth-io<0.9,>=0.8.43
21
+ Requires-Dist: mammoth-io<0.9,>=0.8.44
22
22
  Requires-Dist: platformdirs<5,>=4.10
23
23
  Requires-Dist: pydantic<3,>=2.12.5
24
24
  Requires-Dist: pyyaml<7,>=6
@@ -6,7 +6,7 @@ not implement a second HTTP client and does not call private SDK members.
6
6
 
7
7
  from __future__ import annotations
8
8
 
9
- __version__ = "2.2.85"
9
+ __version__ = "2.2.86"
10
10
 
11
11
  # The versioned machine output envelope contract.
12
12
  SCHEMA_VERSION = 1
@@ -8,6 +8,7 @@ launch symbol that does not change when the application wiring moves.
8
8
 
9
9
  from __future__ import annotations
10
10
 
11
+ import os
11
12
  import sys
12
13
  from typing import Any
13
14
 
@@ -19,6 +20,10 @@ def main() -> Any:
19
20
  The value returned by the Typer application, which the runtime uses as
20
21
  the process exit code.
21
22
  """
23
+ # pydantic looks up installed plugins (entry points) the first time it builds a
24
+ # model, and imports each one it finds: with logfire in the environment that is
25
+ # about 0.4 s on every command that loads the SDK. The CLI uses no plugin.
26
+ os.environ.setdefault("PYDANTIC_DISABLE_PLUGINS", "__all__")
22
27
  if sys.argv[1:] == ["--version"]:
23
28
  # The answer needs none of the command tree; skip building it.
24
29
  from mammoth_cli import __version__
@@ -43,6 +43,7 @@ from mammoth_cli.output.policy import (
43
43
  OUTPUT_AUTO,
44
44
  SELECTABLE_OUTPUTS,
45
45
  VALID_OUTPUTS,
46
+ canonical_output,
46
47
  resolve_output,
47
48
  )
48
49
  from mammoth_cli.services.positionals import PositionalSpec, resolve_positionals
@@ -84,8 +85,15 @@ _GROUP_DESCRIPTIONS = {
84
85
  "data-app": "Create and manage data applications.",
85
86
  "dataset": "Create, inspect, and manage datasets.",
86
87
  "external-key": "Manage LLM provider keys (OpenAI, Anthropic, etc.) used by AI features.",
87
- "file": "Upload and manage source files.",
88
- "folder": "Organize folders and their contents.",
88
+ "file": (
89
+ "Upload files (file upload; a whole local directory: file upload-folder) and manage "
90
+ "uploaded source files. An uploaded file becomes a dataset: delete it with "
91
+ "'dataset delete'."
92
+ ),
93
+ "folder": (
94
+ "Create, rename, move and delete project folders that organize datasets, views and "
95
+ "dashboards. To upload a local directory use 'file upload-folder'."
96
+ ),
89
97
  "job": "Inspect and wait for asynchronous jobs.",
90
98
  "notification": "Manage workspace notifications.",
91
99
  "parameter": "Manage parameters and parameter groups.",
@@ -146,6 +154,8 @@ _SUBGROUP_DESCRIPTIONS = {
146
154
  "browse resources": "Browse workspace resources in bulk.",
147
155
  "collection dashboards": "Add dashboards to a collection or remove them.",
148
156
  "collection files": "Upload files to a collection.",
157
+ "collection email-updates": "Read and set a collection's email updates, and send a test.",
158
+ "collection email-updates me": "Read and set your own email updates for a collection.",
149
159
  "collection members": "Remove members from a collection.",
150
160
  "connector ai": "Chat with the connector assistant to set up a connection.",
151
161
  "connector ai session": "List connector assistant sessions and their messages.",
@@ -161,6 +171,9 @@ _SUBGROUP_DESCRIPTIONS = {
161
171
  "dashboard data": "Read the data behind a dashboard, draft or published.",
162
172
  "dashboard embed": "Manage dashboard embedding: keys, origins, tokens and usage.",
163
173
  "dashboard embed config": "Read and set the embed configuration.",
174
+ "dashboard email-updates": "Read and set a dashboard's email updates, and send a test.",
175
+ "dashboard email-updates me": "Read and set your own email updates for a dashboard.",
176
+ "dashboard live-chart": "Create live charts, set their audience and see where they are used.",
164
177
  "dashboard embed key": "Rotate the embed key.",
165
178
  "dashboard embed lifetime": "Set the embed token lifetime.",
166
179
  "dashboard embed origin": "Revoke an allowed embed origin.",
@@ -245,6 +258,7 @@ _SUBGROUP_DESCRIPTIONS = {
245
258
  "view variants": "Create view variants.",
246
259
  "view version": "List, read, apply and delete view versions.",
247
260
  "workflow block": "Add and configure workflow blocks.",
261
+ "workspace export-hosts": "Read and set the hosts exports may send data to.",
248
262
  "workspace invite": "List, resend, revoke and delete workspace invites.",
249
263
  "workspace oauth-client": "Register, list, delete and revoke OAuth client grants.",
250
264
  "workspace segment": "List and update workspace segments.",
@@ -269,6 +283,8 @@ _ROOT_HELP_PANELS = {
269
283
  "context": "Start here",
270
284
  "doctor": "Start here",
271
285
  "project": "Start here",
286
+ "how": "Discover commands",
287
+ "capabilities": "Discover commands",
272
288
  "schema": "Discover commands",
273
289
  "capability": "Discover commands",
274
290
  "browse": "Discover commands",
@@ -357,6 +373,7 @@ def _output_mode_from_argv(argv: Sequence[str] | None) -> str:
357
373
  elif token.startswith("-o") and len(token) > 2:
358
374
  mode = token[2:]
359
375
  index += 1
376
+ mode = canonical_output(mode)
360
377
  if mode not in SELECTABLE_OUTPUTS:
361
378
  # A value the command would reject (``--output xml``) must not turn the
362
379
  # error into prose: judge it by where stdout goes, like the default.
@@ -436,6 +453,76 @@ def _corrected_command(tokens: Sequence[str]) -> str | None:
436
453
  return " ".join(["mammoth", *rest, *leading])
437
454
 
438
455
 
456
+ def _parent_words(context: Any) -> list[str]:
457
+ """The command words above an unknown one, without the program name."""
458
+ words: list[str] = []
459
+ while context is not None and getattr(context, "parent", None) is not None:
460
+ words.insert(0, str(context.info_name))
461
+ context = context.parent
462
+ return words
463
+
464
+
465
+ def _unknown_command_report(error: Any) -> CliError | None:
466
+ """``No such command 'X'``: name the nearest commands and the discovery commands."""
467
+ from mammoth_cli.services.suggest import DISCOVERY_HINT, command_suggestions
468
+
469
+ match = _NO_SUCH_COMMAND.search(error.format_message() or "")
470
+ if match is None or match.group("name").startswith("-"):
471
+ return None
472
+ name = match.group("name")
473
+ parent = _parent_words(getattr(error, "ctx", None))
474
+ paths = [str(record["command_path"]).split() for record in _command_records()]
475
+ suggestions = command_suggestions(parent, name, paths)
476
+ where = f" under 'mammoth {' '.join(parent)}'" if parent else ""
477
+ message = f"No such command '{name}'{where}."
478
+ if suggestions:
479
+ message += f" Did you mean: {', '.join(suggestions)}?"
480
+ goal = name.replace('"', "")
481
+ return CliError(
482
+ code="usage_error",
483
+ message=message,
484
+ exit_status=EXIT_USAGE,
485
+ hint=DISCOVERY_HINT,
486
+ details={"command": name, "did_you_mean": suggestions},
487
+ recovery_commands=[
488
+ *(f"{suggestion} --help" for suggestion in suggestions[:2]),
489
+ f'mammoth how "{goal}"',
490
+ f'mammoth schema find "{goal}"',
491
+ ],
492
+ )
493
+
494
+
495
+ def _unknown_option_report(error: Any, option: str) -> CliError:
496
+ """An unknown ``--option``: name the nearest valid one (global or the command's own)."""
497
+ from mammoth_cli.services.suggest import option_suggestion
498
+
499
+ command = getattr(getattr(error, "ctx", None), "command", None)
500
+ known = set(_global_option_flags()[0]) | {
501
+ flag
502
+ for param in getattr(command, "params", [])
503
+ for flag in (*param.opts, *param.secondary_opts)
504
+ }
505
+ suggestion = option_suggestion(option, sorted(known))
506
+ close = sorted(getattr(error, "possibilities", None) or [])
507
+ if suggestion is None and close:
508
+ # Click's own guess also catches a prefix ('--server' for '--server-prefix').
509
+ suggestion = {"flag": close[0], "hint": f"Did you mean {' or '.join(close)}?"}
510
+ details: dict[str, Any] = {"option": option}
511
+ if suggestion is not None:
512
+ details["did_you_mean"] = suggestion["flag"]
513
+ return CliError(
514
+ code="unknown_option",
515
+ message=f"Unknown option '{option}'.",
516
+ exit_status=EXIT_USAGE,
517
+ hint=(
518
+ suggestion["hint"]
519
+ if suggestion is not None
520
+ else "Run the command with --help to list its options."
521
+ ),
522
+ details=details,
523
+ )
524
+
525
+
439
526
  def _usage_error_report(error: Any, tokens: Sequence[str]) -> CliError | None:
440
527
  """Classify a usage error whose own Click message is empty or misleading.
441
528
 
@@ -464,7 +551,9 @@ def _usage_error_report(error: Any, tokens: Sequence[str]) -> CliError | None:
464
551
  if match is None:
465
552
  return None
466
553
  name = match.group("name").split("=", 1)[0]
467
- if not name.startswith("-") or name not in _global_option_flags()[0]:
554
+ if not name.startswith("-"):
555
+ return _unknown_command_report(error)
556
+ if name not in _global_option_flags()[0]:
468
557
  return None
469
558
  # Only leaf commands declare the global options, so a group reads one as a
470
559
  # subcommand name and reports a misleading "No such command '--profile'".
@@ -649,13 +738,7 @@ class _EnvelopeGroup(TyperGroup):
649
738
  report = None if is_missing_parameter else _usage_error_report(error, tokens)
650
739
  if is_missing_parameter and (option := _unknown_flag_in(error, tokens)):
651
740
  # A misspelt flag is the first thing to fix, ahead of a missing argument.
652
- report = CliError(
653
- code="unknown_option",
654
- message=f"Unknown option '{option}'.",
655
- exit_status=EXIT_USAGE,
656
- hint="Check the command schema with 'mammoth schema get'.",
657
- details={"option": option},
658
- )
741
+ report = _unknown_option_report(error, option)
659
742
  if _output_mode_from_argv(argv) in MACHINE_OUTPUTS:
660
743
  if report is None:
661
744
  missing = is_missing_parameter
@@ -668,18 +751,7 @@ class _EnvelopeGroup(TyperGroup):
668
751
  )
669
752
  elif isinstance(error, _typer_click_exceptions.NoSuchOption):
670
753
  option = getattr(error, "option_name", None) or "unknown"
671
- close = getattr(error, "possibilities", None) or []
672
- report = CliError(
673
- code="unknown_option",
674
- message=f"Unknown option '{option}'.",
675
- exit_status=EXIT_USAGE,
676
- hint=(
677
- f"Did you mean {' or '.join(sorted(close))}?"
678
- if close
679
- else "Check the command schema with 'mammoth schema get'."
680
- ),
681
- details={"option": option},
682
- )
754
+ report = _unknown_option_report(error, option)
683
755
  elif isinstance(error, _typer_click_exceptions.BadParameter):
684
756
  # With optional typed positionals Click may consume an
685
757
  # unknown option token as the positional value. Only
@@ -687,13 +759,7 @@ class _EnvelopeGroup(TyperGroup):
687
759
  # a known option's malformed value remains usage_error.
688
760
  option = _unknown_flag_in(error, tokens)
689
761
  if option:
690
- report = CliError(
691
- code="unknown_option",
692
- message=f"Unknown option '{option}'.",
693
- exit_status=EXIT_USAGE,
694
- hint="Check the command schema with 'mammoth schema get'.",
695
- details={"option": option},
696
- )
762
+ report = _unknown_option_report(error, option)
697
763
  else:
698
764
  report = CliError(
699
765
  code="usage_error",
@@ -714,12 +780,18 @@ class _EnvelopeGroup(TyperGroup):
714
780
  elif report is None:
715
781
  error.show()
716
782
  else:
717
- typer.echo(f"Error: {report.message}", err=True)
718
783
  # A no-subcommand error arrives with the help text already on
719
784
  # screen, so repeating "run --help" below it would be noise.
720
785
  no_args = _NO_ARGS_ERROR is not None and isinstance(error, _NO_ARGS_ERROR)
786
+ ctx = getattr(error, "ctx", None)
787
+ if ctx is not None and not no_args:
788
+ # Click's own usage line first, as its prose error has it.
789
+ typer.echo(ctx.get_usage(), err=True)
790
+ typer.echo(f"Error: {report.message}", err=True)
721
791
  if report.hint and not no_args:
722
792
  typer.echo(report.hint, err=True)
793
+ for command in report.recovery_commands:
794
+ typer.echo(f" try: {command}", err=True)
723
795
 
724
796
 
725
797
  def _version_callback(value: bool) -> None:
@@ -1095,16 +1167,24 @@ def _execute(invocation: Invocation) -> None:
1095
1167
  # resolving the mutable selected-profile pointer after an interrupt.
1096
1168
  from mammoth_cli.context import profiles
1097
1169
  from mammoth_cli.runtime import executor, validate
1170
+ from mammoth_cli.runtime.compact import COMPACT_COMMANDS, FULL_FLAG, with_compact
1098
1171
  from mammoth_cli.runtime.confirm import refuse_mismatched_confirm
1099
1172
  from mammoth_cli.runtime.dataset_health import with_dataset_health
1100
1173
  from mammoth_cli.runtime.intent_only import refuse_hand_crafted_write
1101
1174
  from mammoth_cli.runtime.locked_files import with_locked_files
1102
1175
  from mammoth_cli.runtime.new_data import with_new_data_path
1176
+ from mammoth_cli.runtime.next_commands import with_next_commands
1103
1177
  from mammoth_cli.runtime.opens import with_opens
1104
1178
  from mammoth_cli.runtime.strict import validate_extra_args
1105
1179
 
1106
1180
  if invocation.profile is None:
1107
1181
  invocation = replace(invocation, profile=profiles.get_selected(), profile_is_default=True)
1182
+ if invocation.command_id in COMPACT_COMMANDS and FULL_FLAG in invocation.extra_args:
1183
+ invocation = replace(
1184
+ invocation,
1185
+ extra_args=[arg for arg in invocation.extra_args if arg != FULL_FLAG],
1186
+ full_output=True,
1187
+ )
1108
1188
 
1109
1189
  def producer() -> tuple[Any, dict[str, Any]]:
1110
1190
  refuse_hand_crafted_write(invocation.command_id)
@@ -1134,7 +1214,8 @@ def _execute(invocation: Invocation) -> None:
1134
1214
  return _dry_run(handler, invocation)
1135
1215
  data, meta = handler(invocation)
1136
1216
  checked = with_locked_files(with_dataset_health(_apply_verify(invocation, data)))
1137
- return with_new_data_path(checked), with_opens(invocation, checked, meta)
1217
+ meta = with_next_commands(invocation, checked, with_opens(invocation, checked, meta))
1218
+ return with_compact(invocation, with_new_data_path(checked)), meta
1138
1219
 
1139
1220
  executor.run(
1140
1221
  invocation.command_id,
@@ -1360,6 +1441,18 @@ def _command_help(command_id: str, record: dict[str, Any] | None) -> str | None:
1360
1441
  if fields:
1361
1442
  label = _INPUT_FIELDS_LABEL.get(command_id, "Input fields")
1362
1443
  parts.append(f"{label}: {fields}")
1444
+ from mammoth_cli.services.field_enums import nested_choices_help
1445
+
1446
+ nested = nested_choices_help(command_id)
1447
+ if nested:
1448
+ parts.append(nested)
1449
+ from mammoth_cli.runtime.compact import COMPACT_COMMANDS, FULL_FLAG
1450
+
1451
+ if command_id in COMPACT_COMMANDS:
1452
+ parts.append(
1453
+ "The result is compact: ids, checks, verify and a canvas summary. "
1454
+ f"Pass {FULL_FLAG} for the complete response."
1455
+ )
1363
1456
  return "\n\n".join(parts) or None
1364
1457
 
1365
1458
 
@@ -1383,7 +1476,8 @@ def _help_input_fields(command_id: str) -> str | None:
1383
1476
  for field in fields:
1384
1477
  label = f"{field.name}*" if field.required else field.name
1385
1478
  enum = field.enum_values
1386
- kind = "|".join(str(item) for item in enum[:6]) if enum else _short_type(field.type_name)
1479
+ # Every value: a fixed list cut short is a guess the caller cannot check.
1480
+ kind = " | ".join(str(item) for item in enum) if enum else _short_type(field.type_name)
1387
1481
  rendered.append(f"{label} ({kind})" if kind else label)
1388
1482
  if len(rendered) == 12 and len(fields) > 12:
1389
1483
  rendered.append(f"... {len(fields) - 12} more (schema get {command_id})")
@@ -1396,7 +1490,8 @@ def _short_type(type_name: str) -> str:
1396
1490
  text = str(type_name or "")
1397
1491
  if "condition." in text:
1398
1492
  return "condition"
1399
- return " | ".join(part.strip().rsplit(".", 1)[-1] for part in text.split("|"))[:40]
1493
+ # Drop each dotted module path but keep the brackets around it (``list[a.b.C]``).
1494
+ return re.sub(r"(?:\w+\.)+(\w+)", r"\1", " | ".join(p.strip() for p in text.split("|")))[:60]
1400
1495
 
1401
1496
 
1402
1497
  def _command_records() -> list[dict[str, Any]]:
@@ -1607,6 +1702,10 @@ def _load_top_level_group(name: str) -> Any:
1607
1702
  # would import the handler's module (and its SDK dependencies). A test pins this
1608
1703
  # table to :func:`_command_help` so it cannot drift.
1609
1704
  _ROOT_LEAF_HELP: dict[str, str] = {
1705
+ "capabilities": (
1706
+ "List what the CLI cannot do yet, and what to do instead."
1707
+ "\n\nExample: mammoth capabilities"
1708
+ ),
1610
1709
  "calc": (
1611
1710
  "Evaluate one arithmetic expression exactly."
1612
1711
  "\n\nExample: mammoth calc '2063664 - 1917815'"
@@ -1615,6 +1714,10 @@ _ROOT_LEAF_HELP: dict[str, str] = {
1615
1714
  "Run environment and connectivity diagnostics."
1616
1715
  "\n\nExample: mammoth doctor\n\nInput fields: wait (int)"
1617
1716
  ),
1717
+ "how": (
1718
+ "Turn a plain-language goal into an ordered recipe of commands."
1719
+ "\n\nExample: mammoth how 'refresh a dataset daily'"
1720
+ ),
1618
1721
  "link": (
1619
1722
  "Read the workspace, project, folder, dataset and view ids out of a pasted app URL."
1620
1723
  "\n\nExample: mammoth link https://app.mammoth.io/workspaces/1/projects/2/data/datasets"
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: mammoth-cli
3
- version: 2.2.16
3
+ version: 2.2.86
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
 
@@ -67,6 +67,7 @@ State the goal in plain words;
67
67
  `view transform --help` is the Transform menu with one line per task:
68
68
 
69
69
  ```bash
70
+ mammoth how "blend two files by day" # ordered steps, multi-step goal
70
71
  mammoth schema find "merge two datasets" # -> view.transform.join
71
72
  mammoth view transform --help # every data transformation
72
73
  mammoth schema find "join two datasets; remove duplicates; build a dashboard" # 1 call, 1 result per goal
@@ -93,15 +94,15 @@ mammoth schema find "join two datasets; remove duplicates; build a dashboard"
93
94
 
94
95
  Call a find result (or `suggestions` entry) from its `accepted_fields` and
95
96
  `agent_example`. Before concluding the CLI cannot do something the web app
96
- does, check `view transform --help` and "View settings, and what has no
97
+ does, run `mammoth capabilities` (known gaps) and check
98
+ `view transform --help` and "View settings, and what has no
97
99
  command" in [about Mammoth](references/about-mammoth.md). Do not switch to
98
100
  the browser, or compute locally, for work the CLI covers; report a real gap
99
101
  with the command tried.
100
102
 
101
103
  ## Several files, one deliverable
102
104
 
103
- Users often upload related files without saying how they relate ("make a
104
- dashboard from t_a and t_b"). Work it out from the data before building:
105
+ Users often upload related files without saying how they relate. Work it out from the data before building:
105
106
 
106
107
  1. Upload every file, or find the ones already uploaded. An upload result
107
108
  carries a `view` preview of what Mammoth made of it (`view_id`, column
@@ -109,7 +110,7 @@ dashboard from t_a and t_b"). Work it out from the data before building:
109
110
  data get VIEW_ID` per view; warnings list numbers/dates stored as text,
110
111
  and blanks, each with its fix.
111
112
  2. Find the keys. A column in one view whose values appear in a column of
112
- the other (`customer_id` and `id`, `order_ref` and `order_no`) is a
113
+ the other (`customer_id` and `id`) is a
113
114
  foreign key; the view with many rows per key is the main one.
114
115
  3. Read both key columns, then match the keys: same type (`convert-type`), same
115
116
  case and padding (`text`), no blanks (`set-values`, `filter`).
@@ -131,8 +132,7 @@ dashboard from t_a and t_b"). Work it out from the data before building:
131
132
  revenue, not a unit price. Fix each `deliverable_check` warning, or say
132
133
  why not.
133
134
 
134
- For the defaults that most pipelines use (new column or overwrite, `LEFT`
135
- joins, date steps), see
135
+ For common pipeline defaults, see
136
136
  [transforms](references/recipes/transforms.md#what-most-pipelines-look-like).
137
137
  Say what you inferred (which columns you joined on, what you converted) in
138
138
  your report. If no column links the files, ask before you combine them.
@@ -141,7 +141,7 @@ your report. If no column links the files, ask before you combine them.
141
141
 
142
142
  - Ids are positionals; request fields are one `--input '{...}'` document;
143
143
  no per-field flags (`project create NAME`, not `--name`).
144
- - `COMMAND --help` lists input fields; `schema find WORDS` inlines
144
+ - `COMMAND --help` lists input fields and allowed values; `schema find WORDS` inlines
145
145
  `accepted_fields`/`agent_example` for top matches, else `schema get
146
146
  ID,ID` (one call; `--input '{"full": true}'` for all
147
147
  fields); `schema list`/`schema list view` list families.
@@ -6,17 +6,21 @@ Login accepts nothing else. If `auth status` reports `credential: key_secret`
6
6
  (a profile saved by an older CLI), it still works, but ask the operator to run
7
7
  `mammoth auth login` again with a token.
8
8
 
9
- A token may be limited to one project. It then gets HTTP 403
10
- `authorization_required` in every other project, including a project it has
11
- created. When that happens, stop creating projects: ask the operator which
12
- project the token belongs to and pass `--project ID`, or ask for a token
13
- created without a project.
9
+ A token may be limited to one project, and a browser or device sign-in to one
10
+ or several. It then gets HTTP 403 `authorization_required` in every other
11
+ project, including a project it has created. When that happens, stop creating
12
+ projects: `mammoth auth status --check` lists them in `token_projects`; pass one
13
+ as `--project ID`, or ask for a token created without a project.
14
14
 
15
15
  ## Browser sign-in
16
16
 
17
17
  `mammoth auth login --method oauth` signs the operator in through the browser (PKCE, loopback
18
18
  `127.0.0.1`). The CLI keeps a 1 h `mm_` token and refreshes it under a file lock. `auth status`
19
- reports `credential: oauth` and `expires_at`. A refresh that fails exits 4 with `login_expired`:
19
+ reports `credential: oauth` and `access_token_expires_at` (`expires_at` is the same value, kept for
20
+ compatibility). That is when the 1 h access token ends, not when the login does: `refreshes_automatically: true`.
21
+ Only a failed refresh needs a new login. `auth status --check` also adds `workspace_name` and, for a
22
+ project-limited token, `token_project_name` (`token_projects` lists every project it is
23
+ limited to; `token_project` is the lowest). A refresh that fails exits 4 with `login_expired`:
20
24
  tell the operator to run `mammoth auth login` again. `--no-browser` prints the URL. `--device` is the sign-in for a
21
25
  machine with no browser: it prints a short code and a URL for the operator to approve on another
22
26
  device, then polls. An agent may run `mammoth auth login --device` (and only that): it prints the
@@ -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 753 commands. 516 of them bind one of the 545 API operations in the matrix; the remainder are local commands (`schema`, `auth`, `doctor`, `log`, ...) or typed variants that share an operation (`view transform *` commands submit through `view.task.add`, except `rename-columns` and `sort`, which set view display properties through `view.update`). 262 bound commands ran once successfully on release, 1 are not supported there, and the rest are untried. Untried is not broken: discover the contract with `mammoth schema get COMMAND_ID`, run it, and treat the structured error envelope as the answer. Use an untried command normally: confirm a write with the user first, check its result with a read afterwards, and never refuse a command only because it is untried.
4
+ The CLI publishes 781 commands. 516 of them bind one of the 545 API operations in the matrix; the remainder are local commands (`schema`, `auth`, `doctor`, `log`, ...) or typed variants that share an operation (`view transform *` commands submit through `view.task.add`, except `rename-columns` and `sort`, which set view display properties through `view.update`). 262 bound commands ran once successfully on release, 1 are not supported there, and the rest are untried. Untried is not broken: discover the contract with `mammoth schema get COMMAND_ID`, run it, and treat the structured error envelope as the answer. Use an untried command normally: confirm a write with the user first, check its result with a read afterwards, and never refuse a command only because it is untried.
5
5
 
6
6
  Status meanings:
7
7
 
@@ -1,6 +1,6 @@
1
1
  # Published CLI command catalog
2
2
 
3
- This generated catalog is a lookup table for every command in the published CLI manifest, currently 753; 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 781; 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
 
@@ -15,9 +15,10 @@ Load only the applicable domain file:
15
15
  - [billing](commands/billing.md) — 25 published commands
16
16
  - [browse](commands/browse.md) — 9 published commands
17
17
  - [calc](commands/calc.md) — 1 published commands
18
+ - [capabilities](commands/capabilities.md) — 1 published commands
18
19
  - [capability](commands/capability.md) — 3 published commands
19
20
  - [client-app](commands/client-app.md) — 5 published commands
20
- - [collection](commands/collection.md) — 16 published commands
21
+ - [collection](commands/collection.md) — 21 published commands
21
22
  - [completion](commands/completion.md) — 2 published commands
22
23
  - [config](commands/config.md) — 4 published commands
23
24
  - [connector](commands/connector.md) — 23 published commands
@@ -25,13 +26,16 @@ Load only the applicable domain file:
25
26
  - [dashboard-qa](commands/dashboard-qa.md) — 14 published commands
26
27
  - [dashboard-template](commands/dashboard-template.md) — 12 published commands
27
28
  - [dashboard-style](commands/dashboard-style.md) — 10 published commands
28
- - [dashboard](commands/dashboard.md) — 108 published commands
29
+ - [dashboard-embed](commands/dashboard-embed.md) — 9 published commands
30
+ - [dashboard-published](commands/dashboard-published.md) — 8 published commands
31
+ - [dashboard](commands/dashboard.md) — 104 published commands
29
32
  - [data-app](commands/data-app.md) — 12 published commands
30
33
  - [dataset](commands/dataset.md) — 27 published commands
31
34
  - [doctor](commands/doctor.md) — 1 published commands
32
35
  - [external-key](commands/external-key.md) — 4 published commands
33
36
  - [file](commands/file.md) — 11 published commands
34
37
  - [folder](commands/folder.md) — 10 published commands
38
+ - [how](commands/how.md) — 1 published commands
35
39
  - [job](commands/job.md) — 4 published commands
36
40
  - [link](commands/link.md) — 1 published commands
37
41
  - [log](commands/log.md) — 2 published commands
@@ -52,7 +56,7 @@ Load only the applicable domain file:
52
56
  - [user](commands/user.md) — 8 published commands
53
57
  - [version](commands/version.md) — 1 published commands
54
58
  - [view-transform](commands/view-transform.md) — 35 published commands
55
- - [view](commands/view.md) — 103 published commands
59
+ - [view](commands/view.md) — 106 published commands
56
60
  - [webhook](commands/webhook.md) — 7 published commands
57
- - [workflow](commands/workflow.md) — 20 published commands
58
- - [workspace](commands/workspace.md) — 31 published commands
61
+ - [workflow](commands/workflow.md) — 23 published commands
62
+ - [workspace](commands/workspace.md) — 33 published commands
@@ -0,0 +1,13 @@
1
+ # `capabilities` commands
2
+
3
+ Every command returns the standard JSON envelope. On nonzero exit, read the error envelope and its `recovery_commands`; do not guess request fields. "Status on release" is joined from `docs/release-capability-matrix.json`: *ran once* means one bounded live run succeeded on the named CLI release, *untried* means nobody has run it (use it normally: confirm writes with the user, check the result afterwards), *not supported* means the backend refuses it. When this file disagrees with [capabilities](../capabilities.md) or a recipe, they win. Envelope shapes: [machine output](../machine-output.md).
4
+
5
+ ### `capabilities`
6
+
7
+ Run: `mammoth capabilities`. Exact input fields: `mammoth schema get capabilities`.
8
+
9
+ Example: `mammoth capabilities`. Placeholders are illustrative; resolve IDs and input from observed reads.
10
+
11
+ Result: `CapabilitiesResult`; mutation `read`, confirmation `none`, wait policy `not_async`.
12
+
13
+ Status on release: untried; no live run recorded.
@@ -62,6 +62,56 @@ Result: `CollectionDeleteResult`; mutation `destructive`, confirmation `prompt_o
62
62
 
63
63
  Status on release: untried; no live run recorded.
64
64
 
65
+ ### `collection.email-updates.get`
66
+
67
+ Run: `mammoth collection email-updates get`. Exact input fields: `mammoth schema get collection.email-updates.get`.
68
+
69
+ Example: `mammoth collection email-updates get 123`. Placeholders are illustrative; resolve IDs and input from observed reads.
70
+
71
+ Result: `CollectionEmailUpdatesGetResult`; mutation `read`, confirmation `none`, wait policy `not_async`.
72
+
73
+ Status on release: untried; no live run recorded.
74
+
75
+ ### `collection.email-updates.me.get`
76
+
77
+ Run: `mammoth collection email-updates me get`. Exact input fields: `mammoth schema get collection.email-updates.me.get`.
78
+
79
+ Example: `mammoth collection email-updates me get 123`. Placeholders are illustrative; resolve IDs and input from observed reads.
80
+
81
+ Result: `CollectionEmailUpdatesMeGetResult`; mutation `read`, confirmation `none`, wait policy `not_async`.
82
+
83
+ Status on release: untried; no live run recorded.
84
+
85
+ ### `collection.email-updates.me.set`
86
+
87
+ Run: `mammoth collection email-updates me set`. Exact input fields: `mammoth schema get collection.email-updates.me.set`.
88
+
89
+ Example: `mammoth collection email-updates me set 123 --input '{"subscribed": true}'`. Placeholders are illustrative; resolve IDs and input from observed reads.
90
+
91
+ Result: `CollectionEmailUpdatesMeSetResult`; mutation `benign_mutation`, confirmation `none`, wait policy `not_async`.
92
+
93
+ Status on release: untried; no live run recorded.
94
+
95
+ ### `collection.email-updates.set`
96
+
97
+ Run: `mammoth collection email-updates set`. Exact input fields: `mammoth schema get collection.email-updates.set`.
98
+
99
+ Example: `mammoth collection email-updates set 123 --input '{"enabled": true, "timezone": "UTC"}' --yes`. Illustrative only: append `--yes` after observing an owned target.
100
+
101
+ Result: `CollectionEmailUpdatesSetResult`; mutation `external_effect`, confirmation `yes_always`, wait policy `not_async`.
102
+
103
+ Status on release: untried; no live run recorded.
104
+
105
+ ### `collection.email-updates.test`
106
+
107
+ Run: `mammoth collection email-updates test`. Exact input fields: `mammoth schema get collection.email-updates.test`.
108
+
109
+ Example: `mammoth collection email-updates test 123 --yes`. Illustrative only: append `--yes` after observing an owned target.
110
+
111
+ Result: `CollectionEmailUpdatesTestResult`; mutation `external_effect`, confirmation `yes_always`, wait policy `not_async`.
112
+
113
+ Status on release: untried; no live run recorded.
114
+
65
115
  ### `collection.files.upload`
66
116
 
67
117
  Run: `mammoth collection files upload`. Exact input fields: `mammoth schema get collection.files.upload`.