mammoth-cli 2.0.7__tar.gz → 2.0.9__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 (208) hide show
  1. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/PKG-INFO +1 -1
  2. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/__init__.py +1 -1
  3. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/bundled_skill/mammoth-cli/SKILL.md +4 -1
  4. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/bundled_skill/mammoth-cli/references/auth.md +13 -8
  5. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/bundled_skill/mammoth-cli/references/task-start.md +2 -2
  6. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/commands/auth.py +4 -2
  7. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/commands/view.py +32 -0
  8. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/commands/view_ops.py +6 -8
  9. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/context/profiles.py +27 -1
  10. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/services/positionals.py +38 -2
  11. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/pyproject.toml +1 -1
  12. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/spec/manifests/commands/view.yaml +78 -39
  13. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/.gitignore +0 -0
  14. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/LICENSE +0 -0
  15. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/README.md +0 -0
  16. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/__main__.py +0 -0
  17. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/app.py +0 -0
  18. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/bundled_skill/mammoth-cli/references/command-index.md +0 -0
  19. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/activity.md +0 -0
  20. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/addon.md +0 -0
  21. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/agent.md +0 -0
  22. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/ai.md +0 -0
  23. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/annotation.md +0 -0
  24. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/auth.md +0 -0
  25. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/automation.md +0 -0
  26. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/batch.md +0 -0
  27. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/billing.md +0 -0
  28. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/browse.md +0 -0
  29. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/capability.md +0 -0
  30. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/client-app.md +0 -0
  31. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/completion.md +0 -0
  32. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/config.md +0 -0
  33. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/connector.md +0 -0
  34. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/context.md +0 -0
  35. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dashboard.md +0 -0
  36. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/data-app.md +0 -0
  37. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dataset.md +0 -0
  38. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/doctor.md +0 -0
  39. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/external-key.md +0 -0
  40. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/file.md +0 -0
  41. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/folder.md +0 -0
  42. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/job.md +0 -0
  43. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/notification.md +0 -0
  44. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/parameter.md +0 -0
  45. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/project.md +0 -0
  46. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/report.md +0 -0
  47. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/schedule.md +0 -0
  48. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/schema.md +0 -0
  49. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/skill.md +0 -0
  50. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/snippet.md +0 -0
  51. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/support.md +0 -0
  52. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/template.md +0 -0
  53. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/trash.md +0 -0
  54. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/upgrade.md +0 -0
  55. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/user.md +0 -0
  56. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/version.md +0 -0
  57. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/view.md +0 -0
  58. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/webhook.md +0 -0
  59. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/workflow.md +0 -0
  60. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/workspace.md +0 -0
  61. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/bundled_skill/mammoth-cli/references/handoff.md +0 -0
  62. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/bundled_skill/mammoth-cli/references/input.md +0 -0
  63. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/bundled_skill/mammoth-cli/references/jobs-drafts.md +0 -0
  64. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/bundled_skill/mammoth-cli/references/machine-output.md +0 -0
  65. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/bundled_skill/mammoth-cli/references/operations.md +0 -0
  66. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/auth-scope.md +0 -0
  67. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/cleanup.md +0 -0
  68. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/dashboards.md +0 -0
  69. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/exports.md +0 -0
  70. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/index.md +0 -0
  71. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/resources.md +0 -0
  72. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/transforms.md +0 -0
  73. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/typed-etl-discovery.md +0 -0
  74. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/bundled_skill/mammoth-cli/references/recovery.md +0 -0
  75. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/bundled_skill/mammoth-cli/references/retention.md +0 -0
  76. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/bundled_skill/mammoth-cli/references/safety.md +0 -0
  77. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/commands/__init__.py +0 -0
  78. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/commands/activity.py +0 -0
  79. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/commands/addon.py +0 -0
  80. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/commands/agent.py +0 -0
  81. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/commands/ai.py +0 -0
  82. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/commands/annotation.py +0 -0
  83. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/commands/automation.py +0 -0
  84. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/commands/batch.py +0 -0
  85. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/commands/billing.py +0 -0
  86. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/commands/browse.py +0 -0
  87. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/commands/capability.py +0 -0
  88. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/commands/client_app.py +0 -0
  89. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/commands/completion.py +0 -0
  90. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/commands/config.py +0 -0
  91. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/commands/connector.py +0 -0
  92. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/commands/context.py +0 -0
  93. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/commands/dashboard.py +0 -0
  94. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/commands/data_app.py +0 -0
  95. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/commands/dataset.py +0 -0
  96. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/commands/doctor.py +0 -0
  97. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/commands/external_key.py +0 -0
  98. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/commands/file.py +0 -0
  99. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/commands/folder.py +0 -0
  100. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/commands/job.py +0 -0
  101. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/commands/notification.py +0 -0
  102. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/commands/parameter.py +0 -0
  103. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/commands/project.py +0 -0
  104. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/commands/registry.py +0 -0
  105. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/commands/report.py +0 -0
  106. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/commands/schedule.py +0 -0
  107. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/commands/schema.py +0 -0
  108. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/commands/skill.py +0 -0
  109. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/commands/snippet.py +0 -0
  110. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/commands/support.py +0 -0
  111. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/commands/template.py +0 -0
  112. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/commands/trash.py +0 -0
  113. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/commands/upgrade.py +0 -0
  114. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/commands/user.py +0 -0
  115. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/commands/webhook.py +0 -0
  116. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/commands/workflow.py +0 -0
  117. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/commands/workspace.py +0 -0
  118. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/context/__init__.py +0 -0
  119. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/context/credentials.py +0 -0
  120. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/context/endpoint.py +0 -0
  121. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/context/resolver.py +0 -0
  122. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/contracts/__init__.py +0 -0
  123. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/contracts/auth.py +0 -0
  124. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/errors/__init__.py +0 -0
  125. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/errors/envelope.py +0 -0
  126. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/manifest/__init__.py +0 -0
  127. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/manifest/loader.py +0 -0
  128. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/messages/__init__.py +0 -0
  129. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/output/__init__.py +0 -0
  130. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/output/envelope.py +0 -0
  131. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/output/normalize.py +0 -0
  132. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/output/policy.py +0 -0
  133. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/output/progress.py +0 -0
  134. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/output/render.py +0 -0
  135. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/py.typed +0 -0
  136. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/runtime/__init__.py +0 -0
  137. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/runtime/confirm.py +0 -0
  138. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/runtime/executor.py +0 -0
  139. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/runtime/input_loader.py +0 -0
  140. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/runtime/invocation.py +0 -0
  141. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/runtime/options.py +0 -0
  142. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/runtime/session.py +0 -0
  143. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/runtime/strict.py +0 -0
  144. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/runtime/validate.py +0 -0
  145. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/services/__init__.py +0 -0
  146. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/services/argspec.py +0 -0
  147. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/services/coerce.py +0 -0
  148. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/services/command_contract.py +0 -0
  149. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/services/conditions.py +0 -0
  150. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/services/dispatch.py +0 -0
  151. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/services/factory.py +0 -0
  152. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/services/input_fields.py +0 -0
  153. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/services/mapping.py +0 -0
  154. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/services/openapi_types.py +0 -0
  155. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/services/protocol.py +0 -0
  156. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/services/sdk_service.py +0 -0
  157. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/services/testing.py +0 -0
  158. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/services/type_system.py +0 -0
  159. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/skills/__init__.py +0 -0
  160. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/skills/installer.py +0 -0
  161. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/mammoth_cli/testing.py +0 -0
  162. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/spec/manifests/commands/activity.yaml +0 -0
  163. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/spec/manifests/commands/addon.yaml +0 -0
  164. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/spec/manifests/commands/agent.yaml +0 -0
  165. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/spec/manifests/commands/ai.yaml +0 -0
  166. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/spec/manifests/commands/annotation.yaml +0 -0
  167. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/spec/manifests/commands/auth.yaml +0 -0
  168. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/spec/manifests/commands/automation.yaml +0 -0
  169. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/spec/manifests/commands/batch.yaml +0 -0
  170. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/spec/manifests/commands/billing.yaml +0 -0
  171. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/spec/manifests/commands/browse.yaml +0 -0
  172. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/spec/manifests/commands/capability.yaml +0 -0
  173. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/spec/manifests/commands/client-app.yaml +0 -0
  174. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/spec/manifests/commands/completion.yaml +0 -0
  175. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/spec/manifests/commands/config.yaml +0 -0
  176. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/spec/manifests/commands/connector.yaml +0 -0
  177. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/spec/manifests/commands/context.yaml +0 -0
  178. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/spec/manifests/commands/dashboard.yaml +0 -0
  179. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/spec/manifests/commands/data-app.yaml +0 -0
  180. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/spec/manifests/commands/dataset.yaml +0 -0
  181. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/spec/manifests/commands/doctor.yaml +0 -0
  182. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/spec/manifests/commands/external-key.yaml +0 -0
  183. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/spec/manifests/commands/file.yaml +0 -0
  184. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/spec/manifests/commands/folder.yaml +0 -0
  185. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/spec/manifests/commands/job.yaml +0 -0
  186. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/spec/manifests/commands/notification.yaml +0 -0
  187. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/spec/manifests/commands/parameter.yaml +0 -0
  188. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/spec/manifests/commands/project.yaml +0 -0
  189. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/spec/manifests/commands/report.yaml +0 -0
  190. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/spec/manifests/commands/schedule.yaml +0 -0
  191. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/spec/manifests/commands/schema.yaml +0 -0
  192. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/spec/manifests/commands/skill.yaml +0 -0
  193. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/spec/manifests/commands/snippet.yaml +0 -0
  194. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/spec/manifests/commands/support.yaml +0 -0
  195. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/spec/manifests/commands/template.yaml +0 -0
  196. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/spec/manifests/commands/trash.yaml +0 -0
  197. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/spec/manifests/commands/upgrade.yaml +0 -0
  198. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/spec/manifests/commands/user.yaml +0 -0
  199. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/spec/manifests/commands/version.yaml +0 -0
  200. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/spec/manifests/commands/webhook.yaml +0 -0
  201. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/spec/manifests/commands/workflow.yaml +0 -0
  202. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/spec/manifests/commands/workspace.yaml +0 -0
  203. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/spec/manifests/openapi-operations.yaml +0 -0
  204. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/spec/manifests/schema-v1.json +0 -0
  205. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/spec/manifests/sdk-catalog.source.yaml +0 -0
  206. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/spec/manifests/sdk-methods.yaml +0 -0
  207. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/spec/openapi/metadata.json +0 -0
  208. {mammoth_cli-2.0.7 → mammoth_cli-2.0.9}/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.7
