portacode 1.3.28__tar.gz → 1.3.29__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.

Potentially problematic release.


This version of portacode might be problematic. Click here for more details.

Files changed (93) hide show
  1. {portacode-1.3.28 → portacode-1.3.29}/PKG-INFO +1 -1
  2. {portacode-1.3.28 → portacode-1.3.29}/portacode/_version.py +2 -2
  3. {portacode-1.3.28 → portacode-1.3.29}/portacode/connection/handlers/file_handlers.py +12 -4
  4. {portacode-1.3.28 → portacode-1.3.29}/portacode.egg-info/PKG-INFO +1 -1
  5. {portacode-1.3.28 → portacode-1.3.29}/.claude/agents/communication-manager.md +0 -0
  6. {portacode-1.3.28 → portacode-1.3.29}/.claude/settings.local.json +0 -0
  7. {portacode-1.3.28 → portacode-1.3.29}/.gitignore +0 -0
  8. {portacode-1.3.28 → portacode-1.3.29}/.gitmodules +0 -0
  9. {portacode-1.3.28 → portacode-1.3.29}/LICENSE +0 -0
  10. {portacode-1.3.28 → portacode-1.3.29}/MANIFEST.in +0 -0
  11. {portacode-1.3.28 → portacode-1.3.29}/Makefile +0 -0
  12. {portacode-1.3.28 → portacode-1.3.29}/README.md +0 -0
  13. {portacode-1.3.28 → portacode-1.3.29}/backup.sh +0 -0
  14. {portacode-1.3.28 → portacode-1.3.29}/connect.py +0 -0
  15. {portacode-1.3.28 → portacode-1.3.29}/connect.sh +0 -0
  16. {portacode-1.3.28 → portacode-1.3.29}/docker-compose.yaml +0 -0
  17. {portacode-1.3.28 → portacode-1.3.29}/portacode/README.md +0 -0
  18. {portacode-1.3.28 → portacode-1.3.29}/portacode/__init__.py +0 -0
  19. {portacode-1.3.28 → portacode-1.3.29}/portacode/__main__.py +0 -0
  20. {portacode-1.3.28 → portacode-1.3.29}/portacode/cli.py +0 -0
  21. {portacode-1.3.28 → portacode-1.3.29}/portacode/connection/README.md +0 -0
  22. {portacode-1.3.28 → portacode-1.3.29}/portacode/connection/__init__.py +0 -0
  23. {portacode-1.3.28 → portacode-1.3.29}/portacode/connection/client.py +0 -0
  24. {portacode-1.3.28 → portacode-1.3.29}/portacode/connection/handlers/README.md +0 -0
  25. {portacode-1.3.28 → portacode-1.3.29}/portacode/connection/handlers/WEBSOCKET_PROTOCOL.md +0 -0
  26. {portacode-1.3.28 → portacode-1.3.29}/portacode/connection/handlers/__init__.py +0 -0
  27. {portacode-1.3.28 → portacode-1.3.29}/portacode/connection/handlers/base.py +0 -0
  28. {portacode-1.3.28 → portacode-1.3.29}/portacode/connection/handlers/chunked_content.py +0 -0
  29. {portacode-1.3.28 → portacode-1.3.29}/portacode/connection/handlers/project_aware_file_handlers.py +0 -0
  30. {portacode-1.3.28 → portacode-1.3.29}/portacode/connection/handlers/project_state/README.md +0 -0
  31. {portacode-1.3.28 → portacode-1.3.29}/portacode/connection/handlers/project_state/__init__.py +0 -0
  32. {portacode-1.3.28 → portacode-1.3.29}/portacode/connection/handlers/project_state/file_system_watcher.py +0 -0
  33. {portacode-1.3.28 → portacode-1.3.29}/portacode/connection/handlers/project_state/git_manager.py +0 -0
  34. {portacode-1.3.28 → portacode-1.3.29}/portacode/connection/handlers/project_state/handlers.py +0 -0
  35. {portacode-1.3.28 → portacode-1.3.29}/portacode/connection/handlers/project_state/manager.py +0 -0
  36. {portacode-1.3.28 → portacode-1.3.29}/portacode/connection/handlers/project_state/models.py +0 -0
  37. {portacode-1.3.28 → portacode-1.3.29}/portacode/connection/handlers/project_state/utils.py +0 -0
  38. {portacode-1.3.28 → portacode-1.3.29}/portacode/connection/handlers/project_state_handlers.py +0 -0
  39. {portacode-1.3.28 → portacode-1.3.29}/portacode/connection/handlers/registry.py +0 -0
  40. {portacode-1.3.28 → portacode-1.3.29}/portacode/connection/handlers/session.py +0 -0
  41. {portacode-1.3.28 → portacode-1.3.29}/portacode/connection/handlers/system_handlers.py +0 -0
  42. {portacode-1.3.28 → portacode-1.3.29}/portacode/connection/handlers/tab_factory.py +0 -0
  43. {portacode-1.3.28 → portacode-1.3.29}/portacode/connection/handlers/terminal_handlers.py +0 -0
  44. {portacode-1.3.28 → portacode-1.3.29}/portacode/connection/multiplex.py +0 -0
  45. {portacode-1.3.28 → portacode-1.3.29}/portacode/connection/terminal.py +0 -0
  46. {portacode-1.3.28 → portacode-1.3.29}/portacode/data.py +0 -0
  47. {portacode-1.3.28 → portacode-1.3.29}/portacode/keypair.py +0 -0
  48. {portacode-1.3.28 → portacode-1.3.29}/portacode/logging_categories.py +0 -0
  49. {portacode-1.3.28 → portacode-1.3.29}/portacode/service.py +0 -0
  50. {portacode-1.3.28 → portacode-1.3.29}/portacode/static/js/test-ntp-clock.html +0 -0
  51. {portacode-1.3.28 → portacode-1.3.29}/portacode/static/js/utils/ntp-clock.js +0 -0
  52. {portacode-1.3.28 → portacode-1.3.29}/portacode/utils/NTP_ARCHITECTURE.md +0 -0
  53. {portacode-1.3.28 → portacode-1.3.29}/portacode/utils/__init__.py +0 -0
  54. {portacode-1.3.28 → portacode-1.3.29}/portacode/utils/ntp_clock.py +0 -0
  55. {portacode-1.3.28 → portacode-1.3.29}/portacode.egg-info/SOURCES.txt +0 -0
  56. {portacode-1.3.28 → portacode-1.3.29}/portacode.egg-info/dependency_links.txt +0 -0
  57. {portacode-1.3.28 → portacode-1.3.29}/portacode.egg-info/entry_points.txt +0 -0
  58. {portacode-1.3.28 → portacode-1.3.29}/portacode.egg-info/requires.txt +0 -0
  59. {portacode-1.3.28 → portacode-1.3.29}/portacode.egg-info/top_level.txt +0 -0
  60. {portacode-1.3.28 → portacode-1.3.29}/pyproject.toml +0 -0
  61. {portacode-1.3.28 → portacode-1.3.29}/restore.sh +0 -0
  62. {portacode-1.3.28 → portacode-1.3.29}/run_tests.py +0 -0
  63. {portacode-1.3.28 → portacode-1.3.29}/setup.cfg +0 -0
  64. {portacode-1.3.28 → portacode-1.3.29}/setup.py +0 -0
  65. {portacode-1.3.28 → portacode-1.3.29}/test.sh +0 -0
  66. {portacode-1.3.28 → portacode-1.3.29}/test_modules/README.md +0 -0
  67. {portacode-1.3.28 → portacode-1.3.29}/test_modules/__init__.py +0 -0
  68. {portacode-1.3.28 → portacode-1.3.29}/test_modules/test_device_online.py +0 -0
  69. {portacode-1.3.28 → portacode-1.3.29}/test_modules/test_file_operations.py +0 -0
  70. {portacode-1.3.28 → portacode-1.3.29}/test_modules/test_git_status_ui.py +0 -0
  71. {portacode-1.3.28 → portacode-1.3.29}/test_modules/test_login_flow.py +0 -0
  72. {portacode-1.3.28 → portacode-1.3.29}/test_modules/test_navigate_testing_folder.py +0 -0
  73. {portacode-1.3.28 → portacode-1.3.29}/test_modules/test_terminal_buffer_performance.py +0 -0
  74. {portacode-1.3.28 → portacode-1.3.29}/test_modules/test_terminal_interaction.py +0 -0
  75. {portacode-1.3.28 → portacode-1.3.29}/test_modules/test_terminal_loading_race_condition.py +0 -0
  76. {portacode-1.3.28 → portacode-1.3.29}/test_modules/test_terminal_start.py +0 -0
  77. {portacode-1.3.28 → portacode-1.3.29}/test_request_id.py +0 -0
  78. {portacode-1.3.28 → portacode-1.3.29}/testing_framework/.env.example +0 -0
  79. {portacode-1.3.28 → portacode-1.3.29}/testing_framework/README.md +0 -0
  80. {portacode-1.3.28 → portacode-1.3.29}/testing_framework/__init__.py +0 -0
  81. {portacode-1.3.28 → portacode-1.3.29}/testing_framework/cli.py +0 -0
  82. {portacode-1.3.28 → portacode-1.3.29}/testing_framework/core/__init__.py +0 -0
  83. {portacode-1.3.28 → portacode-1.3.29}/testing_framework/core/base_test.py +0 -0
  84. {portacode-1.3.28 → portacode-1.3.29}/testing_framework/core/cli_manager.py +0 -0
  85. {portacode-1.3.28 → portacode-1.3.29}/testing_framework/core/hierarchical_runner.py +0 -0
  86. {portacode-1.3.28 → portacode-1.3.29}/testing_framework/core/playwright_manager.py +0 -0
  87. {portacode-1.3.28 → portacode-1.3.29}/testing_framework/core/runner.py +0 -0
  88. {portacode-1.3.28 → portacode-1.3.29}/testing_framework/core/shared_cli_manager.py +0 -0
  89. {portacode-1.3.28 → portacode-1.3.29}/testing_framework/core/test_discovery.py +0 -0
  90. {portacode-1.3.28 → portacode-1.3.29}/testing_framework/requirements.txt +0 -0
  91. {portacode-1.3.28 → portacode-1.3.29}/todo/issues/indefinite_resource_loading.md +0 -0
  92. {portacode-1.3.28 → portacode-1.3.29}/todo/issues/premature_terminal_exit.md +0 -0
  93. {portacode-1.3.28 → portacode-1.3.29}/tools/test_python_ntp_clock.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: portacode
