mammoth-cli 2.0.31__tar.gz → 2.0.32__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 (221) hide show
  1. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/PKG-INFO +11 -12
  2. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/README.md +9 -10
  3. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/__init__.py +1 -1
  4. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/bundled_skill/mammoth-cli/SKILL.md +7 -5
  5. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/bundled_skill/mammoth-cli/references/auth.md +10 -2
  6. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/bundled_skill/mammoth-cli/references/capabilities-misc.md +1 -1
  7. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/automation.md +1 -1
  8. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/bundled_skill/mammoth-cli/references/handoff.md +12 -9
  9. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/bundled_skill/mammoth-cli/references/jobs-drafts.md +5 -1
  10. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/bundled_skill/mammoth-cli/references/operations.md +38 -34
  11. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/cleanup.md +2 -2
  12. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/dashboards.md +2 -2
  13. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/end-to-end.md +1 -1
  14. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/index.md +2 -2
  15. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/need-action.md +19 -17
  16. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/resources.md +4 -5
  17. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/transforms.md +4 -8
  18. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/bundled_skill/mammoth-cli/references/recovery.md +8 -7
  19. mammoth_cli-2.0.32/mammoth_cli/bundled_skill/mammoth-cli/references/report-checklist.md +19 -0
  20. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/bundled_skill/mammoth-cli/references/retention.md +3 -3
  21. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/commands/auth.py +1 -5
  22. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/commands/capability.py +10 -11
  23. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/commands/completion.py +1 -4
  24. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/commands/doctor.py +37 -7
  25. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/commands/file.py +9 -6
  26. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/commands/job.py +18 -12
  27. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/commands/workflow.py +5 -2
  28. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/context/credentials.py +139 -19
  29. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/context/resolver.py +1 -3
  30. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/runtime/executor.py +26 -0
  31. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/runtime/input_loader.py +4 -2
  32. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/runtime/invocation.py +1 -1
  33. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/runtime/strict.py +19 -4
  34. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/services/sdk_service.py +24 -2
  35. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/skills/installer.py +69 -2
  36. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/pyproject.toml +2 -2
  37. mammoth_cli-2.0.31/mammoth_cli/bundled_skill/mammoth-cli/references/report-checklist.md +0 -19
  38. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/.gitignore +0 -0
  39. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/LICENSE +0 -0
  40. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/__main__.py +0 -0
  41. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/app.py +0 -0
  42. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/bundled_skill/mammoth-cli/references/capabilities.md +0 -0
  43. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/bundled_skill/mammoth-cli/references/command-index.md +0 -0
  44. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/activity.md +0 -0
  45. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/addon.md +0 -0
  46. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/agent.md +0 -0
  47. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/ai.md +0 -0
  48. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/annotation.md +0 -0
  49. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/auth.md +0 -0
  50. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/batch.md +0 -0
  51. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/billing.md +0 -0
  52. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/browse.md +0 -0
  53. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/capability.md +0 -0
  54. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/client-app.md +0 -0
  55. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/completion.md +0 -0
  56. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/config.md +0 -0
  57. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/connector.md +0 -0
  58. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/context.md +0 -0
  59. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dashboard.md +0 -0
  60. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/data-app.md +0 -0
  61. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dataset.md +0 -0
  62. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/doctor.md +0 -0
  63. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/external-key.md +0 -0
  64. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/file.md +0 -0
  65. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/folder.md +0 -0
  66. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/job.md +0 -0
  67. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/log.md +0 -0
  68. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/notification.md +0 -0
  69. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/parameter.md +0 -0
  70. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/project.md +0 -0
  71. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/report.md +0 -0
  72. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/schedule.md +0 -0
  73. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/schema.md +0 -0
  74. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/skill.md +0 -0
  75. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/snippet.md +0 -0
  76. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/support.md +0 -0
  77. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/template.md +0 -0
  78. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/trash.md +0 -0
  79. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/upgrade.md +0 -0
  80. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/user.md +0 -0
  81. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/version.md +0 -0
  82. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/view.md +0 -0
  83. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/webhook.md +0 -0
  84. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/workflow.md +0 -0
  85. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/workspace.md +0 -0
  86. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/bundled_skill/mammoth-cli/references/input.md +0 -0
  87. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/bundled_skill/mammoth-cli/references/machine-output.md +0 -0
  88. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/auth-scope.md +0 -0
  89. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/exports.md +0 -0
  90. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/typed-etl-discovery.md +0 -0
  91. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/bundled_skill/mammoth-cli/references/safety.md +0 -0
  92. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/bundled_skill/mammoth-cli/references/task-start.md +0 -0
  93. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/commands/__init__.py +0 -0
  94. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/commands/activity.py +0 -0
  95. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/commands/addon.py +0 -0
  96. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/commands/agent.py +0 -0
  97. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/commands/ai.py +0 -0
  98. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/commands/annotation.py +0 -0
  99. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/commands/automation.py +0 -0
  100. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/commands/batch.py +0 -0
  101. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/commands/billing.py +0 -0
  102. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/commands/browse.py +0 -0
  103. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/commands/client_app.py +0 -0
  104. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/commands/config.py +0 -0
  105. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/commands/connector.py +0 -0
  106. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/commands/context.py +0 -0
  107. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/commands/dashboard.py +0 -0
  108. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/commands/data_app.py +0 -0
  109. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/commands/dataset.py +0 -0
  110. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/commands/external_key.py +0 -0
  111. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/commands/folder.py +0 -0
  112. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/commands/notification.py +0 -0
  113. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/commands/parameter.py +0 -0
  114. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/commands/project.py +0 -0
  115. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/commands/registry.py +0 -0
  116. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/commands/report.py +0 -0
  117. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/commands/schedule.py +0 -0
  118. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/commands/schema.py +0 -0
  119. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/commands/skill.py +0 -0
  120. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/commands/snippet.py +0 -0
  121. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/commands/support.py +0 -0
  122. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/commands/template.py +0 -0
  123. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/commands/trash.py +0 -0
  124. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/commands/upgrade.py +0 -0
  125. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/commands/user.py +0 -0
  126. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/commands/view.py +0 -0
  127. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/commands/view_ops.py +0 -0
  128. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/commands/webhook.py +0 -0
  129. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/commands/workspace.py +0 -0
  130. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/context/__init__.py +0 -0
  131. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/context/endpoint.py +0 -0
  132. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/context/profiles.py +0 -0
  133. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/contracts/__init__.py +0 -0
  134. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/contracts/auth.py +0 -0
  135. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/errors/__init__.py +0 -0
  136. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/errors/envelope.py +0 -0
  137. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/manifest/__init__.py +0 -0
  138. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/manifest/loader.py +0 -0
  139. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/messages/__init__.py +0 -0
  140. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/output/__init__.py +0 -0
  141. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/output/envelope.py +0 -0
  142. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/output/normalize.py +0 -0
  143. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/output/policy.py +0 -0
  144. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/output/progress.py +0 -0
  145. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/output/render.py +0 -0
  146. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/py.typed +0 -0
  147. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/runtime/__init__.py +0 -0
  148. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/runtime/confirm.py +0 -0
  149. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/runtime/dryrun.py +0 -0
  150. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/runtime/options.py +0 -0
  151. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/runtime/parents.py +0 -0
  152. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/runtime/runlog.py +0 -0
  153. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/runtime/session.py +0 -0
  154. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/runtime/updates.py +0 -0
  155. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/runtime/validate.py +0 -0
  156. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/services/__init__.py +0 -0
  157. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/services/argspec.py +0 -0
  158. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/services/coerce.py +0 -0
  159. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/services/command_contract.py +0 -0
  160. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/services/conditions.py +0 -0
  161. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/services/dispatch.py +0 -0
  162. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/services/factory.py +0 -0
  163. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/services/input_fields.py +0 -0
  164. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/services/mapping.py +0 -0
  165. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/services/openapi_types.py +0 -0
  166. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/services/positionals.py +0 -0
  167. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/services/protocol.py +0 -0
  168. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/services/testing.py +0 -0
  169. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/services/type_system.py +0 -0
  170. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/skills/__init__.py +0 -0
  171. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/skills/steering.py +0 -0
  172. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/mammoth_cli/testing.py +0 -0
  173. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/spec/manifests/commands/activity.yaml +0 -0
  174. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/spec/manifests/commands/addon.yaml +0 -0
  175. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/spec/manifests/commands/agent.yaml +0 -0
  176. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/spec/manifests/commands/ai.yaml +0 -0
  177. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/spec/manifests/commands/annotation.yaml +0 -0
  178. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/spec/manifests/commands/auth.yaml +0 -0
  179. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/spec/manifests/commands/automation.yaml +0 -0
  180. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/spec/manifests/commands/batch.yaml +0 -0
  181. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/spec/manifests/commands/billing.yaml +0 -0
  182. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/spec/manifests/commands/browse.yaml +0 -0
  183. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/spec/manifests/commands/capability.yaml +0 -0
  184. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/spec/manifests/commands/client-app.yaml +0 -0
  185. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/spec/manifests/commands/completion.yaml +0 -0
  186. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/spec/manifests/commands/config.yaml +0 -0
  187. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/spec/manifests/commands/connector.yaml +0 -0
  188. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/spec/manifests/commands/context.yaml +0 -0
  189. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/spec/manifests/commands/dashboard.yaml +0 -0
  190. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/spec/manifests/commands/data-app.yaml +0 -0
  191. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/spec/manifests/commands/dataset.yaml +0 -0
  192. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/spec/manifests/commands/doctor.yaml +0 -0
  193. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/spec/manifests/commands/external-key.yaml +0 -0
  194. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/spec/manifests/commands/file.yaml +0 -0
  195. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/spec/manifests/commands/folder.yaml +0 -0
  196. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/spec/manifests/commands/job.yaml +0 -0
  197. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/spec/manifests/commands/log.yaml +0 -0
  198. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/spec/manifests/commands/notification.yaml +0 -0
  199. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/spec/manifests/commands/parameter.yaml +0 -0
  200. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/spec/manifests/commands/project.yaml +0 -0
  201. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/spec/manifests/commands/report.yaml +0 -0
  202. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/spec/manifests/commands/schedule.yaml +0 -0
  203. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/spec/manifests/commands/schema.yaml +0 -0
  204. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/spec/manifests/commands/skill.yaml +0 -0
  205. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/spec/manifests/commands/snippet.yaml +0 -0
  206. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/spec/manifests/commands/support.yaml +0 -0
  207. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/spec/manifests/commands/template.yaml +0 -0
  208. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/spec/manifests/commands/trash.yaml +0 -0
  209. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/spec/manifests/commands/upgrade.yaml +0 -0
  210. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/spec/manifests/commands/user.yaml +0 -0
  211. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/spec/manifests/commands/version.yaml +0 -0
  212. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/spec/manifests/commands/view.yaml +0 -0
  213. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/spec/manifests/commands/webhook.yaml +0 -0
  214. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/spec/manifests/commands/workflow.yaml +0 -0
  215. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/spec/manifests/commands/workspace.yaml +0 -0
  216. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/spec/manifests/openapi-operations.yaml +0 -0
  217. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/spec/manifests/schema-v1.json +0 -0
  218. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/spec/manifests/sdk-catalog.source.yaml +0 -0
  219. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/spec/manifests/sdk-methods.yaml +0 -0
  220. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/spec/openapi/metadata.json +0 -0
  221. {mammoth_cli-2.0.31 → mammoth_cli-2.0.32}/spec/openapi/openapi.json +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mammoth-cli