3
+ Version: 2.0.9
4
4
  Summary: Command-line interface for the Mammoth Analytics platform
5
5
  Project-URL: homepage, https://mammoth.io
6
6
  Project-URL: repository, https://github.com/EdgeMetric/mammothsdk
@@ -6,7 +6,7 @@ not implement a second HTTP client and does not call private SDK members.
6
6
 
7
7
  from __future__ import annotations
8
8
 
9
- __version__ = "2.0.7"
9
+ __version__ = "2.0.9"
10
10
 
11
11
  # The versioned machine output envelope contract.
12
12
  SCHEMA_VERSION = 1
@@ -39,7 +39,10 @@ the result.
39
39
  ## Working rules
40
40
 
41
41
  - Resolve workspace/project/dataset/view parents from reads; pass observed IDs
42
- and `--project`. A dataset does not select a default view.
42
+ and `--project`. A dataset does not select a default view. Every `view`
43
+ command that changes, exports, or deletes data requires the exact parent
44
+ `DATASET_ID` (trailing positional or `dataset_id` input field); only reads
45
+ may omit it and discover the parent. Get it from `mammoth view get VIEW_ID`.
43
46
  - Use exact view-schema **display names** in expressions and column inputs,
44
47
  never backend aliases.
45
48
  - Inspect the result after a mutation. A timeout, exit 7, or interruption does
