mammoth-cli 2.0.20__tar.gz → 2.0.22__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 (219) hide show
  1. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/PKG-INFO +39 -15
  2. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/README.md +38 -14
  3. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/__init__.py +1 -1
  4. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/app.py +39 -0
  5. mammoth_cli-2.0.22/mammoth_cli/bundled_skill/mammoth-cli/SKILL.md +110 -0
  6. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/bundled_skill/mammoth-cli/references/auth.md +8 -8
  7. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/bundled_skill/mammoth-cli/references/capabilities-misc.md +7 -12
  8. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/bundled_skill/mammoth-cli/references/capabilities.md +6 -6
  9. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/bundled_skill/mammoth-cli/references/command-index.md +1 -1
  10. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/activity.md +4 -4
  11. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/addon.md +14 -14
  12. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/agent.md +10 -10
  13. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/ai.md +12 -12
  14. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/annotation.md +10 -10
  15. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/auth.md +6 -6
  16. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/automation.md +15 -15
  17. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/batch.md +16 -16
  18. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/billing.md +46 -46
  19. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/browse.md +10 -10
  20. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/capability.md +6 -6
  21. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/client-app.md +10 -10
  22. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/completion.md +4 -4
  23. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/config.md +8 -8
  24. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/connector.md +44 -44
  25. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/context.md +6 -6
  26. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dashboard.md +212 -212
  27. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/data-app.md +24 -24
  28. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dataset.md +34 -34
  29. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/doctor.md +2 -2
  30. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/external-key.md +8 -8
  31. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/file.md +19 -19
  32. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/folder.md +20 -20
  33. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/job.md +8 -8
  34. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/log.md +4 -4
  35. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/notification.md +10 -10
  36. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/parameter.md +31 -31
  37. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/project.md +39 -39
  38. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/report.md +2 -2
  39. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/schedule.md +11 -11
  40. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/schema.md +6 -6
  41. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/skill.md +10 -10
  42. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/snippet.md +16 -16
  43. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/support.md +90 -90
  44. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/template.md +10 -10
  45. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/trash.md +6 -6
  46. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/upgrade.md +2 -2
  47. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/user.md +16 -16
  48. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/version.md +2 -2
  49. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/view.md +240 -240
  50. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/webhook.md +14 -14
  51. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/workflow.md +32 -32
  52. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/workspace.md +40 -40
  53. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/bundled_skill/mammoth-cli/references/handoff.md +3 -3
  54. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/bundled_skill/mammoth-cli/references/input.md +2 -2
  55. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/bundled_skill/mammoth-cli/references/jobs-drafts.md +7 -7
  56. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/bundled_skill/mammoth-cli/references/machine-output.md +10 -7
  57. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/bundled_skill/mammoth-cli/references/operations.md +20 -20
  58. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/auth-scope.md +2 -2
  59. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/cleanup.md +4 -4
  60. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/dashboards.md +8 -8
  61. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/end-to-end.md +28 -28
  62. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/exports.md +7 -7
  63. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/index.md +2 -2
  64. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/need-action.md +4 -4
  65. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/resources.md +18 -14
  66. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/transforms.md +20 -20
  67. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/typed-etl-discovery.md +3 -3
  68. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/bundled_skill/mammoth-cli/references/recovery.md +5 -5
  69. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/bundled_skill/mammoth-cli/references/safety.md +4 -4
  70. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/bundled_skill/mammoth-cli/references/task-start.md +8 -9
  71. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/commands/dataset.py +2 -2
  72. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/commands/doctor.py +5 -3
  73. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/commands/project.py +27 -0
  74. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/commands/registry.py +16 -7
  75. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/commands/schema.py +153 -44
  76. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/commands/view.py +54 -6
  77. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/commands/view_ops.py +33 -6
  78. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/errors/envelope.py +8 -14
  79. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/output/envelope.py +4 -1
  80. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/output/render.py +24 -1
  81. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/runtime/confirm.py +1 -4
  82. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/runtime/invocation.py +74 -12
  83. mammoth_cli-2.0.22/mammoth_cli/runtime/parents.py +129 -0
  84. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/runtime/session.py +22 -1
  85. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/runtime/updates.py +1 -1
  86. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/services/command_contract.py +8 -0
  87. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/services/input_fields.py +20 -0
  88. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/services/mapping.py +9 -5
  89. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/services/positionals.py +10 -0
  90. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/services/sdk_service.py +33 -3
  91. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/pyproject.toml +1 -1
  92. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/spec/manifests/commands/activity.yaml +2 -2
  93. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/spec/manifests/commands/addon.yaml +7 -7
  94. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/spec/manifests/commands/agent.yaml +5 -6
  95. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/spec/manifests/commands/ai.yaml +5 -7
  96. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/spec/manifests/commands/annotation.yaml +5 -5
  97. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/spec/manifests/commands/auth.yaml +3 -3
  98. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/spec/manifests/commands/automation.yaml +7 -7
  99. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/spec/manifests/commands/batch.yaml +8 -9
  100. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/spec/manifests/commands/billing.yaml +23 -24
  101. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/spec/manifests/commands/browse.yaml +4 -4
  102. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/spec/manifests/commands/capability.yaml +3 -3
  103. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/spec/manifests/commands/client-app.yaml +5 -5
  104. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/spec/manifests/commands/completion.yaml +2 -2
  105. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/spec/manifests/commands/config.yaml +4 -4
  106. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/spec/manifests/commands/connector.yaml +24 -27
  107. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/spec/manifests/commands/context.yaml +3 -3
  108. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/spec/manifests/commands/dashboard.yaml +110 -138
  109. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/spec/manifests/commands/data-app.yaml +12 -13
  110. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/spec/manifests/commands/dataset.yaml +17 -19
  111. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/spec/manifests/commands/doctor.yaml +1 -1
  112. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/spec/manifests/commands/external-key.yaml +4 -4
  113. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/spec/manifests/commands/file.yaml +9 -9
  114. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/spec/manifests/commands/folder.yaml +10 -11
  115. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/spec/manifests/commands/job.yaml +4 -4
  116. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/spec/manifests/commands/log.yaml +2 -2
  117. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/spec/manifests/commands/notification.yaml +5 -7
  118. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/spec/manifests/commands/parameter.yaml +16 -16
  119. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/spec/manifests/commands/project.yaml +19 -24
  120. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/spec/manifests/commands/report.yaml +1 -1
  121. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/spec/manifests/commands/schedule.yaml +8 -8
  122. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/spec/manifests/commands/schema.yaml +10 -4
  123. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/spec/manifests/commands/skill.yaml +5 -5
  124. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/spec/manifests/commands/snippet.yaml +8 -9
  125. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/spec/manifests/commands/support.yaml +46 -48
  126. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/spec/manifests/commands/template.yaml +5 -7
  127. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/spec/manifests/commands/trash.yaml +3 -4
  128. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/spec/manifests/commands/upgrade.yaml +1 -1
  129. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/spec/manifests/commands/user.yaml +8 -8
  130. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/spec/manifests/commands/version.yaml +1 -1
  131. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/spec/manifests/commands/view.yaml +143 -133
  132. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/spec/manifests/commands/webhook.yaml +7 -8
  133. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/spec/manifests/commands/workflow.yaml +16 -20
  134. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/spec/manifests/commands/workspace.yaml +22 -25
  135. mammoth_cli-2.0.20/mammoth_cli/bundled_skill/mammoth-cli/SKILL.md +0 -119
  136. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/.gitignore +0 -0
  137. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/LICENSE +0 -0
  138. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/__main__.py +0 -0
  139. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/bundled_skill/mammoth-cli/references/report-checklist.md +0 -0
  140. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/bundled_skill/mammoth-cli/references/retention.md +0 -0
  141. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/commands/__init__.py +0 -0
  142. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/commands/activity.py +0 -0
  143. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/commands/addon.py +0 -0
  144. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/commands/agent.py +0 -0
  145. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/commands/ai.py +0 -0
  146. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/commands/annotation.py +0 -0
  147. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/commands/auth.py +0 -0
  148. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/commands/automation.py +0 -0
  149. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/commands/batch.py +0 -0
  150. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/commands/billing.py +0 -0
  151. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/commands/browse.py +0 -0
  152. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/commands/capability.py +0 -0
  153. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/commands/client_app.py +0 -0
  154. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/commands/completion.py +0 -0
  155. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/commands/config.py +0 -0
  156. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/commands/connector.py +0 -0
  157. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/commands/context.py +0 -0
  158. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/commands/dashboard.py +0 -0
  159. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/commands/data_app.py +0 -0
  160. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/commands/external_key.py +0 -0
  161. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/commands/file.py +0 -0
  162. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/commands/folder.py +0 -0
  163. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/commands/job.py +0 -0
  164. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/commands/notification.py +0 -0
  165. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/commands/parameter.py +0 -0
  166. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/commands/report.py +0 -0
  167. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/commands/schedule.py +0 -0
  168. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/commands/skill.py +0 -0
  169. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/commands/snippet.py +0 -0
  170. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/commands/support.py +0 -0
  171. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/commands/template.py +0 -0
  172. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/commands/trash.py +0 -0
  173. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/commands/upgrade.py +0 -0
  174. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/commands/user.py +0 -0
  175. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/commands/webhook.py +0 -0
  176. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/commands/workflow.py +0 -0
  177. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/commands/workspace.py +0 -0
  178. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/context/__init__.py +0 -0
  179. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/context/credentials.py +0 -0
  180. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/context/endpoint.py +0 -0
  181. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/context/profiles.py +0 -0
  182. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/context/resolver.py +0 -0
  183. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/contracts/__init__.py +0 -0
  184. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/contracts/auth.py +0 -0
  185. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/errors/__init__.py +0 -0
  186. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/manifest/__init__.py +0 -0
  187. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/manifest/loader.py +0 -0
  188. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/messages/__init__.py +0 -0
  189. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/output/__init__.py +0 -0
  190. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/output/normalize.py +0 -0
  191. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/output/policy.py +0 -0
  192. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/output/progress.py +0 -0
  193. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/py.typed +0 -0
  194. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/runtime/__init__.py +0 -0
  195. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/runtime/executor.py +0 -0
  196. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/runtime/input_loader.py +0 -0
  197. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/runtime/options.py +0 -0
  198. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/runtime/runlog.py +0 -0
  199. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/runtime/strict.py +0 -0
  200. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/runtime/validate.py +0 -0
  201. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/services/__init__.py +0 -0
  202. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/services/argspec.py +0 -0
  203. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/services/coerce.py +0 -0
  204. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/services/conditions.py +0 -0
  205. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/services/dispatch.py +0 -0
  206. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/services/factory.py +0 -0
  207. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/services/openapi_types.py +0 -0
  208. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/services/protocol.py +0 -0
  209. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/services/testing.py +0 -0
  210. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/services/type_system.py +0 -0
  211. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/skills/__init__.py +0 -0
  212. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/skills/installer.py +0 -0
  213. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/mammoth_cli/testing.py +0 -0
  214. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/spec/manifests/openapi-operations.yaml +0 -0
  215. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/spec/manifests/schema-v1.json +0 -0
  216. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/spec/manifests/sdk-catalog.source.yaml +0 -0
  217. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/spec/manifests/sdk-methods.yaml +0 -0
  218. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/spec/openapi/metadata.json +0 -0
  219. {mammoth_cli-2.0.20 → mammoth_cli-2.0.22}/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.20