3
- Version: 2.0.31
3
+ Version: 2.0.32
4
4
  Summary: Command-line interface for the Mammoth Analytics platform
5
5
  Project-URL: homepage, https://mammoth.io
6
6
  Project-URL: repository, https://github.com/EdgeMetric/mammothsdk
@@ -17,7 +17,7 @@ Classifier: Topic :: Software Development :: Libraries :: Python Modules
17
17
  Requires-Python: <3.15,>=3.12
18
18
  Requires-Dist: jsonschema>=4.20
19
19
  Requires-Dist: keyring<26,>=25.7
20
- Requires-Dist: mammoth-io<0.8,>=0.7.13
20
+ Requires-Dist: mammoth-io<0.8,>=0.7.14
21
21
  Requires-Dist: platformdirs<5,>=4.10
22
22
  Requires-Dist: pydantic<3,>=2.13
23
23
  Requires-Dist: pyyaml<7,>=6
@@ -30,7 +30,7 @@ Description-Content-Type: text/markdown
30
30
 
31
31
  Use [Mammoth Analytics](https://mammoth.io) from a terminal. The `mammoth`
32
32
  command covers data import and export, transformations, project organization,
33
- automation, and administration. Its interface is designed to be readable at a
33
+ automation, and administration. Its interface is readable at a
34
34
  shell and predictable in scripts and agent runs.
35
35
 
36
36
  [![PyPI](https://img.shields.io/pypi/v/mammoth-cli)](https://pypi.org/project/mammoth-cli/)
@@ -38,14 +38,14 @@ shell and predictable in scripts and agent runs.
38
38
  [![License](https://img.shields.io/pypi/l/mammoth-cli)](https://github.com/EdgeMetric/mammothsdk/blob/main/mammoth-cli/LICENSE)
39
39
 
40
40
  - **Human-friendly by default.** In a terminal, commands print a readable table.
41
- - **Agent-native.** When output is piped, you get a stable JSON envelope with a
41
+ - **Agent-native.** When you pipe the output, you get a stable JSON envelope with a
42
42
  documented schema, exit codes, and error codes — no flags required.
43
43
  - **Guarded mutations.** Commands expose their confirmation policy; promptless
44
44
  destructive operations require an explicit `--yes`.
45
45
  - **Discoverable.** `mammoth capability list` and `mammoth schema get` describe
46
46
  every command, so an agent can learn the surface at runtime.
47
47
 
48
- The CLI is built on the public [`mammoth-io`](https://pypi.org/project/mammoth-io/)
48
+ The CLI uses the public [`mammoth-io`](https://pypi.org/project/mammoth-io/)
49
49
  SDK. It adds no second HTTP client and calls no private SDK members.
50
50
 
51
51
  See the [capability matrix](https://github.com/EdgeMetric/mammothsdk/blob/main/mammoth-cli/docs/release-capability-matrix.md)
@@ -103,8 +103,7 @@ history, or command arguments. On POSIX, put the required JSON credentials in a
103
103
  private owner-only (0600) file outside the repository and pass its path to:
104
104
 
105
105
  ```bash
106
- mammoth auth login --input /private/path/credentials.json --storage file \
107
-
106
+ mammoth auth login --input /private/path/credentials.json --storage file
108
107
  ```
109
108
 
110
109
  On Windows, use the approved OS keyring instead; do not use a file fallback
@@ -136,8 +135,7 @@ To pin it for a whole session, `export MAMMOTH_OUTPUT=json MAMMOTH_NO_INPUT=1`
136
135
  the private, permission-checked file described above:
137
136
 
138
137
  ```bash
139
- mammoth auth login --input /private/path/credentials.json --storage file \
140
-
138
+ mammoth auth login --input /private/path/credentials.json --storage file
141
139
  ```
142
140
 
143
141
  Feed multi-field requests as one document instead of many flags:
@@ -210,9 +208,10 @@ Use Mammoth Analytics only through the `mammoth` CLI in bash; run
210
208
  1. If `mammoth --version` fails, install, then re-check (new shell if needed):
211
209
  curl -fsSL https://raw.githubusercontent.com/EdgeMetric/mammothsdk/main/mammoth-cli/installers/mammoth-install.sh | bash
212
210
  2. Run `mammoth auth status`. If it shows no credentials, print exactly this
213
- and wait until I say done: "In the Mammoth web app open account settings,
214
- create an API key (key + secret) and note your workspace id, then run in
215
- your own terminal: mammoth auth login" — never ask for, read, or pass a key
211
+ and wait until I say done: "In the Mammoth web app open Workspace settings
212
+ → API Tokens → Create token, copy the key and the secret (shown once), and
213
+ note the workspace id (the number after /workspaces/ in the address bar),
214
+ then run in your own terminal: mammoth auth login" — never ask for, read, or pass a key
216
215
  or secret yourself, and never run auth login.
217
216
  3. Require `mammoth doctor` to pass, then run `mammoth skill show` and
218
217
  follow the guide it prints.
@@ -2,7 +2,7 @@
2
2
 
3
3
  Use [Mammoth Analytics](https://mammoth.io) from a terminal. The `mammoth`
4
4
  command covers data import and export, transformations, project organization,
5
- automation, and administration. Its interface is designed to be readable at a
5
+ automation, and administration. Its interface is readable at a
6
6
  shell and predictable in scripts and agent runs.
7
7
 
8
8
  [![PyPI](https://img.shields.io/pypi/v/mammoth-cli)](https://pypi.org/project/mammoth-cli/)
@@ -10,14 +10,14 @@ shell and predictable in scripts and agent runs.
10
10
  [![License](https://img.shields.io/pypi/l/mammoth-cli)](https://github.com/EdgeMetric/mammothsdk/blob/main/mammoth-cli/LICENSE)
11
11
 
12
12
  - **Human-friendly by default.** In a terminal, commands print a readable table.
13
- - **Agent-native.** When output is piped, you get a stable JSON envelope with a
13
+ - **Agent-native.** When you pipe the output, you get a stable JSON envelope with a
14
14
  documented schema, exit codes, and error codes — no flags required.
15
15
  - **Guarded mutations.** Commands expose their confirmation policy; promptless
16
16
  destructive operations require an explicit `--yes`.
17
17
  - **Discoverable.** `mammoth capability list` and `mammoth schema get` describe
18
18
  every command, so an agent can learn the surface at runtime.
19
19
 
20
- The CLI is built on the public [`mammoth-io`](https://pypi.org/project/mammoth-io/)
20
+ The CLI uses the public [`mammoth-io`](https://pypi.org/project/mammoth-io/)
21
21
  SDK. It adds no second HTTP client and calls no private SDK members.
22
22
 
23
23
  See the [capability matrix](https://github.com/EdgeMetric/mammothsdk/blob/main/mammoth-cli/docs/release-capability-matrix.md)
@@ -75,8 +75,7 @@ history, or command arguments. On POSIX, put the required JSON credentials in a
75
75
  private owner-only (0600) file outside the repository and pass its path to:
76
76
 
77
77
  ```bash
78
- mammoth auth login --input /private/path/credentials.json --storage file \
79
-
78
+ mammoth auth login --input /private/path/credentials.json --storage file
80
79
  ```
81
80
 
82
81
  On Windows, use the approved OS keyring instead; do not use a file fallback
@@ -108,8 +107,7 @@ To pin it for a whole session, `export MAMMOTH_OUTPUT=json MAMMOTH_NO_INPUT=1`
108
107
  the private, permission-checked file described above:
109
108
 
110
109
  ```bash
111
- mammoth auth login --input /private/path/credentials.json --storage file \
112
-
110
+ mammoth auth login --input /private/path/credentials.json --storage file
113
111
  ```
114
112
 
115
113
  Feed multi-field requests as one document instead of many flags:
@@ -182,9 +180,10 @@ Use Mammoth Analytics only through the `mammoth` CLI in bash; run
182
180
  1. If `mammoth --version` fails, install, then re-check (new shell if needed):
183
181
  curl -fsSL https://raw.githubusercontent.com/EdgeMetric/mammothsdk/main/mammoth-cli/installers/mammoth-install.sh | bash
184
182
  2. Run `mammoth auth status`. If it shows no credentials, print exactly this
185
- and wait until I say done: "In the Mammoth web app open account settings,
186
- create an API key (key + secret) and note your workspace id, then run in
187
- your own terminal: mammoth auth login" — never ask for, read, or pass a key
183
+ and wait until I say done: "In the Mammoth web app open Workspace settings
184
+ → API Tokens → Create token, copy the key and the secret (shown once), and
185
+ note the workspace id (the number after /workspaces/ in the address bar),
186
+ then run in your own terminal: mammoth auth login" — never ask for, read, or pass a key
188
187
  or secret yourself, and never run auth login.
189
188
  3. Require `mammoth doctor` to pass, then run `mammoth skill show` and
190
189
  follow the guide it prints.
@@ -6,7 +6,7 @@ not implement a second HTTP client and does not call private SDK members.
6
6
 
7
7
  from __future__ import annotations
8
8
 
9
- __version__ = "2.0.31"
9
+ __version__ = "2.0.32"
10
10
 
11
11
  # The versioned machine output envelope contract.
12
12
  SCHEMA_VERSION = 1
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: mammoth-cli
3
- version: 2.0.31
3
+ version: 2.0.32
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, dashboards, exports, and handoffs."
5
5
  ---
6
6
 
@@ -8,7 +8,7 @@ description: "Use Mammoth Analytics from a terminal: install or authenticate the
8
8
 
9
9
  Use this skill for Mammoth shell work, not for Python SDK integration. The
10
10
  CLI is the contract: it validates every request locally, returns one JSON
11
- envelope, and never needs a flag to do so when its output is piped.
11
+ envelope, and needs no flag for that when you pipe its output.
12
12
 
13
13
  ## Start
14
14
 
@@ -21,8 +21,9 @@ mammoth project ensure 'PROJECT NAME' # get-or-create; becomes the active proj
21
21
  command anyway. Production is the `app` endpoint; use `release` only when the
22
22
  task names it, and check `meta.profile`/`auth status` `endpoint` match the
23
23
  intended environment before doing anything. If no profile has credentials,
24
- tell the operator the exact `mammoth auth login --profile PROFILE` command to
25
- run in their own terminal and wait; never ask for a key or secret in chat,
24
+ tell the operator to run `mammoth auth login` in their own terminal (add
25
+ `--profile NAME` only for a profile other than `default`; [auth](references/auth.md)
26
+ says where the key and secret come from) and wait; never ask for a key or secret in chat,
26
27
  never read one from a file or environment variable, never run `auth login`
27
28
  yourself. If any envelope carries `meta.update_available`, run its `command`
28
29
  before the next step.
@@ -62,7 +63,8 @@ before the next step.
62
63
  returns, never backend aliases.
63
64
  - `--dry-run` on any API-backed command resolves everything and reports the
64
65
  request instead of sending it; use it before a write you are not sure of.
65
- - Destructive commands need `--yes --confirm ID`. Preserve requested
66
+ - Deletes need `--yes`; high-impact ones (`project delete`, access changes)
67
+ also need `--confirm ID`, and `schema get` shows which. Preserve requested
66
68
  deliverables; cleanup is exact-ID authorized and
67
69
  never means delete-all-owned-resources: delete only ids this run created,
68
70
  one per call, and read back that they are gone.
@@ -17,8 +17,12 @@ An agent never receives the key or secret. When `auth status` reports a
17
17
  missing profile or `has_credentials=false`, stop and hand the login to the
18
18
  human operator:
19
19
 
20
- 1. Tell the operator the exact command to run in **their own** terminal. For
21
- production it is just:
20
+ 1. Tell the operator where the credentials come from: in the Mammoth web app,
21
+ **Workspace settings → API Tokens → Create token** gives a key and a secret;
22
+ the web app shows the secret only once (on an existing token, **Generate new
23
+ secret** replaces it). The workspace id is the number after `/workspaces/`
24
+ in the web app's address bar. Then give the exact command to run in
25
+ **their own** terminal. For production it is:
22
26
 
23
27
  ```bash
24
28
  mammoth auth login
@@ -30,6 +34,10 @@ human operator:
30
34
  hidden input, then the workspace id, so no secret enters chat, argv, or
31
35
  history. Credentials are per environment: a release key never
32
36
  authenticates on `app`.
37
+ On macOS the Keychain may show a dialog about `mammoth-cli`; tell the
38
+ operator to choose **Always Allow**. If the keychain cannot be used (for
39
+ example over SSH), login falls back to the owner-only file, or the operator
40
+ runs `mammoth auth login --storage file`.
33
41
  2. Wait for the operator to confirm, then re-run
34
42
  `mammoth auth status --profile PROFILE` and
35
43
  `mammoth doctor --profile PROFILE`.
@@ -33,7 +33,7 @@ Ran once: `automation.create`, `automation.delete`, `automation.list`
33
33
 
34
34
  | Command | State | Note |
35
35
  |---|---|---|
36
- | `automation.get` | observed blocker | backend_error: SUSPECTED DEFECT: automation.get on the id just returned by automation.create (id=1) returns HTTP 500 empty body every time (3 retries, several seconds apart), not e |
36
+ | `automation.get` | observed blocker | backend_error: SUSPECTED DEFECT: automation.get on the id that automation.create returned (id=1) returns HTTP 500 empty body every time (3 retries, several seconds apart), not even |
37
37
  | `automation.update` | observed blocker | cli_error: CLI rejected 'name' field; error message says accepted field is 'patch' (nested patch object), not documented in agent_example |
38
38
 
39
39
  ## `batch`
@@ -30,7 +30,7 @@ Example: `mammoth automation get 123`. Placeholders are illustrative; resolve ID
30
30
 
31
31
  Result: `AutomationGetResult`; mutation `read`, confirmation `none`, wait policy `not_async`.
32
32
 
33
- Status on release: observed blocker — backend_error: SUSPECTED DEFECT: automation.get on the id just returned by automation.create (id=1) returns HTTP 500 empty body every time (3 retries, several seconds apart), not e. Re-check before relying on it.
33
+ Status on release: observed blocker — backend_error: SUSPECTED DEFECT: automation.get on the id that automation.create returned (id=1) returns HTTP 500 empty body every time (3 retries, several seconds apart), not even. Re-check before relying on it.
34
34
 
35
35
  ### `automation.list`
36
36
 
@@ -11,15 +11,18 @@ operator logs in from their own terminal as described in [auth](auth.md).
11
11
 
12
12
  ## Required record
13
13
 
14
- Include `format: "mammoth-agent-handoff"`, `format_version`, producer
15
- `cli_version`, `sdk_version`, `contract_schema_version`, and `skill_version`
16
- (the `version:` field in this skill's `SKILL.md` frontmatter; `mammoth
17
- --version` gives the other two);
18
- the intent and acceptance criteria; authorized `profile` name and exact
19
- workspace/project scope; observed resources with dataset/view parents and
20
- dependencies; last verified state and hashes of bounded secret-free evidence;
21
- pending known jobs and `unknown_outcomes`; completed actions; remaining
22
- objectives; and a cleanup owner plus dependency order.
14
+ Include `format: "mammoth-agent-handoff"`, `format_version`, and the producer
15
+ versions: `cli_version`, `sdk_version`, `contract_schema_version`, and
16
+ `skill_version`. `skill_version` is the `version:` field in this skill's
17
+ `SKILL.md` frontmatter; `mammoth --version` gives the other two. Also include
18
+ the intent and acceptance criteria and the authorized `profile` name and exact
19
+ workspace/project scope. Then add:
20
+
21
+ - observed resources with dataset/view parents and dependencies;
22
+ - the last verified state and hashes of bounded secret-free evidence;
23
+ - pending known jobs and `unknown_outcomes`;
24
+ - completed actions and remaining objectives;
25
+ - a cleanup owner plus dependency order.
23
26
 
24
27
  Never include API keys, API secrets, tokens, headers, credentials files, raw
25
28
  secret-bearing input, or unredacted response bodies. IDs and display names are
@@ -5,7 +5,11 @@ A command's `wait_policy` (visible via `mammoth schema get`) determines what
5
5
  happens with the job, so you do not have to guess:
6
6
 
7
7
  - `always_wait` and `start_or_wait` commands resolve the job for you and return
8
- the final result. You do NOT wait manually.
8
+ the final result. You do NOT wait manually. A `view transform` success
9
+ envelope says `"status": "done"` and `"pipeline_state": "ready"`: the
10
+ pipeline has finished, so do not poll its `future_id`; verify the values
11
+ with `view data get`. (With SDK ≤ 0.7.13 the same envelope said
12
+ `"processing"`; it meant the same thing.)
9
13
  - Only a `returns_job` command normally needs you to wait on the job id
10
14
  explicitly:
11
15
  ```bash
@@ -1,12 +1,16 @@
1
1
  # Typed operations and verification
2
2
 
3
3
  The installed CLI manifest is the source of truth for local CLI routes. Use
4
- `schema list/find TEXT` to discover those routes; `capability list` is a
4
+ `schema list/find TEXT` to discover those routes. `capability list` is a
5
5
  separate API-binding inventory and can omit typed/local commands such as view
6
- transforms. `schema get COMMAND_ID` returns the command path, typed positionals/options,
7
- request/result models, accepted input shape, effect/confirmation policy,
8
- wait policy, known restrictions, and recovery/verification metadata. Read the
9
- schema immediately before composing a request because support and fields can
6
+ transforms. `schema get COMMAND_ID` returns the full contract of one command:
7
+
8
+ - command path and typed positionals/options;
9
+ - request/result models and the accepted input shape;
10
+ - effect/confirmation policy and wait policy;
11
+ - known restrictions and recovery/verification metadata.
12
+
13
+ Read the schema immediately before composing a request. Support and fields can
10
14
  vary by release, profile, or backend.
11
15
 
12
16
  ## Which id is which
@@ -24,8 +28,8 @@ vary by release, profile, or backend.
24
28
 
25
29
  `schema find`/`schema get`/`schema list` read the installed manifest. They
26
30
  need no project and no stored credentials. `dataset list`, `folder list`, and
27
- `view list` call the live API and are scoped to one project through
28
- `--project`. `dataset find NAME` and `folder find NAME` search every project
31
+ `view list` call the live API, and `--project` scopes them to one
32
+ project. `dataset find NAME` and `folder find NAME` search every project
29
33
  the credential can see (or one, with `--project`); they still need
30
34
  credentials because they call the live API.
31
35
 
@@ -56,50 +60,50 @@ typed routes for combining views. Appending rows is a dataset-level
56
60
  operation: upload into the existing dataset with `file upload --input
57
61
  '{"append_to_ds_id": DATASET_ID}'`, not a view transform.
58
62
 
59
- Use the exact returned command ID, then read its schema and the current view
63
+ Use the command ID exactly as the search returns it. Read its schema and the current view
60
64
  schema before composing input. Join only on keys confirmed in both exact view
61
- schemas. Create derived measures through the typed math route after numeric
62
- conversion and verify them from a `view data get` readback. Deduplication is a
63
- semantic operation: define the key/retention rule explicitly; never treat a
64
- successful task submission as proof that duplicates were removed.
65
+ schemas. After numeric conversion, create derived measures through the typed
66
+ math route. Verify them from a `view data get` readback. Deduplication is a
67
+ semantic operation: define the key/retention rule explicitly. A successful
68
+ task submission does not prove that the task removed duplicates.
65
69
 
66
70
  For deduplication, discover and use `view.transform.discard-duplicates`; see
67
71
  recipes/transforms.md for the full procedure.
68
72
 
69
73
  Prefer a typed `view transform <operation>` command. Its schema is the
70
74
  discoverable request contract. A job status or pipeline/task definition only
71
- proves the task ran; for any value-changing step the proof is `view data get`
72
- rows — see SKILL.md working rules and
73
- [report-checklist](report-checklist.md). Every transform and draft mutation
74
- carries the exact parent `dataset_id` in `--input`; it never falls back to
75
- project-wide discovery:
75
+ proves that the task ran. For a value-changing step, the proof is the
76
+ `view data get` rows; see SKILL.md and [report-checklist](report-checklist.md).
77
+ A transform needs the view's parent dataset. The CLI remembers it from any
78
+ earlier read of the view (`view list DATASET_ID`, `view get VIEW_ID`); pass
79
+ `dataset_id` in `--input` only when the command asks for it. It never falls
80
+ back to project-wide discovery:
76
81
 
77
82
  ```bash
78
83
  mammoth view transform math VIEW_ID --project PROJECT_ID \
79
- --input '{"dataset_id":DATASET_ID,"expression":"Unit Price * Quantity","new_column":"Revenue"}' \
80
-
84
+ --input '{"expression":"Unit Price * Quantity","new_column":"Revenue"}'
81
85
  mammoth view pipeline get VIEW_ID --project PROJECT_ID
82
86
  ```
83
87
 
84
88
  The low-level `view task add|preview|update` routes expose an opaque
85
89
  `task_spec` object in the current schema, not a discoverable task union. Prefer
86
- typed transform routes. Use a low-level task route only when an independently
87
- documented task specification is supplied for the target backend; never infer
88
- SDK/backend keys from `schema get` or an illustrative example. Read the
90
+ typed transform routes. Use a low-level task route only with an independently
91
+ documented task specification for the target backend. Never infer SDK/backend
92
+ keys from `schema get` or an illustrative example. Read the
89
93
  task/list or pipeline/items result back after a successful write. Without that
90
94
  independent specification, report the route as unsupported/ambiguous and stop
91
95
  safely.
92
96
 
93
97
  Typed transforms and `view task add` append at the end of the pipeline and
94
- never reorder or delete an existing step. On a pipeline other people or
95
- agents also edit, make that checkable: read `view task list VIEW_ID`, plan,
96
- then write with `"expected_task_count": N` in the input; the CLI re-reads
97
- the list just before the write and refuses with `pipeline_changed` when the
98
- count moved ([safety](safety.md)). `--dry-run` on the same command shows the
98
+ never reorder or delete an existing step. Other people or agents may also
99
+ edit the pipeline. To guard against that, read `view task list VIEW_ID`,
100
+ plan, then write with `"expected_task_count": N` in the input. The CLI
101
+ re-reads the list just before the write. It refuses with `pipeline_changed`
102
+ when the count moved ([safety](safety.md)). `--dry-run` on the same command shows the
99
103
  resolved call first.
100
104
 
101
- For a new workflow (a container for automation), discover and then read it
102
- back; workflow creation is not the same as adding a view pipeline task:
105
+ A workflow is a container for automation. Creating one is not the same as
106
+ adding a view pipeline task. Discover its schema, create it, and read it back:
103
107
 
104
108
  ```bash
105
109
  mammoth schema get workflow.create
@@ -125,8 +129,8 @@ before extracting a field.
125
129
  First inspect `view.export.list/get` for existing configuration and the exact
126
130
  export command schema. Local CSV and dataset exports have different result
127
131
  shapes from external-effect connectors. External destinations (database,
128
- cloud storage, email, and similar) require `--yes`, commonly return a job, and
129
- must be verified with `job get/wait` and then `view export get/list` or a
132
+ cloud storage, email, and similar) require `--yes` and commonly return a job.
133
+ Verify them with `job get/wait`, then with `view export get/list` or a
130
134
  destination-side artifact when the schema requires it.
131
135
 
132
136
  ```bash
@@ -136,9 +140,9 @@ mammoth view export csv VIEW_ID --project PROJECT_ID
136
140
  mammoth view export list VIEW_ID DATASET_ID --project PROJECT_ID
137
141
  ```
138
142
 
139
- Use `--input` for connector configuration. Keep fields listed as secret by the
140
- schema out of argv, logs, checkpoints, and handoffs; do not claim an export
141
- completed from a submitted job alone. Reconcile a timed-out or uncertain
143
+ Use `--input` for connector configuration. Keep the schema's secret fields out
144
+ of argv, logs, checkpoints, and handoffs. A submitted job alone does not prove
145
+ that an export completed. Reconcile a timed-out or uncertain
142
146
  export before submitting another one.
143
147
 
144
148
  ## Capability boundaries
@@ -3,8 +3,8 @@
3
3
  Read [deliverable retention and cleanup authorization](../retention.md) first.
4
4
  Classify temporary, intermediate, retained-deliverable, and protected
5
5
  resources before choosing a cleanup target. “Owned” is not by itself cleanup
6
- authorization: never delete all resources created by a task, and never delete
7
- a requested dataset, dashboard, view, or export artifact as incidental tidy-up.
6
+ authorization. Never delete all resources created by a task. Never delete a
7
+ requested dataset, dashboard, view, or export artifact as incidental tidy-up.
8
8
 
9
9
  ```bash
10
10
  mammoth schema find "trash"
@@ -1,8 +1,8 @@
1
1
  # Dashboards
2
2
 
3
- `dashboard create` (legacy engine) is retired on release (HTTP 409
3
+ Release has retired `dashboard create` (legacy engine; HTTP 409
4
4
  `4DASH012`): `schema find "dashboard create"` lists it first, do not use it.
5
- Create with `create-blank` (or `v3 generate` when an AI route is allowed).
5
+ Create with `create-blank` (or `v3 generate` when the task allows an AI route).
6
6
  `dashboard source list` is an observed blocker on release (see
7
7
  capabilities); verify the view binding with `dashboard get DASHBOARD_ID`
8
8
  (`data.dataview_id`) instead.
@@ -14,7 +14,7 @@ mammoth project list # baseline: ids that exist before you start
14
14
  mammoth project ensure 'From Claude' # -> PROJECT_ID (data.project_id; reused next time)
15
15
  mammoth file upload orders.csv --project PROJECT_ID # -> data.datasets[].id/status
16
16
  mammoth file upload customers.csv --project PROJECT_ID
17
- # a dataset in need_action is not usable yet: follow need-action.md (file-settings update), then re-read
17
+ # need_action: follow need-action.md (file-settings update), then re-read; needs_view: run its next_command (view create)
18
18
  mammoth dataset list --project PROJECT_ID
19
19
  mammoth view list ORDERS_DS --project PROJECT_ID # -> ORDERS_VIEW
20
20
  mammoth view list CUSTOMERS_DS --project PROJECT_ID # -> CUSTOMERS_VIEW
@@ -5,14 +5,14 @@ only with IDs, display names, and fields returned by the immediately preceding
5
5
  read/schema command. Every command is illustrative; piped output is JSON
6
6
  without any flag.
7
7
 
8
- Each successful mutation must be verified from a remote read, terminal job,
8
+ Verify each successful mutation from a remote read, terminal job,
9
9
  pipeline/task definition, or exported artifact. Retain only nonsecret IDs and
10
10
  hashes; stop on ambiguous schemas, authorization errors, or unknown effects.
11
11
 
12
12
  - [worked example: three CSVs to a per-region summary](end-to-end.md)
13
13
  - [auth and scope](auth-scope.md)
14
14
  - [files, datasets, views and settings](resources.md)
15
- - [datasets stuck in `need_action` after upload](need-action.md)
15
+ - [datasets in `need_action` or `needs_view` after upload](need-action.md)
16
16
  - [typed transformations and drafts](transforms.md)
17
17
  - [typed ETL discovery](typed-etl-discovery.md)
18
18
  - [exports and artifacts](exports.md)
@@ -25,8 +25,7 @@ operator only when neither does.
25
25
 
26
26
  ```bash
27
27
  mammoth dataset file-settings update DATASET_ID --project PROJECT_ID \
28
- --input '{"delimiter": ",", "has_header": true, "initial_skip_count": 0, "quotechar": "\"", "date_format": "US"}' \
29
-
28
+ --input '{"delimiter": ",", "has_header": true, "initial_skip_count": 0, "quotechar": "\"", "date_format": "US"}'
30
29
  ```
31
30
 
32
31
  The response is a job (`operation: "understand_csv"`). Poll `dataset get`
@@ -35,22 +34,25 @@ the status leaves `need_action`. It usually reaches `ready` within seconds;
35
34
  on prague an ISO `YYYY-MM-DD` column was flagged ambiguous and took about
36
35
  three minutes, so poll for up to five minutes before treating it as stuck.
37
36
  Then `view list` returns the generated view and typed transforms can
38
- proceed. Which environments ask differs: release processed the same file
39
- straight to `ready`. If the status becomes `error`, read `status_info`
40
- and stop; do not retry with guessed settings.
37
+ proceed. Every environment can ask, release included: on 2026-09-24 release
38
+ flagged an ISO `YYYY-MM-DD` column too and reached `ready` within seconds of
39
+ the update. If the status becomes `error`, read `status_info` and stop; do
40
+ not retry with guessed settings.
41
41
 
42
- ## All-text CSV: `ready` without a view
42
+ ## All-text CSV: ingested, but no view
43
43
 
44
44
  A CSV whose columns are all text (ids, names, regions, no number or date)
45
45
  comes back `status: "ready"` with `status_info.ready` = "This file has more
46
- than one plausible way to be read." and still gets no view. `file upload`
47
- reports this as `status: "need_action"` with the same `next_command` as
48
- above. Confirm the settings exactly as for ambiguous dates; `file-settings
49
- get` shows `at_least_one_non_text_column_present: false`.
50
-
51
- On the release backend the settings update returns a successful
52
- `understand_csv` job and a batch, but a view is still not created (backend
53
- defect, reported). If `view list DATASET_ID` stays empty after two polls of
54
- `dataset get`, stop and report it as a platform blocker for that file; do not
55
- retry the update. Where the task allows, a file with at least one numeric
56
- column is processed straight to `ready` with its view.
46
+ than one plausible way to be read." The rows are ingested (`dataset get`
47
+ shows `stats.row_count`), but the platform creates no view. This is not a
48
+ parsing question: confirming file settings does not create a view.
49
+ `file upload` reports it as `status: "needs_view"` with this `next_command`:
50
+
51
+ ```bash
52
+ mammoth view create DATASET_ID --project PROJECT_ID
53
+ mammoth view list DATASET_ID --project PROJECT_ID # the new view, row_count set
54
+ ```
55
+
56
+ The new view is ready at once and takes transforms like any other (verified
57
+ on release, 2026-09-24). Run `view create` only when `view list DATASET_ID`
58
+ is empty, so that a retry does not add a second view.
@@ -11,7 +11,7 @@ Discover exact contracts, then upload and read back explicit parents.
11
11
  ## Where uploads land
12
12
 
13
13
  Unless the task names a project, work in one project of your own and put
14
- every dataset of the task there, so the user's real projects stay clean and
14
+ every dataset of the task there. The user's real projects then stay clean, and
15
15
  one sweep removes everything. `project ensure` is idempotent get-or-create
16
16
  by exact name: re-running it (or a second task) returns the same id
17
17
  (`created: false`) instead of making another project. A one-off task can
@@ -68,8 +68,8 @@ retry in a loop.
68
68
  `file upload` takes the local path as its positional argument; there is no
69
69
  `--source`/`--file` option. A path that does not exist is a usage error
70
70
  (`Local file not found`) before any request. Its result carries the status the platform holds
71
- for each created dataset: `ready`, or `need_action` with a `next_command`, in
72
- which case follow [need-action](need-action.md) before looking for a view. `dataset delete` is asynchronous: re-read
71
+ for each created dataset: `ready`, or `need_action` / `needs_view` with a
72
+ `next_command`, in which case follow [need-action](need-action.md) before looking for a view. `dataset delete` is asynchronous: re-read
73
73
  `dataset list` (the id disappears once the job completes) before reporting.
74
74
 
75
75
  Use display names from the exact view schema. For settings, folders and other
@@ -113,8 +113,7 @@ that every freeform creation type or `dataset_spec` variant works:
113
113
  ```bash
114
114
  mammoth schema get dataset.create
115
115
  mammoth dataset create --project PROJECT_ID --input \
116
- '{"ds_creation_type":"weburl","dataset_spec":{"url":"https://example.org/source.csv"}}' \
117
-
116
+ '{"ds_creation_type":"weburl","dataset_spec":{"url":"https://example.org/source.csv"}}'
118
117
  ```
119
118
 
120
119
  Use the `data` keys actually returned by that response for the subsequent
@@ -29,8 +29,7 @@ lists them. Pick the operation by what it does, not by its name:
29
29
  ```bash
30
30
  mammoth view data get VIEW_ID DATASET_ID --project PROJECT_ID # before: note which rows have a blank revenue, and a few non-blank values
31
31
  mammoth view transform set-values VIEW_ID --project PROJECT_ID \
32
- --input '{"dataset_id":DATASET_ID,"existing_column":"revenue","values":[{"value":0}],"condition":{"column":"revenue","operator":"IS_EMPTY"}}' \
33
-
32
+ --input '{"dataset_id":DATASET_ID,"existing_column":"revenue","values":[{"value":0}],"condition":{"column":"revenue","operator":"IS_EMPTY"}}'
34
33
  mammoth view data get VIEW_ID DATASET_ID --project PROJECT_ID # after
35
34
  ```
36
35
 
@@ -52,12 +51,10 @@ command manifest; substitute only observed view IDs and display names:
52
51
  ```bash
53
52
  mammoth schema get view.transform.convert-type
54
53
  mammoth view transform convert-type VIEW_ID --project PROJECT_ID \
55
- --input '{"dataset_id":DATASET_ID,"conversions":[{"column":"Amount","to":"NUMERIC"}]}' \
56
-
54
+ --input '{"dataset_id":DATASET_ID,"conversions":[{"column":"Amount","to":"NUMERIC"}]}'
57
55
  mammoth schema get view.transform.math
58
56
  mammoth view transform math VIEW_ID --project PROJECT_ID \
59
- --input '{"dataset_id":DATASET_ID,"expression":"GDP / Population","new_column":"GDP per capita"}' \
60
-
57
+ --input '{"dataset_id":DATASET_ID,"expression":"GDP / Population","new_column":"GDP per capita"}'
61
58
  ```
62
59
 
63
60
  The released catalog exposes typed dedupe through `schema find duplicate` as
@@ -107,8 +104,7 @@ or use the SQL task with `MAX(monthly_target) AS monthly_target`.
107
104
  ```bash
108
105
  mammoth schema get view.transform.pivot
109
106
  mammoth view transform add-sql VIEW_ID --project PROJECT_ID \
110
- --input '{"dataset_id":DATASET_ID,"query":"SELECT region, SUM(amount) AS total_amount, COUNT(*) AS order_count FROM \"view:VIEW_ID\" GROUP BY region"}' \
111
-
107
+ --input '{"dataset_id":DATASET_ID,"query":"SELECT region, SUM(amount) AS total_amount, COUNT(*) AS order_count FROM \"view:VIEW_ID\" GROUP BY region"}'
112
108
  mammoth view data get VIEW_ID DATASET_ID --project PROJECT_ID
113
109
  ```
114
110