agent-folder-workspace 0.1.3__tar.gz → 0.1.4__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 (92) hide show
  1. {agent_folder_workspace-0.1.3 → agent_folder_workspace-0.1.4}/PKG-INFO +4 -4
  2. {agent_folder_workspace-0.1.3 → agent_folder_workspace-0.1.4}/README.md +3 -3
  3. {agent_folder_workspace-0.1.3 → agent_folder_workspace-0.1.4}/docs/architecture.md +1 -1
  4. {agent_folder_workspace-0.1.3 → agent_folder_workspace-0.1.4}/docs/formats.md +1 -1
  5. {agent_folder_workspace-0.1.3 → agent_folder_workspace-0.1.4}/docs/superpowers/plans/2026-07-24-workspace-local-cache.md +1 -1
  6. {agent_folder_workspace-0.1.3 → agent_folder_workspace-0.1.4}/docs/windows.md +1 -1
  7. {agent_folder_workspace-0.1.3 → agent_folder_workspace-0.1.4}/pyproject.toml +1 -1
  8. {agent_folder_workspace-0.1.3 → agent_folder_workspace-0.1.4}/scripts/check_wheel.py +1 -1
  9. {agent_folder_workspace-0.1.3 → agent_folder_workspace-0.1.4}/src/agent_folder_workspace/__init__.py +1 -1
  10. {agent_folder_workspace-0.1.3 → agent_folder_workspace-0.1.4}/tests/test_distribution.py +3 -3
  11. {agent_folder_workspace-0.1.3 → agent_folder_workspace-0.1.4}/.github/workflows/ci.yml +0 -0
  12. {agent_folder_workspace-0.1.3 → agent_folder_workspace-0.1.4}/.gitignore +0 -0
  13. {agent_folder_workspace-0.1.3 → agent_folder_workspace-0.1.4}/CONTRIBUTING.md +0 -0
  14. {agent_folder_workspace-0.1.3 → agent_folder_workspace-0.1.4}/LICENSE +0 -0
  15. {agent_folder_workspace-0.1.3 → agent_folder_workspace-0.1.4}/SECURITY.md +0 -0
  16. {agent_folder_workspace-0.1.3 → agent_folder_workspace-0.1.4}/docs/acceptance.md +0 -0
  17. {agent_folder_workspace-0.1.3 → agent_folder_workspace-0.1.4}/docs/superpowers/plans/2026-07-22-console-logging.md +0 -0
  18. {agent_folder_workspace-0.1.3 → agent_folder_workspace-0.1.4}/docs/superpowers/plans/2026-07-23-runtime-workspace-selection.md +0 -0
  19. {agent_folder_workspace-0.1.3 → agent_folder_workspace-0.1.4}/docs/superpowers/specs/2026-07-22-console-logging-design.md +0 -0
  20. {agent_folder_workspace-0.1.3 → agent_folder_workspace-0.1.4}/docs/superpowers/specs/2026-07-23-runtime-workspace-selection-design.md +0 -0
  21. {agent_folder_workspace-0.1.3 → agent_folder_workspace-0.1.4}/docs/superpowers/specs/2026-07-24-workspace-local-cache-design.md +0 -0
  22. {agent_folder_workspace-0.1.3 → agent_folder_workspace-0.1.4}/scripts/generate_json_schemas.py +0 -0
  23. {agent_folder_workspace-0.1.3 → agent_folder_workspace-0.1.4}/scripts/generate_probe_fixtures.py +0 -0
  24. {agent_folder_workspace-0.1.3 → agent_folder_workspace-0.1.4}/src/agent_folder_workspace/__main__.py +0 -0
  25. {agent_folder_workspace-0.1.3 → agent_folder_workspace-0.1.4}/src/agent_folder_workspace/adapters/__init__.py +0 -0
  26. {agent_folder_workspace-0.1.3 → agent_folder_workspace-0.1.4}/src/agent_folder_workspace/adapters/base.py +0 -0
  27. {agent_folder_workspace-0.1.3 → agent_folder_workspace-0.1.4}/src/agent_folder_workspace/adapters/legacy_office.py +0 -0
  28. {agent_folder_workspace-0.1.3 → agent_folder_workspace-0.1.4}/src/agent_folder_workspace/adapters/manager.py +0 -0
  29. {agent_folder_workspace-0.1.3 → agent_folder_workspace-0.1.4}/src/agent_folder_workspace/adapters/odf.py +0 -0
  30. {agent_folder_workspace-0.1.3 → agent_folder_workspace-0.1.4}/src/agent_folder_workspace/adapters/ooxml.py +0 -0
  31. {agent_folder_workspace-0.1.3 → agent_folder_workspace-0.1.4}/src/agent_folder_workspace/adapters/pdf.py +0 -0
  32. {agent_folder_workspace-0.1.3 → agent_folder_workspace-0.1.4}/src/agent_folder_workspace/adapters/sqlite.py +0 -0
  33. {agent_folder_workspace-0.1.3 → agent_folder_workspace-0.1.4}/src/agent_folder_workspace/adapters/structured.py +0 -0
  34. {agent_folder_workspace-0.1.3 → agent_folder_workspace-0.1.4}/src/agent_folder_workspace/adapters/text.py +0 -0
  35. {agent_folder_workspace-0.1.3 → agent_folder_workspace-0.1.4}/src/agent_folder_workspace/alternative_backends.py +0 -0
  36. {agent_folder_workspace-0.1.3 → agent_folder_workspace-0.1.4}/src/agent_folder_workspace/backend_conversion_worker.py +0 -0
  37. {agent_folder_workspace-0.1.3 → agent_folder_workspace-0.1.4}/src/agent_folder_workspace/backend_probe_worker.py +0 -0
  38. {agent_folder_workspace-0.1.3 → agent_folder_workspace-0.1.4}/src/agent_folder_workspace/backends.py +0 -0
  39. {agent_folder_workspace-0.1.3 → agent_folder_workspace-0.1.4}/src/agent_folder_workspace/cache.py +0 -0
  40. {agent_folder_workspace-0.1.3 → agent_folder_workspace-0.1.4}/src/agent_folder_workspace/cfb.py +0 -0
  41. {agent_folder_workspace-0.1.3 → agent_folder_workspace-0.1.4}/src/agent_folder_workspace/cli.py +0 -0
  42. {agent_folder_workspace-0.1.3 → agent_folder_workspace-0.1.4}/src/agent_folder_workspace/config.py +0 -0
  43. {agent_folder_workspace-0.1.3 → agent_folder_workspace-0.1.4}/src/agent_folder_workspace/console_logging.py +0 -0
  44. {agent_folder_workspace-0.1.3 → agent_folder_workspace-0.1.4}/src/agent_folder_workspace/cursors.py +0 -0
  45. {agent_folder_workspace-0.1.3 → agent_folder_workspace-0.1.4}/src/agent_folder_workspace/errors.py +0 -0
  46. {agent_folder_workspace-0.1.3 → agent_folder_workspace-0.1.4}/src/agent_folder_workspace/ids.py +0 -0
  47. {agent_folder_workspace-0.1.3 → agent_folder_workspace-0.1.4}/src/agent_folder_workspace/installer.py +0 -0
  48. {agent_folder_workspace-0.1.3 → agent_folder_workspace-0.1.4}/src/agent_folder_workspace/legacy.py +0 -0
  49. {agent_folder_workspace-0.1.3 → agent_folder_workspace-0.1.4}/src/agent_folder_workspace/mcp_server.py +0 -0
  50. {agent_folder_workspace-0.1.3 → agent_folder_workspace-0.1.4}/src/agent_folder_workspace/models.py +0 -0
  51. {agent_folder_workspace-0.1.3 → agent_folder_workspace-0.1.4}/src/agent_folder_workspace/opencode/plugin/agent-folder-workspace.ts.tmpl +0 -0
  52. {agent_folder_workspace-0.1.3 → agent_folder_workspace-0.1.4}/src/agent_folder_workspace/opencode/skill/SKILL.md +0 -0
  53. {agent_folder_workspace-0.1.3 → agent_folder_workspace-0.1.4}/src/agent_folder_workspace/parser_workers.py +0 -0
  54. {agent_folder_workspace-0.1.3 → agent_folder_workspace-0.1.4}/src/agent_folder_workspace/path_safety.py +0 -0
  55. {agent_folder_workspace-0.1.3 → agent_folder_workspace-0.1.4}/src/agent_folder_workspace/probe_fixtures/probe.doc +0 -0
  56. {agent_folder_workspace-0.1.3 → agent_folder_workspace-0.1.4}/src/agent_folder_workspace/probe_fixtures/probe.ppt +0 -0
  57. {agent_folder_workspace-0.1.3 → agent_folder_workspace-0.1.4}/src/agent_folder_workspace/probe_fixtures/probe.xls +0 -0
  58. {agent_folder_workspace-0.1.3 → agent_folder_workspace-0.1.4}/src/agent_folder_workspace/py.typed +0 -0
  59. {agent_folder_workspace-0.1.3 → agent_folder_workspace-0.1.4}/src/agent_folder_workspace/registry.py +0 -0
  60. {agent_folder_workspace-0.1.3 → agent_folder_workspace-0.1.4}/src/agent_folder_workspace/schemas/CapabilityReportV1.schema.json +0 -0
  61. {agent_folder_workspace-0.1.3 → agent_folder_workspace-0.1.4}/src/agent_folder_workspace/schemas/ContentPageV1.schema.json +0 -0
  62. {agent_folder_workspace-0.1.3 → agent_folder_workspace-0.1.4}/src/agent_folder_workspace/schemas/DiagnosticV1.schema.json +0 -0
  63. {agent_folder_workspace-0.1.3 → agent_folder_workspace-0.1.4}/src/agent_folder_workspace/schemas/NodePageV1.schema.json +0 -0
  64. {agent_folder_workspace-0.1.3 → agent_folder_workspace-0.1.4}/src/agent_folder_workspace/schemas/NodeV1.schema.json +0 -0
  65. {agent_folder_workspace-0.1.3 → agent_folder_workspace-0.1.4}/src/agent_folder_workspace/schemas/SearchPageV1.schema.json +0 -0
  66. {agent_folder_workspace-0.1.3 → agent_folder_workspace-0.1.4}/src/agent_folder_workspace/schemas/WorkspaceCloseV1.schema.json +0 -0
  67. {agent_folder_workspace-0.1.3 → agent_folder_workspace-0.1.4}/src/agent_folder_workspace/schemas/WorkspaceHandleV1.schema.json +0 -0
  68. {agent_folder_workspace-0.1.3 → agent_folder_workspace-0.1.4}/src/agent_folder_workspace/schemas/WorkspaceListV1.schema.json +0 -0
  69. {agent_folder_workspace-0.1.3 → agent_folder_workspace-0.1.4}/src/agent_folder_workspace/workspace.py +0 -0
  70. {agent_folder_workspace-0.1.3 → agent_folder_workspace-0.1.4}/src/agent_folder_workspace/workspace_manager.py +0 -0
  71. {agent_folder_workspace-0.1.3 → agent_folder_workspace-0.1.4}/tests/__init__.py +0 -0
  72. {agent_folder_workspace-0.1.3 → agent_folder_workspace-0.1.4}/tests/cfb_fixture.py +0 -0
  73. {agent_folder_workspace-0.1.3 → agent_folder_workspace-0.1.4}/tests/test_alternative_backends.py +0 -0
  74. {agent_folder_workspace-0.1.3 → agent_folder_workspace-0.1.4}/tests/test_backends.py +0 -0
  75. {agent_folder_workspace-0.1.3 → agent_folder_workspace-0.1.4}/tests/test_cfb.py +0 -0
  76. {agent_folder_workspace-0.1.3 → agent_folder_workspace-0.1.4}/tests/test_console_logging.py +0 -0
  77. {agent_folder_workspace-0.1.3 → agent_folder_workspace-0.1.4}/tests/test_content_adapters.py +0 -0
  78. {agent_folder_workspace-0.1.3 → agent_folder_workspace-0.1.4}/tests/test_contracts.py +0 -0
  79. {agent_folder_workspace-0.1.3 → agent_folder_workspace-0.1.4}/tests/test_legacy_adapters.py +0 -0
  80. {agent_folder_workspace-0.1.3 → agent_folder_workspace-0.1.4}/tests/test_legacy_fuzz.py +0 -0
  81. {agent_folder_workspace-0.1.3 → agent_folder_workspace-0.1.4}/tests/test_legacy_parsers.py +0 -0
  82. {agent_folder_workspace-0.1.3 → agent_folder_workspace-0.1.4}/tests/test_mcp_cli_installer.py +0 -0
  83. {agent_folder_workspace-0.1.3 → agent_folder_workspace-0.1.4}/tests/test_mcp_pdf_survival.py +0 -0
  84. {agent_folder_workspace-0.1.3 → agent_folder_workspace-0.1.4}/tests/test_odf_pdf_adapters.py +0 -0
  85. {agent_folder_workspace-0.1.3 → agent_folder_workspace-0.1.4}/tests/test_ooxml_adapters.py +0 -0
  86. {agent_folder_workspace-0.1.3 → agent_folder_workspace-0.1.4}/tests/test_package.py +0 -0
  87. {agent_folder_workspace-0.1.3 → agent_folder_workspace-0.1.4}/tests/test_parser_workers.py +0 -0
  88. {agent_folder_workspace-0.1.3 → agent_folder_workspace-0.1.4}/tests/test_search_cache.py +0 -0
  89. {agent_folder_workspace-0.1.3 → agent_folder_workspace-0.1.4}/tests/test_structured_text.py +0 -0
  90. {agent_folder_workspace-0.1.3 → agent_folder_workspace-0.1.4}/tests/test_windows_reparse_security.py +0 -0
  91. {agent_folder_workspace-0.1.3 → agent_folder_workspace-0.1.4}/tests/test_workspace_manager.py +0 -0
  92. {agent_folder_workspace-0.1.3 → agent_folder_workspace-0.1.4}/tests/test_workspace_registry.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agent-folder-workspace