3
+ Version: 2.0.22
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
@@ -81,21 +81,21 @@ command. An agent does this by asking the operator to run the login below in
81
81
  their own terminal; the CLI never reads credentials from environment variables:
82
82
 
83
83
  ```bash
84
- mammoth skill list --output json --no-input
85
- mammoth skill path --output json --no-input
84
+ mammoth skill list
85
+ mammoth skill path
86
86
  # Read the installed SKILL.md before operating.
87
- mammoth auth status --output json --no-input
87
+ mammoth auth status
88
88
  # Compare the reported endpoint with the intended target before doctor.
89
89
  # Use app for production; use release only when explicitly intended.
90
90
  # Human terminal only, if profile or stored credentials are absent:
91
91
  mammoth auth login
92
92
  # Then verify configuration, credentials, endpoint, and connectivity:
93
- mammoth doctor --output json --no-input
93
+ mammoth doctor
94
94
  # Then discover a task-specific route:
95
- mammoth schema find "TASK OR RESOURCE" --output json --no-input
96
- mammoth schema get COMMAND_ID --output json --no-input
95
+ mammoth schema find "TASK OR RESOURCE"
96
+ mammoth schema get COMMAND_ID
97
97
  # Optional API-binding inventory (not the complete CLI surface):
98
- mammoth capability list --output json --no-input
98
+ mammoth capability list
99
99
  ```
