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.
Files changed (234) hide show
  1. {kanibako_cli-1.7.0rc15/src/kanibako_cli.egg-info → kanibako_cli-1.7.1}/PKG-INFO +1 -1
  2. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/pyproject.toml +1 -1
  3. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/__init__.py +1 -1
  4. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/_atomic.py +0 -10
  5. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/agent_defaults.py +27 -5
  6. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/box_resolve.py +0 -19
  7. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/box_supervisor.py +485 -84
  8. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/browser_state.py +0 -15
  9. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/cli.py +23 -2
  10. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/commands/agent_cmd.py +1 -1
  11. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/commands/box/_duplicate.py +50 -1
  12. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/commands/box/_lifecycle.py +0 -4
  13. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/commands/box/_parser.py +574 -77
  14. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/commands/code_cmd.py +3 -5
  15. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/commands/diagnose.py +0 -41
  16. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/commands/flags.py +1 -0
  17. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/commands/image.py +0 -29
  18. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/commands/start.py +1126 -475
  19. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/commands/workset_cmd.py +15 -30
  20. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/config.py +0 -72
  21. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/config_interface.py +21 -46
  22. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/container.py +35 -30
  23. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/containerfiles.py +0 -23
  24. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/core_defaults.py +117 -10
  25. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/data/core-defaults.yaml +6 -11
  26. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/data/global/rom/playbook/kanibako/scripts/import-directives.py +29 -22
  27. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/deprecation.py +2 -0
  28. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/helpers.py +0 -46
  29. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/hygiene.py +2 -2
  30. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/image_sharing.py +0 -44
  31. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/names.py +0 -24
  32. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/paths.py +20 -24
  33. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/registry.py +0 -15
  34. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/registry_store.py +159 -0
  35. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/targets/base.py +66 -4
  36. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/templates.py +75 -82
  37. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/templates_image.py +1 -20
  38. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/tweakcc.py +0 -8
  39. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/utils.py +0 -14
  40. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/vscode_config.py +266 -53
  41. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/vscode_remote.py +28 -0
  42. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/workset_registry.py +0 -5
  43. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1/src/kanibako_cli.egg-info}/PKG-INFO +1 -1
  44. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_atomic.py +1 -11
  45. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_box_resolve.py +0 -58
  46. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_box_supervisor.py +549 -44
  47. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_browser_state.py +0 -34
  48. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_cli.py +2 -2
  49. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_config.py +0 -78
  50. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_config_interface.py +15 -48
  51. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_container.py +73 -0
  52. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_containerfiles.py +1 -32
  53. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_create_recovery.py +209 -0
  54. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_delivery_manifest.py +60 -44
  55. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_helpers.py +0 -147
  56. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_image_sharing.py +0 -93
  57. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_import_directives.py +51 -15
  58. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_names.py +327 -4
  59. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_persona_config_set.py +2 -2
  60. kanibako_cli-1.7.1/tests/test_playbook_delivery.py +211 -0
  61. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_registry.py +0 -18
  62. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_registry_store.py +129 -0
  63. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_setup_cmd.py +4 -4
  64. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_system_paths.py +3 -3
  65. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_templates.py +34 -35
  66. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_templates_image.py +0 -46
  67. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_tweakcc.py +0 -13
  68. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_utils.py +1 -21
  69. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_vscode_remote.py +30 -0
  70. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_workset_registry.py +0 -3
  71. kanibako_cli-1.7.0rc15/tests/test_playbook_delivery.py +0 -126
  72. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/LICENSE.md +0 -0
  73. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/README.md +0 -0
  74. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/setup.cfg +0 -0
  75. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/__main__.py +0 -0
  76. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/agent_config.py +0 -0
  77. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/agent_ref.py +0 -0
  78. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/agent_representation.py +0 -0
  79. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/auth_browser.py +0 -0
  80. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/auth_parser.py +0 -0
  81. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/baseline.py +0 -0
  82. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/box_identity.py +0 -0
  83. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/box_lifecycle.py +0 -0
  84. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/browser_sidecar.py +0 -0
  85. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/bun_sea.py +0 -0
  86. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/channels.py +0 -0
  87. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/commands/__init__.py +0 -0
  88. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/commands/archive.py +0 -0
  89. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/commands/baseline_cmd.py +0 -0
  90. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/commands/box/__init__.py +0 -0
  91. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/commands/clean.py +0 -0
  92. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/commands/fork_cmd.py +0 -0
  93. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/commands/helper_cmd.py +0 -0
  94. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/commands/install.py +0 -0
  95. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/commands/restore.py +0 -0
  96. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/commands/setup_cmd.py +0 -0
  97. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/commands/stop.py +0 -0
  98. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/commands/system_cmd.py +0 -0
  99. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/commands/upgrade.py +0 -0
  100. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/commands/vault_cmd.py +0 -0
  101. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/config_io.py +0 -0
  102. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/containers/Containerfile.template-android +0 -0
  103. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/containers/Containerfile.template-dotnet +0 -0
  104. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/containers/Containerfile.template-js +0 -0
  105. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/containers/Containerfile.template-jvm +0 -0
  106. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/containers/Containerfile.template-systems +0 -0
  107. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/containers/__init__.py +0 -0
  108. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/containers/tmux.conf +0 -0
  109. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/creds_watcher.py +0 -0
  110. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/data/__init__.py +0 -0
  111. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/data/global/rom/playbook/kanibako/directives/KANIBAKO.md +0 -0
  112. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/data/global/rom/playbook/kanibako/scripts/clear.py +0 -0
  113. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/data/global/rom/playbook/kanibako/scripts/start.py +0 -0
  114. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/data/global/template/playbook/CONTENTS.md +0 -0
  115. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/data/global/template/playbook/agents/directives/AGENTS.md +0 -0
  116. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/data/global/template/playbook/box/directives/BOX.md +0 -0
  117. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/data/global/template/playbook/general/directives/GENERAL.md +0 -0
  118. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/data/global/template/playbook/general/directives/rules/INTERACTION.md +0 -0
  119. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/data/global/template/playbook/general/directives/rules/WORKPOLICY.md +0 -0
  120. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/data/global/template/playbook/workset/directives/WORKSET.md +0 -0
  121. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/data/image-baseline.yaml +0 -0
  122. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/errors.py +0 -0
  123. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/freshness.py +0 -0
  124. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/git.py +0 -0
  125. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/helper_client.py +0 -0
  126. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/helper_listener.py +0 -0
  127. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/import_reconcile.py +0 -0
  128. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/install_method.py +0 -0
  129. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/journal.py +0 -0
  130. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/kuid.py +0 -0
  131. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/log.py +0 -0
  132. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/plugins/__init__.py +0 -0
  133. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/py.typed +0 -0
  134. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/rig_bundle.py +0 -0
  135. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/rig_meta.py +0 -0
  136. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/rig_registry.py +0 -0
  137. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/rig_resolve.py +0 -0
  138. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/rig_source.py +0 -0
  139. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/scripts/__init__.py +0 -0
  140. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/scripts/helper-init.sh +0 -0
  141. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/scripts/kanibako-entry +0 -0
  142. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/settings_assemble.py +0 -0
  143. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/settings_categories.py +0 -0
  144. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/settings_configset.py +0 -0
  145. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/settings_expand.py +0 -0
  146. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/settings_launch.py +0 -0
  147. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/settings_merge.py +0 -0
  148. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/settings_resolve.py +0 -0
  149. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/settings_store.py +0 -0
  150. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/settings_views.py +0 -0
  151. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/shellenv.py +0 -0
  152. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/shells.py +0 -0
  153. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/snapshots.py +0 -0
  154. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/targets/__init__.py +0 -0
  155. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/targets/assembly.py +0 -0
  156. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/targets/credsync.py +0 -0
  157. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/targets/no_agent.py +0 -0
  158. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/tweakcc_cache.py +0 -0
  159. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako/workset.py +0 -0
  160. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako_cli.egg-info/SOURCES.txt +0 -0
  161. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako_cli.egg-info/dependency_links.txt +0 -0
  162. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako_cli.egg-info/entry_points.txt +0 -0
  163. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako_cli.egg-info/requires.txt +0 -0
  164. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/src/kanibako_cli.egg-info/top_level.txt +0 -0
  165. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_agent_config.py +0 -0
  166. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_agent_ref.py +0 -0
  167. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_agent_representation.py +0 -0
  168. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_agent_resolution.py +0 -0
  169. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_archive_restore_integration.py +0 -0
  170. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_auth_browser.py +0 -0
  171. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_auth_parser.py +0 -0
  172. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_baseline.py +0 -0
  173. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_box_identity.py +0 -0
  174. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_box_lifecycle.py +0 -0
  175. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_browser_sidecar.py +0 -0
  176. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_bun_sea.py +0 -0
  177. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_channels.py +0 -0
  178. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_cli_exitcodes.py +0 -0
  179. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_comms.py +0 -0
  180. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_container_extended.py +0 -0
  181. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_container_integration.py +0 -0
  182. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_credentials.py +0 -0
  183. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_creds_watcher.py +0 -0
  184. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_defaults_golden.py +0 -0
  185. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_deprecations.py +0 -0
  186. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_env_cmd.py +0 -0
  187. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_error_messages.py +0 -0
  188. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_explicit_create.py +0 -0
  189. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_fork.py +0 -0
  190. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_freshness.py +0 -0
  191. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_git.py +0 -0
  192. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_helper_client.py +0 -0
  193. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_helper_cmd.py +0 -0
  194. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_helper_listener.py +0 -0
  195. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_hygiene.py +0 -0
  196. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_import.py +0 -0
  197. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_import_recovery.py +0 -0
  198. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_init_cmd.py +0 -0
  199. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_install_integration.py +0 -0
  200. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_instructions_bind.py +0 -0
  201. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_journal.py +0 -0
  202. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_kuid.py +0 -0
  203. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_lifecycle_integration.py +0 -0
  204. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_log.py +0 -0
  205. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_meta_pin.py +0 -0
  206. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_paths.py +0 -0
  207. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_paths_extended.py +0 -0
  208. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_resolve_box_target.py +0 -0
  209. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_resource_scoping.py +0 -0
  210. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_rig_bundle.py +0 -0
  211. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_rig_meta.py +0 -0
  212. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_rig_registry.py +0 -0
  213. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_rig_resolve.py +0 -0
  214. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_rig_source.py +0 -0
  215. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_safety_invariants.py +0 -0
  216. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_settings_assemble.py +0 -0
  217. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_settings_categories.py +0 -0
  218. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_settings_configset.py +0 -0
  219. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_settings_expand.py +0 -0
  220. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_settings_launch.py +0 -0
  221. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_settings_launch_equivalence.py +0 -0
  222. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_settings_merge.py +0 -0
  223. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_settings_resolve.py +0 -0
  224. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_settings_store.py +0 -0
  225. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_settings_views.py +0 -0
  226. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_shellenv.py +0 -0
  227. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_shells.py +0 -0
  228. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_snapshots.py +0 -0
  229. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_standalone_paths.py +0 -0
  230. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_start_integration.py +0 -0
  231. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_status.py +0 -0
  232. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_vscode_remote_dispatch.py +0 -0
  233. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_workset.py +0 -0
  234. {kanibako_cli-1.7.0rc15 → kanibako_cli-1.7.1}/tests/test_workset_paths.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: kanibako-cli
3
- Version: 1.7.0rc15
3
+ Version: 1.7.1
4
4
  Summary: Run AI coding agents in rootless containers with per-project isolation
5
5
  Requires-Python: >=3.11
6
6
  License-File: LICENSE.md
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "kanibako-cli"
7
- version = "1.7.0rc15"
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.0rc15"
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
- ``"@system.instructions"``); the launch category cascade folds it into the floor
196
- and ``expand`` resolves it to the referenced path — so a plugin declares a bind
197
- to the shared source WITHOUT any per-harness path knowledge in core (spec §2d
198
- L608 — the PLUGIN-declared instructions bind). ``start.py`` unions this table
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,