3
- Version: 1.3.28
3
+ Version: 1.3.29
4
4
  Summary: Portacode CLI client and SDK
5
5
  Home-page: https://github.com/portacode/portacode
6
6
  Author: Meena Erian
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
28
28
  commit_id: COMMIT_ID
29
29
  __commit_id__: COMMIT_ID
30
30
 
31
- __version__ = version = '1.3.28'
32
- __version_tuple__ = version_tuple = (1, 3, 28)
31
+ __version__ = version = '1.3.29'
32
+ __version_tuple__ = version_tuple = (1, 3, 29)
33
33
 
34
34
  __commit_id__ = commit_id = None
@@ -383,6 +383,7 @@ class ContentRequestHandler(AsyncHandler):
383
383
  """Return content by hash if available, chunked for large content."""
384
384
  content_hash = message.get("content_hash")
385
385
  source_client_session = message.get("source_client_session")
386
+ server_project_id = message.get("project_id")
386
387
 
387
388
  if not content_hash:
388
389
  raise ValueError("content_hash parameter is required")
@@ -391,23 +392,27 @@ class ContentRequestHandler(AsyncHandler):
391
392
  content = _content_cache.get(content_hash)
392
393
 
393
394
  if content is not None:
394
- # Create base response (request_id will be added automatically by base class)
395
+
395
396
  base_response = {
396
397
  "event": "content_response",
397
398
  "content_hash": content_hash,
398
399
  "success": True,
399
400
  }
