mammoth-cli 2.2.44__tar.gz → 2.2.46__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 (266) hide show
  1. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/PKG-INFO +2 -2
  2. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/__init__.py +1 -1
  3. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/bundled_skill/mammoth-cli/references/capabilities.md +1 -1
  4. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/bundled_skill/mammoth-cli/references/command-index.md +2 -1
  5. mammoth_cli-2.2.46/mammoth_cli/bundled_skill/mammoth-cli/references/commands/resolve.md +13 -0
  6. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/commands/dataset.py +30 -12
  7. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/commands/registry.py +2 -0
  8. mammoth_cli-2.2.46/mammoth_cli/commands/resolve.py +119 -0
  9. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/commands/schema.py +4 -0
  10. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/services/command_contract.py +1 -0
  11. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/services/positionals.py +11 -1
  12. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/pyproject.toml +2 -2
  13. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/spec/manifests/commands/dataset.yaml +2 -1
  14. mammoth_cli-2.2.46/spec/manifests/commands/resolve.yaml +39 -0
  15. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/spec/manifests/sdk-methods.yaml +12 -0
  16. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/.gitignore +0 -0
  17. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/LICENSE +0 -0
  18. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/README.md +0 -0
  19. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/__main__.py +0 -0
  20. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/app.py +0 -0
  21. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/bundled_skill/mammoth-cli/SKILL.md +0 -0
  22. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/bundled_skill/mammoth-cli/references/about-mammoth.md +0 -0
  23. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/bundled_skill/mammoth-cli/references/auth.md +0 -0
  24. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/bundled_skill/mammoth-cli/references/capabilities-misc.md +0 -0
  25. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/activity.md +0 -0
  26. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/addon.md +0 -0
  27. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/agent.md +0 -0
  28. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/ai.md +0 -0
  29. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/annotation.md +0 -0
  30. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/auth.md +0 -0
  31. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/automation.md +0 -0
  32. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/batch.md +0 -0
  33. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/billing.md +0 -0
  34. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/browse.md +0 -0
  35. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/calc.md +0 -0
  36. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/capability.md +0 -0
  37. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/client-app.md +0 -0
  38. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/completion.md +0 -0
  39. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/config.md +0 -0
  40. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/connector.md +0 -0
  41. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/context.md +0 -0
  42. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dashboard-qa.md +0 -0
  43. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dashboard-style.md +0 -0
  44. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dashboard-template.md +0 -0
  45. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dashboard.md +0 -0
  46. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/data-app.md +0 -0
  47. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dataset.md +0 -0
  48. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/doctor.md +0 -0
  49. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/external-key.md +0 -0
  50. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/file.md +0 -0
  51. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/folder.md +0 -0
  52. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/job.md +0 -0
  53. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/link.md +0 -0
  54. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/log.md +0 -0
  55. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/notification.md +0 -0
  56. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/parameter.md +0 -0
  57. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/project.md +0 -0
  58. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/report.md +0 -0
  59. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/schedule.md +0 -0
  60. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/schema.md +0 -0
  61. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/skill.md +0 -0
  62. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/snippet.md +0 -0
  63. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/support.md +0 -0
  64. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/template.md +0 -0
  65. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/token.md +0 -0
  66. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/trash.md +0 -0
  67. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/upgrade.md +0 -0
  68. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/user.md +0 -0
  69. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/version.md +0 -0
  70. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/view-transform.md +0 -0
  71. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/view.md +0 -0
  72. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/webhook.md +0 -0
  73. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/workflow.md +0 -0
  74. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/workspace.md +0 -0
  75. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/bundled_skill/mammoth-cli/references/handoff.md +0 -0
  76. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/bundled_skill/mammoth-cli/references/input.md +0 -0
  77. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/bundled_skill/mammoth-cli/references/jobs-drafts.md +0 -0
  78. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/bundled_skill/mammoth-cli/references/machine-output.md +0 -0
  79. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/bundled_skill/mammoth-cli/references/operations.md +0 -0
  80. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/auth-scope.md +0 -0
  81. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/cleanup.md +0 -0
  82. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/dashboards.md +0 -0
  83. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/database-import.md +0 -0
  84. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/end-to-end.md +0 -0
  85. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/exports.md +0 -0
  86. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/index.md +0 -0
  87. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/need-action.md +0 -0
  88. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/resources.md +0 -0
  89. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/scheduling.md +0 -0
  90. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/transforms.md +0 -0
  91. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/typed-etl-discovery.md +0 -0
  92. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/bundled_skill/mammoth-cli/references/recovery.md +0 -0
  93. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/bundled_skill/mammoth-cli/references/report-checklist.md +0 -0
  94. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/bundled_skill/mammoth-cli/references/retention.md +0 -0
  95. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/bundled_skill/mammoth-cli/references/safety.md +0 -0
  96. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/bundled_skill/mammoth-cli/references/task-start.md +0 -0
  97. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/commands/__init__.py +0 -0
  98. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/commands/activity.py +0 -0
  99. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/commands/addon.py +0 -0
  100. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/commands/agent.py +0 -0
  101. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/commands/ai.py +0 -0
  102. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/commands/annotation.py +0 -0
  103. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/commands/auth.py +0 -0
  104. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/commands/automation.py +0 -0
  105. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/commands/batch.py +0 -0
  106. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/commands/billing.py +0 -0
  107. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/commands/browse.py +0 -0
  108. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/commands/calc.py +0 -0
  109. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/commands/capability.py +0 -0
  110. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/commands/client_app.py +0 -0
  111. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/commands/completion.py +0 -0
  112. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/commands/config.py +0 -0
  113. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/commands/connector.py +0 -0
  114. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/commands/context.py +0 -0
  115. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/commands/dashboard.py +0 -0
  116. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/commands/data_app.py +0 -0
  117. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/commands/doctor.py +0 -0
  118. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/commands/external_key.py +0 -0
  119. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/commands/file.py +0 -0
  120. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/commands/folder.py +0 -0
  121. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/commands/job.py +0 -0
  122. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/commands/link.py +0 -0
  123. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/commands/notification.py +0 -0
  124. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/commands/parameter.py +0 -0
  125. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/commands/project.py +0 -0
  126. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/commands/report.py +0 -0
  127. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/commands/schedule.py +0 -0
  128. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/commands/skill.py +0 -0
  129. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/commands/snippet.py +0 -0
  130. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/commands/support.py +0 -0
  131. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/commands/template.py +0 -0
  132. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/commands/trash.py +0 -0
  133. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/commands/upgrade.py +0 -0
  134. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/commands/user.py +0 -0
  135. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/commands/view.py +0 -0
  136. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/commands/view_ops.py +0 -0
  137. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/commands/view_profile.py +0 -0
  138. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/commands/webhook.py +0 -0
  139. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/commands/workflow.py +0 -0
  140. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/commands/workspace.py +0 -0
  141. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/context/__init__.py +0 -0
  142. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/context/credentials.py +0 -0
  143. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/context/endpoint.py +0 -0
  144. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/context/oauth.py +0 -0
  145. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/context/profiles.py +0 -0
  146. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/context/resolver.py +0 -0
  147. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/contracts/__init__.py +0 -0
  148. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/contracts/auth.py +0 -0
  149. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/embed.py +0 -0
  150. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/errors/__init__.py +0 -0
  151. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/errors/envelope.py +0 -0
  152. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/manifest/__init__.py +0 -0
  153. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/manifest/loader.py +0 -0
  154. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/messages/__init__.py +0 -0
  155. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/output/__init__.py +0 -0
  156. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/output/envelope.py +0 -0
  157. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/output/normalize.py +0 -0
  158. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/output/policy.py +0 -0
  159. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/output/progress.py +0 -0
  160. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/output/render.py +0 -0
  161. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/py.typed +0 -0
  162. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/runtime/__init__.py +0 -0
  163. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/runtime/confirm.py +0 -0
  164. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/runtime/dataset_health.py +0 -0
  165. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/runtime/dryrun.py +0 -0
  166. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/runtime/dryrun_targets.py +0 -0
  167. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/runtime/embedded.py +0 -0
  168. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/runtime/executor.py +0 -0
  169. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/runtime/input_loader.py +0 -0
  170. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/runtime/intent_only.py +0 -0
  171. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/runtime/invocation.py +0 -0
  172. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/runtime/new_data.py +0 -0
  173. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/runtime/options.py +0 -0
  174. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/runtime/parents.py +0 -0
  175. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/runtime/runlog.py +0 -0
  176. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/runtime/session.py +0 -0
  177. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/runtime/state.py +0 -0
  178. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/runtime/strict.py +0 -0
  179. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/runtime/updates.py +0 -0
  180. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/runtime/validate.py +0 -0
  181. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/runtime/verify.py +0 -0
  182. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/services/__init__.py +0 -0
  183. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/services/append_blank_columns.py +0 -0
  184. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/services/argspec.py +0 -0
  185. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/services/board_values.py +0 -0
  186. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/services/coerce.py +0 -0
  187. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/services/conditional_format.py +0 -0
  188. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/services/conditions.py +0 -0
  189. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/services/dashboard_filters.py +0 -0
  190. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/services/dashboard_pages.py +0 -0
  191. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/services/dashboard_review.py +0 -0
  192. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/services/data_profile.py +0 -0
  193. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/services/data_quality.py +0 -0
  194. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/services/dispatch.py +0 -0
  195. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/services/factory.py +0 -0
  196. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/services/input_fields.py +0 -0
  197. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/services/job_outcome.py +0 -0
  198. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/services/listing.py +0 -0
  199. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/services/local_time.py +0 -0
  200. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/services/mapping.py +0 -0
  201. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/services/openapi_types.py +0 -0
  202. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/services/protocol.py +0 -0
  203. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/services/read_queries.py +0 -0
  204. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/services/sdk_service.py +0 -0
  205. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/services/sql_check.py +0 -0
  206. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/services/stored_stats.py +0 -0
  207. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/services/testing.py +0 -0
  208. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/services/text_dates.py +0 -0
  209. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/services/type_system.py +0 -0
  210. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/services/view_analysis.py +0 -0
  211. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/services/write_impact.py +0 -0
  212. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/skills/__init__.py +0 -0
  213. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/skills/installer.py +0 -0
  214. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/skills/steering.py +0 -0
  215. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/mammoth_cli/testing.py +0 -0
  216. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/spec/manifests/commands/activity.yaml +0 -0
  217. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/spec/manifests/commands/addon.yaml +0 -0
  218. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/spec/manifests/commands/agent.yaml +0 -0
  219. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/spec/manifests/commands/ai.yaml +0 -0
  220. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/spec/manifests/commands/annotation.yaml +0 -0
  221. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/spec/manifests/commands/auth.yaml +0 -0
  222. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/spec/manifests/commands/automation.yaml +0 -0
  223. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/spec/manifests/commands/batch.yaml +0 -0
  224. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/spec/manifests/commands/billing.yaml +0 -0
  225. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/spec/manifests/commands/browse.yaml +0 -0
  226. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/spec/manifests/commands/calc.yaml +0 -0
  227. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/spec/manifests/commands/capability.yaml +0 -0
  228. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/spec/manifests/commands/client-app.yaml +0 -0
  229. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/spec/manifests/commands/completion.yaml +0 -0
  230. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/spec/manifests/commands/config.yaml +0 -0
  231. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/spec/manifests/commands/connector.yaml +0 -0
  232. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/spec/manifests/commands/context.yaml +0 -0
  233. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/spec/manifests/commands/dashboard.yaml +0 -0
  234. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/spec/manifests/commands/data-app.yaml +0 -0
  235. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/spec/manifests/commands/doctor.yaml +0 -0
  236. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/spec/manifests/commands/external-key.yaml +0 -0
  237. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/spec/manifests/commands/file.yaml +0 -0
  238. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/spec/manifests/commands/folder.yaml +0 -0
  239. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/spec/manifests/commands/job.yaml +0 -0
  240. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/spec/manifests/commands/link.yaml +0 -0
  241. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/spec/manifests/commands/log.yaml +0 -0
  242. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/spec/manifests/commands/notification.yaml +0 -0
  243. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/spec/manifests/commands/parameter.yaml +0 -0
  244. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/spec/manifests/commands/project.yaml +0 -0
  245. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/spec/manifests/commands/report.yaml +0 -0
  246. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/spec/manifests/commands/schedule.yaml +0 -0
  247. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/spec/manifests/commands/schema.yaml +0 -0
  248. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/spec/manifests/commands/skill.yaml +0 -0
  249. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/spec/manifests/commands/snippet.yaml +0 -0
  250. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/spec/manifests/commands/support.yaml +0 -0
  251. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/spec/manifests/commands/template.yaml +0 -0
  252. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/spec/manifests/commands/token.yaml +0 -0
  253. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/spec/manifests/commands/trash.yaml +0 -0
  254. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/spec/manifests/commands/upgrade.yaml +0 -0
  255. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/spec/manifests/commands/user.yaml +0 -0
  256. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/spec/manifests/commands/version.yaml +0 -0
  257. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/spec/manifests/commands/view.yaml +0 -0
  258. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/spec/manifests/commands/webhook.yaml +0 -0
  259. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/spec/manifests/commands/workflow.yaml +0 -0
  260. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/spec/manifests/commands/workspace.yaml +0 -0
  261. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/spec/manifests/edits-target.source.yaml +0 -0
  262. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/spec/manifests/openapi-operations.yaml +0 -0
  263. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/spec/manifests/schema-v1.json +0 -0
  264. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/spec/manifests/sdk-catalog.source.yaml +0 -0
  265. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/spec/openapi/metadata.json +0 -0
  266. {mammoth_cli-2.2.44 → mammoth_cli-2.2.46}/spec/openapi/openapi.json +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mammoth-cli
