mammoth-cli 2.0.9__tar.gz → 2.0.11__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.9 → mammoth_cli-2.0.11}/PKG-INFO +1 -1
  2. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/__init__.py +1 -1
  3. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/bundled_skill/mammoth-cli/references/auth.md +5 -0
  4. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/commands/auth.py +57 -2
  5. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/commands/doctor.py +58 -1
  6. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/pyproject.toml +1 -1
  7. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/.gitignore +0 -0
  8. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/LICENSE +0 -0
  9. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/README.md +0 -0
  10. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/__main__.py +0 -0
  11. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/app.py +0 -0
  12. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/bundled_skill/mammoth-cli/SKILL.md +0 -0
  13. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/bundled_skill/mammoth-cli/references/command-index.md +0 -0
  14. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/activity.md +0 -0
  15. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/addon.md +0 -0
  16. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/agent.md +0 -0
  17. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/ai.md +0 -0
  18. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/annotation.md +0 -0
  19. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/auth.md +0 -0
  20. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/automation.md +0 -0
  21. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/batch.md +0 -0
  22. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/billing.md +0 -0
  23. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/browse.md +0 -0
  24. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/capability.md +0 -0
  25. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/client-app.md +0 -0
  26. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/completion.md +0 -0
  27. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/config.md +0 -0
  28. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/connector.md +0 -0
  29. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/context.md +0 -0
  30. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dashboard.md +0 -0
  31. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/data-app.md +0 -0
  32. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dataset.md +0 -0
  33. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/doctor.md +0 -0
  34. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/external-key.md +0 -0
  35. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/file.md +0 -0
  36. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/folder.md +0 -0
  37. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/job.md +0 -0
  38. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/notification.md +0 -0
  39. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/parameter.md +0 -0
  40. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/project.md +0 -0
  41. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/report.md +0 -0
  42. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/schedule.md +0 -0
  43. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/schema.md +0 -0
  44. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/skill.md +0 -0
  45. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/snippet.md +0 -0
  46. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/support.md +0 -0
  47. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/template.md +0 -0
  48. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/trash.md +0 -0
  49. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/upgrade.md +0 -0
  50. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/user.md +0 -0
  51. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/version.md +0 -0
  52. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/view.md +0 -0
  53. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/webhook.md +0 -0
  54. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/workflow.md +0 -0
  55. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/workspace.md +0 -0
  56. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/bundled_skill/mammoth-cli/references/handoff.md +0 -0
  57. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/bundled_skill/mammoth-cli/references/input.md +0 -0
  58. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/bundled_skill/mammoth-cli/references/jobs-drafts.md +0 -0
  59. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/bundled_skill/mammoth-cli/references/machine-output.md +0 -0
  60. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/bundled_skill/mammoth-cli/references/operations.md +0 -0
  61. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/auth-scope.md +0 -0
  62. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/cleanup.md +0 -0
  63. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/dashboards.md +0 -0
  64. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/exports.md +0 -0
  65. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/index.md +0 -0
  66. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/resources.md +0 -0
  67. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/transforms.md +0 -0
  68. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/typed-etl-discovery.md +0 -0
  69. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/bundled_skill/mammoth-cli/references/recovery.md +0 -0
  70. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/bundled_skill/mammoth-cli/references/retention.md +0 -0
  71. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/bundled_skill/mammoth-cli/references/safety.md +0 -0
  72. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/bundled_skill/mammoth-cli/references/task-start.md +0 -0
  73. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/commands/__init__.py +0 -0
  74. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/commands/activity.py +0 -0
  75. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/commands/addon.py +0 -0
  76. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/commands/agent.py +0 -0
  77. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/commands/ai.py +0 -0
  78. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/commands/annotation.py +0 -0
  79. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/commands/automation.py +0 -0
  80. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/commands/batch.py +0 -0
  81. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/commands/billing.py +0 -0
  82. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/commands/browse.py +0 -0
  83. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/commands/capability.py +0 -0
  84. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/commands/client_app.py +0 -0
  85. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/commands/completion.py +0 -0
  86. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/commands/config.py +0 -0
  87. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/commands/connector.py +0 -0
  88. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/commands/context.py +0 -0
  89. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/commands/dashboard.py +0 -0
  90. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/commands/data_app.py +0 -0
  91. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/commands/dataset.py +0 -0
  92. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/commands/external_key.py +0 -0
  93. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/commands/file.py +0 -0
  94. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/commands/folder.py +0 -0
  95. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/commands/job.py +0 -0
  96. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/commands/notification.py +0 -0
  97. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/commands/parameter.py +0 -0
  98. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/commands/project.py +0 -0
  99. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/commands/registry.py +0 -0
  100. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/commands/report.py +0 -0
  101. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/commands/schedule.py +0 -0
  102. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/commands/schema.py +0 -0
  103. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/commands/skill.py +0 -0
  104. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/commands/snippet.py +0 -0
  105. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/commands/support.py +0 -0
  106. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/commands/template.py +0 -0
  107. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/commands/trash.py +0 -0
  108. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/commands/upgrade.py +0 -0
  109. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/commands/user.py +0 -0
  110. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/commands/view.py +0 -0
  111. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/commands/view_ops.py +0 -0
  112. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/commands/webhook.py +0 -0
  113. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/commands/workflow.py +0 -0
  114. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/commands/workspace.py +0 -0
  115. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/context/__init__.py +0 -0
  116. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/context/credentials.py +0 -0
  117. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/context/endpoint.py +0 -0
  118. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/context/profiles.py +0 -0
  119. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/context/resolver.py +0 -0
  120. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/contracts/__init__.py +0 -0
  121. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/contracts/auth.py +0 -0
  122. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/errors/__init__.py +0 -0
  123. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/errors/envelope.py +0 -0
  124. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/manifest/__init__.py +0 -0
  125. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/manifest/loader.py +0 -0
  126. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/messages/__init__.py +0 -0
  127. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/output/__init__.py +0 -0
  128. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/output/envelope.py +0 -0
  129. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/output/normalize.py +0 -0
  130. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/output/policy.py +0 -0
  131. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/output/progress.py +0 -0
  132. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/output/render.py +0 -0
  133. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/py.typed +0 -0
  134. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/runtime/__init__.py +0 -0
  135. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/runtime/confirm.py +0 -0
  136. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/runtime/executor.py +0 -0
  137. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/runtime/input_loader.py +0 -0
  138. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/runtime/invocation.py +0 -0
  139. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/runtime/options.py +0 -0
  140. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/runtime/session.py +0 -0
  141. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/runtime/strict.py +0 -0
  142. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/runtime/validate.py +0 -0
  143. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/services/__init__.py +0 -0
  144. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/services/argspec.py +0 -0
  145. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/services/coerce.py +0 -0
  146. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/services/command_contract.py +0 -0
  147. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/services/conditions.py +0 -0
  148. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/services/dispatch.py +0 -0
  149. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/services/factory.py +0 -0
  150. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/services/input_fields.py +0 -0
  151. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/services/mapping.py +0 -0
  152. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/services/openapi_types.py +0 -0
  153. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/services/positionals.py +0 -0
  154. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/services/protocol.py +0 -0
  155. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/services/sdk_service.py +0 -0
  156. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/services/testing.py +0 -0
  157. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/services/type_system.py +0 -0
  158. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/skills/__init__.py +0 -0
  159. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/skills/installer.py +0 -0
  160. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/mammoth_cli/testing.py +0 -0
  161. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/spec/manifests/commands/activity.yaml +0 -0
  162. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/spec/manifests/commands/addon.yaml +0 -0
  163. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/spec/manifests/commands/agent.yaml +0 -0
  164. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/spec/manifests/commands/ai.yaml +0 -0
  165. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/spec/manifests/commands/annotation.yaml +0 -0
  166. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/spec/manifests/commands/auth.yaml +0 -0
  167. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/spec/manifests/commands/automation.yaml +0 -0
  168. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/spec/manifests/commands/batch.yaml +0 -0
  169. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/spec/manifests/commands/billing.yaml +0 -0
  170. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/spec/manifests/commands/browse.yaml +0 -0
  171. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/spec/manifests/commands/capability.yaml +0 -0
  172. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/spec/manifests/commands/client-app.yaml +0 -0
  173. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/spec/manifests/commands/completion.yaml +0 -0
  174. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/spec/manifests/commands/config.yaml +0 -0
  175. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/spec/manifests/commands/connector.yaml +0 -0
  176. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/spec/manifests/commands/context.yaml +0 -0
  177. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/spec/manifests/commands/dashboard.yaml +0 -0
  178. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/spec/manifests/commands/data-app.yaml +0 -0
  179. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/spec/manifests/commands/dataset.yaml +0 -0
  180. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/spec/manifests/commands/doctor.yaml +0 -0
  181. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/spec/manifests/commands/external-key.yaml +0 -0
  182. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/spec/manifests/commands/file.yaml +0 -0
  183. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/spec/manifests/commands/folder.yaml +0 -0
  184. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/spec/manifests/commands/job.yaml +0 -0
  185. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/spec/manifests/commands/notification.yaml +0 -0
  186. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/spec/manifests/commands/parameter.yaml +0 -0
  187. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/spec/manifests/commands/project.yaml +0 -0
  188. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/spec/manifests/commands/report.yaml +0 -0
  189. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/spec/manifests/commands/schedule.yaml +0 -0
  190. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/spec/manifests/commands/schema.yaml +0 -0
  191. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/spec/manifests/commands/skill.yaml +0 -0
  192. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/spec/manifests/commands/snippet.yaml +0 -0
  193. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/spec/manifests/commands/support.yaml +0 -0
  194. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/spec/manifests/commands/template.yaml +0 -0
  195. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/spec/manifests/commands/trash.yaml +0 -0
  196. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/spec/manifests/commands/upgrade.yaml +0 -0
  197. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/spec/manifests/commands/user.yaml +0 -0
  198. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/spec/manifests/commands/version.yaml +0 -0
  199. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/spec/manifests/commands/view.yaml +0 -0
  200. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/spec/manifests/commands/webhook.yaml +0 -0
  201. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/spec/manifests/commands/workflow.yaml +0 -0
  202. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/spec/manifests/commands/workspace.yaml +0 -0
  203. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/spec/manifests/openapi-operations.yaml +0 -0
  204. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/spec/manifests/schema-v1.json +0 -0
  205. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/spec/manifests/sdk-catalog.source.yaml +0 -0
  206. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/spec/manifests/sdk-methods.yaml +0 -0
  207. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/spec/openapi/metadata.json +0 -0
  208. {mammoth_cli-2.0.9 → mammoth_cli-2.0.11}/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.9
