swarph-cli 0.13.4__tar.gz → 0.13.5__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 (114) hide show
  1. {swarph_cli-0.13.4/src/swarph_cli.egg-info → swarph_cli-0.13.5}/PKG-INFO +1 -1
  2. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/pyproject.toml +1 -1
  3. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/src/swarph_cli/__init__.py +1 -1
  4. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/src/swarph_cli/commands/spawn.py +7 -0
  5. {swarph_cli-0.13.4 → swarph_cli-0.13.5/src/swarph_cli.egg-info}/PKG-INFO +1 -1
  6. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/tests/test_spawn_command.py +12 -0
  7. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/LICENSE +0 -0
  8. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/README.md +0 -0
  9. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/setup.cfg +0 -0
  10. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/src/swarph_cli/caller.py +0 -0
  11. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/src/swarph_cli/capture/__init__.py +0 -0
  12. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/src/swarph_cli/capture/harden.py +0 -0
  13. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/src/swarph_cli/capture/lineage.py +0 -0
  14. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/src/swarph_cli/capture/liveness.py +0 -0
  15. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/src/swarph_cli/capture/manifest.py +0 -0
  16. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/src/swarph_cli/capture/paths.py +0 -0
  17. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/src/swarph_cli/capture/verify.py +0 -0
  18. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/src/swarph_cli/cell.py +0 -0
  19. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/src/swarph_cli/commands/__init__.py +0 -0
  20. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/src/swarph_cli/commands/add.py +0 -0
  21. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/src/swarph_cli/commands/cell.py +0 -0
  22. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/src/swarph_cli/commands/chat.py +0 -0
  23. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/src/swarph_cli/commands/compress.py +0 -0
  24. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/src/swarph_cli/commands/daemon.py +0 -0
  25. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/src/swarph_cli/commands/hook_output.py +0 -0
  26. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/src/swarph_cli/commands/hooks.py +0 -0
  27. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/src/swarph_cli/commands/import_session.py +0 -0
  28. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/src/swarph_cli/commands/init.py +0 -0
  29. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/src/swarph_cli/commands/install_hook.py +0 -0
  30. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/src/swarph_cli/commands/mcp_server.py +0 -0
  31. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/src/swarph_cli/commands/memory_sync.py +0 -0
  32. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/src/swarph_cli/commands/mesh.py +0 -0
  33. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/src/swarph_cli/commands/onboard.py +0 -0
  34. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/src/swarph_cli/commands/protocol_handler.py +0 -0
  35. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/src/swarph_cli/commands/ratify.py +0 -0
  36. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/src/swarph_cli/commands/security.py +0 -0
  37. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/src/swarph_cli/commands/watchdog.py +0 -0
  38. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/src/swarph_cli/compress/__init__.py +0 -0
  39. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/src/swarph_cli/compress/levers.py +0 -0
  40. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/src/swarph_cli/compress/marker.py +0 -0
  41. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/src/swarph_cli/compress/verify.py +0 -0
  42. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/src/swarph_cli/main.py +0 -0
  43. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/src/swarph_cli/parsers/__init__.py +0 -0
  44. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/src/swarph_cli/parsers/claude.py +0 -0
  45. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/src/swarph_cli/systemd/swarph-watchdog.default +0 -0
  46. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/src/swarph_cli/systemd/swarph-watchdog.service +0 -0
  47. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/src/swarph_cli/systemd/swarph-watchdog.timer +0 -0
  48. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/src/swarph_cli.egg-info/SOURCES.txt +0 -0
  49. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/src/swarph_cli.egg-info/dependency_links.txt +0 -0
  50. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/src/swarph_cli.egg-info/entry_points.txt +0 -0
  51. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/src/swarph_cli.egg-info/requires.txt +0 -0
  52. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/src/swarph_cli.egg-info/top_level.txt +0 -0
  53. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/tests/test_add_security_gate.py +0 -0
  54. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/tests/test_artifact_add.py +0 -0
  55. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/tests/test_artifact_hash.py +0 -0
  56. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/tests/test_artifact_lib.py +0 -0
  57. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/tests/test_artifact_mcp.py +0 -0
  58. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/tests/test_artifact_skill.py +0 -0
  59. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/tests/test_artifact_tool.py +0 -0
  60. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/tests/test_artifact_uri.py +0 -0
  61. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/tests/test_caller_meta_guard.py +0 -0
  62. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/tests/test_capture_lineage.py +0 -0
  63. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/tests/test_capture_liveness.py +0 -0
  64. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/tests/test_capture_manifest.py +0 -0
  65. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/tests/test_capture_paths.py +0 -0
  66. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/tests/test_capture_security.py +0 -0
  67. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/tests/test_cell_command_dispatch.py +0 -0
  68. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/tests/test_cell_harden.py +0 -0
  69. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/tests/test_cell_loader.py +0 -0
  70. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/tests/test_cell_verify.py +0 -0
  71. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/tests/test_chat_command.py +0 -0
  72. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/tests/test_claude_parser.py +0 -0
  73. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/tests/test_claude_tmux_template.py +0 -0
  74. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/tests/test_compress_caller_convention.py +0 -0
  75. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/tests/test_compress_command.py +0 -0
  76. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/tests/test_compress_levers.py +0 -0
  77. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/tests/test_compress_marker.py +0 -0
  78. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/tests/test_compress_verify.py +0 -0
  79. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/tests/test_daemon_command.py +0 -0
  80. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/tests/test_feature_to_uri.py +0 -0
  81. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/tests/test_hook_output.py +0 -0
  82. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/tests/test_hooks_add.py +0 -0
  83. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/tests/test_hooks_bundle.py +0 -0
  84. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/tests/test_hooks_init.py +0 -0
  85. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/tests/test_hooks_lifecycle.py +0 -0
  86. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/tests/test_hooks_merge.py +0 -0
  87. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/tests/test_import_command.py +0 -0
  88. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/tests/test_init_command.py +0 -0
  89. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/tests/test_install_hook.py +0 -0
  90. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/tests/test_main.py +0 -0
  91. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/tests/test_mcp_server.py +0 -0
  92. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/tests/test_memory_sync.py +0 -0
  93. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/tests/test_mesh_command.py +0 -0
  94. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/tests/test_mesh_sidecar.py +0 -0
  95. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/tests/test_onboard_command.py +0 -0
  96. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/tests/test_protocol_handler.py +0 -0
  97. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/tests/test_ratify_command.py +0 -0
  98. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/tests/test_repl_caller_convention.py +0 -0
  99. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/tests/test_security.py +0 -0
  100. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/tests/test_session_path_role_gate.py +0 -0
  101. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/tests/test_smoke_chat.py +0 -0
  102. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/tests/test_smoke_one_shot.py +0 -0
  103. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/tests/test_smoke_phase_5_5.py +0 -0
  104. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/tests/test_spawn_live_pin.py +0 -0
  105. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/tests/test_spawn_mitosis_lineage.py +0 -0
  106. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/tests/test_spawn_tmux_session.py +0 -0
  107. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/tests/test_spawn_windows_relaunch.py +0 -0
  108. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/tests/test_version_consistency.py +0 -0
  109. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/tests/test_watchdog.py +0 -0
  110. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/tests/test_watchdog_dm_wake.py +0 -0
  111. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/tests/test_watchdog_dm_wake_cooldown.py +0 -0
  112. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/tests/test_watchdog_dm_wake_wiring.py +0 -0
  113. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/tests/test_watchdog_model_rung.py +0 -0
  114. {swarph_cli-0.13.4 → swarph_cli-0.13.5}/tests/test_watchdog_stale_peers.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: swarph-cli