3
- Version: 2.2.44
3
+ Version: 2.2.46
4
4
  Summary: Command-line interface for the Mammoth Analytics platform
5
5
  Project-URL: homepage, https://mammoth.io
6
6
  Project-URL: repository, https://github.com/EdgeMetric/mammothsdk
@@ -17,7 +17,7 @@ Classifier: Topic :: Software Development :: Libraries :: Python Modules
17
17
  Requires-Python: <3.15,>=3.12
18
18
  Requires-Dist: jsonschema>=4.20
19
19
  Requires-Dist: keyring<26,>=25.7
20
- Requires-Dist: mammoth-io<0.9,>=0.8.23
20
+ Requires-Dist: mammoth-io<0.9,>=0.8.24
21
21
  Requires-Dist: platformdirs<5,>=4.10
22
22
  Requires-Dist: pydantic<3,>=2.12.5
23
23
  Requires-Dist: pyyaml<7,>=6
@@ -6,7 +6,7 @@ not implement a second HTTP client and does not call private SDK members.
6
6
 
7
7
  from __future__ import annotations
8
8
 
9
- __version__ = "2.2.44"
9
+ __version__ = "2.2.46"
10
10
 
11
11
  # The versioned machine output envelope contract.
12
12
  SCHEMA_VERSION = 1
