agentlink-cli 0.2.0__tar.gz → 0.2.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 (84) hide show
  1. {agentlink_cli-0.2.0 → agentlink_cli-0.2.1}/PKG-INFO +1 -1
  2. {agentlink_cli-0.2.0 → agentlink_cli-0.2.1}/connector/local/common.py +1 -3
  3. {agentlink_cli-0.2.0 → agentlink_cli-0.2.1}/connector/version.py +1 -1
  4. {agentlink_cli-0.2.0 → agentlink_cli-0.2.1}/pyproject.toml +1 -1
  5. {agentlink_cli-0.2.0 → agentlink_cli-0.2.1}/tests/test_connector_runtime.py +33 -0
  6. {agentlink_cli-0.2.0 → agentlink_cli-0.2.1}/tests/test_version.py +1 -1
  7. {agentlink_cli-0.2.0 → agentlink_cli-0.2.1}/uv.lock +1 -1
  8. {agentlink_cli-0.2.0 → agentlink_cli-0.2.1}/.gitignore +0 -0
  9. {agentlink_cli-0.2.0 → agentlink_cli-0.2.1}/README.md +0 -0
  10. {agentlink_cli-0.2.0 → agentlink_cli-0.2.1}/connector/__init__.py +0 -0
  11. {agentlink_cli-0.2.0 → agentlink_cli-0.2.1}/connector/acp/__init__.py +0 -0
  12. {agentlink_cli-0.2.0 → agentlink_cli-0.2.1}/connector/acp/adapter.py +0 -0
  13. {agentlink_cli-0.2.0 → agentlink_cli-0.2.1}/connector/acp/config_options.py +0 -0
  14. {agentlink_cli-0.2.0 → agentlink_cli-0.2.1}/connector/acp/discovery.py +0 -0
  15. {agentlink_cli-0.2.0 → agentlink_cli-0.2.1}/connector/acp/manifest.py +0 -0
  16. {agentlink_cli-0.2.0 → agentlink_cli-0.2.1}/connector/acp/manifests/__init__.py +0 -0
  17. {agentlink_cli-0.2.0 → agentlink_cli-0.2.1}/connector/acp/manifests/codebuddy.json +0 -0
  18. {agentlink_cli-0.2.0 → agentlink_cli-0.2.1}/connector/acp/manifests/cursor.json +0 -0
  19. {agentlink_cli-0.2.0 → agentlink_cli-0.2.1}/connector/acp/manifests/gemini.json +0 -0
  20. {agentlink_cli-0.2.0 → agentlink_cli-0.2.1}/connector/acp/manifests/grok_build.json +0 -0
  21. {agentlink_cli-0.2.0 → agentlink_cli-0.2.1}/connector/acp/reducer.py +0 -0
  22. {agentlink_cli-0.2.0 → agentlink_cli-0.2.1}/connector/acp/rpc.py +0 -0
  23. {agentlink_cli-0.2.0 → agentlink_cli-0.2.1}/connector/adapter.py +0 -0
  24. {agentlink_cli-0.2.0 → agentlink_cli-0.2.1}/connector/attachments.py +0 -0
  25. {agentlink_cli-0.2.0 → agentlink_cli-0.2.1}/connector/capabilities.py +0 -0
  26. {agentlink_cli-0.2.0 → agentlink_cli-0.2.1}/connector/claude/__init__.py +0 -0
  27. {agentlink_cli-0.2.0 → agentlink_cli-0.2.1}/connector/claude/history_adapter.py +0 -0
  28. {agentlink_cli-0.2.0 → agentlink_cli-0.2.1}/connector/claude/normalized.py +0 -0
  29. {agentlink_cli-0.2.0 → agentlink_cli-0.2.1}/connector/claude/normalizers.py +0 -0
  30. {agentlink_cli-0.2.0 → agentlink_cli-0.2.1}/connector/claude/path_utils.py +0 -0
  31. {agentlink_cli-0.2.0 → agentlink_cli-0.2.1}/connector/claude/preferences.py +0 -0
  32. {agentlink_cli-0.2.0 → agentlink_cli-0.2.1}/connector/claude/sdk_adapter.py +0 -0
  33. {agentlink_cli-0.2.0 → agentlink_cli-0.2.1}/connector/claude/timeline_identity.py +0 -0
  34. {agentlink_cli-0.2.0 → agentlink_cli-0.2.1}/connector/claude/timeline_reducer.py +0 -0
  35. {agentlink_cli-0.2.0 → agentlink_cli-0.2.1}/connector/claude/trust.py +0 -0
  36. {agentlink_cli-0.2.0 → agentlink_cli-0.2.1}/connector/cli.py +0 -0
  37. {agentlink_cli-0.2.0 → agentlink_cli-0.2.1}/connector/codex/__init__.py +0 -0
  38. {agentlink_cli-0.2.0 → agentlink_cli-0.2.1}/connector/codex/adapter.py +0 -0
  39. {agentlink_cli-0.2.0 → agentlink_cli-0.2.1}/connector/codex/collaboration.py +0 -0
  40. {agentlink_cli-0.2.0 → agentlink_cli-0.2.1}/connector/codex/history.py +0 -0
  41. {agentlink_cli-0.2.0 → agentlink_cli-0.2.1}/connector/codex/reducer.py +0 -0
  42. {agentlink_cli-0.2.0 → agentlink_cli-0.2.1}/connector/codex/rpc.py +0 -0
  43. {agentlink_cli-0.2.0 → agentlink_cli-0.2.1}/connector/control.py +0 -0
  44. {agentlink_cli-0.2.0 → agentlink_cli-0.2.1}/connector/json_rpc.py +0 -0
  45. {agentlink_cli-0.2.0 → agentlink_cli-0.2.1}/connector/launch.py +0 -0
  46. {agentlink_cli-0.2.0 → agentlink_cli-0.2.1}/connector/local/__init__.py +0 -0
  47. {agentlink_cli-0.2.0 → agentlink_cli-0.2.1}/connector/local/file_ops.py +0 -0
  48. {agentlink_cli-0.2.0 → agentlink_cli-0.2.1}/connector/local/ops.py +0 -0
  49. {agentlink_cli-0.2.0 → agentlink_cli-0.2.1}/connector/local/shell.py +0 -0
  50. {agentlink_cli-0.2.0 → agentlink_cli-0.2.1}/connector/local/terminal.py +0 -0
  51. {agentlink_cli-0.2.0 → agentlink_cli-0.2.1}/connector/local_ops.py +0 -0
  52. {agentlink_cli-0.2.0 → agentlink_cli-0.2.1}/connector/local_runtime.py +0 -0
  53. {agentlink_cli-0.2.0 → agentlink_cli-0.2.1}/connector/logging.py +0 -0
  54. {agentlink_cli-0.2.0 → agentlink_cli-0.2.1}/connector/perf.py +0 -0
  55. {agentlink_cli-0.2.0 → agentlink_cli-0.2.1}/connector/protocol.py +0 -0
  56. {agentlink_cli-0.2.0 → agentlink_cli-0.2.1}/connector/registry.py +0 -0
  57. {agentlink_cli-0.2.0 → agentlink_cli-0.2.1}/connector/runtime.py +0 -0
  58. {agentlink_cli-0.2.0 → agentlink_cli-0.2.1}/connector/sync_state.py +0 -0
  59. {agentlink_cli-0.2.0 → agentlink_cli-0.2.1}/connector/time.py +0 -0
  60. {agentlink_cli-0.2.0 → agentlink_cli-0.2.1}/run.sh +0 -0
  61. {agentlink_cli-0.2.0 → agentlink_cli-0.2.1}/tests/__init__.py +0 -0
  62. {agentlink_cli-0.2.0 → agentlink_cli-0.2.1}/tests/acp/__init__.py +0 -0
  63. {agentlink_cli-0.2.0 → agentlink_cli-0.2.1}/tests/acp/fake_agent/__init__.py +0 -0
  64. {agentlink_cli-0.2.0 → agentlink_cli-0.2.1}/tests/acp/fake_agent/__main__.py +0 -0
  65. {agentlink_cli-0.2.0 → agentlink_cli-0.2.1}/tests/acp/test_acp_adapter_fake.py +0 -0
  66. {agentlink_cli-0.2.0 → agentlink_cli-0.2.1}/tests/acp/test_acp_reducer_golden.py +0 -0
  67. {agentlink_cli-0.2.0 → agentlink_cli-0.2.1}/tests/acp/test_config_options.py +0 -0
  68. {agentlink_cli-0.2.0 → agentlink_cli-0.2.1}/tests/contract/__init__.py +0 -0
  69. {agentlink_cli-0.2.0 → agentlink_cli-0.2.1}/tests/contract/helpers.py +0 -0
  70. {agentlink_cli-0.2.0 → agentlink_cli-0.2.1}/tests/test_claude_history_adapter.py +0 -0
  71. {agentlink_cli-0.2.0 → agentlink_cli-0.2.1}/tests/test_claude_preferences.py +0 -0
  72. {agentlink_cli-0.2.0 → agentlink_cli-0.2.1}/tests/test_claude_sdk_adapter.py +0 -0
  73. {agentlink_cli-0.2.0 → agentlink_cli-0.2.1}/tests/test_claude_timeline_parity.py +0 -0
  74. {agentlink_cli-0.2.0 → agentlink_cli-0.2.1}/tests/test_claude_trust.py +0 -0
  75. {agentlink_cli-0.2.0 → agentlink_cli-0.2.1}/tests/test_codex_adapter.py +0 -0
  76. {agentlink_cli-0.2.0 → agentlink_cli-0.2.1}/tests/test_connector_capabilities.py +0 -0
  77. {agentlink_cli-0.2.0 → agentlink_cli-0.2.1}/tests/test_connector_cli.py +0 -0
  78. {agentlink_cli-0.2.0 → agentlink_cli-0.2.1}/tests/test_connector_control.py +0 -0
  79. {agentlink_cli-0.2.0 → agentlink_cli-0.2.1}/tests/test_connector_json_rpc.py +0 -0
  80. {agentlink_cli-0.2.0 → agentlink_cli-0.2.1}/tests/test_connector_logging.py +0 -0
  81. {agentlink_cli-0.2.0 → agentlink_cli-0.2.1}/tests/test_launch_command.py +0 -0
  82. {agentlink_cli-0.2.0 → agentlink_cli-0.2.1}/tests/test_local_runtime.py +0 -0
  83. {agentlink_cli-0.2.0 → agentlink_cli-0.2.1}/tests/test_perf.py +0 -0
  84. {agentlink_cli-0.2.0 → agentlink_cli-0.2.1}/tests/test_terminal_backend.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: agentlink-cli