3
- Version: 0.13.4
3
+ Version: 0.13.5
4
4
  Summary: The `swarph` binary — multi-LLM CLI + mesh-gateway integration: multi-provider `swarph spawn` (claude/codex/antigravity per cell.provider via a ProviderMembrane + subprocess billing-scrub), interactive `swarph init`, `swarph mesh` (send/inbox/register) + inbox sidecar, `assisted_memory` (git-backed durable memory), session import, watchdog. v0.9.5: foolproof Windows auto-relaunch (genuine-WT detection via process ancestry, not WT_SESSION).
5
5
  Author: Pierre Samson, Claude Opus
6
6
  License: MIT
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "swarph-cli"
7
- version = "0.13.4"
7
+ version = "0.13.5"
8
8
  description = "The `swarph` binary — multi-LLM CLI + mesh-gateway integration: multi-provider `swarph spawn` (claude/codex/antigravity per cell.provider via a ProviderMembrane + subprocess billing-scrub), interactive `swarph init`, `swarph mesh` (send/inbox/register) + inbox sidecar, `assisted_memory` (git-backed durable memory), session import, watchdog. v0.9.5: foolproof Windows auto-relaunch (genuine-WT detection via process ancestry, not WT_SESSION)."
9
9
  readme = "README.md"
10
10
  license = { text = "MIT" }
