mammoth-cli 2.0.84__tar.gz → 2.0.86__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.84 → mammoth_cli-2.0.86}/PKG-INFO +2 -2
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/__init__.py +1 -1
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/app.py +23 -2
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/bundled_skill/mammoth-cli/references/jobs-drafts.md +5 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/commands/job.py +35 -6
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/commands/view.py +2 -1
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/embed.py +20 -1
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/errors/envelope.py +121 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/runtime/dryrun.py +8 -1
- mammoth_cli-2.0.86/mammoth_cli/runtime/dryrun_targets.py +575 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/runtime/executor.py +12 -3
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/runtime/invocation.py +4 -3
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/runtime/session.py +8 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/runtime/state.py +1 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/runtime/strict.py +2 -1
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/services/command_contract.py +3 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/services/mapping.py +88 -2
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/services/sdk_service.py +5 -2
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/pyproject.toml +2 -2
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/.gitignore +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/LICENSE +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/README.md +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/__main__.py +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/bundled_skill/mammoth-cli/SKILL.md +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/bundled_skill/mammoth-cli/references/about-mammoth.md +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/bundled_skill/mammoth-cli/references/auth.md +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/bundled_skill/mammoth-cli/references/capabilities-misc.md +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/bundled_skill/mammoth-cli/references/capabilities.md +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/bundled_skill/mammoth-cli/references/command-index.md +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/activity.md +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/addon.md +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/agent.md +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/ai.md +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/annotation.md +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/auth.md +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/automation.md +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/batch.md +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/billing.md +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/browse.md +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/calc.md +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/capability.md +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/client-app.md +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/completion.md +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/config.md +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/connector.md +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/context.md +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dashboard-qa.md +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dashboard.md +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/data-app.md +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dataset.md +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/doctor.md +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/external-key.md +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/file.md +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/folder.md +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/job.md +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/log.md +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/notification.md +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/parameter.md +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/project.md +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/report.md +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/schedule.md +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/schema.md +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/skill.md +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/snippet.md +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/support.md +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/template.md +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/trash.md +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/upgrade.md +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/user.md +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/version.md +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/view-transform.md +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/view.md +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/webhook.md +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/workflow.md +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/workspace.md +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/bundled_skill/mammoth-cli/references/handoff.md +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/bundled_skill/mammoth-cli/references/input.md +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/bundled_skill/mammoth-cli/references/machine-output.md +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/bundled_skill/mammoth-cli/references/operations.md +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/auth-scope.md +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/cleanup.md +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/dashboards.md +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/end-to-end.md +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/exports.md +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/index.md +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/need-action.md +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/resources.md +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/scheduling.md +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/transforms.md +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/typed-etl-discovery.md +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/bundled_skill/mammoth-cli/references/recovery.md +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/bundled_skill/mammoth-cli/references/report-checklist.md +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/bundled_skill/mammoth-cli/references/retention.md +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/bundled_skill/mammoth-cli/references/safety.md +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/bundled_skill/mammoth-cli/references/task-start.md +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/commands/__init__.py +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/commands/activity.py +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/commands/addon.py +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/commands/agent.py +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/commands/ai.py +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/commands/annotation.py +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/commands/auth.py +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/commands/automation.py +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/commands/batch.py +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/commands/billing.py +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/commands/browse.py +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/commands/calc.py +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/commands/capability.py +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/commands/client_app.py +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/commands/completion.py +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/commands/config.py +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/commands/connector.py +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/commands/context.py +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/commands/dashboard.py +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/commands/data_app.py +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/commands/dataset.py +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/commands/doctor.py +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/commands/external_key.py +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/commands/file.py +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/commands/folder.py +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/commands/notification.py +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/commands/parameter.py +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/commands/project.py +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/commands/registry.py +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/commands/report.py +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/commands/schedule.py +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/commands/schema.py +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/commands/skill.py +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/commands/snippet.py +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/commands/support.py +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/commands/template.py +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/commands/trash.py +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/commands/upgrade.py +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/commands/user.py +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/commands/view_ops.py +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/commands/webhook.py +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/commands/workflow.py +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/commands/workspace.py +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/context/__init__.py +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/context/credentials.py +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/context/endpoint.py +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/context/profiles.py +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/context/resolver.py +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/contracts/__init__.py +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/contracts/auth.py +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/errors/__init__.py +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/manifest/__init__.py +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/manifest/loader.py +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/messages/__init__.py +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/output/__init__.py +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/output/envelope.py +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/output/normalize.py +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/output/policy.py +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/output/progress.py +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/output/render.py +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/py.typed +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/runtime/__init__.py +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/runtime/confirm.py +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/runtime/dataset_health.py +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/runtime/embedded.py +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/runtime/input_loader.py +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/runtime/new_data.py +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/runtime/options.py +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/runtime/parents.py +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/runtime/runlog.py +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/runtime/updates.py +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/runtime/validate.py +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/runtime/verify.py +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/services/__init__.py +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/services/argspec.py +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/services/coerce.py +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/services/conditions.py +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/services/dashboard_pages.py +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/services/dashboard_review.py +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/services/data_quality.py +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/services/dispatch.py +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/services/factory.py +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/services/input_fields.py +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/services/openapi_types.py +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/services/positionals.py +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/services/protocol.py +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/services/testing.py +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/services/type_system.py +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/skills/__init__.py +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/skills/installer.py +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/skills/steering.py +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/mammoth_cli/testing.py +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/spec/manifests/commands/activity.yaml +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/spec/manifests/commands/addon.yaml +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/spec/manifests/commands/agent.yaml +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/spec/manifests/commands/ai.yaml +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/spec/manifests/commands/annotation.yaml +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/spec/manifests/commands/auth.yaml +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/spec/manifests/commands/automation.yaml +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/spec/manifests/commands/batch.yaml +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/spec/manifests/commands/billing.yaml +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/spec/manifests/commands/browse.yaml +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/spec/manifests/commands/calc.yaml +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/spec/manifests/commands/capability.yaml +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/spec/manifests/commands/client-app.yaml +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/spec/manifests/commands/completion.yaml +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/spec/manifests/commands/config.yaml +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/spec/manifests/commands/connector.yaml +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/spec/manifests/commands/context.yaml +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/spec/manifests/commands/dashboard.yaml +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/spec/manifests/commands/data-app.yaml +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/spec/manifests/commands/dataset.yaml +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/spec/manifests/commands/doctor.yaml +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/spec/manifests/commands/external-key.yaml +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/spec/manifests/commands/file.yaml +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/spec/manifests/commands/folder.yaml +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/spec/manifests/commands/job.yaml +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/spec/manifests/commands/log.yaml +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/spec/manifests/commands/notification.yaml +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/spec/manifests/commands/parameter.yaml +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/spec/manifests/commands/project.yaml +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/spec/manifests/commands/report.yaml +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/spec/manifests/commands/schedule.yaml +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/spec/manifests/commands/schema.yaml +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/spec/manifests/commands/skill.yaml +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/spec/manifests/commands/snippet.yaml +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/spec/manifests/commands/support.yaml +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/spec/manifests/commands/template.yaml +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/spec/manifests/commands/trash.yaml +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/spec/manifests/commands/upgrade.yaml +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/spec/manifests/commands/user.yaml +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/spec/manifests/commands/version.yaml +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/spec/manifests/commands/view.yaml +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/spec/manifests/commands/webhook.yaml +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/spec/manifests/commands/workflow.yaml +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/spec/manifests/commands/workspace.yaml +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/spec/manifests/openapi-operations.yaml +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/spec/manifests/schema-v1.json +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/spec/manifests/sdk-catalog.source.yaml +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/spec/manifests/sdk-methods.yaml +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/spec/openapi/metadata.json +0 -0
- {mammoth_cli-2.0.84 → mammoth_cli-2.0.86}/spec/openapi/openapi.json +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mammoth-cli
|
|
3
|
-
Version: 2.0.
|
|
3
|
+
Version: 2.0.86
|
|
4
4
|
Summary: Command-line interface for the Mammoth Analytics platform
|
|
5
5
|
Project-URL: homepage, https://mammoth.io
|
|
6
6
|
Project-URL: repository, https://github.com/EdgeMetric/mammothsdk
|
|
@@ -17,7 +17,7 @@ Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
|
17
17
|
Requires-Python: <3.15,>=3.12
|
|
18
18
|
Requires-Dist: jsonschema>=4.20
|
|
19
19
|
Requires-Dist: keyring<26,>=25.7
|
|
20
|
-
Requires-Dist: mammoth-io<0.8,>=0.7.
|
|
20
|
+
Requires-Dist: mammoth-io<0.8,>=0.7.40
|
|
21
21
|
Requires-Dist: platformdirs<5,>=4.10
|
|
22
22
|
Requires-Dist: pydantic<3,>=2.12.5
|
|
23
23
|
Requires-Dist: pyyaml<7,>=6
|
|
@@ -579,6 +579,24 @@ def _shared_option_params() -> list[inspect.Parameter]:
|
|
|
579
579
|
),
|
|
580
580
|
],
|
|
581
581
|
),
|
|
582
|
+
opt(
|
|
583
|
+
"return_running",
|
|
584
|
+
False,
|
|
585
|
+
Annotated[
|
|
586
|
+
bool,
|
|
587
|
+
typer.Option(
|
|
588
|
+
"--return-running",
|
|
589
|
+
help=(
|
|
590
|
+
"When a job or pipeline wait runs out, exit 0 with "
|
|
591
|
+
"{status: running, job_id or dataview_id, resume} instead of a "
|
|
592
|
+
"timeout error; resume with 'mammoth job wait JOB_ID' "
|
|
593
|
+
"(reports success, failure or still running; waits at most "
|
|
594
|
+
"15 minutes by default)."
|
|
595
|
+
),
|
|
596
|
+
rich_help_panel="Context and timeouts",
|
|
597
|
+
),
|
|
598
|
+
],
|
|
599
|
+
),
|
|
582
600
|
opt(
|
|
583
601
|
"pipeline_timeout",
|
|
584
602
|
None,
|
|
@@ -867,12 +885,15 @@ def _dry_run(handler: Handler, invocation: Invocation) -> tuple[Any, dict[str, A
|
|
|
867
885
|
gated SDK call at all (a pure read path); its result is returned as is.
|
|
868
886
|
"""
|
|
869
887
|
from mammoth_cli.runtime.dryrun import DryRunStop
|
|
870
|
-
from mammoth_cli.runtime.
|
|
888
|
+
from mammoth_cli.runtime.dryrun_targets import resolve_targets
|
|
889
|
+
from mammoth_cli.runtime.session import open_service, resolved_project
|
|
871
890
|
|
|
872
891
|
try:
|
|
873
892
|
return handler(invocation)
|
|
874
893
|
except DryRunStop as stop:
|
|
875
|
-
|
|
894
|
+
with open_service(invocation) as (service, _auth):
|
|
895
|
+
targets = resolve_targets(service, invocation.command_id, stop.record["would_call"])
|
|
896
|
+
return {**stop.record, "targets": targets}, {
|
|
876
897
|
"profile": invocation.profile,
|
|
877
898
|
"project_id": resolved_project(invocation),
|
|
878
899
|
}
|
|
@@ -24,6 +24,11 @@ or wait that job — inspect it rather than submitting the original mutation.
|
|
|
24
24
|
The `--job-timeout` /
|
|
25
25
|
`--pipeline-timeout` options bound the wait.
|
|
26
26
|
|
|
27
|
+
With `--return-running` a wait that runs out exits 0 with `{status: running, job_id, resume}`
|
|
28
|
+
(`dataview_id` for a pipeline wait). `mammoth job wait JOB_ID` resumes: it returns
|
|
29
|
+
`{status: success, job_id, result}`, a `job_failed` error with the reason, or the running handle
|
|
30
|
+
again, and waits at most 15 minutes by default.
|
|
31
|
+
|
|
27
32
|
A transport failure during a mutation without a confirmed job/resource handle
|
|
28
33
|
is `outcome_unknown`. Re-read the exact target and scope before replaying it;
|
|
29
34
|
the operation may already have committed.
|
|
@@ -30,6 +30,7 @@ from mammoth_cli.runtime.session import open_service
|
|
|
30
30
|
HandlerResult = tuple[Any, dict[str, Any]]
|
|
31
31
|
|
|
32
32
|
_WAIT_OPTIONAL = ("timeout", "poll_interval")
|
|
33
|
+
_DASHBOARD_WAIT_SYMBOL = "mammoth.api.dashboards.DashboardsAPI.wait_for_job_by_url"
|
|
33
34
|
|
|
34
35
|
|
|
35
36
|
def _symbol(invocation: Invocation) -> str:
|
|
@@ -127,20 +128,48 @@ def job_get_many(invocation: Invocation) -> HandlerResult:
|
|
|
127
128
|
return data, _meta(invocation, auth.workspace_id)
|
|
128
129
|
|
|
129
130
|
|
|
130
|
-
def
|
|
131
|
-
|
|
131
|
+
def _wait_call(
|
|
132
|
+
invocation: Invocation, document: dict[str, Any], kwargs: dict[str, Any]
|
|
133
|
+
) -> tuple[str, dict[str, Any]]:
|
|
134
|
+
"""The SDK symbol and arguments for one job wait.
|
|
135
|
+
|
|
136
|
+
A ``dashboard_url`` field switches to the URL-scoped wait: jobs dispatched
|
|
137
|
+
by published-dashboard routes are unreadable through ``GET /jobs/{id}``.
|
|
138
|
+
"""
|
|
139
|
+
if "dashboard_url" not in document:
|
|
140
|
+
return _symbol(invocation), kwargs
|
|
141
|
+
return _DASHBOARD_WAIT_SYMBOL, {**kwargs, "url": document["dashboard_url"]}
|
|
142
|
+
|
|
132
143
|
|
|
133
|
-
|
|
134
|
-
``
|
|
135
|
-
|
|
144
|
+
def _wait_result(job_id: int, job: Any) -> dict[str, Any]:
|
|
145
|
+
"""The ``job wait`` success payload: the job's response, plus what the job was."""
|
|
146
|
+
data: dict[str, Any] = {"status": "success", "job_id": job_id}
|
|
147
|
+
if isinstance(job, dict):
|
|
148
|
+
data.update({key: job[key] for key in ("operation", "path") if job.get(key) is not None})
|
|
149
|
+
data["result"] = job.get("response", job)
|
|
150
|
+
else:
|
|
151
|
+
data["result"] = job
|
|
152
|
+
return data
|
|
153
|
+
|
|
154
|
+
|
|
155
|
+
def job_wait(invocation: Invocation) -> HandlerResult:
|
|
156
|
+
"""Wait for one job and report success, failure, or still running (15 min default).
|
|
157
|
+
|
|
158
|
+
The job id is a positional argument; optional ``timeout``, ``poll_interval``
|
|
159
|
+
and ``dashboard_url`` (a published dashboard's URL slug) fields are read from
|
|
160
|
+
the ``--input`` document. Success returns ``{status, job_id, result}``; a
|
|
161
|
+
failed job is a ``job_failed`` error with its reason; a wait that runs out is
|
|
162
|
+
a ``timeout`` error, or with ``--return-running`` ``{status: running, job_id,
|
|
163
|
+
resume}``.
|
|
136
164
|
"""
|
|
137
165
|
job_id = _require_int_positional(invocation, "job id")
|
|
138
166
|
document = invocation.load_input() or {}
|
|
139
167
|
kwargs: dict[str, Any] = {"job_id": job_id}
|
|
140
168
|
_forward_optional(document, kwargs, _WAIT_OPTIONAL)
|
|
169
|
+
symbol, kwargs = _wait_call(invocation, document, kwargs)
|
|
141
170
|
try:
|
|
142
171
|
with open_service(invocation) as (service, auth):
|
|
143
|
-
data = service.call(
|
|
172
|
+
data = _wait_result(job_id, service.call(symbol, **kwargs))
|
|
144
173
|
except KeyboardInterrupt as exc:
|
|
145
174
|
# Keep the explicit handle even when the polling implementation raises
|
|
146
175
|
# a bare SIGINT. A caller can inspect/resume it without replaying the
|
|
@@ -2591,7 +2591,8 @@ def view_export_specialized(invocation: Invocation) -> HandlerResult:
|
|
|
2591
2591
|
code="unknown_input_field",
|
|
2592
2592
|
message=(
|
|
2593
2593
|
f"Unknown input field(s) for '{invocation.command_id.replace('.', ' ')}': "
|
|
2594
|
-
f"{', '.join(unknown)}."
|
|
2594
|
+
f"{', '.join(unknown)}. "
|
|
2595
|
+
f"Accepted fields: {', '.join(sorted(allowed - {_DATASET_ID_FIELD}))}."
|
|
2595
2596
|
),
|
|
2596
2597
|
exit_status=EXIT_USAGE,
|
|
2597
2598
|
hint=f"Accepted fields: {', '.join(sorted(allowed - {_DATASET_ID_FIELD}))}.",
|
|
@@ -41,6 +41,8 @@ def invoke(
|
|
|
41
41
|
project_id: int | None = None,
|
|
42
42
|
timeout: float | None = None,
|
|
43
43
|
pipeline_timeout: float | None = None,
|
|
44
|
+
job_timeout: float | None = None,
|
|
45
|
+
return_running: bool = False,
|
|
44
46
|
) -> dict[str, Any]:
|
|
45
47
|
"""Run ``mammoth <args>`` as ``login`` and return its envelope.
|
|
46
48
|
|
|
@@ -54,12 +56,23 @@ def invoke(
|
|
|
54
56
|
``args`` already sets one.
|
|
55
57
|
pipeline_timeout: Pipeline wait timeout in seconds, sent as
|
|
56
58
|
``--pipeline-timeout`` unless ``args`` already sets one.
|
|
59
|
+
job_timeout: Job wait timeout in seconds, sent as ``--job-timeout``
|
|
60
|
+
unless ``args`` already sets one.
|
|
61
|
+
return_running: Send ``--return-running`` so a wait that runs out
|
|
62
|
+
returns a ``status: running`` handle instead of a timeout error.
|
|
57
63
|
|
|
58
64
|
Returns:
|
|
59
65
|
The success envelope (``data`` + ``meta``) or the error envelope
|
|
60
66
|
(``error``). A CLI error is returned, never raised.
|
|
61
67
|
"""
|
|
62
|
-
argv = _argv(
|
|
68
|
+
argv = _argv(
|
|
69
|
+
args,
|
|
70
|
+
project_id=project_id,
|
|
71
|
+
timeout=timeout,
|
|
72
|
+
pipeline_timeout=pipeline_timeout,
|
|
73
|
+
job_timeout=job_timeout,
|
|
74
|
+
return_running=return_running,
|
|
75
|
+
)
|
|
63
76
|
call = embedded.EmbeddedCall(login=login)
|
|
64
77
|
token = embedded.enter(call)
|
|
65
78
|
try:
|
|
@@ -77,6 +90,8 @@ def _argv(
|
|
|
77
90
|
project_id: int | None,
|
|
78
91
|
timeout: float | None,
|
|
79
92
|
pipeline_timeout: float | None,
|
|
93
|
+
job_timeout: float | None,
|
|
94
|
+
return_running: bool,
|
|
80
95
|
) -> list[str]:
|
|
81
96
|
"""``args`` plus the options an embedded call always runs with."""
|
|
82
97
|
argv = list(args)
|
|
@@ -86,6 +101,10 @@ def _argv(
|
|
|
86
101
|
argv += ["--timeout", str(timeout)]
|
|
87
102
|
if pipeline_timeout is not None and not _has_option(argv, "--pipeline-timeout"):
|
|
88
103
|
argv += ["--pipeline-timeout", str(pipeline_timeout)]
|
|
104
|
+
if job_timeout is not None and not _has_option(argv, "--job-timeout"):
|
|
105
|
+
argv += ["--job-timeout", str(job_timeout)]
|
|
106
|
+
if return_running and not _has_option(argv, "--return-running"):
|
|
107
|
+
argv.append("--return-running")
|
|
89
108
|
# Last, so they win over any output or input option in ``args``.
|
|
90
109
|
return [*argv, "--output", "json", "--no-input"]
|
|
91
110
|
|
|
@@ -52,6 +52,126 @@ CODE_JOB_FAILED = "job_failed"
|
|
|
52
52
|
CODE_INTERRUPTED = "interrupted"
|
|
53
53
|
CODE_UNSUPPORTED_CONTRACT = "unsupported_contract"
|
|
54
54
|
|
|
55
|
+
# User-safe, one-line summaries shown to the customer instead of the model-facing
|
|
56
|
+
# ``message``/``hint``. Plain language only: no command names, ids, field names
|
|
57
|
+
# or jargon. Exactly one entry per error code the CLI can raise;
|
|
58
|
+
# ``tests/unit/test_error_summaries.py`` fails if a raised code has none.
|
|
59
|
+
_S_BAD_REQUEST = "The assistant's request wasn't valid, so it is trying a different way."
|
|
60
|
+
_S_BAD_INPUT = "Some of the information provided couldn't be used."
|
|
61
|
+
_S_SIGN_IN = "The assistant isn't signed in to Mammoth."
|
|
62
|
+
_S_INTERNAL = "The assistant hit an internal problem with this step."
|
|
63
|
+
_S_NOT_FOUND = "Something the assistant looked for couldn't be found."
|
|
64
|
+
_S_MISSING_INFO = "The assistant's request was missing some information."
|
|
65
|
+
_S_SETUP = "A setting needed for this step isn't set up correctly."
|
|
66
|
+
_S_UNAVAILABLE = "This step isn't available right now."
|
|
67
|
+
|
|
68
|
+
ERROR_SUMMARIES: dict[str, str] = {
|
|
69
|
+
"aborted": "This step was stopped before it finished.",
|
|
70
|
+
"ambiguous_resource_identity": (
|
|
71
|
+
"More than one item matched, so the assistant needs to be more specific."
|
|
72
|
+
),
|
|
73
|
+
"api_error": "Mammoth couldn't complete this step.",
|
|
74
|
+
"append_schema_mismatch": "The new data doesn't line up with the existing columns.",
|
|
75
|
+
"append_schema_unreadable": "The columns of the existing data couldn't be read.",
|
|
76
|
+
"authentication_failed": "Mammoth didn't accept the sign-in for this step.",
|
|
77
|
+
"authorization_required": "You don't have permission to do this.",
|
|
78
|
+
"capability_not_found": "The assistant tried something Mammoth doesn't support.",
|
|
79
|
+
"confirmation_declined": "This step was not confirmed, so nothing was changed.",
|
|
80
|
+
"confirmation_required": "This step needs your confirmation before it can go ahead.",
|
|
81
|
+
"confirmation_target_mismatch": (
|
|
82
|
+
"The confirmation was for a different item, so nothing was changed."
|
|
83
|
+
),
|
|
84
|
+
"conflict": "This conflicts with the current state of your data, so nothing was changed.",
|
|
85
|
+
"dry_run_targets_unresolvable": (
|
|
86
|
+
"The assistant couldn't tell exactly which items this would change, so nothing was changed."
|
|
87
|
+
),
|
|
88
|
+
"download_failed": "A download didn't complete.",
|
|
89
|
+
"duplicate_input_key": _S_BAD_INPUT,
|
|
90
|
+
"empty_search_query": "The search was empty.",
|
|
91
|
+
"export_already_exists": "An export with that name already exists.",
|
|
92
|
+
"incomplete_environment_auth": _S_SIGN_IN,
|
|
93
|
+
"input_file_not_found": _S_NOT_FOUND,
|
|
94
|
+
"input_format_required": _S_BAD_INPUT,
|
|
95
|
+
"input_not_found": _S_NOT_FOUND,
|
|
96
|
+
"input_too_deep": _S_BAD_INPUT,
|
|
97
|
+
"input_too_large": "The information provided was too large.",
|
|
98
|
+
"input_unreadable": _S_BAD_INPUT,
|
|
99
|
+
"insecure_credential_file": _S_SETUP,
|
|
100
|
+
"insecure_input_file": _S_BAD_INPUT,
|
|
101
|
+
"internal_column_name": "That column is internal to Mammoth and can't be used.",
|
|
102
|
+
"internal_error": _S_INTERNAL,
|
|
103
|
+
"interrupted": "This step was interrupted before it finished.",
|
|
104
|
+
"invalid_argument": _S_BAD_REQUEST,
|
|
105
|
+
"invalid_argument_combination": _S_BAD_REQUEST,
|
|
106
|
+
"invalid_arguments": _S_BAD_REQUEST,
|
|
107
|
+
"invalid_condition": "A filter condition wasn't valid.",
|
|
108
|
+
"invalid_condition_value": "A filter condition used a value that isn't valid.",
|
|
109
|
+
"invalid_config_value": _S_SETUP,
|
|
110
|
+
"invalid_credentials": "The sign-in details weren't accepted.",
|
|
111
|
+
"invalid_input_document": _S_BAD_INPUT,
|
|
112
|
+
"invalid_input_encoding": _S_BAD_INPUT,
|
|
113
|
+
"invalid_input_field_type": _S_BAD_INPUT,
|
|
114
|
+
"invalid_input_format": _S_BAD_INPUT,
|
|
115
|
+
"invalid_login_document": "The sign-in details weren't valid.",
|
|
116
|
+
"invalid_option_value": _S_BAD_REQUEST,
|
|
117
|
+
"invalid_output_mode": _S_BAD_REQUEST,
|
|
118
|
+
"invalid_profile_name": _S_SETUP,
|
|
119
|
+
"invalid_project_id": "The project couldn't be identified.",
|
|
120
|
+
"invalid_resource_context": _S_BAD_REQUEST,
|
|
121
|
+
"invalid_server_prefix": _S_SETUP,
|
|
122
|
+
"invalid_storage_mode": _S_SETUP,
|
|
123
|
+
"invalid_workspace_id": "The workspace couldn't be identified.",
|
|
124
|
+
"job_failed": "A background task didn't finish successfully.",
|
|
125
|
+
"keyring_unavailable": _S_SETUP,
|
|
126
|
+
"keyring_unresponsive": _S_SETUP,
|
|
127
|
+
"login_input_required": _S_SIGN_IN,
|
|
128
|
+
"missing_argument": _S_MISSING_INFO,
|
|
129
|
+
"missing_field": _S_MISSING_INFO,
|
|
130
|
+
"no_output": "This step didn't return anything.",
|
|
131
|
+
"nonfinite_input_number": _S_BAD_INPUT,
|
|
132
|
+
"not_authenticated": _S_SIGN_IN,
|
|
133
|
+
"not_implemented": _S_UNAVAILABLE,
|
|
134
|
+
"outcome_unknown": "It isn't clear whether this step went through. Check before trying again.",
|
|
135
|
+
"pipeline_changed": "The pipeline was changed by someone else while this step ran.",
|
|
136
|
+
"pipeline_reference_error": "A step in the pipeline refers to something that no longer exists.",
|
|
137
|
+
"profile_not_found": _S_SETUP,
|
|
138
|
+
"profile_write_failed": _S_SETUP,
|
|
139
|
+
"project_required": "No project has been chosen for this step.",
|
|
140
|
+
"pypi_response_invalid": "An update check didn't return a usable answer.",
|
|
141
|
+
"pypi_unreachable": "An update check couldn't connect.",
|
|
142
|
+
"resource_identity_required": "The assistant needs to say which item it means.",
|
|
143
|
+
"resource_not_found": _S_NOT_FOUND,
|
|
144
|
+
"retryable_error": "Mammoth was temporarily unavailable. Trying again may work.",
|
|
145
|
+
"schema_not_found": _S_NOT_FOUND,
|
|
146
|
+
"sdk_symbol_unresolved": _S_INTERNAL,
|
|
147
|
+
"skill_conflict": _S_SETUP,
|
|
148
|
+
"task_runtime_error": "A background task hit an error while running.",
|
|
149
|
+
"timeout": "This step took too long. It may still be running.",
|
|
150
|
+
"too_many_goals": _S_BAD_REQUEST,
|
|
151
|
+
"unexpected_argument": _S_BAD_REQUEST,
|
|
152
|
+
"unknown_agent": _S_SETUP,
|
|
153
|
+
"unknown_column": "A column the assistant referred to doesn't exist.",
|
|
154
|
+
"unknown_config_key": _S_SETUP,
|
|
155
|
+
"unknown_input_field": _S_BAD_REQUEST,
|
|
156
|
+
"unknown_option": _S_BAD_REQUEST,
|
|
157
|
+
"unknown_scope": _S_SETUP,
|
|
158
|
+
"unsupported_contract": _S_UNAVAILABLE,
|
|
159
|
+
"unsupported_profile_base_url": _S_SETUP,
|
|
160
|
+
"unsupported_shell": _S_UNAVAILABLE,
|
|
161
|
+
"upgrade_failed": "The update didn't complete.",
|
|
162
|
+
"usage_error": _S_BAD_REQUEST,
|
|
163
|
+
"view_in_draft": "This view is still a draft and can't be used yet.",
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
#: Shown for a code with no entry (a runtime backstop only; the exhaustiveness
|
|
167
|
+
#: test keeps every raised code out of this path).
|
|
168
|
+
DEFAULT_ERROR_SUMMARY = "Something went wrong with this step."
|
|
169
|
+
|
|
170
|
+
|
|
171
|
+
def user_summary(code: str) -> str:
|
|
172
|
+
"""The user-safe one-line summary for an error code."""
|
|
173
|
+
return ERROR_SUMMARIES.get(code, DEFAULT_ERROR_SUMMARY)
|
|
174
|
+
|
|
55
175
|
|
|
56
176
|
@dataclass
|
|
57
177
|
class CliError(Exception):
|
|
@@ -77,6 +197,7 @@ class CliError(Exception):
|
|
|
77
197
|
def to_envelope(self) -> dict[str, Any]:
|
|
78
198
|
error: dict[str, Any] = {
|
|
79
199
|
"code": self.code,
|
|
200
|
+
"summary": user_summary(self.code),
|
|
80
201
|
"message": self.message,
|
|
81
202
|
"hint": self.hint,
|
|
82
203
|
"details": self.details,
|
|
@@ -30,6 +30,11 @@ from mammoth_cli.manifest.loader import command_by_id, load_commands
|
|
|
30
30
|
Gate = Callable[..., None]
|
|
31
31
|
|
|
32
32
|
NOTE_OWN = "No request was sent for this operation; the reads needed to resolve it did run."
|
|
33
|
+
DATAVIEW_GET = "mammoth.api.dataviews.DataviewsAPI.get"
|
|
34
|
+
#: The manifest ``mutation_class`` that marks a command as irreversible: the
|
|
35
|
+
#: only class whose commands the manifest describes as permanent (no undo).
|
|
36
|
+
IRREVERSIBLE_CLASS = "destructive"
|
|
37
|
+
|
|
33
38
|
NOTE_UNDECLARED = (
|
|
34
39
|
"Stopped before an SDK call the command's manifest does not declare; "
|
|
35
40
|
"nothing was sent for it."
|
|
@@ -92,7 +97,8 @@ def make_gate(command_id: str) -> Gate:
|
|
|
92
97
|
# A CLI-composed command (project ensure, ...) is backed by a CLI function
|
|
93
98
|
# and reaches the SDK through whichever writes it needs; those are its own.
|
|
94
99
|
composed = own_symbol.startswith("mammoth_cli.")
|
|
95
|
-
|
|
100
|
+
# The target-name read is a read whichever command asked for it.
|
|
101
|
+
reads = _read_symbols() | {DATAVIEW_GET}
|
|
96
102
|
view_reads = _read_view_methods()
|
|
97
103
|
|
|
98
104
|
def stop(symbol: str, arguments: dict[str, Any], *, own: bool, **scope: Any) -> None:
|
|
@@ -101,6 +107,7 @@ def make_gate(command_id: str) -> Gate:
|
|
|
101
107
|
"dry_run": True,
|
|
102
108
|
"command": command_id.replace(".", " "),
|
|
103
109
|
"mutation_class": mutation_class,
|
|
110
|
+
"irreversible": mutation_class == IRREVERSIBLE_CLASS,
|
|
104
111
|
"would_call": {
|
|
105
112
|
"sdk_symbol": symbol,
|
|
106
113
|
**{key: value for key, value in scope.items() if value is not None},
|