3
- Version: 0.2.0
3
+ Version: 0.2.1
4
4
  Summary: Local runtime connector for AgentLink
5
5
  Requires-Python: >=3.12
6
6
  Requires-Dist: claude-agent-sdk
@@ -40,10 +40,8 @@ def workspace_root(params: dict[str, Any]) -> Path:
40
40
 
41
41
 
42
42
  def resolve_path(root: Path, raw_path: str) -> Path:
43
- if raw_path.startswith("~"):
44
- raise WorkspaceBoundaryError("path must stay within the workspace")
45
43
  root = root.resolve(strict=False)
46
- path = Path(raw_path)
44
+ path = Path(raw_path).expanduser()
47
45
  if not path.is_absolute():
48
46
  path = root / path
49
47
  resolved = path.resolve(strict=False)
@@ -2,7 +2,7 @@ from __future__ import annotations
2
2
 
3
3
  from importlib.metadata import PackageNotFoundError, version
4
4
 
5
- FALLBACK_VERSION = "0.2.0"
5
+ FALLBACK_VERSION = "0.2.1"
6
6
 
7
7
 
8
8
  def connector_version() -> str:
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "agentlink-cli"
3
- version = "0.2.0"
3
+ version = "0.2.1"
4
4
  description = "Local runtime connector for AgentLink"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.12"
