mammoth-cli 2.4.0__tar.gz → 2.4.2__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 (389) hide show
  1. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/PKG-INFO +2 -2
  2. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/__init__.py +1 -1
  3. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/__main__.py +20 -5
  4. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/app/help_text.py +3 -0
  5. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/SKILL.md +1 -1
  6. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/capabilities.md +1 -1
  7. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/command-index.md +3 -3
  8. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/agent.md +10 -0
  9. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/connector.md +20 -0
  10. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/commands/help_summaries.json +3 -0
  11. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/commands/registry.py +4 -0
  12. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/commands/view/aggregate.py +15 -5
  13. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/commands/view/settle.py +10 -3
  14. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/discovery/purposes.py +14 -0
  15. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/runtime/trace.py +1 -1
  16. mammoth_cli-2.4.2/mammoth_cli/services/medians.py +145 -0
  17. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/services/positional_overrides.py +10 -0
  18. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/services/sdk_service.py +0 -4
  19. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/pyproject.toml +2 -2
  20. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/spec/manifests/commands/agent.yaml +14 -0
  21. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/spec/manifests/commands/connector.yaml +22 -0
  22. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/spec/manifests/commands/view.yaml +2 -1
  23. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/spec/manifests/commands.generated.yaml +120 -0
  24. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/spec/manifests/compiled/commands.json +4 -1
  25. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/spec/manifests/compiled/sdk-methods.json +3 -0
  26. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/spec/manifests/sdk-catalog.source.yaml +24 -0
  27. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/spec/manifests/sdk-methods.yaml +37 -1
  28. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/.gitignore +0 -0
  29. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/LICENSE +0 -0
  30. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/README.md +0 -0
  31. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/app/__init__.py +0 -0
  32. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/app/options.py +0 -0
  33. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/app/tree.py +0 -0
  34. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/app/usage.py +0 -0
  35. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/about-mammoth.md +0 -0
  36. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/auth.md +0 -0
  37. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/capabilities-misc.md +0 -0
  38. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/activity.md +0 -0
  39. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/addon.md +0 -0
  40. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/ai.md +0 -0
  41. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/annotation.md +0 -0
  42. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/auth.md +0 -0
  43. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/automation.md +0 -0
  44. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/batch.md +0 -0
  45. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/billing.md +0 -0
  46. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/browse.md +0 -0
  47. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/calc.md +0 -0
  48. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/capabilities.md +0 -0
  49. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/capability.md +0 -0
  50. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/client-app.md +0 -0
  51. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/collection.md +0 -0
  52. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/completion.md +0 -0
  53. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/config.md +0 -0
  54. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/context.md +0 -0
  55. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dashboard-embed.md +0 -0
  56. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dashboard-published.md +0 -0
  57. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dashboard-qa.md +0 -0
  58. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dashboard-style.md +0 -0
  59. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dashboard-template.md +0 -0
  60. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dashboard.md +0 -0
  61. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dataset.md +0 -0
  62. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/doctor.md +0 -0
  63. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/external-key.md +0 -0
  64. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/file.md +0 -0
  65. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/folder.md +0 -0
  66. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/history.md +0 -0
  67. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/how.md +0 -0
  68. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/job.md +0 -0
  69. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/link.md +0 -0
  70. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/log.md +0 -0
  71. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/notification.md +0 -0
  72. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/parameter.md +0 -0
  73. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/project.md +0 -0
  74. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/recipe.md +0 -0
  75. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/report.md +0 -0
  76. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/resolve.md +0 -0
  77. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/run.md +0 -0
  78. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/schedule.md +0 -0
  79. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/schema.md +0 -0
  80. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/skill.md +0 -0
  81. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/snippet.md +0 -0
  82. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/support.md +0 -0
  83. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/template.md +0 -0
  84. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/token.md +0 -0
  85. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/trash.md +0 -0
  86. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/upgrade.md +0 -0
  87. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/user.md +0 -0
  88. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/version.md +0 -0
  89. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/view-transform.md +0 -0
  90. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/view.md +0 -0
  91. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/webhook.md +0 -0
  92. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/workflow.md +0 -0
  93. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/workspace.md +0 -0
  94. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/handoff.md +0 -0
  95. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/input.md +0 -0
  96. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/jobs-drafts.md +0 -0
  97. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/machine-output.md +0 -0
  98. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/operations.md +0 -0
  99. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/auth-scope.md +0 -0
  100. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/cleanup.md +0 -0
  101. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/dashboards.md +0 -0
  102. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/database-import.md +0 -0
  103. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/end-to-end.md +0 -0
  104. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/exports.md +0 -0
  105. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/file-import.md +0 -0
  106. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/index.md +0 -0
  107. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/need-action.md +0 -0
  108. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/resources.md +0 -0
  109. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/rest-api-import.md +0 -0
  110. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/scheduling.md +0 -0
  111. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/transforms.md +0 -0
  112. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/typed-etl-discovery.md +0 -0
  113. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/recovery.md +0 -0
  114. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/report-checklist.md +0 -0
  115. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/retention.md +0 -0
  116. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/safety.md +0 -0
  117. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/task-start.md +0 -0
  118. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/commands/__init__.py +0 -0
  119. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/commands/_lazy.py +0 -0
  120. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/commands/activity.py +0 -0
  121. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/commands/addon.py +0 -0
  122. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/commands/agent.py +0 -0
  123. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/commands/ai.py +0 -0
  124. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/commands/annotation.py +0 -0
  125. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/commands/auth.py +0 -0
  126. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/commands/automation.py +0 -0
  127. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/commands/automation_datasets.py +0 -0
  128. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/commands/batch.py +0 -0
  129. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/commands/billing.py +0 -0
  130. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/commands/browse.py +0 -0
  131. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/commands/calc.py +0 -0
  132. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/commands/capabilities.py +0 -0
  133. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/commands/capability.py +0 -0
  134. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/commands/client_app.py +0 -0
  135. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/commands/completion.py +0 -0
  136. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/commands/config.py +0 -0
  137. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/commands/connector.py +0 -0
  138. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/commands/context.py +0 -0
  139. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/commands/dashboard/__init__.py +0 -0
  140. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/commands/dashboard/_common.py +0 -0
  141. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/commands/dashboard/generated.py +0 -0
  142. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/commands/dashboard/workbook.py +0 -0
  143. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/commands/dataset/__init__.py +0 -0
  144. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/commands/dataset/_common.py +0 -0
  145. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/commands/dataset/create.py +0 -0
  146. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/commands/dataset/download.py +0 -0
  147. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/commands/dataset/find.py +0 -0
  148. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/commands/doctor.py +0 -0
  149. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/commands/external_key.py +0 -0
  150. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/commands/file.py +0 -0
  151. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/commands/folder.py +0 -0
  152. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/commands/history.py +0 -0
  153. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/commands/how.py +0 -0
  154. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/commands/job.py +0 -0
  155. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/commands/link.py +0 -0
  156. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/commands/notification.py +0 -0
  157. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/commands/parameter.py +0 -0
  158. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/commands/project.py +0 -0
  159. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/commands/recipe.py +0 -0
  160. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/commands/report.py +0 -0
  161. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/commands/resolve.py +0 -0
  162. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/commands/run.py +0 -0
  163. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/commands/schedule.py +0 -0
  164. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/commands/schema/__init__.py +0 -0
  165. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/commands/schema/examples.py +0 -0
  166. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/commands/schema/find.py +0 -0
  167. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/commands/skill.py +0 -0
  168. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/commands/snippet.py +0 -0
  169. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/commands/support.py +0 -0
  170. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/commands/support_template.py +0 -0
  171. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/commands/template.py +0 -0
  172. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/commands/trash.py +0 -0
  173. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/commands/upgrade.py +0 -0
  174. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/commands/user.py +0 -0
  175. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/commands/view/__init__.py +0 -0
  176. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/commands/view/_common.py +0 -0
  177. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/commands/view/checks.py +0 -0
  178. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/commands/view/column_checks.py +0 -0
  179. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/commands/view/columns.py +0 -0
  180. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/commands/view/data_read.py +0 -0
  181. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/commands/view/derivatives.py +0 -0
  182. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/commands/view/explore.py +0 -0
  183. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/commands/view/export.py +0 -0
  184. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/commands/view/export_dataset.py +0 -0
  185. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/commands/view/export_specialized.py +0 -0
  186. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/commands/view/export_update.py +0 -0
  187. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/commands/view/formatting.py +0 -0
  188. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/commands/view/join_check.py +0 -0
  189. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/commands/view/lifecycle.py +0 -0
  190. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/commands/view/listing.py +0 -0
  191. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/commands/view/pipeline.py +0 -0
  192. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/commands/view/upload.py +0 -0
  193. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/commands/view_drivers.py +0 -0
  194. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/commands/view_explore.py +0 -0
  195. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/commands/view_forecast.py +0 -0
  196. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/commands/view_ops/__init__.py +0 -0
  197. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/commands/view_ops/batch.py +0 -0
  198. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/commands/view_ops/crud.py +0 -0
  199. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/commands/view_ops/draft.py +0 -0
  200. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/commands/view_ops/transforms.py +0 -0
  201. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/commands/view_profile.py +0 -0
  202. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/commands/webhook.py +0 -0
  203. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/commands/workflow.py +0 -0
  204. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/commands/workspace.py +0 -0
  205. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/context/__init__.py +0 -0
  206. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/context/credentials.py +0 -0
  207. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/context/endpoint.py +0 -0
  208. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/context/keyring_backend.py +0 -0
  209. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/context/oauth.py +0 -0
  210. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/context/oauth_loopback.py +0 -0
  211. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/context/profiles.py +0 -0
  212. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/context/resolver.py +0 -0
  213. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/contracts/__init__.py +0 -0
  214. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/contracts/auth.py +0 -0
  215. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/discovery/__init__.py +0 -0
  216. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/discovery/limitations.json +0 -0
  217. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/discovery/next_commands.json +0 -0
  218. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/discovery/recipes.json +0 -0
  219. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/embed.py +0 -0
  220. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/errors/__init__.py +0 -0
  221. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/errors/envelope.py +0 -0
  222. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/manifest/__init__.py +0 -0
  223. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/manifest/loader.py +0 -0
  224. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/messages/__init__.py +0 -0
  225. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/output/__init__.py +0 -0
  226. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/output/emit.py +0 -0
  227. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/output/envelope.py +0 -0
  228. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/output/normalize.py +0 -0
  229. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/output/policy.py +0 -0
  230. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/output/progress.py +0 -0
  231. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/output/render.py +0 -0
  232. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/py.typed +0 -0
  233. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/runtime/__init__.py +0 -0
  234. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/runtime/bindings.py +0 -0
  235. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/runtime/compact.py +0 -0
  236. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/runtime/confirm.py +0 -0
  237. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/runtime/dataset_health.py +0 -0
  238. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/runtime/dispatch.py +0 -0
  239. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/runtime/dryrun.py +0 -0
  240. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/runtime/dryrun_targets.py +0 -0
  241. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/runtime/embed_pool.py +0 -0
  242. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/runtime/embed_scope.py +0 -0
  243. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/runtime/embedded.py +0 -0
  244. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/runtime/etag_store.py +0 -0
  245. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/runtime/executor.py +0 -0
  246. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/runtime/idempotency_servers.py +0 -0
  247. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/runtime/input_loader.py +0 -0
  248. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/runtime/intent_only.py +0 -0
  249. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/runtime/invocation.py +0 -0
  250. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/runtime/journal.py +0 -0
  251. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/runtime/labels.py +0 -0
  252. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/runtime/leaf.py +0 -0
  253. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/runtime/linecapture.py +0 -0
  254. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/runtime/local_paths.py +0 -0
  255. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/runtime/locked_files.py +0 -0
  256. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/runtime/new_data.py +0 -0
  257. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/runtime/next_commands.py +0 -0
  258. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/runtime/opens.py +0 -0
  259. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/runtime/options.py +0 -0
  260. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/runtime/parents.py +0 -0
  261. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/runtime/resource_ids.py +0 -0
  262. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/runtime/reveal.py +0 -0
  263. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/runtime/runlog.py +0 -0
  264. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/runtime/session.py +0 -0
  265. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/runtime/shared.py +0 -0
  266. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/runtime/state.py +0 -0
  267. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/runtime/strict.py +0 -0
  268. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/runtime/switches.py +0 -0
  269. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/runtime/token_scope.py +0 -0
  270. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/runtime/updates.py +0 -0
  271. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/runtime/validate.py +0 -0
  272. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/runtime/verify.py +0 -0
  273. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/runtime/view_dataset_cache.py +0 -0
  274. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/services/__init__.py +0 -0
  275. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/services/append_blank_columns.py +0 -0
  276. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/services/argspec.py +0 -0
  277. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/services/board_values.py +0 -0
  278. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/services/coerce.py +0 -0
  279. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/services/column_type_guard.py +0 -0
  280. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/services/command_contract.py +0 -0
  281. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/services/conditional_format.py +0 -0
  282. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/services/conditions.py +0 -0
  283. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/services/dashboard_figures.py +0 -0
  284. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/services/dashboard_filters.py +0 -0
  285. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/services/dashboard_pages.py +0 -0
  286. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/services/dashboard_review.py +0 -0
  287. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/services/data_profile.py +0 -0
  288. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/services/data_quality.py +0 -0
  289. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/services/delete_check.py +0 -0
  290. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/services/dispatch.py +0 -0
  291. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/services/draft_report.py +0 -0
  292. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/services/explore_card_edit.py +0 -0
  293. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/services/explore_cards.py +0 -0
  294. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/services/explore_to_figure.py +0 -0
  295. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/services/explore_to_image.py +0 -0
  296. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/services/factory.py +0 -0
  297. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/services/field_enums.py +0 -0
  298. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/services/folder_ids.py +0 -0
  299. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/services/held_change.py +0 -0
  300. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/services/input_fields.py +0 -0
  301. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/services/job_outcome.py +0 -0
  302. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/services/listing.py +0 -0
  303. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/services/local_files.py +0 -0
  304. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/services/local_time.py +0 -0
  305. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/services/mapping.py +0 -0
  306. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/services/openapi_types.py +0 -0
  307. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/services/paging.py +0 -0
  308. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/services/period_analysis.py +0 -0
  309. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/services/poll.py +0 -0
  310. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/services/positional_spec.py +0 -0
  311. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/services/positionals.py +0 -0
  312. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/services/protocol.py +0 -0
  313. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/services/read_memo.py +0 -0
  314. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/services/read_queries.py +0 -0
  315. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/services/schedule_dates.py +0 -0
  316. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/services/schema_diff.py +0 -0
  317. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/services/secret_files.py +0 -0
  318. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/services/sql_check.py +0 -0
  319. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/services/stored_stats.py +0 -0
  320. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/services/suggest.py +0 -0
  321. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/services/testing.py +0 -0
  322. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/services/text_dates.py +0 -0
  323. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/services/type_system.py +0 -0
  324. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/services/update_method.py +0 -0
  325. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/services/view_analysis.py +0 -0
  326. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/services/view_variants.py +0 -0
  327. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/services/write_impact.py +0 -0
  328. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/skills/__init__.py +0 -0
  329. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/skills/installer.py +0 -0
  330. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/skills/steering.py +0 -0
  331. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/mammoth_cli/testing.py +0 -0
  332. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/spec/manifests/commands/activity.yaml +0 -0
  333. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/spec/manifests/commands/addon.yaml +0 -0
  334. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/spec/manifests/commands/ai.yaml +0 -0
  335. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/spec/manifests/commands/annotation.yaml +0 -0
  336. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/spec/manifests/commands/auth.yaml +0 -0
  337. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/spec/manifests/commands/automation.yaml +0 -0
  338. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/spec/manifests/commands/batch.yaml +0 -0
  339. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/spec/manifests/commands/billing.yaml +0 -0
  340. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/spec/manifests/commands/browse.yaml +0 -0
  341. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/spec/manifests/commands/calc.yaml +0 -0
  342. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/spec/manifests/commands/capabilities.yaml +0 -0
  343. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/spec/manifests/commands/capability.yaml +0 -0
  344. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/spec/manifests/commands/client-app.yaml +0 -0
  345. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/spec/manifests/commands/collection.yaml +0 -0
  346. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/spec/manifests/commands/completion.yaml +0 -0
  347. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/spec/manifests/commands/config.yaml +0 -0
  348. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/spec/manifests/commands/context.yaml +0 -0
  349. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/spec/manifests/commands/dashboard.yaml +0 -0
  350. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/spec/manifests/commands/dataset.yaml +0 -0
  351. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/spec/manifests/commands/doctor.yaml +0 -0
  352. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/spec/manifests/commands/external-key.yaml +0 -0
  353. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/spec/manifests/commands/file.yaml +0 -0
  354. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/spec/manifests/commands/folder.yaml +0 -0
  355. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/spec/manifests/commands/history.yaml +0 -0
  356. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/spec/manifests/commands/how.yaml +0 -0
  357. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/spec/manifests/commands/job.yaml +0 -0
  358. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/spec/manifests/commands/link.yaml +0 -0
  359. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/spec/manifests/commands/log.yaml +0 -0
  360. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/spec/manifests/commands/notification.yaml +0 -0
  361. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/spec/manifests/commands/parameter.yaml +0 -0
  362. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/spec/manifests/commands/project.yaml +0 -0
  363. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/spec/manifests/commands/recipe.yaml +0 -0
  364. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/spec/manifests/commands/report.yaml +0 -0
  365. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/spec/manifests/commands/resolve.yaml +0 -0
  366. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/spec/manifests/commands/run.yaml +0 -0
  367. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/spec/manifests/commands/schedule.yaml +0 -0
  368. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/spec/manifests/commands/schema.yaml +0 -0
  369. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/spec/manifests/commands/skill.yaml +0 -0
  370. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/spec/manifests/commands/snippet.yaml +0 -0
  371. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/spec/manifests/commands/support.yaml +0 -0
  372. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/spec/manifests/commands/template.yaml +0 -0
  373. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/spec/manifests/commands/token.yaml +0 -0
  374. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/spec/manifests/commands/trash.yaml +0 -0
  375. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/spec/manifests/commands/upgrade.yaml +0 -0
  376. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/spec/manifests/commands/user.yaml +0 -0
  377. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/spec/manifests/commands/version.yaml +0 -0
  378. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/spec/manifests/commands/webhook.yaml +0 -0
  379. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/spec/manifests/commands/workflow.yaml +0 -0
  380. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/spec/manifests/commands/workspace.yaml +0 -0
  381. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/spec/manifests/compiled/openapi-operations.json +0 -0
  382. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/spec/manifests/compiled/output-schemas.json +0 -0
  383. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/spec/manifests/edits-target.source.yaml +0 -0
  384. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/spec/manifests/openapi-operations.yaml +0 -0
  385. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/spec/manifests/output-schemas.yaml +0 -0
  386. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/spec/manifests/schema-v1.json +0 -0
  387. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/spec/manifests/server-status.json +0 -0
  388. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/spec/openapi/metadata.json +0 -0
  389. {mammoth_cli-2.4.0 → mammoth_cli-2.4.2}/spec/openapi/openapi.json +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mammoth-cli