@@ -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 655 commands. 516 of them bind one of the 545 API operations in the matrix; the remainder are local commands (`schema`, `auth`, `doctor`, `log`, ...) or typed variants that share an operation (`view transform *` commands submit through `view.task.add`, except `rename-columns` and `sort`, which set view display properties through `view.update`). 262 bound commands ran once successfully on release, 1 are not supported there, and the rest are untried. Untried is not broken: discover the contract with `mammoth schema get COMMAND_ID`, run it, and treat the structured error envelope as the answer. Use an untried command normally: confirm a write with the user first, check its result with a read afterwards, and never refuse a command only because it is untried.
4
+ The CLI publishes 656 commands. 516 of them bind one of the 545 API operations in the matrix; the remainder are local commands (`schema`, `auth`, `doctor`, `log`, ...) or typed variants that share an operation (`view transform *` commands submit through `view.task.add`, except `rename-columns` and `sort`, which set view display properties through `view.update`). 262 bound commands ran once successfully on release, 1 are not supported there, and the rest are untried. Untried is not broken: discover the contract with `mammoth schema get COMMAND_ID`, run it, and treat the structured error envelope as the answer. Use an untried command normally: confirm a write with the user first, check its result with a read afterwards, and never refuse a command only because it is untried.
5
5
 