100
100
 
101
101
  For an agent or CI, do not request or paste secrets into chat, prompts, shell
@@ -104,7 +104,7 @@ private owner-only (0600) file outside the repository and pass its path to:
104
104
 
105
105
  ```bash
106
106
  mammoth auth login --input /private/path/credentials.json --storage file \
107
- --output json --no-input
107
+
108
108
  ```
109
109
 
110
110
  On Windows, use the approved OS keyring instead; do not use a file fallback
@@ -131,12 +131,13 @@ on automatically off a terminal, so an agent needs no special flags:
131
131
  mammoth project list | jq '.data'
132
132
  ```
133
133
 
134
- To be explicit, pass `--output json --no-input`. Log in without a prompt with
134
+ To pin it for a whole session, `export MAMMOTH_OUTPUT=json MAMMOTH_NO_INPUT=1`
135
+ (a flag still wins). Log in without a prompt with
135
136
  the private, permission-checked file described above:
136
137
 
137
138
  ```bash
138
139
  mammoth auth login --input /private/path/credentials.json --storage file \
139
- --output json --no-input
140
+
140
141
  ```
141
142
 
142
143
  Feed multi-field requests as one document instead of many flags:
@@ -150,9 +151,9 @@ For pipeline transformations, prefer the typed commands and inspect their
150
151
  schemas before composing input. For example:
151
152
 
152
153
  ```bash
153
- mammoth schema get view.transform.filter --output json --no-input
154
- mammoth schema get view.transform.math --output json --no-input
155
- mammoth schema get view.transform.substring --output json --no-input
154
+ mammoth schema get view.transform.filter
155
+ mammoth schema get view.transform.math
156
+ mammoth schema get view.transform.substring
156
157
  ```
157
158
 
158
159
  The generic `view task add`, `view task preview`, and `view task update`
@@ -163,7 +164,7 @@ their target explicitly, for example:
163
164
 
164
165
  ```bash
165
166
  mammoth dashboard import-workbook ./sample.twbx --project 456 \
166
- --yes --confirm 456 --output json --no-input
167
+ --yes --confirm 456
167
168
  ```
168
169
 
169
170
  The sample path and project ID are placeholders for a local workbook and a
@@ -198,6 +199,29 @@ putting credentials into the handoff.
198
199
 
199
200
  ## Give your coding agent the CLI playbook
200
201
 
202
+ The shortest handover is a prompt. Fill `PROJECT NAME` and `TASK` and paste
203
+ it into any agent with a bash tool; it installs the CLI, walks you through the
204
+ one-time login, and works from the shipped skill. The long form is
205
+ [docs/agent-prompt.md](https://github.com/EdgeMetric/mammothsdk/blob/main/mammoth-cli/docs/agent-prompt.md).
206
+
207
+ ```text
208
+ Use Mammoth Analytics only through the `mammoth` CLI in bash; run
209
+ `export MAMMOTH_OUTPUT=json MAMMOTH_NO_INPUT=1` once. Onboard me first:
210
+ 1. If `mammoth --version` fails, install, then re-check (new shell if needed):
211
+ curl -fsSL https://raw.githubusercontent.com/EdgeMetric/mammothsdk/main/mammoth-cli/installers/mammoth-install.sh | bash
212
+ 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
216
+ or secret yourself, and never run auth login.
217
+ 3. Require `mammoth doctor` to pass, then `cat` the SKILL.md at
218
+ `mammoth skill path` (data.canonical) and follow it.
219
+ Work inside `mammoth project ensure 'PROJECT NAME'` unless I name a project;
220
+ take ids only from reads; `schema get COMMAND_ID` before a new command; read
221
+ results back before reporting.
222
+ TASK: <what to achieve, and how you will know it is done>
223
+ ```
224
+
201
225
  The bundled skill describes authentication, discovery, structured input, job
202
226
  handling, and confirmations. Install it for the supported coding-agent tools:
203
227
 
@@ -53,21 +53,21 @@ command. An agent does this by asking the operator to run the login below in
53
53
  their own terminal; the CLI never reads credentials from environment variables:
54
54
 
55
55
  ```bash