3
- Version: 2.4.0
3
+ Version: 2.4.2
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
@@ -20,7 +20,7 @@ Requires-Dist: certifi>=2026.10.19
20
20
  Requires-Dist: click<9,>=8.1
21
21
  Requires-Dist: jsonschema>=4.20
22
22
  Requires-Dist: keyring<26,>=25.7
23
- Requires-Dist: mammoth-io<0.9,>=0.8.53
23
+ Requires-Dist: mammoth-io<0.9,>=0.8.54
24
24
  Requires-Dist: platformdirs<5,>=4.10
25
25
  Requires-Dist: pydantic<3,>=2.12.5
26
26
  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.4.0"
9
+ __version__ = "2.4.2"
10
10
 
11
11
  # The versioned machine output envelope contract.
12
12
  SCHEMA_VERSION = 1
@@ -12,6 +12,14 @@ import os
12
12
  import sys
13
13
  from typing import Any
14
14
 
15
+ _SDK_MISSING = (
16
+ "mammoth: the mammoth-io SDK cannot be imported ({error}).\n"
17
+ "This install is broken: mammoth-io is missing, or it was installed from a checkout "
18
+ "that no longer exists.\n"
19
+ "Reinstall the CLI, which brings its own mammoth-io: "
20
+ "pipx install --force mammoth-cli (or pip install --force-reinstall mammoth-cli).\n"
21
+ )
22
+
15
23
 