@@ -17,15 +17,19 @@ 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, with
21
- the profile name and the intended server prefix:
20
+ 1. Tell the operator the exact command to run in **their own** terminal. For
21
+ production it is just:
22
22
 
23
23
  ```bash
24
- mammoth auth login --profile PROFILE --server-prefix app
24
+ mammoth auth login
25
25
  ```
26
26
 
27
- The command prompts for the key and secret with hidden input, then the
28
- workspace id, so no secret enters chat, argv, or history.
27
+ Add `--server-prefix release` only when the task names the release
28
+ environment, and `--profile NAME` only when the operator wants a profile
29
+ other than `default`. The command prompts for the key and secret with
30
+ hidden input, then the workspace id, so no secret enters chat, argv, or
31
+ history. Credentials are per environment: a release key never
32
+ authenticates on `app`.
29
33
  2. Wait for the operator to confirm, then re-run
30
34
  `mammoth auth status --profile PROFILE --output json --no-input` and
31
35
  `mammoth doctor --profile PROFILE --output json --no-input`.
@@ -53,8 +57,8 @@ If status reports a missing profile or `has_credentials=false`, run the secure
53
57
  login flow, then check status again:
54
58
 
55
59
  ```bash
56
- mammoth auth login --profile PROFILE --server-prefix app
57
- mammoth auth status --profile PROFILE --output json --no-input
60
+ mammoth auth login # production; add --profile NAME if not 'default'
61
+ mammoth auth status --output json --no-input
58
62
  ```
