swiftapi-python 1.3.0__tar.gz → 1.3.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 (68) hide show
  1. {swiftapi_python-1.3.0 → swiftapi_python-1.3.1}/CHANGELOG.md +6 -0
  2. {swiftapi_python-1.3.0 → swiftapi_python-1.3.1}/PKG-INFO +10 -13
  3. {swiftapi_python-1.3.0 → swiftapi_python-1.3.1}/README.md +9 -12
  4. {swiftapi_python-1.3.0 → swiftapi_python-1.3.1}/pyproject.toml +1 -1
  5. {swiftapi_python-1.3.0 → swiftapi_python-1.3.1}/scripts/qualify_artifacts.py +1 -1
  6. {swiftapi_python-1.3.0 → swiftapi_python-1.3.1}/swiftapi/__init__.py +1 -1
  7. {swiftapi_python-1.3.0 → swiftapi_python-1.3.1}/swiftapi/brake/broker.py +1 -1
  8. {swiftapi_python-1.3.0 → swiftapi_python-1.3.1}/swiftapi/brake/install.py +1 -1
  9. {swiftapi_python-1.3.0 → swiftapi_python-1.3.1}/swiftapi/brake/mcp.py +1 -1
  10. {swiftapi_python-1.3.0 → swiftapi_python-1.3.1}/swiftapi/brake/qualification.py +1 -1
  11. {swiftapi_python-1.3.0 → swiftapi_python-1.3.1}/swiftapi_python.egg-info/PKG-INFO +10 -13
  12. {swiftapi_python-1.3.0 → swiftapi_python-1.3.1}/tests/test_release_contract.py +13 -0
  13. {swiftapi_python-1.3.0 → swiftapi_python-1.3.1}/LICENSE +0 -0
  14. {swiftapi_python-1.3.0 → swiftapi_python-1.3.1}/MANIFEST.in +0 -0
  15. {swiftapi_python-1.3.0 → swiftapi_python-1.3.1}/MIGRATION_1_2_2.md +0 -0
  16. {swiftapi_python-1.3.0 → swiftapi_python-1.3.1}/PRODUCT_TRUTH_MAP.md +0 -0
  17. {swiftapi_python-1.3.0 → swiftapi_python-1.3.1}/benchmarks/corpora.lock.json +0 -0
  18. {swiftapi_python-1.3.0 → swiftapi_python-1.3.1}/benchmarks/sources.lock.json +0 -0
  19. {swiftapi_python-1.3.0 → swiftapi_python-1.3.1}/docs/ACTION_ENVELOPES.md +0 -0
  20. {swiftapi_python-1.3.0 → swiftapi_python-1.3.1}/docs/BENCHMARKING.md +0 -0
  21. {swiftapi_python-1.3.0 → swiftapi_python-1.3.1}/docs/BYOK.md +0 -0
  22. {swiftapi_python-1.3.0 → swiftapi_python-1.3.1}/docs/CLAUDE_CODE.md +0 -0
  23. {swiftapi_python-1.3.0 → swiftapi_python-1.3.1}/docs/CODEX.md +0 -0
  24. {swiftapi_python-1.3.0 → swiftapi_python-1.3.1}/docs/CONCEPTS.md +0 -0
  25. {swiftapi_python-1.3.0 → swiftapi_python-1.3.1}/docs/CONDITIONS.md +0 -0
  26. {swiftapi_python-1.3.0 → swiftapi_python-1.3.1}/docs/LOCAL_BRAKE.md +0 -0
  27. {swiftapi_python-1.3.0 → swiftapi_python-1.3.1}/docs/NATIVE_NONCONTINUATION.md +0 -0
  28. {swiftapi_python-1.3.0 → swiftapi_python-1.3.1}/docs/PYTHON_SDK.md +0 -0
  29. {swiftapi_python-1.3.0 → swiftapi_python-1.3.1}/docs/QUICKSTART.md +0 -0
  30. {swiftapi_python-1.3.0 → swiftapi_python-1.3.1}/docs/RECEIPTS.md +0 -0
  31. {swiftapi_python-1.3.0 → swiftapi_python-1.3.1}/docs/REMOTE_SWIFTAPI.md +0 -0
  32. {swiftapi_python-1.3.0 → swiftapi_python-1.3.1}/docs/RESEARCH_PROVENANCE.md +0 -0
  33. {swiftapi_python-1.3.0 → swiftapi_python-1.3.1}/docs/SECURITY_MODEL.md +0 -0
  34. {swiftapi_python-1.3.0 → swiftapi_python-1.3.1}/docs/THREAT_MODEL.md +0 -0
  35. {swiftapi_python-1.3.0 → swiftapi_python-1.3.1}/docs/VERIFICATION.md +0 -0
  36. {swiftapi_python-1.3.0 → swiftapi_python-1.3.1}/scripts/fetch_benchmarks.py +0 -0
  37. {swiftapi_python-1.3.0 → swiftapi_python-1.3.1}/scripts/fetch_corpora.py +0 -0
  38. {swiftapi_python-1.3.0 → swiftapi_python-1.3.1}/setup.cfg +0 -0
  39. {swiftapi_python-1.3.0 → swiftapi_python-1.3.1}/swiftapi/__main__.py +0 -0
  40. {swiftapi_python-1.3.0 → swiftapi_python-1.3.1}/swiftapi/anthropic.py +0 -0
  41. {swiftapi_python-1.3.0 → swiftapi_python-1.3.1}/swiftapi/brake/__init__.py +0 -0
  42. {swiftapi_python-1.3.0 → swiftapi_python-1.3.1}/swiftapi/brake/benchmarks.py +0 -0
  43. {swiftapi_python-1.3.0 → swiftapi_python-1.3.1}/swiftapi/brake/core.py +0 -0
  44. {swiftapi_python-1.3.0 → swiftapi_python-1.3.1}/swiftapi/brake/observations.py +0 -0
  45. {swiftapi_python-1.3.0 → swiftapi_python-1.3.1}/swiftapi/brake/remote.py +0 -0
  46. {swiftapi_python-1.3.0 → swiftapi_python-1.3.1}/swiftapi/cli.py +0 -0
  47. {swiftapi_python-1.3.0 → swiftapi_python-1.3.1}/swiftapi/client.py +0 -0
  48. {swiftapi_python-1.3.0 → swiftapi_python-1.3.1}/swiftapi/enforcement.py +0 -0
  49. {swiftapi_python-1.3.0 → swiftapi_python-1.3.1}/swiftapi/exceptions.py +0 -0
  50. {swiftapi_python-1.3.0 → swiftapi_python-1.3.1}/swiftapi/openai.py +0 -0
  51. {swiftapi_python-1.3.0 → swiftapi_python-1.3.1}/swiftapi/py.typed +0 -0
  52. {swiftapi_python-1.3.0 → swiftapi_python-1.3.1}/swiftapi/utils.py +0 -0
  53. {swiftapi_python-1.3.0 → swiftapi_python-1.3.1}/swiftapi/verifier.py +0 -0
  54. {swiftapi_python-1.3.0 → swiftapi_python-1.3.1}/swiftapi_python.egg-info/SOURCES.txt +0 -0
  55. {swiftapi_python-1.3.0 → swiftapi_python-1.3.1}/swiftapi_python.egg-info/dependency_links.txt +0 -0
  56. {swiftapi_python-1.3.0 → swiftapi_python-1.3.1}/swiftapi_python.egg-info/entry_points.txt +0 -0
  57. {swiftapi_python-1.3.0 → swiftapi_python-1.3.1}/swiftapi_python.egg-info/requires.txt +0 -0
  58. {swiftapi_python-1.3.0 → swiftapi_python-1.3.1}/swiftapi_python.egg-info/top_level.txt +0 -0
  59. {swiftapi_python-1.3.0 → swiftapi_python-1.3.1}/tests/conftest.py +0 -0
  60. {swiftapi_python-1.3.0 → swiftapi_python-1.3.1}/tests/test_anthropic.py +0 -0
  61. {swiftapi_python-1.3.0 → swiftapi_python-1.3.1}/tests/test_brake.py +0 -0
  62. {swiftapi_python-1.3.0 → swiftapi_python-1.3.1}/tests/test_brake_benchmarks_remote.py +0 -0
  63. {swiftapi_python-1.3.0 → swiftapi_python-1.3.1}/tests/test_client.py +0 -0
  64. {swiftapi_python-1.3.0 → swiftapi_python-1.3.1}/tests/test_exceptions.py +0 -0
  65. {swiftapi_python-1.3.0 → swiftapi_python-1.3.1}/tests/test_legacy_security.py +0 -0
  66. {swiftapi_python-1.3.0 → swiftapi_python-1.3.1}/tests/test_openai.py +0 -0
  67. {swiftapi_python-1.3.0 → swiftapi_python-1.3.1}/tests/test_responses.py +0 -0
  68. {swiftapi_python-1.3.0 → swiftapi_python-1.3.1}/tests/test_verifier.py +0 -0