16
24
  def main() -> Any:
17
25
  """Run the Mammoth CLI application.
@@ -30,11 +38,18 @@ def main() -> Any:
30
38
 
31
39
  sys.stdout.write(f"{__version__}\n")
32
40
  return 0
33
- from mammoth_cli.app import app
34
- from mammoth_cli.context import keyring_backend
35
-
36
- keyring_backend.enable()
37
- return app()
41
+ try:
42
+ from mammoth_cli.app import app
43
+ from mammoth_cli.context import keyring_backend
44
+
45
+ keyring_backend.enable()
46
+ return app()
47
+ except ModuleNotFoundError as exc:
48
+ # Commands import the SDK as they run, so the failure can surface inside app().
49
+ if exc.name is None or exc.name.split(".")[0] != "mammoth":
50
+ raise
51
+ sys.stderr.write(_SDK_MISSING.format(error=exc))
52
+ return 1
38
53
 
39
54
 
40
55
  if __name__ == "__main__": # pragma: no cover
@@ -127,8 +127,11 @@ _SUBGROUP_DESCRIPTIONS = {
127
127
  "connector connection": "Create, read, update and delete connector connections.",
128
128
  "connector draft": "Build a connector step by step: sources, gaps, sample, then save.",
129
129
  "connector draft source": "List a draft's sources, preview them and find join keys.",
130
+ "connector draft spec": "Read the spec an AI-built connector draft is building.",
130
131
  "connector ds-config": "Create, read, update and delete data-source configs.",
131
132
  "connector query": "Generate connector queries and check their status.",
133
+ "connector version": "Read stored versions of an AI-built connector.",
134
+ "connector version spec": "Read the spec of a stored AI connector version.",
132
135
  "context project": "Show, select or clear the active project.",
133
136
  "dashboard audience": "Read who views a dashboard and its digest.",
134
137
  "dashboard audience digest": "Read and set the audience digest of a dashboard.",
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: mammoth-cli
3
- version: 2.4.0
3
+ version: 2.4.2
4
4
  description: "Use Mammoth Analytics from a terminal: install or authenticate the CLI, discover its live command contract, and safely manage projects, data, views, pipelines (join, merge, pivot, filter, clean), dashboards, exports, and handoffs."
5
5
  ---
6
6
 
@@ -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 872 commands. 705 of them bind one of the 769 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`). 261 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 875 commands. 705 of them bind one of the 769 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`). 261 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,12 +1,12 @@
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 872; 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 875; 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
 
7
7
  - [activity](commands/activity.md) — 2 published commands
8
8
  - [addon](commands/addon.md) — 6 published commands
9
- - [agent](commands/agent.md) — 44 published commands
9
+ - [agent](commands/agent.md) — 45 published commands
10
10
  - [ai](commands/ai.md) — 5 published commands
11
11
  - [annotation](commands/annotation.md) — 5 published commands
12
12
  - [auth](commands/auth.md) — 5 published commands
@@ -21,7 +21,7 @@ Load only the applicable domain file:
21
21
  - [collection](commands/collection.md) — 21 published commands
22
22
  - [completion](commands/completion.md) — 2 published commands
23
23
  - [config](commands/config.md) — 4 published commands
24
- - [connector](commands/connector.md) — 40 published commands
24
+ - [connector](commands/connector.md) — 42 published commands
25
25
  - [context](commands/context.md) — 4 published commands
26
26
  - [dashboard-qa](commands/dashboard-qa.md) — 14 published commands
27
27
  - [dashboard-template](commands/dashboard-template.md) — 12 published commands
@@ -162,6 +162,16 @@ Result: `AgentAccessSettingsUpdateResult`; mutation `high_impact`, confirmation
162
162
 
163
163
  Status on release: untried; no live run recorded.
164
164
 
165
+ ### `agent.access.today`
166
+
167
+ Run: `mammoth agent access today`. Exact input fields: `mammoth schema get agent.access.today`.
168
+
169
+ Example: `mammoth agent access today`. Placeholders are illustrative; resolve IDs and input from observed reads.
170
+
171
+ Result: `AgentAccessTodayResult`; mutation `read`, confirmation `none`, wait policy `not_async`.
172
+
173
+ Status on release: untried; no live run recorded.
174
+
165
175
  ### `agent.access.tree`
166
176
 
167
177
  Run: `mammoth agent access tree`. Exact input fields: `mammoth schema get agent.access.tree`.
@@ -296,6 +296,16 @@ Result: `ConnectorDraftSourcePreviewResult`; mutation `benign_mutation`, confirm
296
296
 
297
297
  Status on release: untried; no live run recorded.
298
298
 
299
+ ### `connector.draft.spec.get`
300
+
301
+ Run: `mammoth connector draft spec get`. Exact input fields: `mammoth schema get connector.draft.spec.get`.
302
+
303
+ Example: `mammoth connector draft spec get 123`. Placeholders are illustrative; resolve IDs and input from observed reads.
304
+
305
+ Result: `ConnectorDraftSpecGetResult`; mutation `read`, confirmation `none`, wait policy `not_async`.
306
+
307
+ Status on release: untried; no live run recorded.
308
+
299
309
  ### `connector.draft.update`
300
310
 
301
311
  Run: `mammoth connector draft update`. Exact input fields: `mammoth schema get connector.draft.update`.
@@ -405,3 +415,13 @@ Example: `mammoth connector query status postgres prod-warehouse`. Placeholders
405
415
  Result: `ConnectorQueryStatusResult`; mutation `read`, confirmation `none`, wait policy `not_async`.
406
416
 
407
417
  Status on release: observed blocker — blocked_missing_fixture: No real connector connection exists in workspace 4 (connector list shows all is_added:false; connector active returns []) and creating one requires externa. Re-check before relying on it.
418
+
419
+ ### `connector.version.spec.get`
420
+
421
+ Run: `mammoth connector version spec get`. Exact input fields: `mammoth schema get connector.version.spec.get`.
422
+
423
+ Example: `mammoth connector version spec get isams_ab12cd34 123`. Placeholders are illustrative; resolve IDs and input from observed reads.
424
+
425
+ Result: `ConnectorVersionSpecGetResult`; mutation `read`, confirmation `none`, wait policy `not_async`.
426
+
427
+ Status on release: untried; no live run recorded.
@@ -23,6 +23,7 @@
23
23
  "agent.access.request.resolve": "Close a request. Owners, admins and the file's keeper.",
24
24
  "agent.access.settings.get": "Get the workspace's AI Agent controls. Managers only.",
25
25
  "agent.access.settings.update": "Change the workspace's AI Agent controls. Managers only.",
26
+ "agent.access.today": "Read the caller's Today page on the Ask home.",
26
27
  "agent.access.tree": "List the projects and files the Give access tree offers. Managers only.",
27
28
  "agent.action.delete": "Delete one object the chat created, by action id. Prompt or '--yes' required.",
28
29
  "agent.action.list": "List the changes one agent chat session made.",
@@ -185,6 +186,7 @@
185
186
  "connector.draft.source.join-candidates": "List the column pairs that could join a source onto the main one.",
186
187
  "connector.draft.source.list": "List a draft's sources.",
187
188
  "connector.draft.source.preview": "Read up to 'limit' rows of one source through its connection.",
189
+ "connector.draft.spec.get": "Read the spec an AI-built connector's draft is building, with secrets left out.",
188
190
  "connector.draft.update": "Change a draft.",
189
191
  "connector.ds-config.create": "Sample a data source config; REST 'query' is a JSON string. '--yes' always needed.",
190
192
  "connector.ds-config.delete": "Delete a data source configuration. Prompt or '--yes' required.",
@@ -196,6 +198,7 @@
196
198
  "connector.list": "List all available connectors (workspace-scoped, no project).",
197
199
  "connector.query.generate": "Generate a query for a connector using AI. 'query' (the intent) is required input.",
198
200
  "connector.query.status": "Get the status of an AI chat session for a connector connection.",
201
+ "connector.version.spec.get": "Read one stored version of the workspace's AI-built connector, secrets left out.",
199
202
  "context.project.clear": "Clear the active project id for one profile. Idempotent.",
200
203
  "context.project.status": "Report the resolved active project id for one profile.",
201
204
  "context.project.use": "Save a positive project id as the active project for one profile.",
@@ -1166,6 +1166,7 @@ _TARGETS: dict[str, str] = {
1166
1166
  "view.transform.window": "mammoth_cli.commands.view_ops.transforms:view_transform_window",
1167
1167
  # Operation-bound commands served by the manifest-driven generic handler.
1168
1168
  "agent.access.me": "mammoth_cli.commands.dashboard.generated:generated_dashboard",
1169
+ "agent.access.today": "mammoth_cli.commands.dashboard.generated:generated_dashboard",
1169
1170
  "agent.access.settings.get": "mammoth_cli.commands.dashboard.generated:generated_dashboard",
1170
1171
  "agent.access.settings.update": "mammoth_cli.commands.dashboard.generated:generated_dashboard",
1171
1172
  "agent.access.grant.list": "mammoth_cli.commands.dashboard.generated:generated_dashboard",
@@ -1229,6 +1230,9 @@ _TARGETS: dict[str, str] = {
1229
1230
  "connector.draft.source.preview": (
1230
1231
  "mammoth_cli.commands.dashboard.generated:generated_dashboard"
1231
1232
  ),
1233
+ # An AI-built connector's spec, secrets left out (mvc-service #7302).
1234
+ "connector.draft.spec.get": "mammoth_cli.commands.dashboard.generated:generated_dashboard",
1235
+ "connector.version.spec.get": "mammoth_cli.commands.dashboard.generated:generated_dashboard",
1232
1236
  # From URL: preview a link, follow or copy a link dataset, list the linked datasets.
1233
1237
  "dataset.from-url.preview": "mammoth_cli.commands.dashboard.generated:generated_dashboard",
1234
1238
  "dataset.from-url.follow": "mammoth_cli.commands.dashboard.generated:generated_dashboard",
@@ -35,7 +35,7 @@ from mammoth_cli.runtime.session import (
35
35
  open_service,
36
36
  require_project,
37
37
  )
38
- from mammoth_cli.services import read_queries
38
+ from mammoth_cli.services import medians, read_queries
39
39
  from mammoth_cli.services.conditions import CONDITION_KWARG, compile_condition
40
40
  from mammoth_cli.services.read_queries import ReadContext
41
41
 
@@ -198,6 +198,10 @@ def _run_aggregate(
198
198
  )
199
199
  kwargs[CONDITION_KWARG] = condition
200
200
  _forward_optional(document, kwargs, ("sequence",))
201
+ if medians.requested(document):
202
+ result = medians.aggregate(reads, fields, condition)
203
+ rows = read_queries.sort_locally(result["data"], sort)
204
+ return {**result, "data": rows[:limit] if limit else rows}
201
205
  if levels:
202
206
  response = read_queries.pivot_with_text_dates(
203
207
  reads,
@@ -222,7 +226,9 @@ def view_data_aggregate(invocation: Invocation) -> HandlerResult:
222
226
  Read-only: computes and returns the aggregated result without adding a
223
227
  task to the view's pipeline or otherwise changing it. Pass exactly one of
224
228
  ``aggregations`` (a PIVOT; ``group_by`` is optional) or ``metric`` (a
225
- METRIC). ``function`` is one of SUM, COUNT, AVG, MIN, MAX, STDDEV, DISTINCT_COUNT. An optional
229
+ METRIC). ``function`` is one of SUM, COUNT, AVG, MIN, MAX, STDDEV, DISTINCT_COUNT, MEDIAN.
230
+ MEDIAN is exact, over a NUMERIC column's non-blank values (``median_note`` says how many
231
+ blank rows it left out), and goes in a read of its own. An optional
226
232
  ``condition`` filters rows before aggregating, and ``sequence`` pins the
227
233
  read to a pipeline step (default: latest). ``order_by`` (result labels,
228
234
  ``"Total desc"``) with ``top`` ranks the groups on the backend (and adds
@@ -308,9 +314,13 @@ def aggregate_on(
308
314
  reads = source.reads
309
315
  column_types = reads.column_types
310
316
  display_to_internal = reads.display_to_internal
311
- levels: dict[int, str] = {}
312
- if "aggregations" in document or "group_by" in document:
313
- levels = read_queries.text_date_group_levels(document.get("group_by"), column_types)
317
+ pivot = "aggregations" in document or "group_by" in document
318
+ levels: dict[int, str] = (
319
+ read_queries.text_date_group_levels(document.get("group_by"), column_types) if pivot else {}
320
+ )
321
+ if medians.requested(document):
322
+ medians.check(document, column_types, bool(levels))
323
+ if pivot:
314
324
  fields, as_map = _build_pivot_fields(
315
325
  _plain_text_date_groups(document, levels, column_types), display_to_internal
316
326
  )
@@ -125,9 +125,10 @@ def wait_for_followon_job(service: Any, write_result: Any) -> dict[str, Any] | N
125
125
  try:
126
126
  service.wait_if_job(write_result)
127
127
  except CliError as exc:
128
- if exc.code == "timeout":
129
- # Out of time is not a failed job: it is still running, the change was
130
- # accepted, and replaying it would apply the step twice.
128
+ if exc.code in ("timeout", "retryable_error", "outcome_unknown"):
129
+ # Out of time, or a job the CLI could not read, is not a failed job: it may
130
+ # still be running or done, the change was accepted, and replaying it would
131
+ # apply the step twice.
131
132
  pending: dict[str, Any] = {
132
133
  "execution_state": UNFINISHED_STATE,
133
134
  "wait_error": exc.message,
@@ -135,6 +136,12 @@ def wait_for_followon_job(service: Any, write_result: Any) -> dict[str, Any] | N
135
136
  for key in ("job_id", "resume"):
136
137
  if exc.details.get(key) is not None:
137
138
  pending[key] = exc.details[key]
139
+ if "job_id" not in pending:
140
+ job_id = next(
141
+ (write_result[k] for k in ("future_id", "job_id") if k in write_result), None
142
+ )
143
+ pending["job_id"] = job_id
144
+ pending.setdefault("resume", f"mammoth job wait {job_id}")
138
145
  return pending
139
146
  return {"execution_state": JOB_FAILED_STATE, "wait_error": exc.message}
140
147
  return None
@@ -717,6 +717,20 @@ COMMAND_DISCOVERY_PURPOSES = {
717
717
  "build an AI connector custom connector for our own internal api or an unsupported "
718
718
  "source; sends the request to the builder agent"
719
719
  ),
720
+ "agent.access.today": (
721
+ "read the today page, the ask home page, its suggestions, today's blocks headline "
722
+ "numbers, is a new page being written, updating, writing, empty, check a deploy of "
723
+ "the today page"
724
+ ),
725
+ "connector.draft.spec.get": (
726
+ "read the spec of an AI connector draft, how a custom connector table is read, paging "
727
+ "type page size, records path, request path, data root path, why a save repeats the "
728
+ "same page"
729
+ ),
730
+ "connector.version.spec.get": (
731
+ "read a stored version of an AI custom connector, its spec paging type page size "
732
+ "records path request path, which version a dataset runs, compare connector versions"
733
+ ),
720
734
  "file.set-password": "locked password protected file pdf excel unlock",
721
735
  "file.update": (
722
736
  "pdf extraction method choose select pending tables only all content custom "
@@ -5,7 +5,7 @@ The server already logs every request it serves, with its path, status, latency,
5
5
  ``mammoth-cli/<version>``; this module adds a comment naming the command, so the log can
6
6
  answer which commands run, from which surface, by which agent, and how they end:
7
7
 
8
- mammoth-cli/2.4.0 (cmd=view.data.get; inv=3f9c2a1b7d4e; surface=run; agent=claude-code)
8
+ mammoth-cli/2.4.2 (cmd=view.data.get; inv=3f9c2a1b7d4e; surface=run; agent=claude-code)
9
9
 
10
10
  ``inv`` is the invocation id: every request one command makes carries the same one, and the
11
11
  local run log (:mod:`mammoth_cli.runtime.runlog`) records it as its ``run_id``, so a local
@@ -0,0 +1,145 @@
1
+ """MEDIAN for ``view data aggregate``, computed exactly in the CLI.
2
+
3
+ The backend's volatile aggregate has no MEDIAN. Paging sorted rows to find the
4
+ middle one is slow and goes wrong on blanks, which sort last but still count. So
5
+ the CLI asks for one COUNT per stored value of the column (per group), drops the
6
+ blank values, and takes the middle of what is left. The result says how many
7
+ blank rows were skipped.
8
+ """
9
+
10
+ from __future__ import annotations
11
+
12
+ from collections import defaultdict
13
+ from typing import Any
14
+
15
+ from mammoth_cli.errors.envelope import CODE_INVALID_ARGUMENTS, EXIT_USAGE, CliError
16
+ from mammoth_cli.services.conditions import CONDITION_KWARG
17
+ from mammoth_cli.services.read_queries import ReadContext
18
+
19
+ MEDIAN = "MEDIAN"
20
+ #: The backend returns at most this many grouped rows.
21
+ BACKEND_ROW_CAP = 40000
22
+
23
+
24
+ def _fail(message: str, hint: str = "") -> CliError:
25
+ return CliError(code=CODE_INVALID_ARGUMENTS, message=message, exit_status=EXIT_USAGE, hint=hint)
26
+
27
+
28
+ def _items(document: dict[str, Any]) -> list[dict[str, Any]]:
29
+ if isinstance(document.get("metric"), dict):
30
+ return [document["metric"]]
31
+ aggregations = document.get("aggregations")
32
+ return (
33
+ [a for a in aggregations if isinstance(a, dict)] if isinstance(aggregations, list) else []
34
+ )
35
+
36
+
37
+ def requested(document: dict[str, Any]) -> bool:
38
+ """Whether the read asks for a MEDIAN."""
39
+ return any(str(item.get("function") or "").upper() == MEDIAN for item in _items(document))
40
+
41
+
42
+ def check(document: dict[str, Any], column_types: dict[str, str], text_date_groups: bool) -> None:
43
+ """Refuse a MEDIAN read this path cannot answer exactly, before any query."""
44
+ items = _items(document)
45
+ if any(str(item.get("function") or "").upper() != MEDIAN for item in items):
46
+ raise _fail(
47
+ "MEDIAN cannot be mixed with other functions in one read.",
48
+ "Run the MEDIAN aggregations in their own 'view data aggregate' call.",
49
+ )
50
+ if text_date_groups:
51
+ raise _fail(
52
+ "MEDIAN cannot be grouped by a date 'part', or by a 'truncate' of a TEXT date.",
53
+ "Group by a DATE column with 'truncate', or convert the TEXT date with "
54
+ "'view transform convert-type'.",
55
+ )
56
+ for item in items:
57
+ column = item.get("column")
58
+ if not column:
59
+ raise _fail("MEDIAN needs a 'column'.")
60
+ kind = column_types.get(str(column), "")
61
+ if kind not in ("", "NUMERIC"):
62
+ raise _fail(f"MEDIAN needs a NUMERIC column; '{column}' is {kind}.")
63
+
64
+
65
+ def _number(value: Any) -> float | None:
66
+ try:
67
+ return None if value is None or isinstance(value, bool) else float(value)
68
+ except (TypeError, ValueError):
69
+ return None
70
+
71
+
72
+ def weighted_median(counts: list[tuple[float, int]]) -> float | None:
73
+ """The median of values given as (value, how many rows hold it); None when empty."""
74
+ ordered = sorted(counts)
75
+ total = sum(n for _, n in ordered)
76
+ if total == 0:
77
+ return None
78
+ wanted = [(total - 1) // 2, total // 2]
79
+ found: list[float] = []
80
+ seen = 0
81
+ for value, n in ordered:
82
+ found.extend(value for position in wanted if seen <= position < seen + n)
83
+ seen += n
84
+ return (found[0] + found[1]) / 2
85
+
86
+
87
+ def _counts_by_group(
88
+ reads: ReadContext, column: str, group_by: list[Any], condition: Any
89
+ ) -> tuple[dict[tuple[Any, ...], list[tuple[float, int]]], int]:
90
+ """(value, rows) per group for one column, and how many blank rows were left out."""
91
+ fields: dict[str, Any] = {
92
+ "aggregations": [{"function": "COUNT", "as_name": "n"}],
93
+ "group_by": [*group_by, column],
94
+ "limit": BACKEND_ROW_CAP,
95
+ }
96
+ if condition is not None:
97
+ fields[CONDITION_KWARG] = condition
98
+ rows = reads.query(**fields).get("data") or []
99
+ if len(rows) >= BACKEND_ROW_CAP:
100
+ raise _fail(
101
+ "Too many distinct values to take an exact median "
102
+ f"(the backend returns at most {BACKEND_ROW_CAP} groups).",
103
+ "Narrow the read with a condition.",
104
+ )
105
+ width = len(group_by)
106
+ counts: dict[tuple[Any, ...], list[tuple[float, int]]] = defaultdict(list)
107
+ blank = 0
108
+ for row in rows:
109
+ key = tuple(row.get(f"group_{i}") for i in range(width))
110
+ value, n = _number(row.get(f"group_{width}")), int(row.get("agg_0") or 0)
111
+ bucket = counts[key] # a group whose values are all blank still gets a row
112
+ if value is None:
113
+ blank += n
114
+ else:
115
+ bucket.append((value, n))
116
+ return counts, blank
117
+
118
+
119
+ def aggregate(reads: ReadContext, fields: dict[str, Any], condition: Any) -> dict[str, Any]:
120
+ """Answer a MEDIAN read with rows shaped like the backend's (``group_N``, ``agg_N``/``metric``).
121
+
122
+ ``fields`` holds the resolved SDK kwargs (internal column names).
123
+ """
124
+ group_by = list(fields.get("group_by") or [])
125
+ items = [fields["metric"]] if "metric" in fields else list(fields["aggregations"])
126
+ keys = ["metric"] if "metric" in fields else [f"agg_{i}" for i in range(len(items))]
127
+ merged: dict[tuple[Any, ...], dict[str, Any]] = {}
128
+ skipped: dict[str, int] = {}
129
+ for key, item in zip(keys, items, strict=True):
130
+ counts, blank = _counts_by_group(reads, item["column"], group_by, condition)
131
+ if not group_by:
132
+ counts.setdefault((), [])
133
+ for group, values in counts.items():
134
+ row = merged.setdefault(group, {f"group_{i}": v for i, v in enumerate(group)})
135
+ row[key] = weighted_median(values)
136
+ if blank:
137
+ skipped[item["as_name"]] = blank
138
+ rows = list(merged.values())
139
+ result: dict[str, Any] = {"data": rows, "row_count": len(rows)}
140
+ if skipped:
141
+ named = ", ".join(f"{label}: {n}" for label, n in skipped.items())
142
+ result["median_note"] = (
143
+ f"MEDIAN is over non-blank values only; blank rows left out ({named})."
144
+ )
145
+ return result
@@ -297,6 +297,16 @@ POSITIONAL_OVERRIDES: dict[str, tuple[PositionalSpec, ...]] = {
297
297
  example_value="deals_2026-10.csv",
298
298
  ),
299
299
  ),
300
+ "connector.version.spec.get": (
301
+ PositionalSpec(
302
+ name="connector_slug",
303
+ type=str,
304
+ required=True,
305
+ help="The connector's slug, as 'connector draft spec get' shows it.",
306
+ example_value="isams_ab12cd34",
307
+ ),
308
+ PositionalSpec(name="version", type=int, required=True, help="The version number, from 1."),
309
+ ),
300
310
  "dashboard.chat.attachment.upload": (
301
311
  PositionalSpec(name="dashboard_id", type=int, required=True, help="ID of the dashboard."),
302
312
  PositionalSpec(
@@ -214,10 +214,6 @@ class SdkMammothService:
214
214
  kwargs["job_timeout"] = job_timeout
215
215
  if pipeline_timeout is not None:
216
216
  kwargs["pipeline_timeout"] = pipeline_timeout
217
- if embedded.active():
218
- # The server answering is this process's own worker: a retry of a 5xx read
219
- # adds load to the worker that is already overloaded.
220
- kwargs["retry_gateway_errors"] = False
221
217
  credential: dict[str, Any] = (
222
218
  {"token_provider": auth.token_provider, "workspace_id": auth.workspace_id}
223
219
  if auth.token_provider is not None
@@ -1,13 +1,13 @@
1
1
  [project]
2
2
  name = "mammoth-cli"
3
- version = "2.4.0"
3
+ version = "2.4.2"
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.53,<0.9)",
10
+ "mammoth-io (>=0.8.54,<0.9)",
11
11
  "typer (>=0.27,<0.28)",
12
12
  "click (>=8.1,<9)",
13
13
  "rich (>=15,<16)",
@@ -380,6 +380,20 @@ commands:
380
380
  kind: object
381
381
  - command_id: agent.access.me
382
382
  output_schema: openapi
383
+ - command_id: agent.access.today
384
+ output_schema:
385
+ type: object
386
+ required: [state, updating, blocks]
387
+ properties:
388
+ state:
389
+ type: string
390
+ enum: [page, writing, empty]
391
+ updating:
392
+ type: boolean
393
+ blocks:
394
+ type: array
395
+ items:
396
+ type: object
383
397
  - command_id: agent.access.people
384
398
  output_schema: openapi
385
399
  known_restrictions: Only a manager of the workspace's AI Agent settings can list the people.
@@ -242,6 +242,28 @@ commands:
242
242
  `limit_requested`, `limit_applied` and `source_row_count`. A preview is a sample; save the draft
243
243
  to read every row.
244
244
  no_readback: returns the source's first rows itself; nothing is saved for a read to show
245
+ - command_id: connector.draft.spec.get
246
+ output_schema:
247
+ type: object
248
+ required: [spec, tables]
249
+ properties:
250
+ spec:
251
+ type: object
252
+ tables:
253
+ type: array
254
+ items:
255
+ type: object
256
+ - command_id: connector.version.spec.get
257
+ output_schema:
258
+ type: object
259
+ required: [spec, tables]
260
+ properties:
261
+ spec:
262
+ type: object
263
+ tables:
264
+ type: array
265
+ items:
266
+ type: object
245
267
  - command_id: connector.draft.update
246
268
  output_schema:
247
269
  ref: WriteResult
@@ -291,7 +291,8 @@ commands:
291
291
  known_restrictions: 'Read-only: computes and returns an aggregated result without adding a task to the
292
292
  view''s pipeline or otherwise changing it. Pass exactly one of ''aggregations'' (a PIVOT group-by;
293
293
  ''group_by'' is optional) or ''metric'' (a single METRIC value). ''function'' is one of SUM, COUNT,
294
- AVG, MIN, MAX, STDDEV, DISTINCT_COUNT. A group_by item is a column name, or {"column": C, "truncate":
294
+ AVG, MIN, MAX, STDDEV, DISTINCT_COUNT, MEDIAN. MEDIAN is exact over a NUMERIC column''s non-blank
295
+ values (median_note counts the blank rows left out) and goes in a read of its own. A group_by item is a column name, or {"column": C, "truncate":
295
296
  DAY|WEEK|MONTH|QUARTER|YEAR} to bucket a DATE (a trend over time), or {"column": C, "resolution":
296
297
  N} to bucket a NUMERIC; grouping by a raw date gives one row per day. A metric is a number: only COUNT
297
298
  and DISTINCT_COUNT work on a DATE or TEXT column. For one column''s trend, top values or spread, view