3
- Version: 0.1.3
3
+ Version: 0.1.4
4
4
  Summary: Offline, lazy, agent-oriented exploration of heterogeneous folders
5
5
  Author-email: Dark Light <darklight@noreply.com>
6
6
  License-Expression: Apache-2.0
@@ -37,7 +37,7 @@ hierarchies for agents. It discovers file metadata first and opens document
37
37
  bodies only when a caller expands or reads a node. The default parser path is
38
38
  local Python code: Microsoft Office and LibreOffice are not required.
39
39
 
40
- > **Project status:** `0.1.3` is an alpha contract. Read-only exploration and
40
+ > **Project status:** `0.1.4` is an alpha contract. Read-only exploration and
41
41
  > byte access are implemented; editing, rendering, OCR, and complete semantic
42
42
  > coverage of every supported container are not.
43
43
 
@@ -278,7 +278,7 @@ best-effort basis. `index_content()` performs a full supported semantic walk
278
278
  without retaining all decoded bodies in RAM.
279
279
 
280
280
  The persistent index is an application-owned SQLite database below
281
- `<workspace>/.agent-folder-workspace-cache`, separated by a hash of the
281
+ `WORKSPACE_ROOT/.agent-folder-workspace-cache`, separated by a hash of the
282
282
  workspace root. Existing owned caches are reused, while the cache subtree is