59
63
 
60
64
  `auth status` is a local profile/credential-presence check; it does not prove
@@ -76,7 +80,8 @@ targets release.
76
80
 
77
81
  ## Commands
78
82
  ```bash
79
- mammoth auth login --profile PROFILE --server-prefix app # hidden prompts
83
+ mammoth auth login # hidden prompts; production
84
+ mammoth auth login --server-prefix release # release environment
80
85
  mammoth auth login --profile PROFILE --input creds.json --storage file --output json --no-input
81
86
  mammoth auth status --profile PROFILE --output json --no-input
82
87
  mammoth auth logout --profile default --output json --no-input --yes
@@ -33,8 +33,8 @@ or secrets in an argument, prompt, transcript, or checkpoint.
33
33
  Compare the status response's `endpoint` with the intended environment. If
34
34
  the profile or credentials are missing, or the endpoint is for another
35
35
  environment, stop and follow [authentication](auth.md): tell the operator
36
- the exact `mammoth auth login --profile PROFILE --server-prefix app`
37
- command to run in their own terminal, wait for them, then re-check status.
36
+ to run `mammoth auth login` (production; `--server-prefix release` for
37
+ release) in their own terminal, wait for them, then re-check status.
38
38
  The CLI does not read credentials from environment variables; do not look
39
39
  for them there. Never silently reuse or rewrite a mismatched profile,
40
40
  invent a profile, ask for credentials in chat, or put secrets in argv.
@@ -243,7 +243,10 @@ def _run_login(
243
243
  server_prefix=effective_prefix,
244
244
  project_id=existing.project_id if existing is not None else None,
245
245
  )
246
- profiles.save_profile(record)
246
+ # Persist the record and the selection pointer in one write, before the
247
+ # secret goes to its store: a stored secret with no readable record is the
248
+ # "credentials present / no profile" state that strands a later doctor run.
249
+ profiles.save_profile(record, select=True)
247
250
  storage_used = credentials.store_credentials(
248
251
  profile_name,
249
252
  api_key,
@@ -251,7 +254,6 @@ def _run_login(
251
254
  storage=cast(credentials.StorageMode, storage),
252
255
  interactive=not blockers,
253
256
  )
254
- profiles.set_selected(profile_name)
255
257
 
256
258
  data = {
257
259
  "profile": profile_name,
@@ -164,9 +164,41 @@ def _resolve_dataset_id(
164
164
  field = document.get(_DATASET_ID_FIELD)
165
165
  if field is not None:
166
166
  return int(field)
167
+ _require_discovery_allowed(invocation, view_id)
167
168
  return int(service.call(_FIND_DATASET_SYMBOL, dataview_id=view_id))
168
169
 
169
170
 
171
+ def _require_discovery_allowed(invocation: Invocation, view_id: int) -> None:
172
+ """Refuse project-wide parent discovery before anything but a read.
173
+
174
+ Omitting the parent sends the resolver on a browse-and-probe walk over
175
+ every dataset in the project. For a read that is a convenience; before a
176
+ mutation, an export, or a delete it means the target is chosen by a
177
+ probe whose first denied dataset can end the search on the wrong parent.
178
+ Those commands therefore require the exact parent, and fail closed here
179
+ with the read that supplies it.
180
+ """
181
+ record = command_by_id(invocation.command_id) or {}
182
+ if record.get("mutation_class", "read") == "read":
183
+ return
184
+ project = f" --project {invocation.project}" if invocation.project else ""
185
+ lookup = f"mammoth view get {view_id}{project} --output json --no-input"
186
+ raise CliError(
187
+ code=CODE_MISSING_ARGUMENT,
188
+ message=(
189
+ "This command changes or exports data, so it requires the exact parent "
190
+ "DATASET_ID; project-wide parent discovery is only performed for reads."
191
+ ),
192
+ exit_status=EXIT_USAGE,
193
+ hint=(
194
+ "Read the parent first, then pass it as the trailing DATASET_ID positional "
195
+ "or the 'dataset_id' input field: " + lookup
196
+ ),
197
+ details={"view_id": view_id, "mutation_class": record.get("mutation_class")},
198
+ recovery_commands=[lookup],
199
+ )
200
+
201
+
170
202
  def _meta(invocation: Invocation, workspace_id: int, project_id: int | None) -> dict[str, Any]:
171
203
  """Build the common envelope metadata for a view command."""
172
204
  return {
@@ -301,18 +301,16 @@ def view_get(invocation: Invocation) -> HandlerResult:
301
301
  def view_delete(invocation: Invocation) -> HandlerResult:
302
302
  """Permanently delete one view by id. Prompt or ``--yes`` required.
303
303
 
304
- ``dataset_id`` may be supplied as the trailing positional, in structured
305
- input, or by a typed resource reference. When present it is forwarded to
306
- the SDK so deletion uses exactly that parent endpoint and never performs a
307
- workspace-wide parent probe.
304
+ ``dataset_id`` is required: the trailing positional, the structured input
305
+ field, or a typed resource reference must name the exact parent. It is
306
+ forwarded to the SDK so deletion uses exactly that parent endpoint and
307
+ never performs a project-wide parent probe before a destructive call.
308
308
  """
309
309
  view_id = _view_id(invocation)
310
310
  enforce_confirmation(invocation, policy=POLICY_PROMPT_OR_YES, action=f"delete view {view_id}")
311
311
  document = invocation.load_input() or {}
312
- dataset_id = _resolve_exact_dataset_id(invocation, view_id, document)
313
- context: dict[str, Any] = {"view_id": view_id}
314
- if dataset_id is not None:
315
- context["dataset_id"] = dataset_id
312
+ dataset_id = _resolve_exact_dataset_id(invocation, view_id, document, required=True)
313
+ context: dict[str, Any] = {"view_id": view_id, "dataset_id": dataset_id}
316
314
  kwargs = bind_command_inputs(invocation.command_id, document, **context)
317
315
  with open_service(invocation) as (service, auth):
318
316
  data = service.call(_symbol(invocation), **kwargs)
@@ -237,15 +237,22 @@ def get_profile(name: str) -> ProfileRecord | None:
237
237
  return _parse_profile(name, table[name])
238
238
 
239
239
 
240
- def save_profile(record: ProfileRecord) -> None:
240
+ def save_profile(record: ProfileRecord, *, select: bool = False) -> None:
241
241
  """Create or replace one profile's non-secret record.
242
242
 
243
243
  Args:
244
244
  record: The complete profile record to store. Replaces any existing
245
245
  record with the same name.
246
+ select: Also make this profile the selected one, in the same write.
247
+ Login uses this so the record and the selection pointer can never
248
+ be persisted separately: a pointer to a profile whose record is
249
+ missing is exactly the state ``doctor`` reports as
250
+ ``no profile``.
246
251
 
247
252
  Raises:
248
253
  CliError: ``invalid_profile_name`` for a malformed name.
254
+ CliError: ``profile_write_failed`` if the record cannot be read back
255
+ from the file just written.
249
256
  """
250
257
  validate_profile_name(record.name)
251
258
  document = _load_document()
@@ -260,7 +267,18 @@ def save_profile(record: ProfileRecord) -> None:
260
267
  if record.project_id is not None:
261
268
  entry["project_id"] = record.project_id
262
269
  table[record.name] = entry
270
+ if select:
271
+ document["selected"] = record.name
263
272
  _write_document(document)
273
+ stored = get_profile(record.name)
274
+ if stored is None or stored.workspace_id != record.workspace_id:
275
+ raise CliError(
276
+ code="profile_write_failed",
277
+ message=f"Profile '{record.name}' was not persisted to {profiles_path()}.",
278
+ exit_status=EXIT_USAGE,
279
+ hint="Check that no other process rewrites the configuration directory, then retry.",
280
+ details={"path": str(profiles_path())},
281
+ )
264
282
 
265
283
 
266
284
  def delete_profile(name: str) -> bool:
@@ -313,6 +331,14 @@ def set_selected(name: str) -> None:
313
331
  """
314
332
  validate_profile_name(name)
315
333
  document = _load_document()
334
+ table = document.get("profiles")
335
+ if table is None or name not in table:
336
+ raise CliError(
337
+ code="profile_not_found",
338
+ message=f"Profile '{name}' has no stored record, so it cannot be selected.",
339
+ exit_status=EXIT_USAGE,
340
+ hint=f"Run 'mammoth auth login --profile {name}' to create it first.",
341
+ )
316
342
  document["selected"] = name
317
343
  _write_document(document)
318
344
 
@@ -852,10 +852,46 @@ def positionals_for(command_id: str, sdk_symbol: str | None) -> tuple[Positional
852
852
  signature derivation, else an empty tuple).
853
853
  """
854
854
  if command_id in POSITIONAL_OVERRIDES:
855
- return POSITIONAL_OVERRIDES[command_id]
855
+ return _with_exact_parent_help(command_id, POSITIONAL_OVERRIDES[command_id])
856
856
  if not sdk_symbol:
857
857
  return ()
858
- return derive_positionals(command_id, sdk_symbol)
858
+ return _with_exact_parent_help(command_id, derive_positionals(command_id, sdk_symbol))
859
+
860
+
861
+ EXACT_PARENT_HELP = (
862
+ "Exact parent dataset ID. Required for this command: pass it here or as the "
863
+ "'dataset_id' input field; only read commands may omit it and discover the parent."
864
+ )
865
+
866
+
867
+ def _with_exact_parent_help(
868
+ command_id: str, specs: tuple[PositionalSpec, ...]
869
+ ) -> tuple[PositionalSpec, ...]:
870
+ """Tell the truth about an optional ``dataset_id`` on a non-read command.
871
+
872
+ The parse shape stays optional (the field may also arrive via ``--input``),
873
+ but the handler refuses project-wide parent discovery before a mutation,
874
+ export, or delete, so the help must say the parent is required there.
875
+ """
876
+ record = command_by_id(command_id)
877
+ if record is None or record.get("mutation_class", "read") == "read":
878
+ return specs
879
+ return tuple(
880
+ (
881
+ PositionalSpec(
882
+ name=spec.name,
883
+ type=spec.type,
884
+ required=spec.required,
885
+ help=EXACT_PARENT_HELP,
886
+ falls_back_to_field=spec.falls_back_to_field,
887
+ fills_sdk_param=spec.fills_sdk_param,
888
+ example_value=spec.example_value,
889
+ )
890
+ if spec.name == "dataset_id" and not spec.required and spec.falls_back_to_field
891
+ else spec
892
+ )
893
+ for spec in specs
894
+ )
859
895
 
860
896
 
861
897
  def _symbol_for(command_id: str) -> str | None:
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "mammoth-cli"
3
- version = "2.0.7"
3
+ version = "2.0.9"
4
4
  description = "Command-line interface for the Mammoth Analytics platform"
5
5
  authors = [{name = "Mammoth Analytics", email = "support@mammoth.io"}]
6
6
  readme = "README.md"