56
- mammoth skill list --output json --no-input
57
- mammoth skill path --output json --no-input
56
+ mammoth skill list
57
+ mammoth skill path
58
58
  # Read the installed SKILL.md before operating.
59
- mammoth auth status --output json --no-input
59
+ mammoth auth status
60
60
  # Compare the reported endpoint with the intended target before doctor.
61
61
  # Use app for production; use release only when explicitly intended.
62
62
  # Human terminal only, if profile or stored credentials are absent:
63
63
  mammoth auth login
64
64
  # Then verify configuration, credentials, endpoint, and connectivity:
65
- mammoth doctor --output json --no-input
65
+ mammoth doctor
66
66
  # Then discover a task-specific route:
67
- mammoth schema find "TASK OR RESOURCE" --output json --no-input
68
- mammoth schema get COMMAND_ID --output json --no-input
67
+ mammoth schema find "TASK OR RESOURCE"
68
+ mammoth schema get COMMAND_ID
69
69
  # Optional API-binding inventory (not the complete CLI surface):
70
- mammoth capability list --output json --no-input
70
+ mammoth capability list
71
71
  ```
72
72
 
73
73
  For an agent or CI, do not request or paste secrets into chat, prompts, shell
@@ -76,7 +76,7 @@ private owner-only (0600) file outside the repository and pass its path to:
76
76
 
77
77
  ```bash
78
78
  mammoth auth login --input /private/path/credentials.json --storage file \
79
- --output json --no-input
79
+
80
80
  ```
81
81
 
82
82
  On Windows, use the approved OS keyring instead; do not use a file fallback
@@ -103,12 +103,13 @@ on automatically off a terminal, so an agent needs no special flags:
103
103
  mammoth project list | jq '.data'
104
104
  ```
105
105
 
106
- To be explicit, pass `--output json --no-input`. Log in without a prompt with
106
+ To pin it for a whole session, `export MAMMOTH_OUTPUT=json MAMMOTH_NO_INPUT=1`
107
+ (a flag still wins). Log in without a prompt with
107
108
  the private, permission-checked file described above:
108
109
 
109
110
  ```bash
110
111
  mammoth auth login --input /private/path/credentials.json --storage file \
111
- --output json --no-input
112
+
112
113
  ```
113
114
 
114
115
  Feed multi-field requests as one document instead of many flags:
@@ -122,9 +123,9 @@ For pipeline transformations, prefer the typed commands and inspect their
122
123
  schemas before composing input. For example:
123
124
 
124
125
  ```bash
125
- mammoth schema get view.transform.filter --output json --no-input
126
- mammoth schema get view.transform.math --output json --no-input
127
- mammoth schema get view.transform.substring --output json --no-input
126
+ mammoth schema get view.transform.filter
127
+ mammoth schema get view.transform.math
128
+ mammoth schema get view.transform.substring
128
129
  ```
129
130
 
130
131
  The generic `view task add`, `view task preview`, and `view task update`
@@ -135,7 +136,7 @@ their target explicitly, for example:
135
136
 
136
137
  ```bash
137
138
  mammoth dashboard import-workbook ./sample.twbx --project 456 \
138
- --yes --confirm 456 --output json --no-input
139
+ --yes --confirm 456
139
140
  ```
140
141
 
141
142
  The sample path and project ID are placeholders for a local workbook and a
@@ -170,6 +171,29 @@ putting credentials into the handoff.
170
171
 
171
172
  ## Give your coding agent the CLI playbook
172
173
 