283
283
  excluded from document discovery. `WorkspaceConfig.cache_directory` and MCP's
284
284
  optional `cache_directory` argument can select another cache root explicitly.
@@ -423,7 +423,7 @@ The detailed coverage and per-format caveats are in
423
423
  rendering. A hard parent timeout cannot guarantee cleanup of a vendor process
424
424
  that is itself stuck below COM or LibreOffice process control.
425
425
  - The stated 100,000-node and warm p95 performance figures are design targets,
426
- not certified guarantees in `0.1.3`; CI covers correctness across Windows,
426
+ not certified guarantees in `0.1.4`; CI covers correctness across Windows,
427
427
  Linux, and macOS but does not emulate a specific Windows-x64 SSD workload.
428
428
 
429
429
  ## Development
@@ -5,7 +5,7 @@ hierarchies for agents. It discovers file metadata first and opens document
5
5
  bodies only when a caller expands or reads a node. The default parser path is
6
6
  local Python code: Microsoft Office and LibreOffice are not required.
7
7
 
8
- > **Project status:** `0.1.3` is an alpha contract. Read-only exploration and
8
+ > **Project status:** `0.1.4` is an alpha contract. Read-only exploration and
9
9
  > byte access are implemented; editing, rendering, OCR, and complete semantic
10
10
  > coverage of every supported container are not.
