kanibako-cli 1.7.0rc15__tar.gz → 1.7.1__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.
- {kanibako_cli-1.7.0rc15/src/kanibako_cli.egg-info → kanibako_cli-1.7.1}/PKG-INFO +1 -1
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/pyproject.toml +1 -1
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/__init__.py +1 -1
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/_atomic.py +0 -10
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/agent_defaults.py +27 -5
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/box_resolve.py +0 -19
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/box_supervisor.py +485 -84
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/browser_state.py +0 -15
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/cli.py +23 -2
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/commands/agent_cmd.py +1 -1
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/commands/box/_duplicate.py +50 -1
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/commands/box/_lifecycle.py +0 -4
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/commands/box/_parser.py +574 -77
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/commands/code_cmd.py +3 -5
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/commands/diagnose.py +0 -41
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/commands/flags.py +1 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/commands/image.py +0 -29
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/commands/start.py +1126 -475
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/commands/workset_cmd.py +15 -30
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/config.py +0 -72
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/config_interface.py +21 -46
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/container.py +35 -30
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/containerfiles.py +0 -23
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/core_defaults.py +117 -10
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/data/core-defaults.yaml +6 -11
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/data/global/rom/playbook/kanibako/scripts/import-directives.py +29 -22
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/deprecation.py +2 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/helpers.py +0 -46
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/hygiene.py +2 -2
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/image_sharing.py +0 -44
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/names.py +0 -24
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/paths.py +20 -24
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/registry.py +0 -15
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/registry_store.py +159 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/targets/base.py +66 -4
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/templates.py +75 -82
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/templates_image.py +1 -20
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/tweakcc.py +0 -8
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/utils.py +0 -14
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/vscode_config.py +266 -53
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/vscode_remote.py +28 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/workset_registry.py +0 -5
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1/src/kanibako_cli.egg-info}/PKG-INFO +1 -1
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_atomic.py +1 -11
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_box_resolve.py +0 -58
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_box_supervisor.py +549 -44
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_browser_state.py +0 -34
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_cli.py +2 -2
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_config.py +0 -78
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_config_interface.py +15 -48
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_container.py +73 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_containerfiles.py +1 -32
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_create_recovery.py +209 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_delivery_manifest.py +60 -44
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_helpers.py +0 -147
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_image_sharing.py +0 -93
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_import_directives.py +51 -15
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_names.py +327 -4
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_persona_config_set.py +2 -2
- kanibako_cli-1.7.1/tests/test_playbook_delivery.py +211 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_registry.py +0 -18
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_registry_store.py +129 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_setup_cmd.py +4 -4
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_system_paths.py +3 -3
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_templates.py +34 -35
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_templates_image.py +0 -46
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_tweakcc.py +0 -13
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_utils.py +1 -21
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_vscode_remote.py +30 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_workset_registry.py +0 -3
- kanibako_cli-1.7.0rc15/tests/test_playbook_delivery.py +0 -126
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/LICENSE.md +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/README.md +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/setup.cfg +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/__main__.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/agent_config.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/agent_ref.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/agent_representation.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/auth_browser.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/auth_parser.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/baseline.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/box_identity.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/box_lifecycle.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/browser_sidecar.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/bun_sea.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/channels.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/commands/__init__.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/commands/archive.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/commands/baseline_cmd.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/commands/box/__init__.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/commands/clean.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/commands/fork_cmd.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/commands/helper_cmd.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/commands/install.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/commands/restore.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/commands/setup_cmd.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/commands/stop.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/commands/system_cmd.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/commands/upgrade.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/commands/vault_cmd.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/config_io.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/containers/Containerfile.template-android +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/containers/Containerfile.template-dotnet +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/containers/Containerfile.template-js +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/containers/Containerfile.template-jvm +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/containers/Containerfile.template-systems +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/containers/__init__.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/containers/tmux.conf +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/creds_watcher.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/data/__init__.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/data/global/rom/playbook/kanibako/directives/KANIBAKO.md +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/data/global/rom/playbook/kanibako/scripts/clear.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/data/global/rom/playbook/kanibako/scripts/start.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/data/global/template/playbook/CONTENTS.md +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/data/global/template/playbook/agents/directives/AGENTS.md +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/data/global/template/playbook/box/directives/BOX.md +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/data/global/template/playbook/general/directives/GENERAL.md +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/data/global/template/playbook/general/directives/rules/INTERACTION.md +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/data/global/template/playbook/general/directives/rules/WORKPOLICY.md +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/data/global/template/playbook/workset/directives/WORKSET.md +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/data/image-baseline.yaml +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/errors.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/freshness.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/git.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/helper_client.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/helper_listener.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/import_reconcile.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/install_method.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/journal.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/kuid.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/log.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/plugins/__init__.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/py.typed +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/rig_bundle.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/rig_meta.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/rig_registry.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/rig_resolve.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/rig_source.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/scripts/__init__.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/scripts/helper-init.sh +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/scripts/kanibako-entry +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/settings_assemble.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/settings_categories.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/settings_configset.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/settings_expand.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/settings_launch.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/settings_merge.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/settings_resolve.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/settings_store.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/settings_views.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/shellenv.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/shells.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/snapshots.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/targets/__init__.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/targets/assembly.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/targets/credsync.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/targets/no_agent.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/tweakcc_cache.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/workset.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako_cli.egg-info/SOURCES.txt +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako_cli.egg-info/dependency_links.txt +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako_cli.egg-info/entry_points.txt +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako_cli.egg-info/requires.txt +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako_cli.egg-info/top_level.txt +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_agent_config.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_agent_ref.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_agent_representation.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_agent_resolution.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_archive_restore_integration.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_auth_browser.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_auth_parser.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_baseline.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_box_identity.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_box_lifecycle.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_browser_sidecar.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_bun_sea.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_channels.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_cli_exitcodes.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_comms.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_container_extended.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_container_integration.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_credentials.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_creds_watcher.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_defaults_golden.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_deprecations.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_env_cmd.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_error_messages.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_explicit_create.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_fork.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_freshness.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_git.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_helper_client.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_helper_cmd.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_helper_listener.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_hygiene.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_import.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_import_recovery.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_init_cmd.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_install_integration.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_instructions_bind.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_journal.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_kuid.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_lifecycle_integration.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_log.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_meta_pin.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_paths.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_paths_extended.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_resolve_box_target.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_resource_scoping.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_rig_bundle.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_rig_meta.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_rig_registry.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_rig_resolve.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_rig_source.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_safety_invariants.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_settings_assemble.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_settings_categories.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_settings_configset.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_settings_expand.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_settings_launch.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_settings_launch_equivalence.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_settings_merge.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_settings_resolve.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_settings_store.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_settings_views.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_shellenv.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_shells.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_snapshots.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_standalone_paths.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_start_integration.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_status.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_vscode_remote_dispatch.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_workset.py +0 -0
- {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_workset_paths.py +0 -0
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "kanibako-cli"
|
|
7
|
-
version = "1.7.
|
|
7
|
+
version = "1.7.1"
|
|
8
8
|
description = "Run AI coding agents in rootless containers with per-project isolation"
|
|
9
9
|
requires-python = ">=3.11"
|
|
10
10
|
dependencies = ["argcomplete>=3.0", "PyYAML>=6.0", "packaging>=20.0"]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"""kanibako: Run AI coding agents in rootless containers with per-project isolation."""
|
|
2
2
|
|
|
3
|
-
__version__ = "1.7.
|
|
3
|
+
__version__ = "1.7.1"
|
|
4
4
|
|
|
5
5
|
# Two-tier setup/config compatibility constants for the 5-band setup-completion
|
|
6
6
|
# gate (design: ``plans/2026-06-23-setup-version-tiers-NEXT.md``). Both are
|
|
@@ -16,8 +16,6 @@ import os
|
|
|
16
16
|
import tempfile
|
|
17
17
|
from pathlib import Path
|
|
18
18
|
|
|
19
|
-
import yaml
|
|
20
|
-
|
|
21
19
|
|
|
22
20
|
def atomic_write_text(path: Path, data: str) -> None:
|
|
23
21
|
"""Write *data* to *path* atomically.
|
|
@@ -52,11 +50,3 @@ def atomic_write_text(path: Path, data: str) -> None:
|
|
|
52
50
|
raise
|
|
53
51
|
|
|
54
52
|
|
|
55
|
-
def atomic_write_yaml(path: Path, data: object, **dump_kwargs: object) -> None:
|
|
56
|
-
"""Serialize *data* to YAML and write it to *path* atomically.
|
|
57
|
-
|
|
58
|
-
A thin convenience over :func:`atomic_write_text` for the common case of a
|
|
59
|
-
YAML document. Extra keyword arguments are forwarded to ``yaml.safe_dump``.
|
|
60
|
-
"""
|
|
61
|
-
text = yaml.safe_dump(data, **dump_kwargs)
|
|
62
|
-
atomic_write_text(path, text)
|
|
@@ -50,6 +50,7 @@ from kanibako.targets.base import (
|
|
|
50
50
|
CredFileSpec,
|
|
51
51
|
HostSrcOrigin,
|
|
52
52
|
Operation,
|
|
53
|
+
PersonaSpec,
|
|
53
54
|
PluginDescriptor,
|
|
54
55
|
SafeBypass,
|
|
55
56
|
SettingArg,
|
|
@@ -137,6 +138,26 @@ def _build_setting_arg(entry: dict[str, Any]) -> SettingArg:
|
|
|
137
138
|
)
|
|
138
139
|
|
|
139
140
|
|
|
141
|
+
def _build_persona(raw: dict[str, Any] | None) -> PersonaSpec | None:
|
|
142
|
+
"""Build the harness-specific :class:`PersonaSpec` from its block (or None).
|
|
143
|
+
|
|
144
|
+
Absent ``persona:`` → ``None`` → the preflight falls back to claude-style ENV
|
|
145
|
+
endpoint delivery + the ``ANTHROPIC_AUTH_TOKEN`` token var (byte-identical).
|
|
146
|
+
"""
|
|
147
|
+
if not raw:
|
|
148
|
+
return None
|
|
149
|
+
pin_raw = raw.get("provider_pin") or {}
|
|
150
|
+
provider_pin = tuple(sorted((str(k), str(v)) for k, v in pin_raw.items()))
|
|
151
|
+
return PersonaSpec(
|
|
152
|
+
token_var=raw.get("token_var", ""),
|
|
153
|
+
endpoint_delivery=raw.get("endpoint_delivery", "env"),
|
|
154
|
+
wire_api=raw.get("wire_api", "responses"),
|
|
155
|
+
host_dir_adopt=bool(raw.get("host_dir_adopt", True)),
|
|
156
|
+
provider_pin=provider_pin,
|
|
157
|
+
model_required=bool(raw.get("model_required", False)),
|
|
158
|
+
)
|
|
159
|
+
|
|
160
|
+
|
|
140
161
|
def _build_cred_file(entry: dict[str, Any]) -> CredFileSpec:
|
|
141
162
|
return CredFileSpec(
|
|
142
163
|
home_rel=entry["home_rel"],
|
|
@@ -170,6 +191,7 @@ def load_descriptor(package: str, filename: str) -> PluginDescriptor:
|
|
|
170
191
|
},
|
|
171
192
|
safe_bypass=_build_safe_bypass(desc.get("safe_bypass")),
|
|
172
193
|
settings=tuple(_build_setting_arg(s) for s in desc.get("settings", [])),
|
|
194
|
+
persona=_build_persona(desc.get("persona")),
|
|
173
195
|
container_env={
|
|
174
196
|
k: _expand(v) for k, v in desc.get("container_env", {}).items()
|
|
175
197
|
},
|
|
@@ -191,11 +213,11 @@ def load_category_binds(package: str, filename: str) -> dict[str, BindDefault]:
|
|
|
191
213
|
``agent.<category>.<key>`` → a STRUCTURED bind tuple ``(meta_ref, box_dest[,
|
|
192
214
|
"ro"])`` (spec §2a — a tuple, NOT a colon-joined string).
|
|
193
215
|
|
|
194
|
-
The value's element 0 is the RAW ``@``-ref STRING (e.g.
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
216
|
+
The value's element 0 is the RAW ``@``-ref STRING (e.g. a ``"@system.*"``
|
|
217
|
+
source key); the launch category cascade folds it into the floor and ``expand``
|
|
218
|
+
resolves it to the referenced path — so a plugin declares a bind to a shared
|
|
219
|
+
source WITHOUT any per-harness path knowledge in core (spec §2d L608).
|
|
220
|
+
``start.py`` unions this table
|
|
199
221
|
into ``default_categories`` alongside :func:`load_shares`; the bare
|
|
200
222
|
``agent.<category>.*`` key is re-rooted to the active slot by
|
|
201
223
|
``settings_launch._agent_scope_qualify`` exactly like a share.
|
|
@@ -126,25 +126,6 @@ def _find_owning_box(
|
|
|
126
126
|
return None
|
|
127
127
|
|
|
128
128
|
|
|
129
|
-
def find_owning_workset(
|
|
130
|
-
project_dir: Path,
|
|
131
|
-
std: StandardPaths,
|
|
132
|
-
config: KanibakoConfig,
|
|
133
|
-
) -> tuple[str, Path, BoxMode] | None:
|
|
134
|
-
"""Return the workset that OWNS the box at *project_dir*, or ``None``.
|
|
135
|
-
|
|
136
|
-
Enumerates ALL worksets (global ``worksets:`` + the PRIMARY at
|
|
137
|
-
``config.primary_workset``) and scans their per-workset registries'
|
|
138
|
-
``boxes:`` membership for a PATH == *project_dir* match (D10). Returns the
|
|
139
|
-
owning workset's ``(name, root, mode)`` where ``mode`` is ``primary`` (the
|
|
140
|
-
PRIMARY workset) or ``named``. ``None`` when no workset lists the dir.
|
|
141
|
-
"""
|
|
142
|
-
owned = _find_owning_box(project_dir, std, config)
|
|
143
|
-
if owned is None:
|
|
144
|
-
return None
|
|
145
|
-
return (owned.workset_name, owned.workset_root, owned.mode)
|
|
146
|
-
|
|
147
|
-
|
|
148
129
|
def find_connected_external_box(
|
|
149
130
|
project_dir: Path,
|
|
150
131
|
std: StandardPaths,
|