@@ -16,6 +16,6 @@ The architecture splits CLI from substrate so:
16
16
 
17
17
  from __future__ import annotations
18
18
 
19
- __version__ = "0.13.4"
19
+ __version__ = "0.13.5"
20
20
 
21
21
  __all__ = ["__version__"]
@@ -418,6 +418,13 @@ def _claude_env() -> dict[str, str]:
418
418
  """
419
419
  env = scrub_env_for_subprocess()
420
420
  env["SWARPH_SPAWN"] = "1"
421
+ # Disable the Claude Code in-session rating survey ("How is Claude doing this
422
+ # session?"). On a headless/automated cell it pops up as a modal that the
423
+ # wake-injector refuses to type into, so it stalls scheduled wakes
424
+ # indefinitely (a survey deferred the weekly newsletter 2+ hours — see
425
+ # feedback_modal_stalls_cell_wake). Suppresses ONLY the survey; does NOT
426
+ # touch telemetry / auto-update / error reporting.
427
+ env["CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY"] = "1"
421
428
  return env
422
429
 
423
430
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: swarph-cli
3
- Version: 0.13.4
3
+ Version: 0.13.5
4
4
  Summary: The `swarph` binary — multi-LLM CLI + mesh-gateway integration: multi-provider `swarph spawn` (claude/codex/antigravity per cell.provider via a ProviderMembrane + subprocess billing-scrub), interactive `swarph init`, `swarph mesh` (send/inbox/register) + inbox sidecar, `assisted_memory` (git-backed durable memory), session import, watchdog. v0.9.5: foolproof Windows auto-relaunch (genuine-WT detection via process ancestry, not WT_SESSION).
5
5
  Author: Pierre Samson, Claude Opus
6
6
  License: MIT
@@ -1343,3 +1343,15 @@ def test_run_spawn_grok_assisted_memory_no_double_system_prompt(
1343
1343
  assert "you are grok-researcher." in argv[argv.index("--system-prompt-override") + 1]
1344
1344
  assert "--rules" in argv # CURRENT_TASK injected here, not as a 2nd override
1345
1345
  assert "Active task body" in argv[argv.index("--rules") + 1]
1346
+
1347
+
1348
+ def test_claude_env_disables_feedback_survey(monkeypatch):
1349
+ """The Claude Code session-rating survey ("How is Claude doing this
1350
+ session?") is a modal that stalls a headless cell's scheduled wake — the
1351
+ wake-injector refuses to type into a modal, so a survey deferred the weekly
1352
+ newsletter 2+ hours (feedback_modal_stalls_cell_wake). Spawned claude cells
1353
+ disable it at the source via env."""
1354
+ monkeypatch.setenv("PATH", "/usr/bin:/bin")
1355
+ from swarph_cli.commands.spawn import _claude_env
1356
+ env = _claude_env()
1357
+ assert env.get("CLAUDE_CODE_DISABLE_FEEDBACK_SURVEY") == "1"
File without changes
File without changes
File without changes