@@ -324,6 +324,39 @@ def test_connector_rejects_workspace_symlink_escape(tmp_path) -> None:
324
324
  asyncio.run(exercise())
325
325
 
326
326
 
327
+ def test_connector_accepts_home_shorthand_within_home(tmp_path, monkeypatch) -> None:
328
+ async def exercise() -> None:
329
+ home = tmp_path / "home"
330
+ child = home / "project"
331
+ child.mkdir(parents=True)
332
+ (child / "README.md").write_text("home workspace", encoding="utf-8")
333
+ monkeypatch.setenv("HOME", str(home))
334
+ monkeypatch.setenv("USERPROFILE", str(home))
335
+
336
+ client = BackendRpcClient(
337
+ ConnectorConfig("http://127.0.0.1:8000", "conn_1", "secret"),
338
+ adapters={"codex": FakeAdapter()},
339
+ )
340
+ home_result = await client.dispatch("fs.readDir", {"root": "~", "path": "~"})
341
+ assert home_result["path"] == str(home)
342
+ assert [entry["name"] for entry in home_result["entries"]] == ["project"]
343
+
344
+ child_result = await client.dispatch(
345
+ "fs.readDir", {"root": "~", "path": "~/project"}
346
+ )
347
+ assert child_result["path"] == str(child)
348
+ assert [entry["name"] for entry in child_result["entries"]] == ["README.md"]
349
+
350
+ workspace = tmp_path / "workspace"
351
+ workspace.mkdir()
352
+ with pytest.raises(WorkspaceBoundaryError):
353
+ await client.dispatch(
354
+ "fs.readDir", {"root": str(workspace), "path": "~"}
355
+ )
356
+
357
+ asyncio.run(exercise())
358
+
359
+
327
360
  def test_notification_outbox_survives_reopen(tmp_path) -> None:
328
361
  path = tmp_path / "state.sqlite3"
329
362
  outbox = SqliteNotificationOutbox(
@@ -17,4 +17,4 @@ def test_connector_version_falls_back_in_source_tree(monkeypatch) -> None:
17
17
 
18
18
  monkeypatch.setattr(version_module, "version", missing)
19
19
 
20
- assert version_module.connector_version() == "0.2.0"
20
+ assert version_module.connector_version() == "0.2.1"
@@ -8,7 +8,7 @@ resolution-markers = [
8
8
 
9
9
  [[package]]
10
10
  name = "agentlink-cli"
11
- version = "0.2.0"
11
+ version = "0.2.1"
12
12
  source = { editable = "." }
13
13
  dependencies = [
14
14
  { name = "claude-agent-sdk" },
File without changes
File without changes
File without changes