mammoth-cli 2.0.8__tar.gz → 2.0.10__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.0.8 → mammoth_cli-2.0.10}/PKG-INFO +1 -1
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/__init__.py +1 -1
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/bundled_skill/mammoth-cli/references/auth.md +13 -8
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/bundled_skill/mammoth-cli/references/task-start.md +2 -2
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/commands/auth.py +61 -4
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/context/profiles.py +27 -1
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/pyproject.toml +1 -1
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/.gitignore +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/LICENSE +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/README.md +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/__main__.py +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/app.py +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/bundled_skill/mammoth-cli/SKILL.md +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/bundled_skill/mammoth-cli/references/command-index.md +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/activity.md +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/addon.md +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/agent.md +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/ai.md +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/annotation.md +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/auth.md +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/automation.md +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/batch.md +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/billing.md +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/browse.md +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/capability.md +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/client-app.md +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/completion.md +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/config.md +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/connector.md +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/context.md +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dashboard.md +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/data-app.md +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dataset.md +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/doctor.md +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/external-key.md +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/file.md +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/folder.md +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/job.md +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/notification.md +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/parameter.md +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/project.md +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/report.md +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/schedule.md +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/schema.md +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/skill.md +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/snippet.md +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/support.md +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/template.md +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/trash.md +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/upgrade.md +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/user.md +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/version.md +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/view.md +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/webhook.md +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/workflow.md +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/workspace.md +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/bundled_skill/mammoth-cli/references/handoff.md +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/bundled_skill/mammoth-cli/references/input.md +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/bundled_skill/mammoth-cli/references/jobs-drafts.md +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/bundled_skill/mammoth-cli/references/machine-output.md +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/bundled_skill/mammoth-cli/references/operations.md +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/auth-scope.md +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/cleanup.md +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/dashboards.md +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/exports.md +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/index.md +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/resources.md +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/transforms.md +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/typed-etl-discovery.md +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/bundled_skill/mammoth-cli/references/recovery.md +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/bundled_skill/mammoth-cli/references/retention.md +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/bundled_skill/mammoth-cli/references/safety.md +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/commands/__init__.py +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/commands/activity.py +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/commands/addon.py +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/commands/agent.py +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/commands/ai.py +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/commands/annotation.py +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/commands/automation.py +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/commands/batch.py +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/commands/billing.py +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/commands/browse.py +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/commands/capability.py +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/commands/client_app.py +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/commands/completion.py +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/commands/config.py +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/commands/connector.py +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/commands/context.py +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/commands/dashboard.py +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/commands/data_app.py +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/commands/dataset.py +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/commands/doctor.py +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/commands/external_key.py +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/commands/file.py +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/commands/folder.py +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/commands/job.py +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/commands/notification.py +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/commands/parameter.py +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/commands/project.py +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/commands/registry.py +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/commands/report.py +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/commands/schedule.py +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/commands/schema.py +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/commands/skill.py +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/commands/snippet.py +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/commands/support.py +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/commands/template.py +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/commands/trash.py +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/commands/upgrade.py +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/commands/user.py +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/commands/view.py +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/commands/view_ops.py +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/commands/webhook.py +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/commands/workflow.py +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/commands/workspace.py +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/context/__init__.py +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/context/credentials.py +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/context/endpoint.py +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/context/resolver.py +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/contracts/__init__.py +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/contracts/auth.py +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/errors/__init__.py +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/errors/envelope.py +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/manifest/__init__.py +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/manifest/loader.py +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/messages/__init__.py +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/output/__init__.py +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/output/envelope.py +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/output/normalize.py +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/output/policy.py +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/output/progress.py +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/output/render.py +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/py.typed +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/runtime/__init__.py +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/runtime/confirm.py +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/runtime/executor.py +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/runtime/input_loader.py +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/runtime/invocation.py +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/runtime/options.py +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/runtime/session.py +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/runtime/strict.py +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/runtime/validate.py +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/services/__init__.py +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/services/argspec.py +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/services/coerce.py +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/services/command_contract.py +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/services/conditions.py +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/services/dispatch.py +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/services/factory.py +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/services/input_fields.py +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/services/mapping.py +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/services/openapi_types.py +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/services/positionals.py +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/services/protocol.py +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/services/sdk_service.py +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/services/testing.py +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/services/type_system.py +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/skills/__init__.py +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/skills/installer.py +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/testing.py +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/spec/manifests/commands/activity.yaml +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/spec/manifests/commands/addon.yaml +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/spec/manifests/commands/agent.yaml +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/spec/manifests/commands/ai.yaml +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/spec/manifests/commands/annotation.yaml +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/spec/manifests/commands/auth.yaml +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/spec/manifests/commands/automation.yaml +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/spec/manifests/commands/batch.yaml +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/spec/manifests/commands/billing.yaml +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/spec/manifests/commands/browse.yaml +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/spec/manifests/commands/capability.yaml +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/spec/manifests/commands/client-app.yaml +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/spec/manifests/commands/completion.yaml +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/spec/manifests/commands/config.yaml +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/spec/manifests/commands/connector.yaml +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/spec/manifests/commands/context.yaml +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/spec/manifests/commands/dashboard.yaml +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/spec/manifests/commands/data-app.yaml +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/spec/manifests/commands/dataset.yaml +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/spec/manifests/commands/doctor.yaml +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/spec/manifests/commands/external-key.yaml +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/spec/manifests/commands/file.yaml +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/spec/manifests/commands/folder.yaml +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/spec/manifests/commands/job.yaml +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/spec/manifests/commands/notification.yaml +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/spec/manifests/commands/parameter.yaml +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/spec/manifests/commands/project.yaml +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/spec/manifests/commands/report.yaml +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/spec/manifests/commands/schedule.yaml +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/spec/manifests/commands/schema.yaml +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/spec/manifests/commands/skill.yaml +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/spec/manifests/commands/snippet.yaml +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/spec/manifests/commands/support.yaml +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/spec/manifests/commands/template.yaml +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/spec/manifests/commands/trash.yaml +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/spec/manifests/commands/upgrade.yaml +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/spec/manifests/commands/user.yaml +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/spec/manifests/commands/version.yaml +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/spec/manifests/commands/view.yaml +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/spec/manifests/commands/webhook.yaml +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/spec/manifests/commands/workflow.yaml +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/spec/manifests/commands/workspace.yaml +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/spec/manifests/openapi-operations.yaml +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/spec/manifests/schema-v1.json +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/spec/manifests/sdk-catalog.source.yaml +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/spec/manifests/sdk-methods.yaml +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/spec/openapi/metadata.json +0 -0
- {mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/spec/openapi/openapi.json +0 -0
{mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/bundled_skill/mammoth-cli/references/auth.md
RENAMED
|
@@ -17,15 +17,19 @@ An agent never receives the key or secret. When `auth status` reports a
|
|
|
17
17
|
missing profile or `has_credentials=false`, stop and hand the login to the
|
|
18
18
|
human operator:
|
|
19
19
|
|
|
20
|
-
1. Tell the operator the exact command to run in **their own** terminal
|
|
21
|
-
|
|
20
|
+
1. Tell the operator the exact command to run in **their own** terminal. For
|
|
21
|
+
production it is just:
|
|
22
22
|
|
|
23
23
|
```bash
|
|
24
|
-
mammoth auth login
|
|
24
|
+
mammoth auth login
|
|
25
25
|
```
|
|
26
26
|
|
|
27
|
-
|
|
28
|
-
|
|
27
|
+
Add `--server-prefix release` only when the task names the release
|
|
28
|
+
environment, and `--profile NAME` only when the operator wants a profile
|
|
29
|
+
other than `default`. The command prompts for the key and secret with
|
|
30
|
+
hidden input, then the workspace id, so no secret enters chat, argv, or
|
|
31
|
+
history. Credentials are per environment: a release key never
|
|
32
|
+
authenticates on `app`.
|
|
29
33
|
2. Wait for the operator to confirm, then re-run
|
|
30
34
|
`mammoth auth status --profile PROFILE --output json --no-input` and
|
|
31
35
|
`mammoth doctor --profile PROFILE --output json --no-input`.
|
|
@@ -53,8 +57,8 @@ If status reports a missing profile or `has_credentials=false`, run the secure
|
|
|
53
57
|
login flow, then check status again:
|
|
54
58
|
|
|
55
59
|
```bash
|
|
56
|
-
mammoth auth login --profile
|
|
57
|
-
mammoth auth status --
|
|
60
|
+
mammoth auth login # production; add --profile NAME if not 'default'
|
|
61
|
+
mammoth auth status --output json --no-input
|
|
58
62
|
```
|
|
59
63
|
|
|
60
64
|
`auth status` is a local profile/credential-presence check; it does not prove
|
|
@@ -76,7 +80,8 @@ targets release.
|
|
|
76
80
|
|
|
77
81
|
## Commands
|
|
78
82
|
```bash
|
|
79
|
-
mammoth auth login
|
|
83
|
+
mammoth auth login # hidden prompts; production
|
|
84
|
+
mammoth auth login --server-prefix release # release environment
|
|
80
85
|
mammoth auth login --profile PROFILE --input creds.json --storage file --output json --no-input
|
|
81
86
|
mammoth auth status --profile PROFILE --output json --no-input
|
|
82
87
|
mammoth auth logout --profile default --output json --no-input --yes
|
|
@@ -33,8 +33,8 @@ or secrets in an argument, prompt, transcript, or checkpoint.
|
|
|
33
33
|
Compare the status response's `endpoint` with the intended environment. If
|
|
34
34
|
the profile or credentials are missing, or the endpoint is for another
|
|
35
35
|
environment, stop and follow [authentication](auth.md): tell the operator
|
|
36
|
-
|
|
37
|
-
|
|
36
|
+
to run `mammoth auth login` (production; `--server-prefix release` for
|
|
37
|
+
release) in their own terminal, wait for them, then re-check status.
|
|
38
38
|
The CLI does not read credentials from environment variables; do not look
|
|
39
39
|
for them there. Never silently reuse or rewrite a mismatched profile,
|
|
40
40
|
invent a profile, ask for credentials in chat, or put secrets in argv.
|
|
@@ -27,6 +27,7 @@ from mammoth_cli.context.resolver import (
|
|
|
27
27
|
)
|
|
28
28
|
from mammoth_cli.contracts.auth import LoginRequest
|
|
29
29
|
from mammoth_cli.errors.envelope import (
|
|
30
|
+
CODE_AUTHENTICATION_FAILED,
|
|
30
31
|
CODE_CONFIRMATION_DECLINED,
|
|
31
32
|
CODE_CONFIRMATION_REQUIRED,
|
|
32
33
|
CODE_INVALID_WORKSPACE_ID,
|
|
@@ -135,6 +136,34 @@ def _validate_login_document(document: dict[str, Any]) -> LoginRequest:
|
|
|
135
136
|
) from exc
|
|
136
137
|
|
|
137
138
|
|
|
139
|
+
def _masked_receipt(value: str) -> str:
|
|
140
|
+
"""Describe a secret without revealing it: its length and last four characters."""
|
|
141
|
+
if len(value) <= 4:
|
|
142
|
+
return f"{len(value)} characters"
|
|
143
|
+
return f"{len(value)} characters, ending in …{value[-4:]}"
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
def _prompt_secret(label: str) -> str:
|
|
147
|
+
"""Prompt for one secret with hidden input, then confirm what was captured.
|
|
148
|
+
|
|
149
|
+
A hidden prompt shows nothing while typing, so a paste that silently
|
|
150
|
+
carried a newline or trailing space, or an empty return, used to surface
|
|
151
|
+
only later as an opaque 401. Surrounding whitespace is stripped, an empty
|
|
152
|
+
entry is rejected here, and a masked receipt (length and last four
|
|
153
|
+
characters, never the value) is printed to stderr as feedback.
|
|
154
|
+
"""
|
|
155
|
+
value = typer.prompt(label, hide_input=True).strip()
|
|
156
|
+
if not value:
|
|
157
|
+
raise CliError(
|
|
158
|
+
code="login_input_required",
|
|
159
|
+
message=f"The {label} was empty.",
|
|
160
|
+
exit_status=EXIT_USAGE,
|
|
161
|
+
hint=f"Paste the {label} at the hidden prompt; nothing is echoed while you type.",
|
|
162
|
+
)
|
|
163
|
+
typer.echo(f" {label}: {_masked_receipt(value)}", err=True)
|
|
164
|
+
return str(value)
|
|
165
|
+
|
|
166
|
+
|
|
138
167
|
def _prompt_blockers(invocation: Invocation) -> list[str]:
|
|
139
168
|
"""Reasons this invocation cannot interactively prompt, in report order.
|
|
140
169
|
|
|
@@ -190,8 +219,8 @@ def _run_login(
|
|
|
190
219
|
# Two flows, nothing else: a terminal prompts for everything (key,
|
|
191
220
|
# secret, then workspace id), and non-interactive uses --input. The
|
|
192
221
|
# workspace is asked last, after the credentials.
|
|
193
|
-
api_key =
|
|
194
|
-
api_secret =
|
|
222
|
+
api_key = _prompt_secret("API key")
|
|
223
|
+
api_secret = _prompt_secret("API secret")
|
|
195
224
|
effective_workspace = typer.prompt("Workspace id", type=int)
|
|
196
225
|
effective_prefix = server_prefix
|
|
197
226
|
else:
|
|
@@ -231,6 +260,32 @@ def _run_login(
|
|
|
231
260
|
service = service_factory.build_service(resolved_auth, timeout=invocation.timeout)
|
|
232
261
|
try:
|
|
233
262
|
service.check_connection()
|
|
263
|
+
except CliError as exc:
|
|
264
|
+
if exc.code == CODE_AUTHENTICATION_FAILED:
|
|
265
|
+
# Say exactly what was tried, without the secret: the endpoint,
|
|
266
|
+
# the workspace, and a masked receipt of the key. Credentials are
|
|
267
|
+
# per environment, and a release key typed at a production login
|
|
268
|
+
# is the common cause of an otherwise opaque 401.
|
|
269
|
+
exc.details = {
|
|
270
|
+
**exc.details,
|
|
271
|
+
"endpoint_base_url": resolved_base_url,
|
|
272
|
+
"workspace_id": effective_workspace,
|
|
273
|
+
# Receipts only (length and last four characters). The output
|
|
274
|
+
# layer redacts any key that looks like a credential, so these
|
|
275
|
+
# are named for what they are: descriptions, not values.
|
|
276
|
+
"credential_receipt": {
|
|
277
|
+
"key": _masked_receipt(api_key),
|
|
278
|
+
"second_value_length": len(api_secret),
|
|
279
|
+
},
|
|
280
|
+
}
|
|
281
|
+
exc.hint = (
|
|
282
|
+
f"{resolved_base_url} rejected this key/secret for workspace "
|
|
283
|
+
f"{effective_workspace}. Credentials are per environment: a key issued on "
|
|
284
|
+
"one Mammoth server does not authenticate on another. Check the key, the "
|
|
285
|
+
"secret, the workspace id, and that --server-prefix matches where the key "
|
|
286
|
+
"was issued."
|
|
287
|
+
)
|
|
288
|
+
raise
|
|
234
289
|
finally:
|
|
235
290
|
service.close()
|
|
236
291
|
|
|
@@ -243,7 +298,10 @@ def _run_login(
|
|
|
243
298
|
server_prefix=effective_prefix,
|
|
244
299
|
project_id=existing.project_id if existing is not None else None,
|
|
245
300
|
)
|
|
246
|
-
|
|
301
|
+
# Persist the record and the selection pointer in one write, before the
|
|
302
|
+
# secret goes to its store: a stored secret with no readable record is the
|
|
303
|
+
# "credentials present / no profile" state that strands a later doctor run.
|
|
304
|
+
profiles.save_profile(record, select=True)
|
|
247
305
|
storage_used = credentials.store_credentials(
|
|
248
306
|
profile_name,
|
|
249
307
|
api_key,
|
|
@@ -251,7 +309,6 @@ def _run_login(
|
|
|
251
309
|
storage=cast(credentials.StorageMode, storage),
|
|
252
310
|
interactive=not blockers,
|
|
253
311
|
)
|
|
254
|
-
profiles.set_selected(profile_name)
|
|
255
312
|
|
|
256
313
|
data = {
|
|
257
314
|
"profile": profile_name,
|
|
@@ -237,15 +237,22 @@ def get_profile(name: str) -> ProfileRecord | None:
|
|
|
237
237
|
return _parse_profile(name, table[name])
|
|
238
238
|
|
|
239
239
|
|
|
240
|
-
def save_profile(record: ProfileRecord) -> None:
|
|
240
|
+
def save_profile(record: ProfileRecord, *, select: bool = False) -> None:
|
|
241
241
|
"""Create or replace one profile's non-secret record.
|
|
242
242
|
|
|
243
243
|
Args:
|
|
244
244
|
record: The complete profile record to store. Replaces any existing
|
|
245
245
|
record with the same name.
|
|
246
|
+
select: Also make this profile the selected one, in the same write.
|
|
247
|
+
Login uses this so the record and the selection pointer can never
|
|
248
|
+
be persisted separately: a pointer to a profile whose record is
|
|
249
|
+
missing is exactly the state ``doctor`` reports as
|
|
250
|
+
``no profile``.
|
|
246
251
|
|
|
247
252
|
Raises:
|
|
248
253
|
CliError: ``invalid_profile_name`` for a malformed name.
|
|
254
|
+
CliError: ``profile_write_failed`` if the record cannot be read back
|
|
255
|
+
from the file just written.
|
|
249
256
|
"""
|
|
250
257
|
validate_profile_name(record.name)
|
|
251
258
|
document = _load_document()
|
|
@@ -260,7 +267,18 @@ def save_profile(record: ProfileRecord) -> None:
|
|
|
260
267
|
if record.project_id is not None:
|
|
261
268
|
entry["project_id"] = record.project_id
|
|
262
269
|
table[record.name] = entry
|
|
270
|
+
if select:
|
|
271
|
+
document["selected"] = record.name
|
|
263
272
|
_write_document(document)
|
|
273
|
+
stored = get_profile(record.name)
|
|
274
|
+
if stored is None or stored.workspace_id != record.workspace_id:
|
|
275
|
+
raise CliError(
|
|
276
|
+
code="profile_write_failed",
|
|
277
|
+
message=f"Profile '{record.name}' was not persisted to {profiles_path()}.",
|
|
278
|
+
exit_status=EXIT_USAGE,
|
|
279
|
+
hint="Check that no other process rewrites the configuration directory, then retry.",
|
|
280
|
+
details={"path": str(profiles_path())},
|
|
281
|
+
)
|
|
264
282
|
|
|
265
283
|
|
|
266
284
|
def delete_profile(name: str) -> bool:
|
|
@@ -313,6 +331,14 @@ def set_selected(name: str) -> None:
|
|
|
313
331
|
"""
|
|
314
332
|
validate_profile_name(name)
|
|
315
333
|
document = _load_document()
|
|
334
|
+
table = document.get("profiles")
|
|
335
|
+
if table is None or name not in table:
|
|
336
|
+
raise CliError(
|
|
337
|
+
code="profile_not_found",
|
|
338
|
+
message=f"Profile '{name}' has no stored record, so it cannot be selected.",
|
|
339
|
+
exit_status=EXIT_USAGE,
|
|
340
|
+
hint=f"Run 'mammoth auth login --profile {name}' to create it first.",
|
|
341
|
+
)
|
|
316
342
|
document["selected"] = name
|
|
317
343
|
_write_document(document)
|
|
318
344
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/bundled_skill/mammoth-cli/references/handoff.md
RENAMED
|
File without changes
|
{mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/bundled_skill/mammoth-cli/references/input.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mammoth_cli-2.0.8 → mammoth_cli-2.0.10}/mammoth_cli/bundled_skill/mammoth-cli/references/safety.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|