mammoth-cli 2.2.95__tar.gz → 2.2.96__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.
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/PKG-INFO +3 -2
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/__init__.py +1 -1
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/app.py +47 -23
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/bundled_skill/mammoth-cli/SKILL.md +1 -1
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dashboard-template.md +2 -2
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/bundled_skill/mammoth-cli/references/machine-output.md +6 -3
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/bundled_skill/mammoth-cli/references/recovery.md +1 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/commands/capability.py +8 -1
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/commands/registry.py +2 -1
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/commands/run.py +4 -3
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/commands/schema.py +20 -4
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/context/resolver.py +6 -10
- mammoth_cli-2.2.96/mammoth_cli/embed.py +379 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/errors/envelope.py +21 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/manifest/loader.py +35 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/output/envelope.py +4 -0
- mammoth_cli-2.2.96/mammoth_cli/runtime/embed_pool.py +230 -0
- mammoth_cli-2.2.96/mammoth_cli/runtime/embedded.py +171 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/runtime/executor.py +73 -16
- mammoth_cli-2.2.96/mammoth_cli/runtime/local_paths.py +41 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/runtime/shared.py +23 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/runtime/token_scope.py +14 -1
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/services/positionals.py +33 -1
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/services/sdk_service.py +69 -13
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/testing.py +1 -1
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/pyproject.toml +3 -2
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/spec/manifests/commands/connector.yaml +1 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/spec/manifests/commands/dashboard.yaml +8 -2
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/spec/manifests/commands/file.yaml +2 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/spec/manifests/commands/support.yaml +2 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/spec/manifests/commands/user.yaml +1 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/spec/manifests/compiled/commands.json +15 -15
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/spec/manifests/compiled/openapi-operations.json +28 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/spec/manifests/compiled/sdk-methods.json +2 -1
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/spec/manifests/openapi-operations.yaml +615 -1
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/spec/manifests/schema-v1.json +2 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/spec/manifests/sdk-methods.yaml +14 -2
- mammoth_cli-2.2.96/spec/manifests/server-status.json +14 -0
- mammoth_cli-2.2.96/spec/openapi/metadata.json +10 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/spec/openapi/openapi.json +1 -1
- mammoth_cli-2.2.95/mammoth_cli/embed.py +0 -198
- mammoth_cli-2.2.95/mammoth_cli/runtime/embedded.py +0 -70
- mammoth_cli-2.2.95/spec/openapi/metadata.json +0 -10
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/.gitignore +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/LICENSE +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/README.md +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/__main__.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/bundled_skill/mammoth-cli/references/about-mammoth.md +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/bundled_skill/mammoth-cli/references/auth.md +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/bundled_skill/mammoth-cli/references/capabilities-misc.md +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/bundled_skill/mammoth-cli/references/capabilities.md +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/bundled_skill/mammoth-cli/references/command-index.md +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/activity.md +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/addon.md +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/agent.md +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/ai.md +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/annotation.md +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/auth.md +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/automation.md +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/batch.md +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/billing.md +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/browse.md +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/calc.md +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/capabilities.md +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/capability.md +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/client-app.md +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/collection.md +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/completion.md +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/config.md +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/connector.md +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/context.md +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dashboard-embed.md +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dashboard-published.md +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dashboard-qa.md +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dashboard-style.md +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dashboard.md +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dataset.md +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/doctor.md +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/external-key.md +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/file.md +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/folder.md +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/how.md +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/job.md +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/link.md +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/log.md +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/notification.md +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/parameter.md +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/project.md +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/report.md +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/resolve.md +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/run.md +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/schedule.md +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/schema.md +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/skill.md +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/snippet.md +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/support.md +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/template.md +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/token.md +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/trash.md +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/upgrade.md +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/user.md +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/version.md +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/view-transform.md +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/view.md +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/webhook.md +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/workflow.md +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/workspace.md +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/bundled_skill/mammoth-cli/references/handoff.md +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/bundled_skill/mammoth-cli/references/input.md +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/bundled_skill/mammoth-cli/references/jobs-drafts.md +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/bundled_skill/mammoth-cli/references/operations.md +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/auth-scope.md +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/cleanup.md +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/dashboards.md +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/database-import.md +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/end-to-end.md +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/exports.md +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/file-import.md +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/index.md +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/need-action.md +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/resources.md +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/rest-api-import.md +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/scheduling.md +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/transforms.md +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/typed-etl-discovery.md +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/bundled_skill/mammoth-cli/references/report-checklist.md +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/bundled_skill/mammoth-cli/references/retention.md +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/bundled_skill/mammoth-cli/references/safety.md +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/bundled_skill/mammoth-cli/references/task-start.md +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/commands/__init__.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/commands/_lazy.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/commands/activity.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/commands/addon.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/commands/agent.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/commands/ai.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/commands/annotation.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/commands/auth.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/commands/automation.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/commands/batch.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/commands/billing.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/commands/browse.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/commands/calc.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/commands/capabilities.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/commands/client_app.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/commands/completion.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/commands/config.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/commands/connector.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/commands/context.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/commands/dashboard.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/commands/dataset.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/commands/doctor.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/commands/external_key.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/commands/file.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/commands/folder.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/commands/help_summaries.json +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/commands/how.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/commands/job.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/commands/link.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/commands/notification.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/commands/parameter.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/commands/project.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/commands/report.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/commands/resolve.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/commands/schedule.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/commands/skill.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/commands/snippet.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/commands/support.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/commands/template.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/commands/trash.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/commands/upgrade.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/commands/user.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/commands/view/__init__.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/commands/view/_common.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/commands/view/aggregate.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/commands/view/checks.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/commands/view/column_checks.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/commands/view/columns.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/commands/view/data_read.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/commands/view/derivatives.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/commands/view/explore.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/commands/view/export.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/commands/view/export_dataset.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/commands/view/export_specialized.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/commands/view/formatting.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/commands/view/join_check.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/commands/view/lifecycle.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/commands/view/listing.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/commands/view/pipeline.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/commands/view/settle.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/commands/view/upload.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/commands/view_drivers.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/commands/view_explore.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/commands/view_forecast.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/commands/view_ops.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/commands/view_profile.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/commands/webhook.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/commands/workflow.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/commands/workspace.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/context/__init__.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/context/credentials.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/context/endpoint.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/context/keyring_backend.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/context/oauth.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/context/oauth_loopback.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/context/profiles.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/contracts/__init__.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/contracts/auth.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/discovery/__init__.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/discovery/limitations.json +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/discovery/next_commands.json +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/discovery/recipes.json +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/errors/__init__.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/manifest/__init__.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/messages/__init__.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/output/__init__.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/output/normalize.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/output/policy.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/output/progress.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/output/render.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/py.typed +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/runtime/__init__.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/runtime/compact.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/runtime/confirm.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/runtime/dataset_health.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/runtime/dryrun.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/runtime/dryrun_targets.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/runtime/input_loader.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/runtime/intent_only.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/runtime/invocation.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/runtime/labels.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/runtime/linecapture.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/runtime/locked_files.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/runtime/new_data.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/runtime/next_commands.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/runtime/opens.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/runtime/options.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/runtime/parents.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/runtime/runlog.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/runtime/session.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/runtime/state.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/runtime/strict.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/runtime/updates.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/runtime/validate.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/runtime/verify.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/runtime/view_dataset_cache.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/services/__init__.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/services/append_blank_columns.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/services/argspec.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/services/board_values.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/services/coerce.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/services/column_type_guard.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/services/command_contract.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/services/conditional_format.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/services/conditions.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/services/dashboard_figures.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/services/dashboard_filters.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/services/dashboard_pages.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/services/dashboard_review.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/services/data_profile.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/services/data_quality.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/services/delete_check.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/services/dispatch.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/services/explore_card_edit.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/services/explore_cards.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/services/explore_to_figure.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/services/explore_to_image.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/services/factory.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/services/field_enums.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/services/folder_ids.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/services/held_change.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/services/input_fields.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/services/job_outcome.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/services/listing.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/services/local_files.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/services/local_time.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/services/mapping.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/services/openapi_types.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/services/paging.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/services/period_analysis.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/services/poll.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/services/protocol.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/services/read_memo.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/services/read_queries.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/services/schema_diff.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/services/sql_check.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/services/stored_stats.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/services/suggest.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/services/testing.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/services/text_dates.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/services/type_system.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/services/view_analysis.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/services/view_variants.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/services/write_impact.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/skills/__init__.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/skills/installer.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/mammoth_cli/skills/steering.py +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/spec/manifests/commands/activity.yaml +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/spec/manifests/commands/addon.yaml +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/spec/manifests/commands/agent.yaml +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/spec/manifests/commands/ai.yaml +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/spec/manifests/commands/annotation.yaml +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/spec/manifests/commands/auth.yaml +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/spec/manifests/commands/automation.yaml +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/spec/manifests/commands/batch.yaml +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/spec/manifests/commands/billing.yaml +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/spec/manifests/commands/browse.yaml +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/spec/manifests/commands/calc.yaml +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/spec/manifests/commands/capabilities.yaml +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/spec/manifests/commands/capability.yaml +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/spec/manifests/commands/client-app.yaml +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/spec/manifests/commands/collection.yaml +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/spec/manifests/commands/completion.yaml +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/spec/manifests/commands/config.yaml +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/spec/manifests/commands/context.yaml +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/spec/manifests/commands/dataset.yaml +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/spec/manifests/commands/doctor.yaml +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/spec/manifests/commands/external-key.yaml +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/spec/manifests/commands/folder.yaml +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/spec/manifests/commands/how.yaml +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/spec/manifests/commands/job.yaml +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/spec/manifests/commands/link.yaml +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/spec/manifests/commands/log.yaml +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/spec/manifests/commands/notification.yaml +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/spec/manifests/commands/parameter.yaml +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/spec/manifests/commands/project.yaml +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/spec/manifests/commands/report.yaml +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/spec/manifests/commands/resolve.yaml +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/spec/manifests/commands/run.yaml +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/spec/manifests/commands/schedule.yaml +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/spec/manifests/commands/schema.yaml +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/spec/manifests/commands/skill.yaml +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/spec/manifests/commands/snippet.yaml +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/spec/manifests/commands/template.yaml +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/spec/manifests/commands/token.yaml +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/spec/manifests/commands/trash.yaml +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/spec/manifests/commands/upgrade.yaml +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/spec/manifests/commands/version.yaml +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/spec/manifests/commands/view.yaml +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/spec/manifests/commands/webhook.yaml +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/spec/manifests/commands/workflow.yaml +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/spec/manifests/commands/workspace.yaml +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/spec/manifests/edits-target.source.yaml +0 -0
- {mammoth_cli-2.2.95 → mammoth_cli-2.2.96}/spec/manifests/sdk-catalog.source.yaml +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mammoth-cli
|
|
3
|
-
Version: 2.2.
|
|
3
|
+
Version: 2.2.96
|
|
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
|
|
@@ -16,9 +16,10 @@ Classifier: Programming Language :: Python :: 3.13
|
|
|
16
16
|
Classifier: Programming Language :: Python :: 3.14
|
|
17
17
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
18
18
|
Requires-Python: <3.15,>=3.12
|
|
19
|
+
Requires-Dist: certifi>=2026.10.19
|
|
19
20
|
Requires-Dist: jsonschema>=4.20
|
|
20
21
|
Requires-Dist: keyring<26,>=25.7
|
|
21
|
-
Requires-Dist: mammoth-io<0.9,>=0.8.
|
|
22
|
+
Requires-Dist: mammoth-io<0.9,>=0.8.49
|
|
22
23
|
Requires-Dist: platformdirs<5,>=4.10
|
|
23
24
|
Requires-Dist: pydantic<3,>=2.12.5
|
|
24
25
|
Requires-Dist: pyyaml<7,>=6
|
|
@@ -19,6 +19,7 @@ import inspect
|
|
|
19
19
|
import json
|
|
20
20
|
import re
|
|
21
21
|
import sys
|
|
22
|
+
import threading
|
|
22
23
|
from collections.abc import Callable, Sequence
|
|
23
24
|
from dataclasses import replace
|
|
24
25
|
from difflib import get_close_matches
|
|
@@ -1624,6 +1625,10 @@ def _lazy_help_command(command_id: str) -> type[TyperCommand]:
|
|
|
1624
1625
|
return LazyHelpCommand
|
|
1625
1626
|
|
|
1626
1627
|
|
|
1628
|
+
#: Guards the lazy builds below. Re-entrant: building a command can build another.
|
|
1629
|
+
_BUILD_LOCK = threading.RLock()
|
|
1630
|
+
|
|
1631
|
+
|
|
1627
1632
|
def _unbuilt_leaf() -> None:
|
|
1628
1633
|
"""Registration placeholder: a lazy leaf takes its real callback from the built command."""
|
|
1629
1634
|
|
|
@@ -1640,24 +1645,33 @@ def _lazy_leaf_command(command_id: str) -> type[TyperCommand]:
|
|
|
1640
1645
|
_built: _ClickCommand | None = None
|
|
1641
1646
|
|
|
1642
1647
|
def _real(self) -> _ClickCommand:
|
|
1643
|
-
|
|
1644
|
-
|
|
1645
|
-
|
|
1646
|
-
|
|
1647
|
-
|
|
1648
|
-
|
|
1649
|
-
|
|
1650
|
-
|
|
1651
|
-
|
|
1652
|
-
|
|
1653
|
-
|
|
1654
|
-
|
|
1655
|
-
|
|
1656
|
-
|
|
1657
|
-
|
|
1658
|
-
|
|
1659
|
-
|
|
1660
|
-
|
|
1648
|
+
built = self._built
|
|
1649
|
+
if built is not None:
|
|
1650
|
+
return built
|
|
1651
|
+
# Double-checked: a host's worker threads may reach a first use together.
|
|
1652
|
+
with _BUILD_LOCK:
|
|
1653
|
+
built = self._built
|
|
1654
|
+
if built is None:
|
|
1655
|
+
built = self._built = self._build()
|
|
1656
|
+
return built
|
|
1657
|
+
|
|
1658
|
+
def _build(self) -> _ClickCommand:
|
|
1659
|
+
from typer.models import CommandInfo
|
|
1660
|
+
|
|
1661
|
+
info = CommandInfo(
|
|
1662
|
+
name=self.name,
|
|
1663
|
+
callback=_build_leaf(command_id),
|
|
1664
|
+
# The help text is read from this class's lazy ``help`` property; building
|
|
1665
|
+
# it here would import the contract and schema layers on every run.
|
|
1666
|
+
help="",
|
|
1667
|
+
rich_help_panel=self.rich_help_panel,
|
|
1668
|
+
context_settings=_leaf_context_settings(command_id),
|
|
1669
|
+
)
|
|
1670
|
+
return typer.main.get_command_from_info(
|
|
1671
|
+
info,
|
|
1672
|
+
pretty_exceptions_short=_LAZY_SETTINGS["pretty_exceptions_short"],
|
|
1673
|
+
rich_markup_mode=self.rich_markup_mode,
|
|
1674
|
+
)
|
|
1661
1675
|
|
|
1662
1676
|
@property
|
|
1663
1677
|
def params(self) -> list[_ClickParameter]:
|
|
@@ -1919,7 +1933,9 @@ def registered_command_paths() -> set[str]:
|
|
|
1919
1933
|
return paths
|
|
1920
1934
|
|
|
1921
1935
|
|
|
1922
|
-
|
|
1936
|
+
_ROOT_COMMAND: Any = None
|
|
1937
|
+
|
|
1938
|
+
|
|
1923
1939
|
def _root_click_command() -> Any:
|
|
1924
1940
|
"""Build (once) and cache the fully resolved Click command tree.
|
|
1925
1941
|
|
|
@@ -1928,11 +1944,19 @@ def _root_click_command() -> Any:
|
|
|
1928
1944
|
that is expensive enough that recomputing it per lookup made a full sweep
|
|
1929
1945
|
over every command (see the contract test) take minutes. Cached because
|
|
1930
1946
|
the tree is fixed for the process lifetime (:data:`app` is built once at
|
|
1931
|
-
import time).
|
|
1947
|
+
import time). Built under a lock, so a host's threads making their first call
|
|
1948
|
+
together share one tree instead of each building their own.
|
|
1932
1949
|
"""
|
|
1933
|
-
|
|
1934
|
-
root
|
|
1935
|
-
|
|
1950
|
+
global _ROOT_COMMAND
|
|
1951
|
+
root = _ROOT_COMMAND
|
|
1952
|
+
if root is not None:
|
|
1953
|
+
return root
|
|
1954
|
+
with _BUILD_LOCK:
|
|
1955
|
+
if _ROOT_COMMAND is None:
|
|
1956
|
+
built: Any = typer.main.get_command(app)
|
|
1957
|
+
built.commands # noqa: B018 -- materialise every lazy top-level group
|
|
1958
|
+
_ROOT_COMMAND = built
|
|
1959
|
+
return _ROOT_COMMAND
|
|
1936
1960
|
|
|
1937
1961
|
|
|
1938
1962
|
def command_option_names(command_path: str) -> set[str]:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: mammoth-cli
|
|
3
|
-
version: 2.2.
|
|
3
|
+
version: 2.2.96
|
|
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
|
|
|
@@ -66,7 +66,7 @@ Status on release: ran once on CLI 2.0.21 — ergonomics sweep 2026-09-19: exit
|
|
|
66
66
|
|
|
67
67
|
Run: `mammoth dashboard template preview`. Exact input fields: `mammoth schema get dashboard.template.preview`.
|
|
68
68
|
|
|
69
|
-
Example: `mammoth dashboard template preview --input '{"body": {"params": {"source_dashboard_id": 1
|
|
69
|
+
Example: `mammoth dashboard template preview --input '{"body": {"params": {"source_dashboard_id": 1}}}'`. Placeholders are illustrative; resolve IDs and input from observed reads.
|
|
70
70
|
|
|
71
71
|
Result: `DashboardTemplatePreviewResult`; mutation `benign_mutation`, confirmation `none`, wait policy `not_async`.
|
|
72
72
|
|
|
@@ -86,7 +86,7 @@ Status on release: untried; no live run recorded.
|
|
|
86
86
|
|
|
87
87
|
Run: `mammoth dashboard template resolve-mapping`. Exact input fields: `mammoth schema get dashboard.template.resolve-mapping`.
|
|
88
88
|
|
|
89
|
-
Example: `mammoth dashboard template resolve-mapping --input '{"body": {"params": {"source_dashboard_id": 1
|
|
89
|
+
Example: `mammoth dashboard template resolve-mapping --input '{"body": {"params": {"source_dashboard_id": 1}}}'`. Placeholders are illustrative; resolve IDs and input from observed reads.
|
|
90
90
|
|
|
91
91
|
Result: `DashboardTemplateResolveMappingResult`; mutation `benign_mutation`, confirmation `none`, wait policy `not_async`.
|
|
92
92
|
|
|
@@ -2,12 +2,15 @@
|
|
|
2
2
|
|
|
3
3
|
## Success envelope (stdout)
|
|
4
4
|
```json
|
|
5
|
-
{"schema_version":1,"data":<result>,"meta":{"command":"project list","profile":"default","workspace_id":4,"project_id":180}}
|
|
5
|
+
{"schema_version":1,"data":<result>,"meta":{"command":"project list","profile":"default","workspace_id":4,"project_id":180,"exit":0}}
|
|
6
6
|
```
|
|
7
7
|
|
|
8
8
|
Compact single-line JSON when stdout is not a terminal (pretty when it is;
|
|
9
9
|
`MAMMOTH_JSON_PRETTY=1` forces pretty). `meta` carries only the keys that have a
|
|
10
|
-
value: `
|
|
10
|
+
value: `exit` is the exit status (0, or 1 or 3 for a write whose read-back failed
|
|
11
|
+
or was partial); `stderr` (embedded calls only) holds up to 500 characters a library
|
|
12
|
+
wrote to stderr during the call, and `elapsed_ms` (embedded calls only) its wall time;
|
|
13
|
+
`pagination` appears on paged reads, `update_available`
|
|
11
14
|
(`{"current", "latest", "command"}`) when a newer CLI is on PyPI (checked once
|
|
12
15
|
a day, after a command, never blocking). Run its `command` before starting a
|
|
13
16
|
task, not in the middle of one. `next_commands` appears after a main-flow
|
|
@@ -18,7 +21,7 @@ when they fit the task; a write that did not verify has none.
|
|
|
18
21
|
|
|
19
22
|
## Error envelope (stderr)
|
|
20
23
|
```json
|
|
21
|
-
{"schema_version": 1, "error": {"code": "resource_not_found", "message": "...", "hint": "...", "details": {}, "request_id": null, "retryable": false, "authorization_required": false, "recovery_commands": ["..."], "log_ref": {"file": ".../logs/2026-09-19.jsonl", "run_id": "b6bc6bf6d166"}}}
|
|
24
|
+
{"schema_version": 1, "error": {"code": "resource_not_found", "message": "...", "hint": "...", "details": {}, "request_id": null, "retryable": false, "authorization_required": false, "recovery_commands": ["..."], "exit": 1, "log_ref": {"file": ".../logs/2026-09-19.jsonl", "run_id": "b6bc6bf6d166"}}}
|
|
22
25
|
```
|
|
23
26
|
|
|
24
27
|
A mistyped command, option or column carries `details.did_you_mean`: the nearest
|
|
@@ -14,6 +14,7 @@ these commands are not blanket permission to replay a mutation.
|
|
|
14
14
|
| 2 | project_required | `mammoth context project use ID` or `--project` (in the app: `--project` only) |
|
|
15
15
|
| 2 | confirmation_required | re-run with `--yes` (and `--confirm TARGET`) |
|
|
16
16
|
| 2 | not_available_embedded | the command is not offered in the Mammoth app; use another route |
|
|
17
|
+
| 2 | pending_server_release | the command's route is not on the production server yet (`server_status: pending` in `schema get`); use another route |
|
|
17
18
|
| 6 | conflict | inspect current remote state and resolve it |
|
|
18
19
|
| 7 | `timeout` with a known job | inspect or wait that job; do not replay the mutation |
|
|
19
20
|
| 7 | `outcome_unknown` | reconcile exact target/scope before any replay |
|
|
@@ -13,6 +13,7 @@ from typing import Any
|
|
|
13
13
|
from mammoth_cli.commands.schema import command_scope
|
|
14
14
|
from mammoth_cli.errors.envelope import is_feature_unavailable
|
|
15
15
|
from mammoth_cli.manifest.loader import command_by_id, load_operations
|
|
16
|
+
from mammoth_cli.runtime import embedded
|
|
16
17
|
from mammoth_cli.services.command_contract import resolve_command_contract
|
|
17
18
|
|
|
18
19
|
_MAX_FIND_RESULTS = 20
|
|
@@ -51,6 +52,7 @@ def capability_entries() -> list[dict[str, Any]]:
|
|
|
51
52
|
"canonical_command": command_id,
|
|
52
53
|
"command_path": command["command_path"] if command else None,
|
|
53
54
|
"unavailable": is_feature_unavailable(command_id),
|
|
55
|
+
"server_status": command.get("server_status", "served") if command else None,
|
|
54
56
|
"sdk_symbol": op.get("sdk_symbol"),
|
|
55
57
|
"mutation_class": (
|
|
56
58
|
resolved.effects
|
|
@@ -72,6 +74,11 @@ def capability_entries() -> list[dict[str, Any]]:
|
|
|
72
74
|
return sorted(entries, key=lambda entry: entry["operation_id"])
|
|
73
75
|
|
|
74
76
|
|
|
77
|
+
def hidden_pending(entry: dict[str, Any]) -> bool:
|
|
78
|
+
"""Whether an embedded call that opted out of pending commands must not see ``entry``."""
|
|
79
|
+
return embedded.hides_pending() and entry.get("server_status") == "pending"
|
|
80
|
+
|
|
81
|
+
|
|
75
82
|
def get_capability(operation_id: str) -> dict[str, Any] | None:
|
|
76
83
|
for entry in capability_entries():
|
|
77
84
|
if entry["operation_id"] == operation_id:
|
|
@@ -156,7 +163,7 @@ def find_capabilities(
|
|
|
156
163
|
"sdk_symbol",
|
|
157
164
|
)
|
|
158
165
|
)
|
|
159
|
-
if entry.get("unavailable"):
|
|
166
|
+
if entry.get("unavailable") or hidden_pending(entry):
|
|
160
167
|
continue
|
|
161
168
|
candidates = _tokens(text)
|
|
162
169
|
command_id = entry.get("canonical_command")
|
|
@@ -52,7 +52,8 @@ def _version(_: Invocation) -> HandlerResult:
|
|
|
52
52
|
def _capability_list(_: Invocation) -> HandlerResult:
|
|
53
53
|
from mammoth_cli.commands import capability as capability_cmd
|
|
54
54
|
|
|
55
|
-
|
|
55
|
+
entries = capability_cmd.capability_entries()
|
|
56
|
+
return [entry for entry in entries if not capability_cmd.hidden_pending(entry)], {}
|
|
56
57
|
|
|
57
58
|
|
|
58
59
|
def _capability_get(invocation: Invocation) -> HandlerResult:
|
|
@@ -54,7 +54,7 @@ from mammoth_cli.runtime import linecapture
|
|
|
54
54
|
from mammoth_cli.runtime.executor import EXIT_STATUS_META, STREAMED_META
|
|
55
55
|
from mammoth_cli.runtime.input_loader import MAX_INPUT_BYTES
|
|
56
56
|
from mammoth_cli.runtime.invocation import Invocation
|
|
57
|
-
from mammoth_cli.runtime.shared import remembering_auth
|
|
57
|
+
from mammoth_cli.runtime.shared import forget_reads, remembering_auth
|
|
58
58
|
from mammoth_cli.runtime.strict import NEGATIVE_NUMBER
|
|
59
59
|
|
|
60
60
|
HandlerResult = tuple[Any, dict[str, Any]]
|
|
@@ -373,7 +373,7 @@ def execute_line(argv: Sequence[str], command: str = "") -> tuple[int, dict[str,
|
|
|
373
373
|
if exit_status == 0:
|
|
374
374
|
# Help or version text: the command succeeded and printed no envelope.
|
|
375
375
|
text = {"text": stray[:500]} if stray else None
|
|
376
|
-
return 0, Result(data=text, meta=Meta(command=command)).to_envelope()
|
|
376
|
+
return 0, Result(data=text, meta=Meta(command=command, exit=0)).to_envelope()
|
|
377
377
|
silent = CliError(
|
|
378
378
|
code="no_output",
|
|
379
379
|
message="This command printed text only (help or version) and no envelope.",
|
|
@@ -490,6 +490,7 @@ def run(invocation: Invocation) -> HandlerResult:
|
|
|
490
490
|
spec = parse_line(number, text, defaults, _command_flags)
|
|
491
491
|
cmd, line_id = spec.cmd, spec.line_id
|
|
492
492
|
exit_status, envelope = execute_line(spec.argv, spec.cmd)
|
|
493
|
+
forget_reads()
|
|
493
494
|
except CliError as error:
|
|
494
495
|
cmd = cmd or _best_effort_cmd(text)
|
|
495
496
|
exit_status, envelope = error.exit_status, error.to_envelope()
|
|
@@ -528,7 +529,7 @@ def run(invocation: Invocation) -> HandlerResult:
|
|
|
528
529
|
"dry_run": invocation.dry_run,
|
|
529
530
|
"exit": run_exit,
|
|
530
531
|
}
|
|
531
|
-
meta = Meta(command="run", profile=invocation.profile)
|
|
532
|
+
meta = Meta(command="run", profile=invocation.profile, exit=run_exit)
|
|
532
533
|
_write(Result(data=summary, meta=meta).to_envelope())
|
|
533
534
|
return None, {STREAMED_META: True, EXIT_STATUS_META: run_exit}
|
|
534
535
|
|
|
@@ -24,6 +24,8 @@ from typing import Any, cast
|
|
|
24
24
|
from mammoth_cli.errors.envelope import is_feature_unavailable
|
|
25
25
|
from mammoth_cli.manifest.loader import command_by_id, load_commands, load_operations
|
|
26
26
|
from mammoth_cli.output.normalize import trusted_json_schema
|
|
27
|
+
from mammoth_cli.runtime import embedded
|
|
28
|
+
from mammoth_cli.runtime.local_paths import local_path_fields
|
|
27
29
|
from mammoth_cli.services.argspec import FieldSpec
|
|
28
30
|
from mammoth_cli.services.command_contract import LOCAL_COMMANDS, resolve_command_contract
|
|
29
31
|
from mammoth_cli.services.field_enums import field_enum, with_enum
|
|
@@ -33,7 +35,7 @@ from mammoth_cli.services.input_fields import (
|
|
|
33
35
|
handler_owned_fields,
|
|
34
36
|
)
|
|
35
37
|
from mammoth_cli.services.openapi_types import openapi_body_schema_for, sample_from_schema
|
|
36
|
-
from mammoth_cli.services.positionals import PositionalSpec, resolve_positionals
|
|
38
|
+
from mammoth_cli.services.positionals import LOCAL_PATH, PositionalSpec, resolve_positionals
|
|
37
39
|
from mammoth_cli.services.type_system import is_opaque_mapping, json_schema, sample_value
|
|
38
40
|
|
|
39
41
|
# Agent examples carry no ``--output json --no-input``: a piped run already
|
|
@@ -1225,6 +1227,7 @@ def _accepted_fields(record: dict[str, Any]) -> list[dict[str, Any]] | None:
|
|
|
1225
1227
|
body_schema = openapi_body_schema_for(
|
|
1226
1228
|
tuple(str(item) for item in record.get("operation_ids", []))
|
|
1227
1229
|
)
|
|
1230
|
+
path_fields = local_path_fields(record["command_id"], record.get("positionals", []))
|
|
1228
1231
|
return [
|
|
1229
1232
|
{
|
|
1230
1233
|
"name": field.name,
|
|
@@ -1239,6 +1242,8 @@ def _accepted_fields(record: dict[str, Any]) -> list[dict[str, Any]] | None:
|
|
|
1239
1242
|
and body_schema is not None
|
|
1240
1243
|
else json_schema(field.annotation, field.name)
|
|
1241
1244
|
),
|
|
1245
|
+
# Only where it applies: a host that cannot read the path refuses the command.
|
|
1246
|
+
**({"kind": LOCAL_PATH} if field.name in path_fields else {}),
|
|
1242
1247
|
}
|
|
1243
1248
|
for field in contract.accepted_fields
|
|
1244
1249
|
if field.name not in excluded
|
|
@@ -1263,7 +1268,9 @@ def _compact_accepted_fields(record: dict[str, Any]) -> list[dict[str, Any]] | N
|
|
|
1263
1268
|
return None
|
|
1264
1269
|
compact: list[dict[str, Any]] = []
|
|
1265
1270
|
for field in fields:
|
|
1266
|
-
item
|
|
1271
|
+
item: dict[str, Any] = {
|
|
1272
|
+
key: field[key] for key in ("name", "type", "required", "enum", "kind") if key in field
|
|
1273
|
+
}
|
|
1267
1274
|
schema = field.get("schema")
|
|
1268
1275
|
if (
|
|
1269
1276
|
schema is not None
|
|
@@ -2197,6 +2204,7 @@ def _schema_common(record: dict[str, Any]) -> dict[str, Any]:
|
|
|
2197
2204
|
else "partially_typed" if opaque_fields else "typed"
|
|
2198
2205
|
)
|
|
2199
2206
|
return {
|
|
2207
|
+
"server_status": record.get("server_status", "served"),
|
|
2200
2208
|
"positionals": _positionals(record["command_id"]),
|
|
2201
2209
|
"accepted_fields": accepted,
|
|
2202
2210
|
"input_schema": input_schema,
|
|
@@ -2217,10 +2225,15 @@ def _schema_common(record: dict[str, Any]) -> dict[str, Any]:
|
|
|
2217
2225
|
}
|
|
2218
2226
|
|
|
2219
2227
|
|
|
2228
|
+
def _hidden_pending(record: dict[str, Any]) -> bool:
|
|
2229
|
+
"""Whether an embedded call that opted out of pending commands must not see ``record``."""
|
|
2230
|
+
return embedded.hides_pending() and record.get("server_status") == "pending"
|
|
2231
|
+
|
|
2232
|
+
|
|
2220
2233
|
def schema_entries() -> list[dict[str, Any]]:
|
|
2221
2234
|
entries: list[dict[str, Any]] = []
|
|
2222
2235
|
for record in load_commands():
|
|
2223
|
-
if record.get("disposition") == "alias":
|
|
2236
|
+
if record.get("disposition") == "alias" or _hidden_pending(record):
|
|
2224
2237
|
continue
|
|
2225
2238
|
entries.append(
|
|
2226
2239
|
{
|
|
@@ -2247,6 +2260,7 @@ def schema_entries() -> list[dict[str, Any]]:
|
|
|
2247
2260
|
_BRIEF_SCHEMA_KEYS = (
|
|
2248
2261
|
"command_id",
|
|
2249
2262
|
"command_path",
|
|
2263
|
+
"server_status",
|
|
2250
2264
|
"positionals",
|
|
2251
2265
|
"accepted_fields",
|
|
2252
2266
|
"agent_example",
|
|
@@ -2278,6 +2292,7 @@ def schema_index(family: str | None = None) -> dict[str, Any]:
|
|
|
2278
2292
|
"command_path": entry["command_path"],
|
|
2279
2293
|
"mutation_class": entry["mutation_class"],
|
|
2280
2294
|
"confirmation": entry["confirmation"],
|
|
2295
|
+
"server_status": entry["server_status"],
|
|
2281
2296
|
}
|
|
2282
2297
|
for entry in entries
|
|
2283
2298
|
if entry["command_path"].split()[0] == wanted
|
|
@@ -2428,7 +2443,7 @@ def find_schemas(
|
|
|
2428
2443
|
for record in load_commands():
|
|
2429
2444
|
if record.get("disposition") == "alias":
|
|
2430
2445
|
continue
|
|
2431
|
-
if is_feature_unavailable(str(record["command_id"])):
|
|
2446
|
+
if is_feature_unavailable(str(record["command_id"])) or _hidden_pending(record):
|
|
2432
2447
|
continue
|
|
2433
2448
|
command_id = str(record["command_id"])
|
|
2434
2449
|
command_path = str(record["command_path"])
|
|
@@ -2490,6 +2505,7 @@ def find_schemas(
|
|
|
2490
2505
|
"command_path": command_path,
|
|
2491
2506
|
"mutation_class": record["mutation_class"],
|
|
2492
2507
|
"confirmation": record["confirmation"],
|
|
2508
|
+
"server_status": record.get("server_status", "served"),
|
|
2493
2509
|
"full_schema_command": f"mammoth schema get {command_id}",
|
|
2494
2510
|
}
|
|
2495
2511
|
# A match on hidden curated purpose text (T1-I-07) is otherwise
|
|
@@ -43,8 +43,10 @@ class ExplicitLogin:
|
|
|
43
43
|
Attributes:
|
|
44
44
|
api_key: The deprecated Mammoth API key (with ``api_secret``).
|
|
45
45
|
api_secret: The deprecated Mammoth API secret.
|
|
46
|
-
workspace_id: The workspace id
|
|
47
|
-
an ``api_token``
|
|
46
|
+
workspace_id: The workspace id. Required with the deprecated key +
|
|
47
|
+
secret. With an ``api_token`` it is a hint that saves asking the
|
|
48
|
+
server which workspace the token names; a wrong hint is caught on
|
|
49
|
+
the first 401 or 403 (``workspace_mismatch``).
|
|
48
50
|
server_prefix: A one-label server prefix, or None.
|
|
49
51
|
api_token: The ``mm_...`` Bearer token, instead of a key + secret.
|
|
50
52
|
headers: Extra request headers sent on every API call, after the
|
|
@@ -148,15 +150,9 @@ def resolve_token_workspace(base_url: str, api_token: str, timeout: float | None
|
|
|
148
150
|
|
|
149
151
|
|
|
150
152
|
def _explicit_workspace(login: ExplicitLogin, base_url: str, timeout: float | None) -> int:
|
|
151
|
-
"""The workspace of an explicit login: the
|
|
152
|
-
if login.api_token is None:
|
|
153
|
+
"""The workspace of an explicit login: the key pair's given id, or the token's hint or own."""
|
|
154
|
+
if login.api_token is None or login.workspace_id is not None:
|
|
153
155
|
return _require_positive_workspace(login.workspace_id or 0, source="login")
|
|
154
|
-
if login.workspace_id is not None:
|
|
155
|
-
raise CliError(
|
|
156
|
-
code=CODE_INVALID_WORKSPACE_ID,
|
|
157
|
-
message="A token login takes no workspace id; the token names its own.",
|
|
158
|
-
exit_status=EXIT_USAGE,
|
|
159
|
-
)
|
|
160
156
|
return resolve_token_workspace(base_url, login.api_token, timeout)
|
|
161
157
|
|
|
162
158
|
|