6
6
  Status meanings:
7
7
 
@@ -1,6 +1,6 @@
1
1
  # Published CLI command catalog
2
2
 
3
- This generated catalog is a lookup table for every command in the published CLI manifest, currently 655; each entry carries its release status line. It is a command-contract index, not an assertion that every backend/OpenAPI operation has a CLI binding. For an exact local CLI contract, run `mammoth schema get COMMAND_ID`; `mammoth capability list` is an API-binding inventory and can omit typed/local CLI routes. For focused workflows, read the [recipes index](recipes/index.md). Sensitive structured input must come from a private file or pipe; never put secrets in literal argv.
3
+ This generated catalog is a lookup table for every command in the published CLI manifest, currently 656; 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
 
@@ -38,6 +38,7 @@ Load only the applicable domain file:
38
38
  - [parameter](commands/parameter.md) — 14 published commands
39
39
  - [project](commands/project.md) — 25 published commands
40
40
  - [report](commands/report.md) — 1 published commands
41
+ - [resolve](commands/resolve.md) — 1 published commands
41
42
  - [schedule](commands/schedule.md) — 5 published commands
42
43
  - [schema](commands/schema.md) — 3 published commands
43
44
  - [skill](commands/skill.md) — 7 published commands
@@ -0,0 +1,13 @@
1
+ # `resolve` commands
2
+
3
+ Every command returns the standard JSON envelope. On nonzero exit, read the error envelope and its `recovery_commands`; do not guess request fields. "Status on release" is joined from `docs/release-capability-matrix.json`: *ran once* means one bounded live run succeeded on the named CLI release, *untried* means nobody has run it (use it normally: confirm writes with the user, check the result afterwards), *not supported* means the backend refuses it. When this file disagrees with [capabilities](../capabilities.md) or a recipe, they win. Envelope shapes: [machine output](../machine-output.md).
4
+
5
+ ### `resolve`
6
+
7
+ Run: `mammoth resolve`. Exact input fields: `mammoth schema get resolve`.
8
+
9
+ Example: `mammoth resolve uqa-w29-ren`. Placeholders are illustrative; resolve IDs and input from observed reads.
10
+
11
+ Result: `ResolveResult`; mutation `read`, confirmation `none`, wait policy `not_async`.
12
+
13
+ Status on release: untried; no live run recorded.
@@ -353,15 +353,38 @@ def _find_by_columns(
353
353
  return matches, cut
354
354
 
355
355
 
356
+ def _tag_scope(matches: list[dict[str, Any]], project_id: int) -> list[dict[str, Any]]:
357
+ """Mark each match ``in_project``: whether it sits in the project the call runs under."""
358
+ return [{**m, "in_project": m.get("project_id") == project_id} for m in matches]
359
+
360
+
361
+ def _find_scoped(
362
+ service: Any,
363
+ needle: str,
364
+ visible: list[dict[str, Any]],
365
+ project_id: int,
366
+ skipped: list[dict[str, Any]],
367
+ ) -> tuple[list[dict[str, Any]], list[dict[str, Any]], bool]:
368
+ """``(matches, projects searched, cut)``: the project's own matches, then every other one's."""
369
+ home = named_project(service, project_id, visible)
370
+ own = _find_in_projects(service, needle, [home], skipped)
371
+ holding, cut = _projects_holding(service, needle, visible)
372
+ outside = _find_in_projects(service, needle, _other_projects(holding, project_id), skipped)
373
+ searched = [home] + _other_projects(visible, project_id)
374
+ return _tag_scope(own + outside, project_id), searched, cut
375
+
376
+
356
377
  def dataset_find(invocation: Invocation) -> HandlerResult:
357
378
  """Search dataset names for a substring across every visible project.
358
379
 
359
380
  Read-only local composite: lists the projects the credential can see, then
360
381
  lists datasets in each and keeps a case-insensitive substring match. With
361
- ``--project`` that project is searched first, and the rest only when it holds
362
- no match: the in-product agent runs every call under the project the user
363
- last opened, which is often not the one the named dataset is in. Does not
364
- require an active project.
382
+ ``--project`` the project's own matches come first and the matches in every
383
+ other visible project are returned too, each row marked ``in_project`` and
384
+ carrying its ``project_id`` and ``project_name``: the in-product agent runs
385
+ every call under the project the user last opened, which is often not the one
386
+ the named dataset is in, so it states where the name is instead of asking the
387
+ user to switch. Does not require an active project.
365
388
  """
366
389
  name_substring = _require_string_positional(invocation, "name substring")
367
390
  needle = name_substring.lower()
@@ -370,14 +393,9 @@ def dataset_find(invocation: Invocation) -> HandlerResult:
370
393
  visible = _visible_projects(service)
371
394
  cut = False
372
395
  if invocation.project is not None:
373
- projects: list[dict[str, Any]] = [named_project(service, invocation.project, visible)]
374
- matches = _find_in_projects(service, needle, projects, skipped)
375
- if not matches:
376
- holding, cut = _projects_holding(service, needle, visible)
377
- matches = _find_in_projects(
378
- service, needle, _other_projects(holding, invocation.project), skipped
379
- )
380
- projects += _other_projects(visible, invocation.project)
396
+ matches, projects, cut = _find_scoped(
397
+ service, needle, visible, invocation.project, skipped
398
+ )
381
399
  else:
382
400
  projects = visible
383
401
  holding, cut = _projects_holding(service, needle, visible)
@@ -45,6 +45,7 @@ from mammoth_cli.commands import notification as notification_cmd
45
45
  from mammoth_cli.commands import parameter as parameter_cmd
46
46
  from mammoth_cli.commands import project as project_cmd
47
47
  from mammoth_cli.commands import report as report_cmd
48
+ from mammoth_cli.commands import resolve as resolve_cmd
48
49
  from mammoth_cli.commands import schedule as schedule_cmd
49
50
  from mammoth_cli.commands import schema as schema_cmd
50
51
  from mammoth_cli.commands import skill as skill_cmd
@@ -283,6 +284,7 @@ HANDLERS: dict[str, Handler] = {
283
284
  "doctor": doctor_cmd.doctor,
284
285
  "calc": calc_cmd.calc,
285
286
  "link": link_cmd.link,
287
+ "resolve": resolve_cmd.resolve,
286
288
  "completion.show": completion_cmd.completion_show,
287
289
  "completion.install": completion_cmd.completion_install,
288
290
  "skill.agents-md.install": skill_cmd.skill_agents_md_install,
@@ -0,0 +1,119 @@
1
+ """The ``resolve`` command: read-only, says what a name refers to.
2
+
3
+ A user types a name ("uqa-w29-ren") and the agent has to know whether it is a
4
+ dataset, a view or a project, and where. Reading it as the wrong kind sent the
5
+ agent looking for a project that was a dataset's name, and a name that lives in
6
+ another project made it ask the user to switch scope. One call answers both:
7
+ every dataset, view and project whose name matches, with ids and projects.
8
+ """
9
+
10
+ from __future__ import annotations
11
+
12
+ from typing import Any
13
+
14
+ from mammoth_cli.commands.dataset import (
15
+ _require_string_positional,
16
+ _visible_projects,
17
+ search_cut_note,
18
+ search_hits,
19
+ )
20
+ from mammoth_cli.runtime.invocation import Invocation
21
+ from mammoth_cli.runtime.session import open_service
22
+
23
+ HandlerResult = tuple[Any, dict[str, Any]]
24
+
25
+ #: Resource-search type for each kind of match, in the order the kinds are listed.
26
+ _SEARCH_TYPES = (("dataset", "datasource"), ("view", "dataview"))
27
+
28
+
29
+ def _row(
30
+ kind: str, needle: str, entry: dict[str, Any], names: dict[Any, Any], home: int | None
31
+ ) -> dict[str, Any]:
32
+ """One match: its kind, ids, project, whether the name is exact and where it sits."""
33
+ is_project = kind == "project"
34
+ project_id = entry.get("id") if is_project else entry.get("project_id")
35
+ name = entry.get("name")
36
+ row: dict[str, Any] = {
37
+ "kind": kind,
38
+ "id": entry.get("id") if is_project else entry.get("object_id"),
39
+ "name": name,
40
+ "project_id": project_id,
41
+ "project_name": name if is_project else names.get(project_id),
42
+ "exact": isinstance(name, str) and name.lower() == needle,
43
+ }
44
+ if home is not None:
45
+ row["in_project"] = project_id == home
46
+ return row
47
+
48
+
49
+ def resolve_matches(
50
+ needle: str,
51
+ projects: list[dict[str, Any]],
52
+ hits_by_kind: dict[str, list[dict[str, Any]]],
53
+ home: int | None = None,
54
+ ) -> list[dict[str, Any]]:
55
+ """Every project, dataset and view whose name contains ``needle`` (any case).
56
+
57
+ Exact names come first, then the project the call runs under (``home``), then
58
+ projects, datasets and views in that order. Pure: no network.
59
+ """
60
+ lowered = needle.lower()
61
+ names = {p.get("id"): p.get("name") for p in projects}
62
+ rows = [
63
+ _row("project", lowered, p, names, home)
64
+ for p in projects
65
+ if isinstance(p.get("name"), str) and lowered in p["name"].lower()
66
+ ]
67
+ for kind, _ in _SEARCH_TYPES:
68
+ rows += [_row(kind, lowered, h, names, home) for h in hits_by_kind.get(kind, [])]
69
+ order = {"project": 0, "dataset": 1, "view": 2}
70
+ return sorted(
71
+ rows, key=lambda r: (not r["exact"], not r.get("in_project", False), order[r["kind"]])
72
+ )
73
+
74
+
75
+ def kinds_note(name: str, rows: list[dict[str, Any]]) -> str:
76
+ """Says what the name is: one kind, or several, so it is never read as the wrong one."""
77
+ if not rows:
78
+ return f"Nothing visible to this login is named like '{name}'."
79
+ exact = [r for r in rows if r["exact"]] or rows
80
+ kinds = sorted({r["kind"] for r in exact}, key=("project", "dataset", "view").index)
81
+ if len(exact) == 1:
82
+ only = exact[0]
83
+ return f"'{name}' is a {only['kind']} (id {only['id']}) in project {only['project_name']}."
84
+ if len(kinds) == 1:
85
+ where = sorted({str(r["project_name"]) for r in exact})
86
+ return f"'{name}' is {len(exact)} {kinds[0]}s, in projects {', '.join(where)}: ask which."
87
+ return (
88
+ f"'{name}' names {len(exact)} things ({', '.join(kinds)}): tell them apart by "
89
+ "kind and project before using an id."
90
+ )
91
+
92
+
93
+ def resolve(invocation: Invocation) -> HandlerResult:
94
+ """Say what NAME refers to: a dataset, a view or a project, with ids and projects.
95
+
96
+ Read-only. NAME is a case-insensitive substring and the only argument; the
97
+ command has no options besides the global ``--project``, which only marks
98
+ each match ``in_project`` (matches elsewhere are always returned). Searches
99
+ every project the credential can see. Does not require an active project.
100
+ """
101
+ name = _require_string_positional(invocation, "name")
102
+ cut = False
103
+ with open_service(invocation) as (service, auth):
104
+ projects = _visible_projects(service)
105
+ hits: dict[str, list[dict[str, Any]]] = {}
106
+ for kind, resource_type in _SEARCH_TYPES:
107
+ hits[kind], more = search_hits(service, resource_type, name)
108
+ cut = cut or more
109
+ meta = {
110
+ "profile": invocation.profile,
111
+ "workspace_id": auth.workspace_id,
112
+ "project_id": invocation.project,
113
+ }
114
+ rows = resolve_matches(name, projects, hits, invocation.project)
115
+ result: dict[str, Any] = {"name": name, "matches": rows, "note": kinds_note(name, rows)}
116
+ if cut:
117
+ result["truncated"] = True
118
+ result["note"] += " " + search_cut_note("datasets or views")
119
+ return result, meta
@@ -411,6 +411,10 @@ _COMMAND_DISCOVERY_PURPOSES = {
411
411
  "link url pasted address app page open file dataset view folder project "
412
412
  "workspace ids selected resource parse"
413
413
  ),
414
+ "resolve": (
415
+ "resolve name what is this dataset view project called named which kind "
416
+ "ambiguous same name another project lookup identify"
417
+ ),
414
418
  "dataset.broken-rows.list": (
415
419
  "unstructured skipped ragged rows lines unparsed mismatched columns monitor "
416
420
  "needs review file upload bad rows"
@@ -410,6 +410,7 @@ _LOCAL_COMMANDS = frozenset(
410
410
  "doctor",
411
411
  "project.check",
412
412
  "project.ensure",
413
+ "resolve",
413
414
  "folder.find",
414
415
  "link",
415
416
  "log.path",
@@ -644,6 +644,15 @@ POSITIONAL_OVERRIDES: dict[str, tuple[PositionalSpec, ...]] = {
644
644
  example_value="https://app.mammoth.io/workspaces/1/projects/2/data/datasets",
645
645
  ),
646
646
  ),
647
+ "resolve": (
648
+ PositionalSpec(
649
+ name="name",
650
+ type=str,
651
+ required=True,
652
+ help="Case-insensitive name, or part of one, to look up as a dataset, view or project.",
653
+ example_value="uqa-w29-ren",
654
+ ),
655
+ ),
647
656
  "capability.find": (
648
657
  PositionalSpec(
649
658
  name="query",
@@ -673,7 +682,8 @@ POSITIONAL_OVERRIDES: dict[str, tuple[PositionalSpec, ...]] = {
673
682
  type=str,
674
683
  required=False,
675
684
  help="Case-insensitive substring to match against dataset names; optional "
676
- "when --input gives 'columns'.",
685
+ "when --input gives 'columns'. Matches in other projects are listed too, "
686
+ "marked in_project when --project is given.",
677
687
  example_value="sales",
678
688
  ),
679
689
  ),
@@ -1,13 +1,13 @@
1
1
  [project]
2
2
  name = "mammoth-cli"
3
- version = "2.2.44"
3
+ version = "2.2.46"
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"
7
7
  license = "LicenseRef-Proprietary"
8
8
  requires-python = ">=3.12,<3.15"
9
9
  dependencies = [
10
- "mammoth-io (>=0.8.23,<0.9)",
10
+ "mammoth-io (>=0.8.24,<0.9)",
11
11
  "typer (>=0.27,<0.28)",
12
12
  "rich (>=15,<16)",
13
13
  "platformdirs (>=4.10,<5)",
@@ -523,7 +523,8 @@ commands:
523
523
  metavar: NAME_SUBSTRING
524
524
  falls_back_to_field: null
525
525
  help: Case-insensitive substring to match against dataset names; optional when --input
526
- gives 'columns'.
526
+ gives 'columns'. Matches in other projects are listed too, marked in_project when
527
+ --project is given.
527
528
  options: []
528
529
  sdk_symbol: mammoth_cli.commands.dataset.find
529
530
  sdk_conversion: Call mammoth_cli.commands.dataset.find with validated request fields.
@@ -0,0 +1,39 @@
1
+ manifest_schema_version: 1
2
+ commands:
3
+ - command_id: resolve
4
+ command_path: resolve
5
+ disposition: command
6
+ alias_of: null
7
+ operation_ids: []
8
+ positionals:
9
+ - name: name
10
+ type: str
11
+ required: true
12
+ metavar: NAME
13
+ falls_back_to_field: null
14
+ help: Case-insensitive name, or part of one, to look up as a dataset, view or project.
15
+ options: []
16
+ sdk_symbol: mammoth_cli.commands.resolve.resolve
17
+ sdk_conversion: Call mammoth_cli.commands.resolve.resolve with validated request fields.
18
+ request_model: ResolveRequest
19
+ result_model: ResolveResult
20
+ mutation_class: read
21
+ confirmation: none
22
+ wait_policy: not_async
23
+ pagination_policy: none
24
+ acceptance_evidence: live_read_only
25
+ live_test: null
26
+ live_exemption_reason: Read-only composite over the workspace resource search and the project list.
27
+ contract_fixture: null
28
+ required_fixture_guard: null
29
+ secret_fields: []
30
+ human_example: mammoth resolve NAME --help
31
+ agent_example: mammoth resolve uqa-w29-ren
32
+ unit_tests:
33
+ - UT-RESOLVE
34
+ contract_tests:
35
+ - CT-RESOLVE-S1-LOCAL
36
+ draft_test: null
37
+ undo_test: null
38
+ known_restrictions: null
39
+ reviewed_by: primary
@@ -4527,6 +4527,18 @@ methods:
4527
4527
  pagination_policy: none
4528
4528
  secret_fields: []
4529
4529
  reviewed_by: primary
4530
+ - sdk_symbol: mammoth.api.files.FilesAPI.upload_result
4531
+ implementation_origin: mammoth.api.files.FilesAPI.upload_result
4532
+ signature: 'upload_result(self, files: ''_list[str | Path | BinaryIO] | str | Path | BinaryIO | None'' = None, folder_resource_id: ''str | int | None'' = None, append_to_ds_id: ''int | None'' = None, override_target_schema: ''bool | None'' = None, wait_for_completion: ''bool'' = True, timeout: ''int'' = 300) -> ''dict[str, Any]'''
4533
+ openapi_operation_ids: []
4534
+ canonical_command: file.upload
4535
+ alias_of: null
4536
+ no_command_reason: null
4537
+ mutation_class: benign_mutation
4538
+ wait_policy: start_or_wait
4539
+ pagination_policy: none
4540
+ secret_fields: []
4541
+ reviewed_by: primary
4530
4542
  - sdk_symbol: mammoth.api.files.FilesAPI.upload_folder
4531
4543
  implementation_origin: mammoth.api.files.FilesAPI.upload_folder
4532
4544
  signature: 'upload_folder(self, folder_path: ''str | Path'', folder_resource_id: ''str | None'' = None, wait_for_completion: ''bool'' = True, timeout: ''int'' = 300) -> ''_list[int] | int | None'''
File without changes
File without changes
File without changes