kapsel-cli 0.5.4__tar.gz → 0.6.3__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 (125) hide show
  1. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/PKG-INFO +1 -1
  2. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/kapsel/__init__.py +1 -1
  3. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/kapsel/cli.py +11 -0
  4. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/kapsel/completion/completer.py +1 -0
  5. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/kapsel/completion/kps/builtins/__init__.py +10 -0
  6. kapsel_cli-0.6.3/kapsel/completion/kps/builtins/add.py +662 -0
  7. kapsel_cli-0.6.3/kapsel/completion/kps/builtins/restart.py +74 -0
  8. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/kapsel/completion/kps/builtins/status.py +7 -1
  9. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/kapsel/completion/kps/builtins/upgrade.py +102 -32
  10. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/kapsel/completion/spec_manager.py +0 -1
  11. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/kapsel/core/detector.py +32 -0
  12. kapsel_cli-0.6.3/kapsel/core/tools/__init__.py +36 -0
  13. kapsel_cli-0.6.3/kapsel/core/tools/installer.py +374 -0
  14. kapsel_cli-0.6.3/kapsel/core/tools/registry.py +219 -0
  15. kapsel_cli-0.6.3/kapsel/core/update_check.py +140 -0
  16. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/kapsel/storage/config.py +6 -2
  17. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/kapsel/storage/history.py +15 -9
  18. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/kapsel/ui/banner.py +10 -1
  19. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/kapsel/ui/card.py +4 -0
  20. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/kapsel/ui/theme.py +1 -0
  21. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/kapsel/ui/viewport.py +4 -0
  22. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/kapsel_cli.egg-info/PKG-INFO +1 -1
  23. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/kapsel_cli.egg-info/SOURCES.txt +10 -0
  24. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/pyproject.toml +1 -1
  25. kapsel_cli-0.6.3/tests/test_add_concurrent.py +82 -0
  26. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/tests/test_history.py +22 -4
  27. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/tests/test_plugin_ai.py +192 -35
  28. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/tests/test_plugin_backup.py +1 -1
  29. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/tests/test_plugin_fetcher.py +2 -1
  30. kapsel_cli-0.6.3/tests/test_plugin_help.py +204 -0
  31. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/tests/test_plugin_install.py +90 -0
  32. kapsel_cli-0.6.3/tests/test_plugin_mend.py +154 -0
  33. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/tests/test_plugin_preview.py +2 -2
  34. kapsel_cli-0.6.3/tests/test_restart_and_pypi.py +85 -0
  35. kapsel_cli-0.6.3/tests/test_tools_registry.py +87 -0
  36. kapsel_cli-0.5.4/kapsel/completion/kps/builtins/add.py +0 -218
  37. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/README.md +0 -0
  38. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/kapsel/__main__.py +0 -0
  39. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/kapsel/completion/__init__.py +0 -0
  40. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/kapsel/completion/carapace_engine.py +0 -0
  41. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/kapsel/completion/carapace_installer.py +0 -0
  42. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/kapsel/completion/kps/__init__.py +0 -0
  43. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/kapsel/completion/kps/builtins/completion.py +0 -0
  44. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/kapsel/completion/kps/builtins/config.py +0 -0
  45. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/kapsel/completion/kps/builtins/datadir.py +0 -0
  46. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/kapsel/completion/kps/builtins/dir_nav.py +0 -0
  47. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/kapsel/completion/kps/builtins/help.py +0 -0
  48. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/kapsel/completion/kps/builtins/language.py +0 -0
  49. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/kapsel/completion/kps/builtins/plugin_switch.py +0 -0
  50. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/kapsel/completion/kps/builtins/search.py +0 -0
  51. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/kapsel/completion/kps/builtins/toggle.py +0 -0
  52. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/kapsel/completion/kps/dispatcher.py +0 -0
  53. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/kapsel/completion/kps/registry.py +0 -0
  54. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/kapsel/core/__init__.py +0 -0
  55. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/kapsel/core/block/__init__.py +0 -0
  56. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/kapsel/core/block/model.py +0 -0
  57. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/kapsel/core/block/registry.py +0 -0
  58. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/kapsel/core/block/runner.py +0 -0
  59. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/kapsel/core/engine.py +0 -0
  60. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/kapsel/core/executor.py +0 -0
  61. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/kapsel/core/i18n.py +0 -0
  62. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/kapsel/core/plugin/__init__.py +0 -0
  63. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/kapsel/core/plugin/base.py +0 -0
  64. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/kapsel/core/plugin/catalog.py +0 -0
  65. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/kapsel/core/plugin/context.py +0 -0
  66. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/kapsel/core/plugin/fetcher.py +0 -0
  67. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/kapsel/core/plugin/hooks.py +0 -0
  68. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/kapsel/core/plugin/manager.py +0 -0
  69. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/kapsel/i18n.py +0 -0
  70. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/kapsel/locales/de/LC_MESSAGES/kapsel.mo +0 -0
  71. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/kapsel/locales/de/LC_MESSAGES/kapsel.po +0 -0
  72. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/kapsel/locales/de/help.yaml +0 -0
  73. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/kapsel/locales/de/tips.yaml +0 -0
  74. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/kapsel/locales/en/help.yaml +0 -0
  75. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/kapsel/locales/en/tips.yaml +0 -0
  76. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/kapsel/locales/es/LC_MESSAGES/kapsel.mo +0 -0
  77. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/kapsel/locales/es/LC_MESSAGES/kapsel.po +0 -0
  78. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/kapsel/locales/es/help.yaml +0 -0
  79. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/kapsel/locales/es/tips.yaml +0 -0
  80. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/kapsel/locales/fr/LC_MESSAGES/kapsel.mo +0 -0
  81. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/kapsel/locales/fr/LC_MESSAGES/kapsel.po +0 -0
  82. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/kapsel/locales/fr/help.yaml +0 -0
  83. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/kapsel/locales/fr/tips.yaml +0 -0
  84. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/kapsel/locales/ja/LC_MESSAGES/kapsel.mo +0 -0
  85. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/kapsel/locales/ja/LC_MESSAGES/kapsel.po +0 -0
  86. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/kapsel/locales/ja/help.yaml +0 -0
  87. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/kapsel/locales/ja/tips.yaml +0 -0
  88. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/kapsel/locales/kapsel.pot +0 -0
  89. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/kapsel/locales/ru/LC_MESSAGES/kapsel.mo +0 -0
  90. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/kapsel/locales/ru/LC_MESSAGES/kapsel.po +0 -0
  91. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/kapsel/locales/ru/help.yaml +0 -0
  92. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/kapsel/locales/ru/tips.yaml +0 -0
  93. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/kapsel/locales/zh_CN/LC_MESSAGES/kapsel.mo +0 -0
  94. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/kapsel/locales/zh_CN/LC_MESSAGES/kapsel.po +0 -0
  95. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/kapsel/locales/zh_CN/help.yaml +0 -0
  96. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/kapsel/locales/zh_CN/tips.yaml +0 -0
  97. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/kapsel/storage/__init__.py +0 -0
  98. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/kapsel/storage/logger.py +0 -0
  99. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/kapsel/storage/migrate.py +0 -0
  100. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/kapsel/ui/__init__.py +0 -0
  101. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/kapsel/ui/prompt.py +0 -0
  102. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/kapsel/ui/tips.py +0 -0
  103. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/kapsel_cli.egg-info/dependency_links.txt +0 -0
  104. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/kapsel_cli.egg-info/entry_points.txt +0 -0
  105. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/kapsel_cli.egg-info/requires.txt +0 -0
  106. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/kapsel_cli.egg-info/top_level.txt +0 -0
  107. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/setup.cfg +0 -0
  108. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/tests/test_block_system.py +0 -0
  109. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/tests/test_carapace_installer.py +0 -0
  110. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/tests/test_config.py +0 -0
  111. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/tests/test_dir_nav.py +0 -0
  112. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/tests/test_i18n.py +0 -0
  113. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/tests/test_plugin_alias.py +0 -0
  114. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/tests/test_plugin_autopilot.py +0 -0
  115. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/tests/test_plugin_commit.py +0 -0
  116. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/tests/test_plugin_init.py +0 -0
  117. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/tests/test_plugin_lang.py +0 -0
  118. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/tests/test_plugin_portal.py +0 -0
  119. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/tests/test_plugin_queue.py +0 -0
  120. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/tests/test_plugin_template.py +0 -0
  121. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/tests/test_plugin_trans.py +0 -0
  122. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/tests/test_search_and_completions.py +0 -0
  123. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/tests/test_spec_manager.py +0 -0
  124. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/tests/test_toggle.py +0 -0
  125. {kapsel_cli-0.5.4 → kapsel_cli-0.6.3}/tests/test_upgrade.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: kapsel-cli