401
+
402
+ # Add request_id if present in original message
403
+ if "request_id" in message:
404
+ base_response["request_id"] = message["request_id"]
400
405
 
401
406
  # Create chunked responses
402
407
  responses = create_chunked_response(base_response, "content", content)
403
408
 
404
409
  # Send all responses
405
410
  for response in responses:
406
- await self.send_response(response, project_id=None)
411
+ await self.send_response(response, project_id=server_project_id)
407
412
 
408
413
  logger.info(f"Sent content response in {len(responses)} chunk(s) for hash: {content_hash[:16]}...")
409
414
  else:
410
- # Content not found in cache (request_id will be added automatically by base class)
415
+
411
416
  response = {
412
417
  "event": "content_response",
413
418
  "content_hash": content_hash,
@@ -416,7 +421,10 @@ class ContentRequestHandler(AsyncHandler):
416
421
  "error": "Content not found in cache",
417
422
  "chunked": False,
418
423
  }
419
- await self.send_response(response, project_id=None)
424
+ # Add request_id if present in original message
425
+ if "request_id" in message:
426
+ base_response["request_id"] = message["request_id"]
427
+ await self.send_response(response, project_id=server_project_id)
420
428
 
421
429
 
422
430
  def cache_content(content_hash: str, content: str) -> None:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: portacode
3
- Version: 1.3.28
3
+ Version: 1.3.29
4
4
  Summary: Portacode CLI client and SDK
5
5
  Home-page: https://github.com/portacode/portacode
6
6
  Author: Meena Erian
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes