agents-shipgate 0.2.0__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 (148) hide show
  1. agents_shipgate-0.2.0/.github/dependabot.yml +13 -0
  2. agents_shipgate-0.2.0/.github/workflows/ci.yml +47 -0
  3. agents_shipgate-0.2.0/.github/workflows/release.yml +61 -0
  4. agents_shipgate-0.2.0/.gitignore +21 -0
  5. agents_shipgate-0.2.0/.hypothesis/.gitignore +9 -0
  6. agents_shipgate-0.2.0/.hypothesis/constants/045fec4dd7f58343 +4 -0
  7. agents_shipgate-0.2.0/.hypothesis/constants/0b5563ab2d2c169e +4 -0
  8. agents_shipgate-0.2.0/.hypothesis/constants/0b9d68b394dbbe5a +4 -0
  9. agents_shipgate-0.2.0/.hypothesis/constants/0d837de9aabf2c9e +4 -0
  10. agents_shipgate-0.2.0/.hypothesis/constants/10d0fede45f841c7 +4 -0
  11. agents_shipgate-0.2.0/.hypothesis/constants/125e13b1a1f73e76 +4 -0
  12. agents_shipgate-0.2.0/.hypothesis/constants/26367d2b196b18f1 +4 -0
  13. agents_shipgate-0.2.0/.hypothesis/constants/3a3b45671fdb419c +4 -0
  14. agents_shipgate-0.2.0/.hypothesis/constants/446a38b73cd2dd8d +4 -0
  15. agents_shipgate-0.2.0/.hypothesis/constants/45a2f3ececac2119 +4 -0
  16. agents_shipgate-0.2.0/.hypothesis/constants/473edb7165d7b1cf +4 -0
  17. agents_shipgate-0.2.0/.hypothesis/constants/55baab0f8575ca40 +4 -0
  18. agents_shipgate-0.2.0/.hypothesis/constants/59942de603c4777c +4 -0
  19. agents_shipgate-0.2.0/.hypothesis/constants/5ac8e7be06834a1a +4 -0
  20. agents_shipgate-0.2.0/.hypothesis/constants/5ddbb9b6b9539bfd +4 -0
  21. agents_shipgate-0.2.0/.hypothesis/constants/61c9d918e742bb34 +4 -0
  22. agents_shipgate-0.2.0/.hypothesis/constants/65ee062b3ed27a35 +4 -0
  23. agents_shipgate-0.2.0/.hypothesis/constants/6e0c83e84ff62933 +4 -0
  24. agents_shipgate-0.2.0/.hypothesis/constants/70ca871038129781 +4 -0
  25. agents_shipgate-0.2.0/.hypothesis/constants/7533d038fb74a4f9 +4 -0
  26. agents_shipgate-0.2.0/.hypothesis/constants/78017d02d729a509 +4 -0
  27. agents_shipgate-0.2.0/.hypothesis/constants/7912350aed40e15e +4 -0
  28. agents_shipgate-0.2.0/.hypothesis/constants/82c478e9bab89dc4 +4 -0
  29. agents_shipgate-0.2.0/.hypothesis/constants/83001b28c6de5c54 +4 -0
  30. agents_shipgate-0.2.0/.hypothesis/constants/849889251d5ef6f9 +4 -0
  31. agents_shipgate-0.2.0/.hypothesis/constants/8c5413d81fa0f702 +4 -0
  32. agents_shipgate-0.2.0/.hypothesis/constants/8f2a55b3f9964317 +4 -0
  33. agents_shipgate-0.2.0/.hypothesis/constants/a9b11637db1557ac +4 -0
  34. agents_shipgate-0.2.0/.hypothesis/constants/ad515af1c1923a06 +4 -0
  35. agents_shipgate-0.2.0/.hypothesis/constants/b5953d7c9a9f2821 +4 -0
  36. agents_shipgate-0.2.0/.hypothesis/constants/b8222c767a411a6a +4 -0
  37. agents_shipgate-0.2.0/.hypothesis/constants/cdfd83c248effd35 +4 -0
  38. agents_shipgate-0.2.0/.hypothesis/constants/d05ee1c296a90c1c +4 -0
  39. agents_shipgate-0.2.0/.hypothesis/constants/d2daadc405b9d15f +4 -0
  40. agents_shipgate-0.2.0/.hypothesis/constants/da523675d9c4b986 +4 -0
  41. agents_shipgate-0.2.0/.hypothesis/constants/de6a9a8817ede715 +4 -0
  42. agents_shipgate-0.2.0/.hypothesis/constants/e45724350b67358e +4 -0
  43. agents_shipgate-0.2.0/.hypothesis/constants/f0ec78e2350f8f59 +4 -0
  44. agents_shipgate-0.2.0/.hypothesis/constants/f84de8d134574937 +4 -0
  45. agents_shipgate-0.2.0/.hypothesis/constants/fbad946c1cfeaa00 +4 -0
  46. agents_shipgate-0.2.0/.hypothesis/unicode_data/15.0.0/charmap.json.gz +0 -0
  47. agents_shipgate-0.2.0/.hypothesis/unicode_data/15.0.0/codec-utf-8.json.gz +0 -0
  48. agents_shipgate-0.2.0/CHANGELOG.md +14 -0
  49. agents_shipgate-0.2.0/CONTRIBUTING.md +51 -0
  50. agents_shipgate-0.2.0/LICENSE +185 -0
  51. agents_shipgate-0.2.0/PKG-INFO +217 -0
  52. agents_shipgate-0.2.0/README.md +190 -0
  53. agents_shipgate-0.2.0/ROADMAP.md +24 -0
  54. agents_shipgate-0.2.0/SECURITY.md +34 -0
  55. agents_shipgate-0.2.0/action.yml +235 -0
  56. agents_shipgate-0.2.0/docs/baseline.md +51 -0
  57. agents_shipgate-0.2.0/docs/category.md +28 -0
  58. agents_shipgate-0.2.0/docs/checks.md +227 -0
  59. agents_shipgate-0.2.0/docs/decisions.md +24 -0
  60. agents_shipgate-0.2.0/docs/distribution.md +41 -0
  61. agents_shipgate-0.2.0/docs/integrations.md +108 -0
  62. agents_shipgate-0.2.0/docs/manifest-v0.1.md +252 -0
  63. agents_shipgate-0.2.0/docs/report-schema.v0.1.json +475 -0
  64. agents_shipgate-0.2.0/docs/report-schema.v0.2.json +120 -0
  65. agents_shipgate-0.2.0/docs/troubleshooting.md +69 -0
  66. agents_shipgate-0.2.0/docs/trust-model.md +47 -0
  67. agents_shipgate-0.2.0/pyproject.toml +69 -0
  68. agents_shipgate-0.2.0/samples/baseline_workflow/README.md +18 -0
  69. agents_shipgate-0.2.0/samples/clean_read_only_agent/shipgate.yaml +30 -0
  70. agents_shipgate-0.2.0/samples/clean_read_only_agent/tools.json +25 -0
  71. agents_shipgate-0.2.0/samples/multi_agent_workspace/billing/shipgate.yaml +21 -0
  72. agents_shipgate-0.2.0/samples/multi_agent_workspace/billing/tools.json +22 -0
  73. agents_shipgate-0.2.0/samples/multi_agent_workspace/support/shipgate.yaml +21 -0
  74. agents_shipgate-0.2.0/samples/multi_agent_workspace/support/tools.json +14 -0
  75. agents_shipgate-0.2.0/samples/simple_openai_api_agent/expected/report.json +697 -0
  76. agents_shipgate-0.2.0/samples/simple_openai_api_agent/expected/report.md +118 -0
  77. agents_shipgate-0.2.0/samples/simple_openai_api_agent/openai-config.json +6 -0
  78. agents_shipgate-0.2.0/samples/simple_openai_api_agent/policies/openai-api-policy.yaml +14 -0
  79. agents_shipgate-0.2.0/samples/simple_openai_api_agent/prompts/support_refund.md +3 -0
  80. agents_shipgate-0.2.0/samples/simple_openai_api_agent/schemas/refund_decision.schema.json +13 -0
  81. agents_shipgate-0.2.0/samples/simple_openai_api_agent/shipgate.yaml +48 -0
  82. agents_shipgate-0.2.0/samples/simple_openai_api_agent/tests/openai-api-cases.json +8 -0
  83. agents_shipgate-0.2.0/samples/simple_openai_api_agent/tools/openai-tools.json +46 -0
  84. agents_shipgate-0.2.0/samples/simple_openai_api_agent/traces/sample.jsonl +1 -0
  85. agents_shipgate-0.2.0/samples/support_refund_agent/.agents-shipgate/mcp-tools.json +60 -0
  86. agents_shipgate-0.2.0/samples/support_refund_agent/.agents-shipgate/wildcard-tools.json +5 -0
  87. agents_shipgate-0.2.0/samples/support_refund_agent/agents/refund_agent.py +14 -0
  88. agents_shipgate-0.2.0/samples/support_refund_agent/expected/report.json +751 -0
  89. agents_shipgate-0.2.0/samples/support_refund_agent/expected/report.md +119 -0
  90. agents_shipgate-0.2.0/samples/support_refund_agent/shipgate.yaml +96 -0
  91. agents_shipgate-0.2.0/samples/support_refund_agent/specs/support-tools.openapi.yaml +164 -0
  92. agents_shipgate-0.2.0/src/agents_shipgate/__init__.py +3 -0
  93. agents_shipgate-0.2.0/src/agents_shipgate/__main__.py +5 -0
  94. agents_shipgate-0.2.0/src/agents_shipgate/checks/__init__.py +2 -0
  95. agents_shipgate-0.2.0/src/agents_shipgate/checks/api.py +400 -0
  96. agents_shipgate-0.2.0/src/agents_shipgate/checks/auth.py +104 -0
  97. agents_shipgate-0.2.0/src/agents_shipgate/checks/base.py +71 -0
  98. agents_shipgate-0.2.0/src/agents_shipgate/checks/documentation.py +113 -0
  99. agents_shipgate-0.2.0/src/agents_shipgate/checks/inventory.py +70 -0
  100. agents_shipgate-0.2.0/src/agents_shipgate/checks/manifest_consistency.py +166 -0
  101. agents_shipgate-0.2.0/src/agents_shipgate/checks/manifest_scope.py +170 -0
  102. agents_shipgate-0.2.0/src/agents_shipgate/checks/policy.py +65 -0
  103. agents_shipgate-0.2.0/src/agents_shipgate/checks/registry.py +210 -0
  104. agents_shipgate-0.2.0/src/agents_shipgate/checks/schema.py +129 -0
  105. agents_shipgate-0.2.0/src/agents_shipgate/checks/side_effects.py +49 -0
  106. agents_shipgate-0.2.0/src/agents_shipgate/ci/__init__.py +2 -0
  107. agents_shipgate-0.2.0/src/agents_shipgate/ci/exit_policy.py +35 -0
  108. agents_shipgate-0.2.0/src/agents_shipgate/ci/github_summary.py +27 -0
  109. agents_shipgate-0.2.0/src/agents_shipgate/cli/__init__.py +2 -0
  110. agents_shipgate-0.2.0/src/agents_shipgate/cli/discovery.py +205 -0
  111. agents_shipgate-0.2.0/src/agents_shipgate/cli/main.py +477 -0
  112. agents_shipgate-0.2.0/src/agents_shipgate/cli/scan.py +366 -0
  113. agents_shipgate-0.2.0/src/agents_shipgate/config/__init__.py +2 -0
  114. agents_shipgate-0.2.0/src/agents_shipgate/config/loader.py +120 -0
  115. agents_shipgate-0.2.0/src/agents_shipgate/config/schema.py +312 -0
  116. agents_shipgate-0.2.0/src/agents_shipgate/core/__init__.py +2 -0
  117. agents_shipgate-0.2.0/src/agents_shipgate/core/baseline.py +113 -0
  118. agents_shipgate-0.2.0/src/agents_shipgate/core/context.py +16 -0
  119. agents_shipgate-0.2.0/src/agents_shipgate/core/errors.py +11 -0
  120. agents_shipgate-0.2.0/src/agents_shipgate/core/findings.py +249 -0
  121. agents_shipgate-0.2.0/src/agents_shipgate/core/logging.py +38 -0
  122. agents_shipgate-0.2.0/src/agents_shipgate/core/models.py +272 -0
  123. agents_shipgate-0.2.0/src/agents_shipgate/core/risk_hints.py +173 -0
  124. agents_shipgate-0.2.0/src/agents_shipgate/inputs/__init__.py +2 -0
  125. agents_shipgate-0.2.0/src/agents_shipgate/inputs/common.py +141 -0
  126. agents_shipgate-0.2.0/src/agents_shipgate/inputs/mcp.py +114 -0
  127. agents_shipgate-0.2.0/src/agents_shipgate/inputs/openai_api.py +355 -0
  128. agents_shipgate-0.2.0/src/agents_shipgate/inputs/openai_sdk_static.py +162 -0
  129. agents_shipgate-0.2.0/src/agents_shipgate/inputs/openapi.py +324 -0
  130. agents_shipgate-0.2.0/src/agents_shipgate/py.typed +1 -0
  131. agents_shipgate-0.2.0/src/agents_shipgate/report/__init__.py +2 -0
  132. agents_shipgate-0.2.0/src/agents_shipgate/report/json_report.py +10 -0
  133. agents_shipgate-0.2.0/src/agents_shipgate/report/markdown.py +248 -0
  134. agents_shipgate-0.2.0/tests/test_action_metadata.py +71 -0
  135. agents_shipgate-0.2.0/tests/test_ci.py +19 -0
  136. agents_shipgate-0.2.0/tests/test_cli.py +378 -0
  137. agents_shipgate-0.2.0/tests/test_config.py +99 -0
  138. agents_shipgate-0.2.0/tests/test_documentation_checks.py +69 -0
  139. agents_shipgate-0.2.0/tests/test_findings.py +184 -0
  140. agents_shipgate-0.2.0/tests/test_inputs.py +462 -0
  141. agents_shipgate-0.2.0/tests/test_manifest_consistency.py +134 -0
  142. agents_shipgate-0.2.0/tests/test_openai_api.py +258 -0
  143. agents_shipgate-0.2.0/tests/test_openapi_fuzz.py +46 -0
  144. agents_shipgate-0.2.0/tests/test_plugins.py +141 -0
  145. agents_shipgate-0.2.0/tests/test_property_loaders.py +97 -0
  146. agents_shipgate-0.2.0/tests/test_registry.py +45 -0
  147. agents_shipgate-0.2.0/tests/test_reports.py +234 -0
  148. agents_shipgate-0.2.0/tests/test_scan.py +612 -0