@@ -1,5 +1,11 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.3.1 — 2026-09-22
4
+
5
+ Fix package-index README guide links by pointing to the public source distribution
6
+ and documentation. Runtime behavior is unchanged from 1.3.0; version reporting
7
+ identifies this patch. Historical distributions remain immutable.
8
+
3
9
  ## 1.3.0 — 2026-09-22
4
10
 
5
11
  Add local prerequisite evaluation, canonical action envelopes, Ed25519 decisions
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: swiftapi-python
3
- Version: 1.3.0
3
+ Version: 1.3.1
4
4
  Summary: SwiftAPI Python SDK - AI Action Verification Gateway
5
5
  Author-email: Rayan Pal <rayan@swiftapi.ai>
6
6
  License-Expression: MIT
@@ -131,17 +131,14 @@ causal, theoretical, and protocol boundaries.
131
131
 
132
132
  ## Documentation
133
133
 
134
- Start with [Quickstart](docs/QUICKSTART.md). See [concepts](docs/CONCEPTS.md),
135
- [local brake](docs/LOCAL_BRAKE.md), [Codex](docs/CODEX.md),
136
- [Claude Code](docs/CLAUDE_CODE.md), [Python SDK](docs/PYTHON_SDK.md),
137
- [conditions](docs/CONDITIONS.md), [action envelopes](docs/ACTION_ENVELOPES.md),
138
- [receipts](docs/RECEIPTS.md), [verification](docs/VERIFICATION.md),
139
- [remote authority](docs/REMOTE_SWIFTAPI.md), [BYOK](docs/BYOK.md),
140
- [security](docs/SECURITY_MODEL.md), [threat model](docs/THREAT_MODEL.md),
141
- [native noncontinuation](docs/NATIVE_NONCONTINUATION.md),
142
- [benchmarking](docs/BENCHMARKING.md), and [provenance](docs/RESEARCH_PROVENANCE.md).
143
-
144
- [Migration from 1.2.2](MIGRATION_1_2_2.md) documents security corrections and
145
- termination-metadata changes. Historical 1.2.2 bytes remain immutable on PyPI.
134
+ The full guides ship in the [source distribution on PyPI](https://pypi.org/project/swiftapi-python/#files),
135
+ inside `docs/`. Start with `docs/QUICKSTART.md`. The source also includes guides
136
+ for concepts, the local brake, Codex, Claude Code, the Python SDK, conditions,
137
+ action envelopes, receipts, verification, remote authority, BYOK, security,
138
+ the threat model, native noncontinuation, benchmarks, and research provenance.
139
+
140
+ `MIGRATION_1_2_2.md` documents security corrections and termination-metadata
141
+ changes. Historical 1.2.2 bytes remain immutable on PyPI. The public
142
+ [SwiftAPI documentation](https://getswiftapi.com/docs) remains available online.
146
143
 
147
144
  MIT license. Research and software by Rayan Pal / SwiftAPI Labs.
@@ -95,17 +95,14 @@ causal, theoretical, and protocol boundaries.
95
95
 
96
96
  ## Documentation
97
97
 
98
- Start with [Quickstart](docs/QUICKSTART.md). See [concepts](docs/CONCEPTS.md),
99
- [local brake](docs/LOCAL_BRAKE.md), [Codex](docs/CODEX.md),
100
- [Claude Code](docs/CLAUDE_CODE.md), [Python SDK](docs/PYTHON_SDK.md),
101
- [conditions](docs/CONDITIONS.md), [action envelopes](docs/ACTION_ENVELOPES.md),
102
- [receipts](docs/RECEIPTS.md), [verification](docs/VERIFICATION.md),
103
- [remote authority](docs/REMOTE_SWIFTAPI.md), [BYOK](docs/BYOK.md),
104
- [security](docs/SECURITY_MODEL.md), [threat model](docs/THREAT_MODEL.md),
105
- [native noncontinuation](docs/NATIVE_NONCONTINUATION.md),
106
- [benchmarking](docs/BENCHMARKING.md), and [provenance](docs/RESEARCH_PROVENANCE.md).
107
-
108
- [Migration from 1.2.2](MIGRATION_1_2_2.md) documents security corrections and
109
- termination-metadata changes. Historical 1.2.2 bytes remain immutable on PyPI.
98
+ The full guides ship in the [source distribution on PyPI](https://pypi.org/project/swiftapi-python/#files),
99
+ inside `docs/`. Start with `docs/QUICKSTART.md`. The source also includes guides
100
+ for concepts, the local brake, Codex, Claude Code, the Python SDK, conditions,
101
+ action envelopes, receipts, verification, remote authority, BYOK, security,
102
+ the threat model, native noncontinuation, benchmarks, and research provenance.
103
+
104
+ `MIGRATION_1_2_2.md` documents security corrections and termination-metadata
105
+ changes. Historical 1.2.2 bytes remain immutable on PyPI. The public
106
+ [SwiftAPI documentation](https://getswiftapi.com/docs) remains available online.
110
107
 
111
108
  MIT license. Research and software by Rayan Pal / SwiftAPI Labs.
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "swiftapi-python"
7
- version = "1.3.0"
7
+ version = "1.3.1"
8
8
  description = "SwiftAPI Python SDK - AI Action Verification Gateway"
9
9
  readme = "README.md"
10
10
  license = "MIT"
@@ -60,7 +60,7 @@ def main():
60
60
  [
61
61
  python,
62
62
  "-c",
63
- 'import swiftapi,sys,pathlib; assert pathlib.Path(sys.prefix) in pathlib.Path(swiftapi.__file__).parents; assert swiftapi.__version__ == "1.3.0"; print(swiftapi.__file__)',
63
+ 'import swiftapi,sys,pathlib; assert pathlib.Path(sys.prefix) in pathlib.Path(swiftapi.__file__).parents; assert swiftapi.__version__ == "1.3.1"; print(swiftapi.__file__)',
64
64
  ],
65
65
  )
66
66
  run("doctor", [command, "doctor"])
@@ -1,5 +1,5 @@
1
1
  """SwiftAPI: verified execution for explicitly mediated capabilities."""
2
- __version__ = "1.3.0"
2
+ __version__ = "1.3.1"
3
3
  __author__ = "Rayan Pal"
4
4
 
5
5
  # Core exports
@@ -48,7 +48,7 @@ class CapabilityBroker:
48
48
 
49
49
  def status(self) -> dict:
50
50
  return {
51
- "version": "1.3.0",
51
+ "version": "1.3.1",
52
52
  "scope": "write_marker in configured sandbox only",
53
53
  "sandbox": str(self.sandbox),
54
54
  "public_key_file": str(self.root / "public-key.json"),
@@ -260,7 +260,7 @@ def doctor(home: Optional[Path] = None) -> dict:
260
260
  check["error"] = "configuration invalid"
261
261
  checks[h] = check
262
262
  return {
263
- "version": "1.3.0",
263
+ "version": "1.3.1",
264
264
  "python": sys.version.split()[0],
265
265
  "local_brake": "available",
266
266
  "hosts": checks,
@@ -94,7 +94,7 @@ def serve() -> None:
94
94
  result = {
95
95
  "protocolVersion": requested if requested in supported else supported[-1],
96
96
  "capabilities": {"tools": {"listChanged": False}},
97
- "serverInfo": {"name": "swiftapi_brake", "version": "1.3.0"},
97
+ "serverInfo": {"name": "swiftapi_brake", "version": "1.3.1"},
98
98
  "instructions": "Use the broker for its sandbox markers. Approval is operator-only. A denied action is GATE_BLOCK, never native Void.",
99
99
  }
100
100
  elif method == "ping":
@@ -102,7 +102,7 @@ def qualify(root: Path) -> dict:
102
102
  checks.append({"name": name, "passed": blocked})
103
103
  result = {
104
104
  "schema": "swiftapi.qualification/v1",
105
- "version": "1.3.0",
105
+ "version": "1.3.1",
106
106
  "checks": checks,
107
107
  "passed": sum(c["passed"] for c in checks),
108
108
  "total": len(checks),
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: swiftapi-python
3
- Version: 1.3.0
3
+ Version: 1.3.1
4
4
  Summary: SwiftAPI Python SDK - AI Action Verification Gateway
5
5
  Author-email: Rayan Pal <rayan@swiftapi.ai>
6
6
  License-Expression: MIT
@@ -131,17 +131,14 @@ causal, theoretical, and protocol boundaries.
131
131
 
132
132
  ## Documentation
133
133
 
134
- Start with [Quickstart](docs/QUICKSTART.md). See [concepts](docs/CONCEPTS.md),
135
- [local brake](docs/LOCAL_BRAKE.md), [Codex](docs/CODEX.md),
136
- [Claude Code](docs/CLAUDE_CODE.md), [Python SDK](docs/PYTHON_SDK.md),
137
- [conditions](docs/CONDITIONS.md), [action envelopes](docs/ACTION_ENVELOPES.md),
138
- [receipts](docs/RECEIPTS.md), [verification](docs/VERIFICATION.md),
139
- [remote authority](docs/REMOTE_SWIFTAPI.md), [BYOK](docs/BYOK.md),
140
- [security](docs/SECURITY_MODEL.md), [threat model](docs/THREAT_MODEL.md),
141
- [native noncontinuation](docs/NATIVE_NONCONTINUATION.md),
142
- [benchmarking](docs/BENCHMARKING.md), and [provenance](docs/RESEARCH_PROVENANCE.md).
143
-
144
- [Migration from 1.2.2](MIGRATION_1_2_2.md) documents security corrections and
145
- termination-metadata changes. Historical 1.2.2 bytes remain immutable on PyPI.
134
+ The full guides ship in the [source distribution on PyPI](https://pypi.org/project/swiftapi-python/#files),
135
+ inside `docs/`. Start with `docs/QUICKSTART.md`. The source also includes guides
136
+ for concepts, the local brake, Codex, Claude Code, the Python SDK, conditions,
137
+ action envelopes, receipts, verification, remote authority, BYOK, security,
138
+ the threat model, native noncontinuation, benchmarks, and research provenance.
139
+
140
+ `MIGRATION_1_2_2.md` documents security corrections and termination-metadata
141
+ changes. Historical 1.2.2 bytes remain immutable on PyPI. The public
142
+ [SwiftAPI documentation](https://getswiftapi.com/docs) remains available online.
146
143
 
147
144
  MIT license. Research and software by Rayan Pal / SwiftAPI Labs.
@@ -90,3 +90,16 @@ def test_revocation_unknown_stops_paranoid_callback():
90
90
  api._request = Mock(side_effect=NetworkError("offline"))
91
91
  with pytest.raises(NetworkError):
92
92
  api.check_revocation("x")
93
+
94
+
95
+ def test_readme_document_links_resolve_outside_source_checkout():
96
+ from urllib.parse import urlparse
97
+
98
+ source = (Path(__file__).resolve().parents[1] / "README.md").read_text()
99
+ links = re.findall(r"\[[^\]]+\]\(([^)]+)\)", source)
100
+ assert links
101
+ for link in links:
102
+ parsed = urlparse(link)
103
+ assert parsed.scheme == "https" and parsed.netloc, (
104
+ "PyPI does not resolve repository-relative README links"
105
+ )
File without changes