11
11
 
@@ -246,7 +246,7 @@ best-effort basis. `index_content()` performs a full supported semantic walk
246
246
  without retaining all decoded bodies in RAM.
247
247
 
248
248
  The persistent index is an application-owned SQLite database below
249
- `<workspace>/.agent-folder-workspace-cache`, separated by a hash of the
249
+ `WORKSPACE_ROOT/.agent-folder-workspace-cache`, separated by a hash of the
250
250
  workspace root. Existing owned caches are reused, while the cache subtree is
251
251
  excluded from document discovery. `WorkspaceConfig.cache_directory` and MCP's
252
252
  optional `cache_directory` argument can select another cache root explicitly.
@@ -391,7 +391,7 @@ The detailed coverage and per-format caveats are in
391
391
  rendering. A hard parent timeout cannot guarantee cleanup of a vendor process
392
392
  that is itself stuck below COM or LibreOffice process control.
393
393
  - The stated 100,000-node and warm p95 performance figures are design targets,
394
- not certified guarantees in `0.1.3`; CI covers correctness across Windows,
394
+ not certified guarantees in `0.1.4`; CI covers correctness across Windows,
395
395
  Linux, and macOS but does not emulate a specific Windows-x64 SSD workload.
396
396
 
397
397
  ## Development
@@ -144,7 +144,7 @@ evicts least-recently-used values until `max_content_cache_bytes` is respected.
144
144
  The cache disappears with the workspace process or refresh.