@@ -0,0 +1,13 @@
1
+ version: 2
2
+ updates:
3
+ - package-ecosystem: pip
4
+ directory: /
5
+ schedule:
6
+ interval: weekly
7
+ open-pull-requests-limit: 5
8
+ - package-ecosystem: github-actions
9
+ directory: /
10
+ schedule:
11
+ interval: weekly
12
+ open-pull-requests-limit: 5
13
+
@@ -0,0 +1,47 @@
1
+ name: CI
2
+
3
+ on:
4
+ pull_request:
5
+ push:
6
+ branches:
7
+ - main
8
+
9
+ permissions:
10
+ contents: read
11
+
12
+ jobs:
13
+ test:
14
+ runs-on: ubuntu-latest
15
+
16
+ steps:
17
+ - name: Checkout
18
+ uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5
19
+
20
+ - name: Set up Python
21
+ uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405
22
+ with:
23
+ python-version: "3.12"
24
+ cache: pip
25
+
26
+ - name: Install
27
+ run: python -m pip install -e ".[dev]"
28
+
29
+ - name: Lint
30
+ run: python -m ruff check .
31
+
32
+ - name: Compile
33
+ run: python -m compileall -q src tests
34
+
35
+ - name: Test
36
+ run: python -m pytest --cov=agents_shipgate --cov-report=term-missing --cov-fail-under=75
37
+
38
+ - name: Build package
39
+ run: |
40
+ python -m build
41
+ python -m twine check dist/*
42
+
43
+ - name: Dependency audit
44
+ run: python -m pip_audit .
45
+
46
+ - name: Generate SBOM
47
+ run: cyclonedx-py environment --pyproject pyproject.toml -o sbom.json
@@ -0,0 +1,61 @@
1
+ name: Release
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - "v*"
7
+
8
+ permissions:
9
+ contents: write
10
+ id-token: write
11
+
12
+ jobs:
13
+ release:
14
+ runs-on: ubuntu-latest
15
+ environment: pypi
16
+
17
+ steps:
18
+ - name: Checkout
19
+ uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5
20
+
21
+ - name: Set up Python
22
+ uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405
23
+ with:
24
+ python-version: "3.12"
25
+ cache: pip
26
+
27
+ - name: Install
28
+ run: |
29
+ python -m pip install -e ".[dev]"
30
+ python -m pip install "uv==0.11.7"
31
+
32
+ - name: Lint and test
33
+ run: |
34
+ python -m ruff check .
35
+ python -m compileall -q src tests
36
+ python -m pytest --cov=agents_shipgate --cov-report=term-missing --cov-fail-under=75
37
+
38
+ - name: Build package
39
+ run: |
40
+ python -m build
41
+ python -m twine check dist/*
42
+
43
+ - name: Dependency audit
44
+ run: python -m pip_audit .
45
+
46
+ - name: Generate SBOM
47
+ run: cyclonedx-py environment --pyproject pyproject.toml -o dist/agents-shipgate-sbom.json
48
+
49
+ - name: Sign release artifacts
50
+ run: sigstore sign --output-directory dist --overwrite dist/*.whl dist/*.tar.gz dist/agents-shipgate-sbom.json
51
+
52
+ - name: Publish to PyPI with Trusted Publishing
53
+ run: uv publish --trusted-publishing always dist/*.whl dist/*.tar.gz
54
+
55
+ - name: Create GitHub release
56
+ env:
57
+ GH_TOKEN: ${{ github.token }}
58
+ run: |
59
+ gh release create "${GITHUB_REF_NAME}" dist/* \
60
+ --title "${GITHUB_REF_NAME}" \
61
+ --notes "Agents Shipgate ${GITHUB_REF_NAME}"
@@ -0,0 +1,21 @@
1
+ __pycache__/
2
+ *.py[cod]
3
+ *$py.class
4
+
5
+ .pytest_cache/
6
+ .mypy_cache/
7
+ .ruff_cache/
8
+ .coverage
9
+ htmlcov/
10
+
11
+ .venv/
12
+ venv/
13
+ env/
14
+
15
+ build/
16
+ dist/
17
+ *.egg-info/
18
+
19
+ .DS_Store
20
+ agents-shipgate-reports/
21
+ .claude/
@@ -0,0 +1,9 @@
1
+ # This .gitignore file was automatically created by Hypothesis. Hypothesis gitignores
2
+ # .hypothesis by default, because we generally recommend that .hypothesis not be checked
3
+ # into version control.
4
+ #
5
+ # If you *would* like to check .hypothesis into version control, you should delete this
6
+ # file. Hypothesis will not re-create this .gitignore unless .hypothesis is deleted (and
7
+ # if it does, that's a bug - please report it!)
8
+
9
+ *
@@ -0,0 +1,4 @@
1
+ # file: /home/runner/work/agents-shipgate/agents-shipgate/src/agents_shipgate/inputs/mcp.py
2
+ # hypothesis_version: 6.152.2
3
+
4
+ ['*', 'annotations', 'auth', 'confidence', 'credential_mode', 'description', 'high', 'inputSchema', 'input_schema', 'mcp', 'mcp_json', 'method', 'name', 'outputSchema', 'output_schema', 'owner', 'scopes', 'tools', 'type', 'wildcard', 'wildcard_tools']
@@ -0,0 +1,4 @@
1
+ # file: /home/runner/work/agents-shipgate/agents-shipgate/src/agents_shipgate/inputs/common.py
2
+ # hypothesis_version: 6.152.2
3
+
4
+ [1024, '.json', '[', 'array', 'default', 'delete', 'description', 'enum', 'format', 'get', 'head', 'input', 'items', 'maximum', 'minimum', 'object', 'options', 'patch', 'post', 'properties', 'put', 'required', 'trace', 'type', 'utf-8', '{', '|']
@@ -0,0 +1,4 @@
1
+ # file: /home/runner/work/agents-shipgate/agents-shipgate/src/agents_shipgate/checks/manifest_consistency.py
2
+ # hypothesis_version: 6.152.2
3
+
4
+ ['*', ':*', 'admin', 'approval', 'check_id', 'confirmation', 'environment', 'high', 'idempotency', 'issues', 'manifest', 'medium', 'missing_tool', 'policy', 'production', 'production_like', 'risk_tags', 'scope', 'tool', 'tool_scopes', 'unknown_check_id', 'write-all']
@@ -0,0 +1,4 @@
1
+ # file: /home/runner/work/agents-shipgate/agents-shipgate/src/agents_shipgate/config/schema.py
2
+ # hypothesis_version: 6.152.2
3
+
4
+ ['0.1', 'advisory', 'after', 'api_model_config', 'before', 'forbid', 'function_schemas', 'json', 'local', 'manual', 'markdown', 'mcp', 'model_config', 'openai_agents_sdk', 'openapi', 'path', 'policy_rules', 'production', 'production_like', 'prompt_files', 'reason', 'response_formats', 'staging', 'strict', 'test_cases', 'tools', 'trace_samples']
@@ -0,0 +1,4 @@
1
+ # file: /home/runner/work/agents-shipgate/agents-shipgate/src/agents_shipgate/report/json_report.py
2
+ # hypothesis_version: 6.152.2
3
+
4
+ ['utf-8']
@@ -0,0 +1,4 @@
1
+ # file: /home/runner/work/agents-shipgate/agents-shipgate/src/agents_shipgate/checks/__init__.py
2
+ # hypothesis_version: 6.152.2
3
+
4
+ []
@@ -0,0 +1,4 @@
1
+ # file: /home/runner/work/agents-shipgate/agents-shipgate/src/agents_shipgate/cli/__init__.py
2
+ # hypothesis_version: 6.152.2
3
+
4
+ []
@@ -0,0 +1,4 @@
1
+ # file: /home/runner/work/agents-shipgate/agents-shipgate/src/agents_shipgate/core/risk_hints.py
2
+ # hypothesis_version: 6.152.2
3
+
4
+ ['DELETE', 'GET', 'PATCH', 'POST', 'PUT', 'auth_scope', 'aws', 'azure', 'bash', 'cancel', 'charge', 'code_execution', 'command', 'confidence', 'create', 'credential', 'customer', 'customer_email', 'delete', 'deploy', 'destructive', 'destructiveHint', 'email', 'execute', 'external', 'external_write', 'financial_action', 'gcp', 'get', 'high', 'httpMethod', 'invoice', 'issue', 'keyword', 'kubernetes', 'list', 'lookup', 'low', 'manual', 'mcp_annotation', 'medium', 'message', 'method', 'openai_api', 'openai_api_keyword', 'openapi_method', 'payment', 'personal data', 'pii', 'preview', 'preview_only', 'python', 'readOnlyHint', 'read_only', 'reason', 'refund', 'remove', 'scopes', 'sdk_function', 'search', 'secret', 'send', 'send_email', 'shell', 'sms', 'ssn', 'status', 'terraform', 'update', 'write']
@@ -0,0 +1,4 @@
1
+ # file: /home/runner/work/agents-shipgate/agents-shipgate/src/agents_shipgate/ci/exit_policy.py
2
+ # hypothesis_version: 6.152.2
3
+
4
+ ['critical', 'new', 'strict']
@@ -0,0 +1,4 @@
1
+ # file: /home/runner/work/agents-shipgate/agents-shipgate/src/agents_shipgate/core/context.py
2
+ # hypothesis_version: 6.152.2
3
+
4
+ []
@@ -0,0 +1,4 @@
1
+ # file: /home/runner/work/agents-shipgate/agents-shipgate/src/agents_shipgate/checks/policy.py
2
+ # hypothesis_version: 6.152.2
3
+
4
+ ['code_execution', 'critical', 'destructive', 'external_write', 'financial_action', 'high', 'medium', 'policy', 'policy_match', 'risk_tags']
@@ -0,0 +1,4 @@
1
+ # file: /home/runner/work/agents-shipgate/agents-shipgate/src/agents_shipgate/inputs/openai_sdk_static.py
2
+ # hypothesis_version: 6.152.2
3
+
4
+ ['Dict', 'List', 'agents.function_tool', 'array', 'bool', 'boolean', 'confidence', 'context', 'ctx', 'dict', 'dict[', 'float', 'function_tool', 'int', 'list', 'list[', 'medium', 'method', 'name_override', 'number', 'object', 'openai_agents_sdk', 'properties', 'required', 'sdk_function', 'sdk_static', 'self', 'string', 'type', 'utf-8']
@@ -0,0 +1,4 @@
1
+ # file: /home/runner/work/agents-shipgate/agents-shipgate/src/agents_shipgate/core/__init__.py
2
+ # hypothesis_version: 6.152.2
3
+
4
+ []
@@ -0,0 +1,4 @@
1
+ # file: /home/runner/work/agents-shipgate/agents-shipgate/src/agents_shipgate/checks/api.py
2
+ # hypothesis_version: 6.152.2
3
+
4
+ ['action', 'additionalProperties', 'advice only', 'advise only', 'amount', 'amt', 'api', 'approval', 'approved', 'ask before', 'body', 'cap', 'command', 'confirm', 'confirmation', 'confirmed', 'content', 'count', 'decision', 'destructive', 'do not take action', 'enum', 'error', 'explicit consent', 'external_write', 'financial_action', 'high', 'high_risk_tools', 'human review', 'idempotency_key', 'idempotentHint', 'instructions', 'integer', 'issues', 'limit', 'medium', 'message', 'missing_strict_true', 'needs_review', 'number', 'object', 'only advise', 'openaiStrict', 'openai_api', 'path', 'prompt', 'properties', 'qty', 'quantity', 'read only', 'read-only', 'refusal', 'required', 'requires review', 'retry_policy', 'risk_tags', 'size', 'status', 'string', 'tool_name', 'tool_output_schemas', 'tools', 'type', 'update', 'updates']
@@ -0,0 +1,4 @@
1
+ # file: /home/runner/work/agents-shipgate/agents-shipgate/src/agents_shipgate/checks/side_effects.py
2
+ # hypothesis_version: 6.152.2
3
+
4
+ ['critical', 'destructive', 'external_write', 'financial_action', 'high', 'idempotency_key', 'idempotentHint', 'medium', 'retryPolicy', 'retry_policy_known', 'risk_tags', 'side_effects']
@@ -0,0 +1,4 @@
1
+ # file: /home/runner/work/agents-shipgate/agents-shipgate/src/agents_shipgate/config/loader.py
2
+ # hypothesis_version: 6.152.2
3
+
4
+ [0.72, '.', '0.1', '<root>', 'agent', 'annotations', 'ci', 'confidence', 'credential_mode', 'declared_purpose', 'deep_import', 'directory', 'entrypoint', 'environment', 'extra_forbidden', 'fail_on', 'formats', 'function_schemas', 'id', 'ignore', 'instructions_preview', 'invalid value', 'loc', 'mode', 'model_config', 'msg', 'name', 'object', 'openai_api', 'optional', 'output', 'owner', 'path', 'permissions', 'policies', 'pr_comment', 'prohibited_actions', 'project', 'prompt_files', 'reason', 'repo', 'response_formats', 'risk_overrides', 'scopes', 'sdk', 'severity_overrides', 'shipgate.yaml', 'static_extract', 'tags', 'target', 'test_cases', 'tool', 'tool_sources', 'tools', 'trace_samples', 'trust', 'type', 'upload_artifact', 'utf-8', 'version']
@@ -0,0 +1,4 @@
1
+ # file: /home/runner/work/agents-shipgate/agents-shipgate/src/agents_shipgate/cli/scan.py
2
+ # hypothesis_version: 6.152.2
3
+
4
+ [500, '..', '.agents-shipgate', 'agent', 'agent_name', 'api_surface', 'baseline', 'baseline.json', 'baseline_status', 'checks completed', 'confidence', 'config', 'config_assisted', 'default_path', 'dynamic_fields', 'dynamic_unknown', 'environment', 'findings', 'high', 'id', 'input', 'json', 'loaded sources', 'manifest', 'markdown', 'mcp', 'medium', 'method', 'missing_fields', 'name', 'new-findings', 'openai_agents_sdk', 'openai_api', 'openapi', 'output', 'present', 'project', 'report.json', 'report.md', 'risk hints generated', 'risk_hints', 'runtime_traces', 'sample_tool', 'sdk_function', 'source', 'sources', 'tag', 'tool', 'tool_count', 'tool_inventory', 'tools', 'total_tools', 'type', 'unknown', 'utf-8', 'value_preview', 'warnings']
@@ -0,0 +1,4 @@
1
+ # file: /home/runner/work/agents-shipgate/agents-shipgate/src/agents_shipgate/checks/inventory.py
2
+ # hypothesis_version: 6.152.2
3
+
4
+ ['high', 'inventory', 'medium', 'production', 'source_id', 'source_ref', 'threshold', 'tool_count', 'tool_sources', 'tools', 'wildcard_tools']
@@ -0,0 +1,4 @@
1
+ # file: /home/runner/work/agents-shipgate/agents-shipgate/src/agents_shipgate/checks/base.py
2
+ # hypothesis_version: 6.152.2
3
+
4
+ ['manifest']
@@ -0,0 +1,4 @@
1
+ # file: /home/runner/work/agents-shipgate/agents-shipgate/src/agents_shipgate/report/markdown.py
2
+ # hypothesis_version: 6.152.2
3
+
4
+ [' (suppressed)', '## Baseline', '## Disclaimer', '## Loaded Plugins', '## Source Warnings', '## Top Findings', '(', ')', ', ', '-', '; ', 'No findings.', '[', '\\', ']', '_', '`', 'auth_scopes', 'check_id', 'critical', 'distribution', 'high', 'name', 'owner', 'risk_tag_confidence', 'risk_tags', 'source_type', 'static metadata', 'unknown check', 'unknown distribution', 'utf-8', 'version', '|']
@@ -0,0 +1,4 @@
1
+ # file: /home/runner/work/agents-shipgate/agents-shipgate/src/agents_shipgate/checks/auth.py
2
+ # hypothesis_version: 6.152.2
3
+
4
+ ['*', ':*', 'admin', 'auth', 'high', 'manifest_scopes', 'medium', 'missing_scopes', 'risk_tags', 'scopes', 'tool_scopes', 'write-all']
@@ -0,0 +1,4 @@
1
+ # file: /home/runner/work/agents-shipgate/agents-shipgate/src/agents_shipgate/report/__init__.py
2
+ # hypothesis_version: 6.152.2
3
+
4
+ []
@@ -0,0 +1,4 @@
1
+ # file: /home/runner/work/agents-shipgate/agents-shipgate/src/agents_shipgate/checks/documentation.py
2
+ # hypothesis_version: 6.152.2
3
+
4
+ ['\\bAKIA[0-9A-Z]{16}\\b', '_./+=-', 'description_length', 'documentation', 'high', 'labeled_secret_value', 'matched', 'medium', 'security']
@@ -0,0 +1,4 @@
1
+ # file: /home/runner/work/agents-shipgate/agents-shipgate/src/agents_shipgate/core/logging.py
2
+ # hypothesis_version: 6.152.2
3
+
4
+ ['agents_shipgate', 'agents_shipgate_', 'exception', 'json', 'level', 'logger', 'message', 'timestamp']
@@ -0,0 +1,4 @@
1
+ # file: /home/runner/work/agents-shipgate/agents-shipgate/src/agents_shipgate/cli/discovery.py
2
+ # hypothesis_version: 6.152.2
3
+
4
+ [' - CHANGE_ME', ' - json', ' - markdown', ' type: openapi', ' - id: CHANGE_ME', ' declared_purpose:', ' formats:', ' mode: advisory', ' model_config:', ' name: CHANGE_ME', ' policy_rules:', ' prompt_files:', ' response_formats:', ' scopes: []', ' target: local', ' test_cases:', ' tools:', ' trace_samples:', '*mcp*.json', '*openapi*.json', '*openapi*.yaml', '*openapi*.yml', '*swagger*.json', '*swagger*.yaml', '*swagger*.yml', '-', '.', '.git', '_', '__pycache__', 'agent:', 'ci:', 'environment:', 'id', 'mcp', 'model_config', 'openai-config.json', 'openai_api:', 'openapi', 'output:', 'path', 'permissions:', 'policies/*api*.yaml', 'policies:', 'policy_rules', 'project:', 'prompt_files', 'prompts/*.md', 'response_formats', 'shipgate.yaml', 'test_cases', 'tool_sources:', 'tools', 'trace_samples', 'traces/*.json', 'traces/*.jsonl', 'type', 'version: "0.1"']
@@ -0,0 +1,4 @@
1
+ # file: /home/runner/work/agents-shipgate/agents-shipgate/src/agents_shipgate/__init__.py
2
+ # hypothesis_version: 6.152.2
3
+
4
+ ['0.2.0']
@@ -0,0 +1,4 @@
1
+ # file: /home/runner/work/agents-shipgate/agents-shipgate/src/agents_shipgate/inputs/__init__.py
2
+ # hypothesis_version: 6.152.2
3
+
4
+ []
@@ -0,0 +1,4 @@
1
+ # file: /home/runner/work/agents-shipgate/agents-shipgate/src/agents_shipgate/ci/__init__.py
2
+ # hypothesis_version: 6.152.2
3
+
4
+ []
@@ -0,0 +1,4 @@
1
+ # file: /home/runner/work/agents-shipgate/agents-shipgate/src/agents_shipgate/config/__init__.py
2
+ # hypothesis_version: 6.152.2
3
+
4
+ []
@@ -0,0 +1,4 @@
1
+ # file: /home/runner/work/agents-shipgate/agents-shipgate/src/agents_shipgate/checks/schema.py
2
+ # hypothesis_version: 6.152.2
3
+
4
+ ['-> str', 'action', 'amount', 'body', 'code_execution', 'command', 'content', 'count', 'destructive', 'external_write', 'financial_action', 'high', 'instructions', 'integer', 'limit', 'max', 'maximum', 'medium', 'message', 'number', 'object', 'output_schema', 'parameter', 'prompt', 'quantity', 'refund_amount', 'schema', 'sdk_function', 'string', 'total', 'type', 'update', 'updates']
@@ -0,0 +1,4 @@
1
+ # file: /home/runner/work/agents-shipgate/agents-shipgate/src/agents_shipgate/inputs/openai_api.py
2
+ # hypothesis_version: 6.152.2
3
+
4
+ ['.jsonl', '.markdown', '.md', '.txt', 'additionalProperties', 'confidence', 'description', 'events', 'function', 'function_schemas', 'high', 'json_schema', 'method', 'model_config', 'name', 'openaiApiFunction', 'openaiStrict', 'openai_api', 'openai_api_artifact', 'parameters', 'policy_rules', 'properties', 'required', 'response_formats', 'schema', 'strict', 'test_cases', 'tool_calls', 'tool_name', 'tools', 'trace_samples', 'type']
@@ -0,0 +1,4 @@
1
+ # file: /home/runner/work/agents-shipgate/agents-shipgate/src/agents_shipgate/cli/main.py
2
+ # hypothesis_version: 6.152.2
3
+
4
+ ['*?[]', ',', '- none', '--baseline', '--baseline-mode', '--ci-mode', '--config', '--deep-import', '--fail-on', '--format', '--json', '--no-plugins', '--out', '--verbose', '--version', '--workspace', '--write', '-c', '.', 'Emit JSON.', 'Enable debug logs.', 'Path or quoted glob.', 'Reports:', 'Source warnings:', 'Top findings:', 'Warnings:', '[^A-Za-z0-9_-]+', '_', 'advisory', 'agents-shipgate', 'api_surface', 'baseline', 'critical', 'high', 'info', 'json', 'list-checks', 'low', 'markdown', 'markdown,json', 'medium', 'new-findings', 'root', 'sample_tool', 'save', 'shipgate.yaml', 'sources', 'strict', 'unhandled exception', 'utf-8', 'warnings']
@@ -0,0 +1,4 @@
1
+ # file: /home/runner/work/agents-shipgate/agents-shipgate/src/agents_shipgate/core/models.py
2
+ # hypothesis_version: 6.152.2
3
+
4
+ ['0.1', '0.2', 'after', 'allow', 'approval_required', 'confidence', 'critical', 'high', 'idempotency_required', 'info', 'low', 'matched', 'medium', 'model_config', 'model_config_present', 'new', 'policy_rule_count', 'prompt_file_count', 'resolved', 'retry_policy', 'schema', 'static', 'test_case_count', 'timeouts', 'tool_file_count', 'tool_output_schemas', 'trace_sample_count']
@@ -0,0 +1,4 @@
1
+ # file: /home/runner/work/agents-shipgate/agents-shipgate/src/agents_shipgate/core/baseline.py
2
+ # hypothesis_version: 6.152.2
3
+
4
+ ['+00:00', '0.2', 'Z', 'forbid', 'matched', 'new', 'utf-8']
@@ -0,0 +1,4 @@
1
+ # file: /home/runner/work/agents-shipgate/agents-shipgate/src/agents_shipgate/core/errors.py
2
+ # hypothesis_version: 6.152.2
3
+
4
+ []
@@ -0,0 +1,4 @@
1
+ # file: /home/runner/work/agents-shipgate/agents-shipgate/src/agents_shipgate/inputs/openapi.py
2
+ # hypothesis_version: 6.152.2
3
+
4
+ [5000, '#/', '$ref', '-', '/', '200', '201', '_', 'allOf', 'anyOf', 'application/json', 'body', 'components', 'confidence', 'content', 'description', 'destructiveHint', 'high', 'httpMethod', 'idempotentHint', 'items', 'max_depth', 'max_nodes', 'method', 'name', 'object', 'oneOf', 'openWorldHint', 'openapi', 'operationId', 'parameters', 'path', 'paths', 'properties', 'readOnlyHint', 'requestBody', 'required', 'responses', 'retryPolicy', 'root', 'schema', 'security', 'securitySchemes', 'summary', 'type', 'x-agents-shipgate', 'x-destructiveHint', 'x-idempotentHint', 'x-openWorldHint', 'x-readOnlyHint', 'x-retryPolicy', '{', '}', '~', '~0', '~1']
@@ -0,0 +1,4 @@
1
+ # file: /home/runner/work/agents-shipgate/agents-shipgate/src/agents_shipgate/checks/manifest_scope.py
2
+ # hypothesis_version: 6.152.2
3
+
4
+ ['-', '_', 'a', 'an', 'and', 'answer', 'approval', 'before', 'cancel', 'confirmation', 'create', 'declared_purpose', 'delete', 'destructive', 'email', 'external', 'external_write', 'financial_action', 'for', 'from', 'high', 'idempotency', 'issue', 'lookup', 'lookups', 'medium', 'modify', 'prohibited_action', 'read', 'read-only', 'readonly', 'refund', 'remove', 'risk_tags', 'scope', 'search', 'send', 'status', 'the', 'to', 'update', 'view', 'with', 'without', 'write']
@@ -0,0 +1,4 @@
1
+ # file: /home/runner/work/agents-shipgate/agents-shipgate/src/agents_shipgate/core/findings.py
2
+ # hypothesis_version: 6.152.2
3
+
4
+ ['agent_id', 'auth_scopes', 'category', 'check_id', 'confidence', 'critical', 'default_severity', 'evidence', 'high', 'info', 'json', 'low', 'medium', 'mixed', 'name', 'owner', 'recommendation', 'risk_tag_confidence', 'risk_tags', 'sdk_function', 'source', 'source_ref', 'source_type', 'static', 'title', 'tool:', 'tool_id', 'tool_name', 'utf-8', 'warnings_detected', 'wildcard_tools']
@@ -0,0 +1,4 @@
1
+ # file: /home/runner/work/agents-shipgate/agents-shipgate/src/agents_shipgate/ci/github_summary.py
2
+ # hypothesis_version: 6.152.2
3
+
4
+ ['## Agents Shipgate', 'GITHUB_STEP_SUMMARY', 'a', 'utf-8']
@@ -0,0 +1,4 @@
1
+ # file: /home/runner/work/agents-shipgate/agents-shipgate/src/agents_shipgate/checks/registry.py
2
+ # hypothesis_version: 6.152.2
3
+
4
+ ['-', '1', 'Name', '_', 'agents-shipgate', 'api', 'auth', 'check_id', 'critical', 'declared_purpose', 'description_length', 'dist', 'distribution', 'documentation', 'environment', 'high', 'high_risk_tools', 'id', 'inventory', 'issues', 'manifest', 'manifest_scopes', 'matched', 'medium', 'metadata', 'missing_scopes', 'name', 'on', 'output_schema', 'parameter', 'path', 'policy', 'policy_match', 'prohibited_action', 'retry_policy', 'retry_policy_known', 'risk_tags', 'schema', 'scope', 'scopes', 'security', 'side_effects', 'source_id', 'source_ref', 'threshold', 'tool', 'tool_count', 'tool_output_schemas', 'tool_scopes', 'tool_sources', 'tools', 'true', 'type', 'value', 'version', 'yes']
@@ -0,0 +1,14 @@
1
+ # Changelog
2
+
3
+ ## 0.2.0 - 2026-04-26
4
+
5
+ - Added manifest-aware checks, deterministic report metadata, check severity overrides, `fail_on`, `init`, `doctor`, `explain`, multi-config scan support, and check entry-point hooks.
6
+ - Renamed the project to Agents Shipgate and hardened v0.1 release-readiness behavior.
7
+
8
+ ## 0.1.0
9
+
10
+ - Initial Agents Shipgate MVP.
11
+ - Manifest-first scan over local MCP JSON, OpenAPI specs, and optional OpenAI Agents SDK AST metadata.
12
+ - Markdown and JSON reports.
13
+ - Advisory and strict CI modes.
14
+ - GitHub composite action.
@@ -0,0 +1,51 @@
1
+ # Contributing
2
+
3
+ Yes, please contribute.
4
+
5
+ ## Local Setup
6
+
7
+ ```bash
8
+ python -m pip install -e ".[dev]"
9
+ pytest
10
+ ```
11
+
12
+ ## Useful Commands
13
+
14
+ ```bash
15
+ agents-shipgate init --workspace samples/support_refund_agent
16
+ agents-shipgate doctor --config samples/support_refund_agent/shipgate.yaml
17
+ agents-shipgate scan --config samples/support_refund_agent/shipgate.yaml
18
+ agents-shipgate list-checks
19
+ ```
20
+
21
+ ## Contribution Areas
22
+
23
+ - new deterministic checks;
24
+ - loader hardening and OpenAPI edge cases;
25
+ - docs and integration recipes;
26
+ - false-positive reduction tests;
27
+ - report/schema compatibility tests.
28
+
29
+ ## Check Contributions
30
+
31
+ Checks should be deterministic, explainable, and covered by tests. Avoid LLM calls, network calls, user-code import, or runtime tool execution.
32
+
33
+ Each new check should include catalog metadata, a test fixture, and documentation in `docs/checks.md`.
34
+
35
+ ## Adding A Check End To End
36
+
37
+ 1. Create or update a module under `src/agents_shipgate/checks/`.
38
+ 2. Implement a pure function with the shape `run(context: ScanContext) -> list[Finding]`.
39
+ 3. Use `tool_finding(...)` or `agent_finding(...)` from `src/agents_shipgate/checks/base.py` so evidence, recommendations, and source references stay consistent.
40
+ 4. Register the function and metadata in `src/agents_shipgate/checks/registry.py`.
41
+ 5. Add a unit test that proves the check fires and a false-positive test that proves it does not fire on a nearby safe case.
42
+ 6. Add the check ID, severity, and plain-language meaning to `docs/checks.md`.
43
+ 7. Run:
44
+
45
+ ```bash
46
+ pytest
47
+ agents-shipgate list-checks
48
+ agents-shipgate explain YOUR-CHECK-ID
49
+ ```
50
+
51
+ Good checks are narrow, evidence-backed, and easy to suppress with a reason when a team has intentionally accepted the risk.