174
+ The shortest handover is a prompt. Fill `PROJECT NAME` and `TASK` and paste
175
+ it into any agent with a bash tool; it installs the CLI, walks you through the
176
+ one-time login, and works from the shipped skill. The long form is
177
+ [docs/agent-prompt.md](https://github.com/EdgeMetric/mammothsdk/blob/main/mammoth-cli/docs/agent-prompt.md).
178
+
179
+ ```text
180
+ Use Mammoth Analytics only through the `mammoth` CLI in bash; run
181
+ `export MAMMOTH_OUTPUT=json MAMMOTH_NO_INPUT=1` once. Onboard me first:
182
+ 1. If `mammoth --version` fails, install, then re-check (new shell if needed):
183
+ curl -fsSL https://raw.githubusercontent.com/EdgeMetric/mammothsdk/main/mammoth-cli/installers/mammoth-install.sh | bash
184
+ 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
188
+ or secret yourself, and never run auth login.
189
+ 3. Require `mammoth doctor` to pass, then `cat` the SKILL.md at
190
+ `mammoth skill path` (data.canonical) and follow it.
191
+ Work inside `mammoth project ensure 'PROJECT NAME'` unless I name a project;
192
+ take ids only from reads; `schema get COMMAND_ID` before a new command; read
193
+ results back before reporting.
194
+ TASK: <what to achieve, and how you will know it is done>
195
+ ```
196
+
173
197
  The bundled skill describes authentication, discovery, structured input, job
174
198
  handling, and confirmations. Install it for the supported coding-agent tools:
175
199
 
@@ -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.20"
9
+ __version__ = "2.0.22"
10
10
 
11
11
  # The versioned machine output envelope contract.
12
12
  SCHEMA_VERSION = 1
@@ -813,9 +813,48 @@ def _command_help(command_id: str, record: dict[str, Any] | None) -> str | None:
813
813
  example = (record or {}).get("agent_example")
814
814
  if example:
815
815
  parts.append(f"Example: {example}")
816
+ fields = _help_input_fields(command_id)
817
+ if fields:
818
+ parts.append(f"Input fields: {fields}")
816
819
  return "\n\n".join(parts) or None
817
820
 
818
821
 
822
+ def _help_input_fields(command_id: str) -> str | None:
823
+ """One line naming the ``--input`` fields, so ``--help`` can replace ``schema get``.
824
+
825
+ Required fields come first and are marked with ``*``; each carries its
826
+ short type, or its enum values. Bounded to keep ``--help`` readable; the
827
+ full contract stays behind ``schema get``.
828
+ """
829
+ from mammoth_cli.services.command_contract import resolve_command_contract
830
+
831
+ try:
832
+ contract = resolve_command_contract(command_id)
833
+ except Exception: # noqa: BLE001 -- help must never fail on a contract quirk
834
+ return None
835
+ if contract is None or not contract.accepted_fields:
836
+ return None
837
+ rendered: list[str] = []
838
+ fields = sorted(contract.accepted_fields, key=lambda item: (not item.required, item.name))
839
+ for field in fields:
840
+ label = f"{field.name}*" if field.required else field.name
841
+ enum = field.enum_values
842
+ kind = "|".join(str(item) for item in enum[:6]) if enum else _short_type(field.type_name)
843
+ rendered.append(f"{label} ({kind})" if kind else label)
844
+ if len(rendered) == 12 and len(fields) > 12:
845
+ rendered.append(f"... {len(fields) - 12} more (schema get {command_id})")
846
+ break
847
+ return ", ".join(rendered)
848
+
849
+
850
+ def _short_type(type_name: str) -> str:
851
+ """``mammoth.condition.Condition | ...`` -> ``condition``; dotted names lose their module."""
852
+ text = str(type_name or "")
853
+ if "condition." in text:
854
+ return "condition"
855
+ return " | ".join(part.strip().rsplit(".", 1)[-1] for part in text.split("|"))[:40]
856
+
857
+
819
858
  def build_app() -> typer.Typer:
820
859
  """Construct the full Typer command tree from the command manifests."""
821
860
  root = typer.Typer(
@@ -0,0 +1,110 @@
1
+ ---
2
+ name: mammoth-cli
3
+ version: 2.0.22
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
+ ---
6
+
7
+ # Mammoth CLI
8
+
9
+ Use this skill for Mammoth shell work, not for Python SDK integration. The
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.
12
+
13
+ ## Start
14
+
15
+ ```bash
16
+ mammoth doctor # auth, endpoint, connectivity, version; must succeed
17
+ mammoth project ensure 'PROJECT NAME' # get-or-create; becomes the active project
18
+ ```
19
+
20
+ `doctor` failing is a precondition failure, not a reason to try the business
21
+ command anyway. Production is the `app` endpoint; use `release` only when the
22
+ task names it, and check `meta.profile`/`auth status` `endpoint` match the
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,
26
+ never read one from a file or environment variable, never run `auth login`
27
+ yourself. If any envelope carries `meta.update_available`, run its `command`
28
+ before the next step.
29
+
30
+ ## Defaults you do not repeat
31
+
32
+ - Piped stdout is compact JSON and prompts are off. Only in a session that
33
+ is not piped, `export MAMMOTH_OUTPUT=json MAMMOTH_NO_INPUT=1` once.
34
+ - `project ensure` saves the active project; `--project` only overrides it.
35
+ `MAMMOTH_PROFILE` / `MAMMOTH_PROJECT` also work as session defaults.
36
+ - The CLI remembers which dataset owns each view from any read (`view list
37
+ DATASET_ID`, `view get VIEW_ID`, an upload). After that, no `dataset_id`
38
+ on transforms, exports or deletes. If a command asks for the parent
39
+ `DATASET_ID`, read the view once and repeat it; an explicit value always
40
+ wins.
41
+ - Commands that start platform work wait up to 300 s for the job; on
42
+ `timeout` use the `job get` recovery command printed, do not resubmit.
43
+
44
+ ## Calling a command
45
+
46
+ - Ids are positionals; request fields are one `--input '{...}'` document;
47
+ there are no per-field flags (`project create NAME`, not `--name`).
48
+ - `COMMAND --help` lists the input fields with types; `mammoth schema get
49
+ COMMAND_ID` is the full contract (add `--input '{"full": true}'` for the
50
+ JSON Schema); `schema list` is the family index, `schema list view` one
51
+ family, `schema find WORDS` a search.
52
+ - Uploads return a **dataset** id; transforms, joins, exports and previews
53
+ take the **view** id from `view list DATASET_ID`.
54
+ - Column inputs and expressions use the exact **display names** the view
55
+ returns, never backend aliases.
56
+ - Destructive commands need `--yes --confirm ID`. Preserve requested
57
+ deliverables; cleanup is exact-ID authorized and
58
+ never means delete-all-owned-resources: delete only ids this run created,
59
+ one per call, and read back that they are gone.
60
+ - A command whose schema lists `secret_fields` takes `--input FILE` (mode
61
+ 0600); secrets never go in argv, notes, checkpoints or replies.
62
+
63
+ ## Verify before you report
64
+
65
+ - A success envelope proves the call, not the outcome. After a row-scoped
66
+ change (set-values, filter, replace, join, fill) run `view data get
67
+ VIEW_ID` (50 rows by default, `limit` to change) and check rows the
68
+ condition should have touched and rows it should not have. Sample the
69
+ target column *before* the change so the after-read has a comparison.
70
+ - A uniform result (every amount 0, every region "Unknown", most join rows
71
+ unmatched) means the previous step went wrong; stop and re-inspect it.
72
+ - A timeout, exit 7 or interruption does not prove failure; reconcile an
73
+ `outcome_unknown` (`job get`, `view task list`) before replaying.
74
+ - Run the [report checklist](references/report-checklist.md) before stating
75
+ a number or calling a step done. When files here disagree,
76
+ [capabilities](references/capabilities.md) wins over a recipe, and a recipe
77
+ over the generated command catalog.
78
+
79
+ ## Route only what the task needs
80
+
81
+ - **Cold start, task plan, or unsupported route:** [task start](references/task-start.md)
82
+ - **Login, profiles, and authorized scope:** [auth](references/auth.md)
83
+ - **Nested input, output envelopes, confirmations, jobs, or recovery:**
84
+ [input](references/input.md), [machine output](references/machine-output.md),
85
+ [safety](references/safety.md), or [jobs and drafts](references/jobs-drafts.md)
86
+ - **Import, resources, transforms, pipelines, dashboards, exports, or cleanup:**
87
+ [recipes](references/recipes/index.md) — the
88
+ [worked example](references/recipes/end-to-end.md) is the whole flow
89
+ - **Which id is which, appending rows, response shapes, and other one-off
90
+ rules:** [operations](references/operations.md)
91
+ - **Something failed or you are unsure whether to continue:**
92
+ [recovery](references/recovery.md) — failure modes by message and the
93
+ stop-condition list
94
+ - **A known command family or exact command:** [command catalog](references/command-index.md)
95
+ — a lookup for the one command you need, not upfront reading; each entry
96
+ carries its release status line, and a `not supported` or `observed
97
+ blocker` entry names the route to use instead
98
+ - **Whether a route is proven, known-blocked, or untried on release:**
99
+ [capabilities](references/capabilities.md) — read it before promising a
100
+ deliverable or reporting a failure as a backend fault
101
+ - **Pause or transfer to another agent:** [handoff](references/handoff.md)
102
+
103
+ ## Handoff checklist
104
+
105
+ Before yielding work, write a nonsecret checkpoint with the intent and
106
+ acceptance criteria; authorized profile/workspace/project; observed resource
107
+ parents; verified evidence hashes; known jobs and unknown outcomes; remaining
108
+ objectives; and exact cleanup ownership. The receiving agent validates that
109
+ record and re-reads remote state before deciding what to do next. The handoff
110
+ is not a resume command or a grant of authority.
@@ -31,8 +31,8 @@ human operator:
31
31
  history. Credentials are per environment: a release key never
32
32
  authenticates on `app`.
33
33
  2. Wait for the operator to confirm, then re-run
34
- `mammoth auth status --profile PROFILE --output json --no-input` and
35
- `mammoth doctor --profile PROFILE --output json --no-input`.
34
+ `mammoth auth status --profile PROFILE` and
35
+ `mammoth doctor --profile PROFILE`.
36
36
  3. Do not ask the operator to paste the key or secret into chat. Do not run
37
37
  `auth login` yourself, with or without `--input`, unless the operator has
38
38
  explicitly given you a protected `0600` credential file path to use.
@@ -50,7 +50,7 @@ authentication and then verify the connection. These checks are mandatory even
50
50
  when a profile may already exist:
51
51
 
52
52
  ```bash
53
- mammoth auth status --profile PROFILE --output json --no-input
53
+ mammoth auth status --profile PROFILE
54
54
  ```
55
55
 
56
56
  If status reports a missing profile or `has_credentials=false`, run the secure
@@ -58,7 +58,7 @@ login flow, then check status again:
58
58
 
59
59
  ```bash
60
60
  mammoth auth login # production; add --profile NAME if not 'default'
61
- mammoth auth status --output json --no-input
61
+ mammoth auth status
62
62
  ```
63
63
 
64
64
  `auth status` is a local profile/credential-presence check; it does not prove
@@ -69,7 +69,7 @@ profile; do not silently reuse, rewrite, or promote it. After the profile is
69
69
  present and its endpoint matches, verify the live connection:
70
70
 
71
71
  ```bash
72
- mammoth doctor --profile PROFILE --output json --no-input
72
+ mammoth doctor --profile PROFILE
73
73
  ```
74
74
 
75
75
  `doctor` also lists the projects the credential can see (`projects` check)
@@ -87,9 +87,9 @@ targets release.
87
87
  ```bash
88
88
  mammoth auth login # hidden prompts; production
89
89
  mammoth auth login --server-prefix release # release environment
90
- mammoth auth login --profile PROFILE --input creds.json --storage file --output json --no-input
91
- mammoth auth status --profile PROFILE --output json --no-input
92
- mammoth auth logout --profile default --output json --no-input --yes
90
+ mammoth auth login --profile PROFILE --input creds.json --storage file
91
+ mammoth auth status --profile PROFILE
92
+ mammoth auth logout --profile default --yes
93
93
  ```
94
94
 
95
95
  `PROFILE` means the actual nonsecret profile name selected by the operator or
@@ -16,13 +16,12 @@ Ran once: `agent.session.list`
16
16
 
17
17
  ## `ai`
18
18
 
19
- Ran once: `ai.condition.generate`, `ai.expression.generate`
19
+ Ran once: `ai.condition.generate`, `ai.expression.generate`, `ai.suggestion.list`
20
20
 
21
21
  | Command | State | Note |
22
22
  |---|---|---|
23
23
  | `ai.retention.condition` | observed blocker | permission: POST /workspaces/4/projects/24/sql_generation/retention_policy -> HTTP 403 4PERM001 PERMISSION_UNDEFINED, error_object {code:76,message:'Permissions have not been set c |
24
- | `ai.sql.generate` | observed blocker | backend_error: Fix held (dataset_id required and sent as query param -- request reached backend and got a domain-specific conflict, not an empty api_error) |
25
- | `ai.suggestion.list` | observed blocker | backend_error: Fix held: release UnifiedPromptSpec (suggestion_type + params, optional dataset_id/dataview_id) shape accepted and dispatched to a real job (id 381), which failed fo |
24
+ | `ai.sql.generate` | observed blocker | backend_error: 4DTVW029 conflict: 'Cannot run AI generation for this rule: the input table from the previous rule is not available' on a fresh dataset with no prior rule |
26
25
 
27
26
  ## `annotation`
28
27
 
@@ -39,11 +38,7 @@ Ran once: `automation.create`, `automation.delete`, `automation.list`
39
38
 
40
39
  ## `batch`
41
40
 
42
- Ran once: `batch.bulk-delete`, `batch.delete`, `batch.get`, `batch.list`, `batch.update`
43
-
44
- | Command | State | Note |
45
- |---|---|---|
46
- | `batch.create` | observed blocker | backend_error: SUSPECTED DEFECT (4th occurrence of this pattern in the sweep): retried with source_id=87 as an actual dataset id, got HTTP 500 empty body / outcome_unknown |
41
+ Ran once: `batch.bulk-delete`, `batch.create`, `batch.delete`, `batch.get`, `batch.list`, `batch.update`
47
42
 
48
43
  ## `billing`
49
44
 
@@ -65,8 +60,8 @@ Ran once: `browse.workspace`
65
60
  | Command | State | Note |
66
61
  |---|---|---|
67
62
  | `browse.folder` | observed blocker | cli_error: rejects folder id 0 although folder.root reports id 0 as the root |
68
- | `browse.project` | observed blocker | backend_error: SUSPECTED DEFECT: GET /workspaces/4/projects/41/browse also 500s empty body, same pattern as browse.root, on our own fresh empty-of-folders project |
69
- | `browse.root` | observed blocker | backend_error: SUSPECTED DEFECT: GET /browse returns HTTP 500 empty body, reproduced twice |
63
+ | `browse.project` | observed blocker | backend_error: GET /workspaces/4/projects/47/browse HTTP 500 empty body |
64
+ | `browse.root` | observed blocker | backend_error: GET /browse still HTTP 500 empty body on release (same as 2026-09-18/19 sweeps) |
70
65
 
71
66
  ## `client-app`
72
67
 
@@ -111,7 +106,7 @@ Ran once: `report.list`
111
106
  |---|---|---|
112
107
  | `schedule.create` | observed blocker | backend_error: SUSPECTED CLI/BACKEND DEFECT: second create attempt (with work_items bound to dataset 85) returned HTTP 500 with empty response body, surfaced by CLI as code=outcome |
113
108
  | `schedule.get` | observed blocker | blocked_missing_fixture: Not run: id source schedule.list failed with backend_error (5GENR011 NOT_IMPLEMENTED, HTTP 400), so no schedule_id was observed to use |
114
- | `schedule.list` | observed blocker | backend_error: Re-confirms 5GENR011 NOT_IMPLEMENTED from family 3 |
109
+ | `schedule.list` | observed blocker | backend_error: 5GENR011 NOT_IMPLEMENTED on GET /workspaces/4/projects/47/schedules; schedules remain unimplemented on release |
115
110
 
116
111
  ## `snippet`
117
112
 
@@ -145,4 +140,4 @@ Ran once: `workflow.create`, `workflow.delete`, `workflow.get`, `workflow.graph`
145
140
 
146
141
  Ran once: `workspace.app-usage`, `workspace.get`, `workspace.list`, `workspace.segment.list`, `workspace.segment.update`, `workspace.storage-breakdown`, `workspace.user.list`
147
142
 
148
- Evidence collected on CLI releases 1.1.5 through 2.0.18; each row's release is recorded in `docs/release-capability-matrix.json` (`evidence_version`). A row that ran on an older release has not been re-run since unless its note says so. Details: `docs/capability-evidence/` in the repository.
143
+ Evidence collected on CLI releases 1.1.5 through 2.0.21; each row's release is recorded in `docs/release-capability-matrix.json` (`evidence_version`). A row that ran on an older release has not been re-run since unless its note says so. Details: `docs/capability-evidence/` in the repository.
@@ -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 552 commands. 455 of them bind one of the 528 API operations in the matrix; the remainder are local commands (`schema`, `auth`, `doctor`, `log`, ...) or typed variants that share an operation (every `view transform *` command submits through `view.task.add`). 258 bound commands ran once successfully on release, 2 are not supported there, and the rest are untried. Untried is not broken: discover the contract with `mammoth schema get COMMAND_ID --output json --no-input`, run it, and treat the structured error envelope as the answer.
4
+ The CLI publishes 552 commands. 455 of them bind one of the 528 API operations in the matrix; the remainder are local commands (`schema`, `auth`, `doctor`, `log`, ...) or typed variants that share an operation (every `view transform *` command submits through `view.task.add`). 260 bound commands ran once successfully on release, 2 are not supported there, and the rest are untried. Untried is not broken: discover the contract with `mammoth schema get COMMAND_ID`, run it, and treat the structured error envelope as the answer.
5
5
 
6
6
  Status meanings:
7
7
 
@@ -34,10 +34,10 @@ The typed `view transform *` commands all submit through `view.task.add`; its ma
34
34
  | `user` | 7 | 3 | 0 | 4 |
35
35
  | `webhook` | 7 | 5 | 0 | 2 |
36
36
  | `addon` | 6 | 0 | 0 | 6 |
37
- | `batch` | 6 | 5 | 0 | 1 |
37
+ | `batch` | 6 | 6 | 0 | 0 |
38
38
  | `file` | 6 | 5 | 0 | 1 |
39
39
  | `agent` | 5 | 1 | 0 | 4 |
40
- | `ai` | 5 | 2 | 0 | 3 |
40
+ | `ai` | 5 | 3 | 0 | 2 |
41
41
  | `annotation` | 5 | 1 | 0 | 4 |
42
42
  | `client-app` | 5 | 0 | 0 | 5 |
43
43
  | `notification` | 5 | 1 | 0 | 4 |
@@ -68,7 +68,7 @@ Ran once: `dashboard.action`, `dashboard.analytics`, `dashboard.archive`, `dashb
68
68
  | `dashboard.published.pdf.export` | observed blocker | backend_error: Got backend_code 4PERM002 PERMISSION_ERROR, "User lacks permission to perform given action" on POST /dashboards/url/IuZl5tk5KcEHJWTy4tnhrA/pdf (403), envelope: {"err |
69
69
  | `dashboard.published.video.export` | observed blocker | backend_error: backend_code 4PERM002 PERMISSION_ERROR, "User lacks permission to perform given action" on POST /dashboards/url/IuZl5tk5KcEHJWTy4tnhrA/video (403) |
70
70
  | `dashboard.source.list` | observed blocker | blocker; still broken, not one of the 11 CLI-fixed commands |
71
- | `dashboard.template.create` | observed blocker | backend: POST /dashboards/v3/templates -> HTTP 500, empty response_body, request_id:null, code:outcome_unknown |
71
+ | `dashboard.template.create` | observed blocker | backend_error: POST /dashboards/v3/templates HTTP 500 empty body / outcome_unknown, as on 2026-09-18 |
72
72
  | `dashboard.template.delete` | observed blocker | blocked_missing_fixture: dashboard.template.create never produced an owned template (HTTP 500 both attempts, reconciled as not-committed via template list) |
73
73
  | `dashboard.templates.use` | observed blocker | skipped_out_of_scope: BRIEF instructs running templates.use "on that template" (i.e |
74
74
  | `dashboard.video.export` | observed blocker | backend_error: After publishing dashboard 56 (dashboard.share public + dashboard.action publish-presentation), the previously-documented "publish the dashboard before exporting a v |
@@ -115,9 +115,9 @@ Ran once: `view.active-user.list`, `view.active-user.mark`, `view.ai.generate-da
115
115
  | Command | State | Note |
116
116
  |---|---|---|
117
117
  | `view.ai.generation-info` | observed blocker | backend: GET /workspaces/4/projects/24/datasets/54/dataviews/76/data/generate -> HTTP 400 5GENR011 NOT_IMPLEMENTED 'Not implemented', request_id:null |
118
- | `view.data-check.update` | observed blocker | backend_error: SUSPECTED DEFECT: PATCH returned HTTP 500 empty body / CLI code=outcome_unknown, but a follow-up get confirmed the mutation actually applied (enabled:false, updated_ |
118
+ | `view.data-check.update` | observed blocker | backend_error: PATCH with the schema's documented {op: command, path: enable/disable, value: null} shape returns HTTP 500 empty body (CLI outcome_unknown, exit 7) while the mutatio |
119
119
  | `view.derivative.data` | observed blocker | backend_error: SUSPECTED DEFECT: using the CLI's own documented agent_example body verbatim, derivative data fetch returns HTTP 500 empty body / outcome_unknown, reproduced twice ( |
120
120
  | `view.export.create` | observed blocker | backend: CLI accepts the request (exit 0, job 358 accepted on POST /dataviews/76/actions), but job get 358 -> status:error, response:{"error":{"message":"'destination'"}} (a raw Py |
121
121
  | `view.export.publish-db-update` | CLI defect fixed, untried since | 2.0.16 (example value is the documented {"odbc_type": "postgres"} object (a bare string is rejected)) |
122
122
 
123
- Evidence collected on CLI releases 1.1.5 through 2.0.18; each row's release is recorded in `docs/release-capability-matrix.json` (`evidence_version`). A row that ran on an older release has not been re-run since unless its note says so. Details: `docs/capability-evidence/` in the repository.
123
+ Evidence collected on CLI releases 1.1.5 through 2.0.21; each row's release is recorded in `docs/release-capability-matrix.json` (`evidence_version`). A row that ran on an older release has not been re-run since unless its note says so. Details: `docs/capability-evidence/` in the repository.
@@ -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 552; 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 --output json --no-input`; `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 552; 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
 
@@ -4,9 +4,9 @@ Every command returns the standard JSON envelope. On nonzero exit, read the erro
4
4
 
5
5
  ### `activity.export`
6
6
 
7
- Run: `mammoth activity export`. Exact input fields: `mammoth schema get activity.export --output json --no-input`.
7
+ Run: `mammoth activity export`. Exact input fields: `mammoth schema get activity.export`.
8
8
 
9
- Example: `mammoth activity export --output json --no-input`. Discovery only: this command is fail-closed and must not dispatch a request.
9
+ Example: `mammoth activity export`. Discovery only: this command is fail-closed and must not dispatch a request.
10
10
 
11
11
  Execution is unavailable for the current contract and returns `unsupported_contract`. Do not infer request fields or retry it; use only a separately typed alternative.
12
12
 
@@ -14,9 +14,9 @@ Known restriction: BLOCKED[B19 ACTIVITY_EXPORT_UNTYPED_ASYNC]: format/filters/do
14
14
 
15
15
  ### `activity.list`
16
16
 
17
- Run: `mammoth activity list`. Exact input fields: `mammoth schema get activity.list --output json --no-input`.
17
+ Run: `mammoth activity list`. Exact input fields: `mammoth schema get activity.list`.
18
18
 
19
- Example: `mammoth activity list --output json --no-input`. Discovery only: this command is fail-closed and must not dispatch a request.
19
+ Example: `mammoth activity list`. Discovery only: this command is fail-closed and must not dispatch a request.
20
20
 
21
21
  Execution is unavailable for the current contract and returns `unsupported_contract`. Do not infer request fields or retry it; use only a separately typed alternative.
22
22