3
+ Version: 2.0.11
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.9"
9
+ __version__ = "2.0.11"
10
10
 
11
11
  # The versioned machine output envelope contract.
12
12
  SCHEMA_VERSION = 1
@@ -72,6 +72,11 @@ present and its endpoint matches, verify the live connection:
72
72
  mammoth doctor --profile PROFILE --output json --no-input
73
73
  ```
74
74
 
75
+ `doctor` also lists the projects the credential can see (`projects` check)
76
+ and verifies that `--project` or the selected project is one of them
77
+ (`project_context` check). Pick the project id from that list; the API does
78
+ not expose write permission, so the first write is what proves it.
79
+
75
80
  Do not continue to schema discovery or business operations after an
76
81
  authentication or doctor failure. The `app` server prefix is the production
77
82
  default; release or other environment credentials do not imply authorization
@@ -27,6 +27,7 @@ from mammoth_cli.context.resolver import (
27
27
  )
28
28
  from mammoth_cli.contracts.auth import LoginRequest
29
29
  from mammoth_cli.errors.envelope import (
30
+ CODE_AUTHENTICATION_FAILED,
30
31
  CODE_CONFIRMATION_DECLINED,
31
32
  CODE_CONFIRMATION_REQUIRED,
32
33
  CODE_INVALID_WORKSPACE_ID,
@@ -135,6 +136,34 @@ def _validate_login_document(document: dict[str, Any]) -> LoginRequest:
135
136
  ) from exc
136
137
 
137
138
 
139
+ def _masked_receipt(value: str) -> str:
140
+ """Describe a secret without revealing it: its length and last four characters."""
141
+ if len(value) <= 4:
142
+ return f"{len(value)} characters"
143
+ return f"{len(value)} characters, ending in …{value[-4:]}"
144
+
145
+
146
+ def _prompt_secret(label: str) -> str:
147
+ """Prompt for one secret with hidden input, then confirm what was captured.
148
+
149
+ A hidden prompt shows nothing while typing, so a paste that silently
150
+ carried a newline or trailing space, or an empty return, used to surface
151
+ only later as an opaque 401. Surrounding whitespace is stripped, an empty
152
+ entry is rejected here, and a masked receipt (length and last four
153
+ characters, never the value) is printed to stderr as feedback.
154
+ """
155
+ value = typer.prompt(label, hide_input=True).strip()
156
+ if not value:
157
+ raise CliError(
158
+ code="login_input_required",
159
+ message=f"The {label} was empty.",
160
+ exit_status=EXIT_USAGE,
161
+ hint=f"Paste the {label} at the hidden prompt; nothing is echoed while you type.",
162
+ )
163
+ typer.echo(f" {label}: {_masked_receipt(value)}", err=True)
164
+ return str(value)
165
+
166
+
138
167
  def _prompt_blockers(invocation: Invocation) -> list[str]:
139
168
  """Reasons this invocation cannot interactively prompt, in report order.
140
169
 
@@ -190,8 +219,8 @@ def _run_login(
190
219
  # Two flows, nothing else: a terminal prompts for everything (key,
191
220
  # secret, then workspace id), and non-interactive uses --input. The
192
221
  # workspace is asked last, after the credentials.
193
- api_key = typer.prompt("API key", hide_input=True)
194
- api_secret = typer.prompt("API secret", hide_input=True)
222
+ api_key = _prompt_secret("API key")
223
+ api_secret = _prompt_secret("API secret")
195
224
  effective_workspace = typer.prompt("Workspace id", type=int)
196
225
  effective_prefix = server_prefix
197
226
  else:
@@ -231,6 +260,32 @@ def _run_login(
231
260
  service = service_factory.build_service(resolved_auth, timeout=invocation.timeout)
232
261
  try:
233
262
  service.check_connection()
263
+ except CliError as exc:
264
+ if exc.code == CODE_AUTHENTICATION_FAILED:
265
+ # Say exactly what was tried, without the secret: the endpoint,
266
+ # the workspace, and a masked receipt of the key. Credentials are
267
+ # per environment, and a release key typed at a production login
268
+ # is the common cause of an otherwise opaque 401.
269
+ exc.details = {
270
+ **exc.details,
271
+ "endpoint_base_url": resolved_base_url,
272
+ "workspace_id": effective_workspace,
273
+ # Receipts only (length and last four characters). The output
274
+ # layer redacts any key that looks like a credential, so these
275
+ # are named for what they are: descriptions, not values.
276
+ "credential_receipt": {
277
+ "key": _masked_receipt(api_key),
278
+ "second_value_length": len(api_secret),
279
+ },
280
+ }
281
+ exc.hint = (
282
+ f"{resolved_base_url} rejected this key/secret for workspace "
283
+ f"{effective_workspace}. Credentials are per environment: a key issued on "
284
+ "one Mammoth server does not authenticate on another. Check the key, the "
285
+ "secret, the workspace id, and that --server-prefix matches where the key "
286
+ "was issued."
287
+ )
288
+ raise
234
289
  finally:
235
290
  service.close()
236
291
 
@@ -111,6 +111,16 @@ def _safe_connection_diagnostics(error: CliError, *, debug: bool) -> dict[str, A
111
111
  return result
112
112
 
113
113
 
114
+ _PROJECT_LIMIT = 20
115
+
116
+
117
+ def _visible_projects(service: Any) -> list[dict[str, Any]]:
118
+ """Return the projects this credential can list, or an empty list."""
119
+ response = service.list_projects(limit=_PROJECT_LIMIT + 1)
120
+ projects = response.get("projects", []) if isinstance(response, dict) else []
121
+ return [p for p in projects if isinstance(p, dict)]
122
+
123
+
114
124
  def doctor(invocation: Invocation) -> HandlerResult:
115
125
  """Run environment and connectivity diagnostics.
116
126
 
@@ -168,10 +178,12 @@ def doctor(invocation: Invocation) -> HandlerResult:
168
178
 
169
179
  connection_ok = False
170
180
  connection_detail = "not attempted"
181
+ projects: list[dict[str, Any]] | None = None
171
182
  if auth_ok:
172
183
  try:
173
184
  with open_service(invocation) as (service, _auth):
174
185
  service.check_connection()
186
+ projects = _visible_projects(service)
175
187
  connection_ok = True
176
188
  connection_detail = "authenticated request succeeded"
177
189
  except CliError as error:
@@ -185,11 +197,56 @@ def doctor(invocation: Invocation) -> HandlerResult:
185
197
  if not auth_ok:
186
198
  checks.append(_check("connection", connection_ok, connection_detail))
187
199
 
200
+ # Authentication proves an identity, not a place to work. Report the
201
+ # projects this credential can see and whether the selected project is
202
+ # one of them. The API exposes no role or permission data, so write
203
+ # access is claimed by nobody here: the first write reports it.
204
+ selected_project = resolved_project(invocation)
205
+ if projects is not None:
206
+ visible_ids = [p.get("id") for p in projects]
207
+ checks.append(
208
+ {
209
+ **_check(
210
+ "projects",
211
+ bool(projects),
212
+ (
213
+ f"{len(projects)} project(s) visible in workspace"
214
+ if projects
215
+ else "no projects visible to this credential in the workspace"
216
+ ),
217
+ ),
218
+ "projects": [
219
+ {"id": p.get("id"), "name": p.get("name")} for p in projects[:_PROJECT_LIMIT]
220
+ ],
221
+ "truncated": len(projects) > _PROJECT_LIMIT,
222
+ }
223
+ )
224
+ if selected_project is None:
225
+ # Not a failure: every command accepts --project explicitly. It is
226
+ # reported so an agent knows it still has to choose one.
227
+ project_ok = True
228
+ project_detail = "no project selected; pass --project per command or set one"
229
+ elif selected_project in visible_ids:
230
+ project_ok, project_detail = True, f"project {selected_project} is visible"
231
+ else:
232
+ project_ok = False
233
+ project_detail = f"project {selected_project} is not among the visible projects"
234
+ checks.append(
235
+ {
236
+ **_check("project_context", project_ok, project_detail),
237
+ "project_id": selected_project,
238
+ "write_access": "not verifiable from the API; the first write reports it",
239
+ }
240
+ )
241
+
188
242
  recommendations: list[str] = []
189
243
  if record is None or not credentials.has_credentials(profile_name):
190
244
  login_profile = f" --profile {shlex.quote(profile_name)}" if profile_name else ""
191
245
  recommendations.append(f"mammoth auth login{login_profile}")
192
- elif resolved_project(invocation) is None:
246
+ elif selected_project is None or (
247
+ projects is not None and selected_project not in [p.get("id") for p in projects]
248
+ ):
249
+ recommendations.append("mammoth project list --output json --no-input")
193
250
  recommendations.append("mammoth context project use PROJECT_ID")
194
251
  if not connection_ok and auth_ok and not invocation.debug:
195
252
  debug_profile = f" --profile {shlex.quote(profile_name)}" if profile_name else ""
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "mammoth-cli"
3
- version = "2.0.9"
3
+ version = "2.0.11"
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"
File without changes
File without changes
File without changes