mammoth-cli 2.0.3__tar.gz → 2.0.4__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.3 → mammoth_cli-2.0.4}/PKG-INFO +1 -1
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/__init__.py +1 -1
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/context/credentials.py +106 -4
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/pyproject.toml +1 -1
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/.gitignore +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/LICENSE +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/README.md +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/__main__.py +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/app.py +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/bundled_skill/mammoth-cli/SKILL.md +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/bundled_skill/mammoth-cli/references/auth.md +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/bundled_skill/mammoth-cli/references/command-index.md +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/activity.md +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/addon.md +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/agent.md +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/ai.md +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/annotation.md +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/auth.md +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/automation.md +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/batch.md +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/billing.md +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/browse.md +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/capability.md +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/client-app.md +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/completion.md +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/config.md +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/connector.md +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/context.md +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dashboard.md +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/data-app.md +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dataset.md +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/doctor.md +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/external-key.md +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/file.md +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/folder.md +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/job.md +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/notification.md +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/parameter.md +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/project.md +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/report.md +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/schedule.md +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/schema.md +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/skill.md +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/snippet.md +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/support.md +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/template.md +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/trash.md +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/upgrade.md +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/user.md +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/version.md +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/view.md +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/webhook.md +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/workflow.md +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/workspace.md +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/bundled_skill/mammoth-cli/references/handoff.md +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/bundled_skill/mammoth-cli/references/input.md +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/bundled_skill/mammoth-cli/references/jobs-drafts.md +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/bundled_skill/mammoth-cli/references/machine-output.md +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/bundled_skill/mammoth-cli/references/operations.md +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/auth-scope.md +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/cleanup.md +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/dashboards.md +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/exports.md +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/index.md +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/resources.md +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/transforms.md +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/typed-etl-discovery.md +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/bundled_skill/mammoth-cli/references/recovery.md +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/bundled_skill/mammoth-cli/references/retention.md +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/bundled_skill/mammoth-cli/references/safety.md +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/bundled_skill/mammoth-cli/references/task-start.md +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/commands/__init__.py +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/commands/activity.py +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/commands/addon.py +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/commands/agent.py +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/commands/ai.py +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/commands/annotation.py +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/commands/auth.py +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/commands/automation.py +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/commands/batch.py +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/commands/billing.py +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/commands/browse.py +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/commands/capability.py +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/commands/client_app.py +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/commands/completion.py +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/commands/config.py +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/commands/connector.py +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/commands/context.py +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/commands/dashboard.py +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/commands/data_app.py +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/commands/dataset.py +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/commands/doctor.py +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/commands/external_key.py +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/commands/file.py +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/commands/folder.py +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/commands/job.py +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/commands/notification.py +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/commands/parameter.py +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/commands/project.py +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/commands/registry.py +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/commands/report.py +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/commands/schedule.py +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/commands/schema.py +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/commands/skill.py +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/commands/snippet.py +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/commands/support.py +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/commands/template.py +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/commands/trash.py +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/commands/upgrade.py +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/commands/user.py +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/commands/view.py +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/commands/view_ops.py +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/commands/webhook.py +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/commands/workflow.py +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/commands/workspace.py +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/context/__init__.py +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/context/endpoint.py +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/context/profiles.py +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/context/resolver.py +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/contracts/__init__.py +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/contracts/auth.py +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/errors/__init__.py +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/errors/envelope.py +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/manifest/__init__.py +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/manifest/loader.py +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/messages/__init__.py +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/output/__init__.py +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/output/envelope.py +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/output/normalize.py +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/output/policy.py +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/output/progress.py +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/output/render.py +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/py.typed +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/runtime/__init__.py +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/runtime/confirm.py +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/runtime/executor.py +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/runtime/input_loader.py +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/runtime/invocation.py +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/runtime/options.py +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/runtime/session.py +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/runtime/strict.py +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/runtime/validate.py +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/services/__init__.py +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/services/argspec.py +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/services/coerce.py +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/services/command_contract.py +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/services/conditions.py +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/services/dispatch.py +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/services/factory.py +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/services/input_fields.py +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/services/mapping.py +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/services/openapi_types.py +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/services/positionals.py +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/services/protocol.py +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/services/sdk_service.py +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/services/testing.py +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/services/type_system.py +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/skills/__init__.py +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/skills/installer.py +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/testing.py +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/spec/manifests/commands/activity.yaml +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/spec/manifests/commands/addon.yaml +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/spec/manifests/commands/agent.yaml +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/spec/manifests/commands/ai.yaml +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/spec/manifests/commands/annotation.yaml +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/spec/manifests/commands/auth.yaml +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/spec/manifests/commands/automation.yaml +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/spec/manifests/commands/batch.yaml +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/spec/manifests/commands/billing.yaml +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/spec/manifests/commands/browse.yaml +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/spec/manifests/commands/capability.yaml +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/spec/manifests/commands/client-app.yaml +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/spec/manifests/commands/completion.yaml +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/spec/manifests/commands/config.yaml +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/spec/manifests/commands/connector.yaml +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/spec/manifests/commands/context.yaml +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/spec/manifests/commands/dashboard.yaml +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/spec/manifests/commands/data-app.yaml +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/spec/manifests/commands/dataset.yaml +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/spec/manifests/commands/doctor.yaml +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/spec/manifests/commands/external-key.yaml +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/spec/manifests/commands/file.yaml +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/spec/manifests/commands/folder.yaml +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/spec/manifests/commands/job.yaml +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/spec/manifests/commands/notification.yaml +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/spec/manifests/commands/parameter.yaml +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/spec/manifests/commands/project.yaml +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/spec/manifests/commands/report.yaml +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/spec/manifests/commands/schedule.yaml +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/spec/manifests/commands/schema.yaml +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/spec/manifests/commands/skill.yaml +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/spec/manifests/commands/snippet.yaml +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/spec/manifests/commands/support.yaml +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/spec/manifests/commands/template.yaml +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/spec/manifests/commands/trash.yaml +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/spec/manifests/commands/upgrade.yaml +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/spec/manifests/commands/user.yaml +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/spec/manifests/commands/version.yaml +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/spec/manifests/commands/view.yaml +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/spec/manifests/commands/webhook.yaml +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/spec/manifests/commands/workflow.yaml +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/spec/manifests/commands/workspace.yaml +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/spec/manifests/openapi-operations.yaml +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/spec/manifests/schema-v1.json +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/spec/manifests/sdk-catalog.source.yaml +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/spec/manifests/sdk-methods.yaml +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/spec/openapi/metadata.json +0 -0
- {mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/spec/openapi/openapi.json +0 -0
|
@@ -81,17 +81,119 @@ def _delete_keyring(profile: str) -> bool:
|
|
|
81
81
|
return False
|
|
82
82
|
|
|
83
83
|
|
|
84
|
+
def _insecure_file_error(reason: str) -> CliError:
|
|
85
|
+
"""Return a secret-safe error for an unsafe POSIX credential store."""
|
|
86
|
+
return CliError(
|
|
87
|
+
code="insecure_credential_file",
|
|
88
|
+
message="The file-backed credential store is not safe to use.",
|
|
89
|
+
exit_status=EXIT_USAGE,
|
|
90
|
+
hint=(
|
|
91
|
+
f"Secure {credentials_path().parent} and its credential file: "
|
|
92
|
+
"the directory and file must be owned by this user and private "
|
|
93
|
+
"(mode 0700/0600)."
|
|
94
|
+
),
|
|
95
|
+
details={"reason": reason},
|
|
96
|
+
)
|
|
97
|
+
|
|
98
|
+
|
|
99
|
+
def _check_private_directory(directory: Path) -> None:
|
|
100
|
+
"""Reject an unsafe config directory without changing its permissions."""
|
|
101
|
+
try:
|
|
102
|
+
directory_stat = os.lstat(directory)
|
|
103
|
+
except FileNotFoundError:
|
|
104
|
+
return
|
|
105
|
+
except OSError:
|
|
106
|
+
raise _insecure_file_error("directory_unreadable") from None
|
|
107
|
+
if not stat.S_ISDIR(directory_stat.st_mode):
|
|
108
|
+
raise _insecure_file_error("directory_not_directory")
|
|
109
|
+
if directory_stat.st_uid != os.geteuid():
|
|
110
|
+
raise _insecure_file_error("directory_wrong_owner")
|
|
111
|
+
if directory_stat.st_mode & 0o077:
|
|
112
|
+
raise _insecure_file_error("directory_permissions")
|
|
113
|
+
|
|
114
|
+
|
|
115
|
+
def _read_file_bytes(path: Path) -> bytes | None:
|
|
116
|
+
"""Read the credential file with POSIX ownership and race checks."""
|
|
117
|
+
directory_fd = -1
|
|
118
|
+
fd = -1
|
|
119
|
+
try:
|
|
120
|
+
directory_flags = (
|
|
121
|
+
os.O_RDONLY
|
|
122
|
+
| getattr(os, "O_CLOEXEC", 0)
|
|
123
|
+
| getattr(os, "O_NOFOLLOW", 0)
|
|
124
|
+
| getattr(os, "O_DIRECTORY", 0)
|
|
125
|
+
)
|
|
126
|
+
directory_fd = os.open(path.parent, directory_flags)
|
|
127
|
+
except FileNotFoundError:
|
|
128
|
+
return None
|
|
129
|
+
except OSError:
|
|
130
|
+
raise _insecure_file_error("file_unreadable") from None
|
|
131
|
+
try:
|
|
132
|
+
directory_stat = os.fstat(directory_fd)
|
|
133
|
+
if not stat.S_ISDIR(directory_stat.st_mode):
|
|
134
|
+
raise _insecure_file_error("directory_not_directory")
|
|
135
|
+
if directory_stat.st_uid != os.geteuid():
|
|
136
|
+
raise _insecure_file_error("directory_wrong_owner")
|
|
137
|
+
if directory_stat.st_mode & 0o077:
|
|
138
|
+
raise _insecure_file_error("directory_permissions")
|
|
139
|
+
flags = os.O_RDONLY | getattr(os, "O_CLOEXEC", 0)
|
|
140
|
+
flags |= getattr(os, "O_NOFOLLOW", 0)
|
|
141
|
+
try:
|
|
142
|
+
fd = os.open(path.name, flags, dir_fd=directory_fd)
|
|
143
|
+
except FileNotFoundError:
|
|
144
|
+
return None
|
|
145
|
+
except OSError:
|
|
146
|
+
raise _insecure_file_error("file_unreadable") from None
|
|
147
|
+
file_stat = os.fstat(fd)
|
|
148
|
+
if not stat.S_ISREG(file_stat.st_mode):
|
|
149
|
+
raise _insecure_file_error("file_not_regular")
|
|
150
|
+
if file_stat.st_uid != os.geteuid():
|
|
151
|
+
raise _insecure_file_error("file_wrong_owner")
|
|
152
|
+
if file_stat.st_mode & 0o077:
|
|
153
|
+
raise _insecure_file_error("file_permissions")
|
|
154
|
+
with os.fdopen(fd, "rb") as handle:
|
|
155
|
+
fd = -1
|
|
156
|
+
raw = handle.read()
|
|
157
|
+
# The file descriptor cannot be redirected, but make the corresponding
|
|
158
|
+
# path-entry identity explicit before the caller parses its contents.
|
|
159
|
+
# This also detects a replacement between open and validation.
|
|
160
|
+
try:
|
|
161
|
+
path_stat = os.stat(path.name, dir_fd=directory_fd, follow_symlinks=False)
|
|
162
|
+
except OSError:
|
|
163
|
+
raise _insecure_file_error("file_identity_changed") from None
|
|
164
|
+
if (path_stat.st_dev, path_stat.st_ino) != (file_stat.st_dev, file_stat.st_ino):
|
|
165
|
+
raise _insecure_file_error("file_identity_changed")
|
|
166
|
+
if not stat.S_ISREG(path_stat.st_mode):
|
|
167
|
+
raise _insecure_file_error("file_not_regular")
|
|
168
|
+
if path_stat.st_uid != os.geteuid():
|
|
169
|
+
raise _insecure_file_error("file_wrong_owner")
|
|
170
|
+
if path_stat.st_mode & 0o077:
|
|
171
|
+
raise _insecure_file_error("file_permissions")
|
|
172
|
+
return raw
|
|
173
|
+
finally:
|
|
174
|
+
if fd != -1:
|
|
175
|
+
os.close(fd)
|
|
176
|
+
if directory_fd != -1:
|
|
177
|
+
os.close(directory_fd)
|
|
178
|
+
|
|
179
|
+
|
|
84
180
|
def _load_file_document() -> TOMLDocument:
|
|
85
181
|
path = credentials_path()
|
|
86
|
-
if
|
|
182
|
+
if os.name != "posix":
|
|
183
|
+
if not path.exists():
|
|
184
|
+
return tomlkit.document()
|
|
185
|
+
return tomlkit.parse(path.read_text(encoding="utf-8"))
|
|
186
|
+
raw = _read_file_bytes(path)
|
|
187
|
+
if raw is None:
|
|
87
188
|
return tomlkit.document()
|
|
88
|
-
return tomlkit.parse(
|
|
189
|
+
return tomlkit.parse(raw.decode("utf-8"))
|
|
89
190
|
|
|
90
191
|
|
|
91
192
|
def _write_file_document(document: TOMLDocument) -> None:
|
|
92
193
|
directory = config_dir()
|
|
93
|
-
directory.mkdir(parents=True, exist_ok=True)
|
|
194
|
+
directory.mkdir(mode=stat.S_IRWXU, parents=True, exist_ok=True)
|
|
94
195
|
if os.name == "posix":
|
|
196
|
+
_check_private_directory(directory)
|
|
95
197
|
os.chmod(directory, stat.S_IRWXU)
|
|
96
198
|
fd, tmp_name = tempfile.mkstemp(dir=str(directory), prefix=".credentials-", suffix=".tmp")
|
|
97
199
|
try:
|
|
@@ -218,6 +320,6 @@ def delete_credentials(profile: str) -> bool:
|
|
|
218
320
|
Returns:
|
|
219
321
|
True if a credential was removed from either backend.
|
|
220
322
|
"""
|
|
221
|
-
removed_keyring = _delete_keyring(profile) if _keyring_available() else False
|
|
222
323
|
removed_file = _delete_file(profile)
|
|
324
|
+
removed_keyring = _delete_keyring(profile) if _keyring_available() else False
|
|
223
325
|
return removed_keyring or removed_file
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/bundled_skill/mammoth-cli/references/auth.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
|
{mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/bundled_skill/mammoth-cli/references/handoff.md
RENAMED
|
File without changes
|
{mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/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
|
{mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/mammoth_cli/bundled_skill/mammoth-cli/references/recovery.md
RENAMED
|
File without changes
|
|
File without changes
|
{mammoth_cli-2.0.3 → mammoth_cli-2.0.4}/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
|
|
File without changes
|
|
File without changes
|