145
145
 
146
146
  `ContentIndex` is created on first content-index/search use beneath
147
- `<workspace>/.agent-folder-workspace-cache` by default. Each root gets a
147
+ `WORKSPACE_ROOT/.agent-folder-workspace-cache` by default. Each root gets a
148
148
  directory named with a truncated SHA-256 of the normalized absolute root. An
149
149
  existing owned cache is reused; a same-named directory without the ownership
150
150
  marker is rejected, and `NodeRegistry` excludes the cache subtree from source
@@ -68,7 +68,7 @@ outer format's default full-index branches. Cached copies can outlive a
68
68
  workspace instance until eviction or `folderws clear-cache`.
69
69
 
70
70
  By default, indexes and derived copies live below
71
- `<workspace>/.agent-folder-workspace-cache`. The owned directory is excluded
71
+ `WORKSPACE_ROOT/.agent-folder-workspace-cache`. The owned directory is excluded
72
72
  from the document inventory, so split or converted artifacts do not reappear
73
73
  as source files. `WorkspaceConfig.cache_directory` or MCP's optional absolute
74
74
  `cache_directory` can select a different cache for one document basis.
@@ -4,7 +4,7 @@
4
4
 
5
5
  **Goal:** Store split and derived document data in an owned cache beside each document basis by default and let MCP choose an absolute cache path per newly opened workspace.
6
6
 
7
- **Architecture:** Resolve every real `FolderWorkspace` to one explicit cache root during open, defaulting to `<workspace>/.agent-folder-workspace-cache`, and exclude that root from the source inventory. Extend `open_workspace` with one backward-compatible optional cache argument; validate and pass it through `WorkspaceManager`, while reporting the selected cache in `WorkspaceInfoV1`.
7
+ **Architecture:** Resolve every real `FolderWorkspace` to one explicit cache root during open, defaulting to `WORKSPACE_ROOT/.agent-folder-workspace-cache`, and exclude that root from the source inventory. Extend `open_workspace` with one backward-compatible optional cache argument; validate and pass it through `WorkspaceManager`, while reporting the selected cache in `WorkspaceInfoV1`.
8
8
 