3
- Version: 0.5.4
3
+ Version: 0.6.3
4
4
  Summary: Next-generation cross-platform terminal capsule & ergonomic shell multiplexer with context-aware command translation and 1,000+ CLI completions.
5
5
  Author-email: MrEiu <k648888@vip.qq.com>
6
6
  License: MIT
@@ -3,4 +3,4 @@ Kapsel: Cross-platform adaptive smart terminal capsule.
3
3
  Wrap complexity, expose simplicity.
4
4
  """
5
5
 
6
- __version__ = "0.5.4"
6
+ __version__ = "0.6.3"
@@ -48,6 +48,11 @@ def main(args: Optional[List[str]] = None) -> int:
48
48
  )
49
49
  return result.execution.exit_code
50
50
 
51
+ # Handle 'kapsel restart'
52
+ if clean_args and clean_args[0] == "restart":
53
+ from kapsel.completion.kps.builtins.restart import handle_restart
54
+ return handle_restart()
55
+
51
56
  # If positional subcommands passed (e.g. kapsel toggle, kapsel status, kapsel help, kapsel add, kapsel config, kapsel datadir)
52
57
  if clean_args:
53
58
  engine = DualStateEngine()
@@ -99,10 +104,16 @@ def main(args: Optional[List[str]] = None) -> int:
99
104
 
100
105
  normalized = " ".join(stripped.lower().split())
101
106
  if normalized in ("exit", "quit", "bye"):
107
+ engine.history_mgr.record_command(command=user_input, mode="builtin")
102
108
  os.environ.pop("KAPSEL_ACTIVE", None)
103
109
  console.print("[dim]Exited Kapsel.[/]")
104
110
  break
105
111
 
112
+ if normalized in ("restart", "kapsel restart", "reload"):
113
+ engine.history_mgr.record_command(command=user_input, mode="builtin")
114
+ from kapsel.completion.kps.builtins.restart import handle_restart
115
+ return handle_restart(console=console)
116
+
106
117
  try:
107
118
  result = engine.dispatch(user_input)
108
119
  if engine.config.enable_card_border and not result.execution.is_builtin:
@@ -312,6 +312,7 @@ class DualStateCompleter(Completer):
312
312
  ("cd", _("Change directory")),
313
313
  ("clear", _("Clear terminal screen")),
314
314
  ("exit", _("Exit session")),
315
+ ("restart", _("Cleanly restart Kapsel interactive shell session")),
315
316
  ("git", _("Git version control")),
316
317
  ("docker", _("Docker container platform")),
317
318
  ("scoop", _("Windows command-line installer")),
@@ -215,3 +215,13 @@ def register_builtins(registry: "KpsCommandRegistry") -> None:
215
215
  scope="system",
216
216
  )
217
217
 
218
+ # 12. restart (Re-launch Kapsel interactive shell)
219
+ from kapsel.completion.kps.builtins.restart import handle_restart_command
220
+ registry.register(
221
+ name="restart",
222
+ handler=handle_restart_command,
223
+ help_text="Cleanly restart Kapsel interactive shell session",
224
+ usage="kapsel restart",
225
+ scope="system",
226
+ )
227
+