9
9
  **Tech Stack:** Python 3.11-3.14, Pydantic v2, FastMCP, pytest, Ruff, strict Mypy, Hatchling/build, Twine.
10
10
 
@@ -153,7 +153,7 @@ the mounted node.
153
153
  ## Cache locations
154
154
 
155
155
  Each document workspace defaults to an owned
156
- `<workspace>\.agent-folder-workspace-cache` directory. An existing owned cache
156
+ `WORKSPACE_ROOT\.agent-folder-workspace-cache` directory. An existing owned cache
157
157
  is reused when MCP opens the workspace; a same-named foreign directory is
158
158
  rejected. The workspace scanner excludes this directory. It contains:
159
159
 
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "agent-folder-workspace"
7
- version = "0.1.3"
7
+ version = "0.1.4"
8
8
  description = "Offline, lazy, agent-oriented exploration of heterogeneous folders"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.11,<3.15"
@@ -68,7 +68,7 @@ def check_wheel(path: Path) -> str:
68
68
  metadata_name = _one(names, ".dist-info/METADATA")
69
69
  metadata = BytesParser(policy=default).parsebytes(wheel.read(metadata_name))
70
70
  _assert(metadata["Name"] == "agent-folder-workspace", "unexpected project name")
71
- _assert(metadata["Version"] == "0.1.3", "unexpected project version")
71
+ _assert(metadata["Version"] == "0.1.4", "unexpected project version")
72
72
  _assert(metadata["License-Expression"] == "Apache-2.0", "unexpected license")
73
73
  _assert(
74
74
  set(str(metadata["Requires-Python"]).split(",")) == {">=3.11", "<3.15"},
@@ -24,7 +24,7 @@ from agent_folder_workspace.models import (
24
24
  )
25
25
  from agent_folder_workspace.workspace import FolderWorkspace
26
26
 
27
- __version__ = "0.1.3"
27
+ __version__ = "0.1.4"
28
28
 
29
29
  __all__ = [
30
30
  "BackendPolicy",
@@ -115,7 +115,7 @@ def test_wheel_contains_runtime_resources_and_complete_metadata(
115
115
  metadata_name = _single_name(names, ".dist-info/METADATA")
116
116
  metadata = BytesParser(policy=default).parsebytes(wheel.read(metadata_name))
117
117
  assert metadata["Name"] == "agent-folder-workspace"
118
- assert metadata["Version"] == "0.1.3"
118
+ assert metadata["Version"] == "0.1.4"
119
119
  assert metadata["License-Expression"] == "Apache-2.0"
120
120
  assert set(metadata["Requires-Python"].split(",")) == {">=3.11", "<3.15"}
121
121
  assert metadata["Author-email"] == "Dark Light <darklight@noreply.com>"
@@ -143,7 +143,7 @@ def test_wheel_contains_runtime_resources_and_complete_metadata(
143
143
  ):
144
144
  assert runtime_selection_term in payload
145
145
  for cache_term in (
146
- ".agent-folder-workspace-cache",
146
+ "WORKSPACE_ROOT/.agent-folder-workspace-cache",
147
147
  "cache_directory",
148
148
  "existing owned cache",
149
149
  ):
@@ -183,7 +183,7 @@ def test_sdist_manifest_contains_maintainer_sources_without_local_artifacts(
183
183
  with tarfile.open(sdist_path, mode="r:gz") as archive:
184
184
  names = {member.name for member in archive.getmembers() if member.isfile()}
185
185
 
186
- root_prefix = "agent_folder_workspace-0.1.3/"
186
+ root_prefix = "agent_folder_workspace-0.1.4/"
187
187
  required = {
188
188
  "README.md",
189
189
  "LICENSE",