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.
- agents_shipgate-0.2.0/.github/dependabot.yml +13 -0
- agents_shipgate-0.2.0/.github/workflows/ci.yml +47 -0
- agents_shipgate-0.2.0/.github/workflows/release.yml +61 -0
- agents_shipgate-0.2.0/.gitignore +21 -0
- agents_shipgate-0.2.0/.hypothesis/.gitignore +9 -0
- agents_shipgate-0.2.0/.hypothesis/constants/045fec4dd7f58343 +4 -0
- agents_shipgate-0.2.0/.hypothesis/constants/0b5563ab2d2c169e +4 -0
- agents_shipgate-0.2.0/.hypothesis/constants/0b9d68b394dbbe5a +4 -0
- agents_shipgate-0.2.0/.hypothesis/constants/0d837de9aabf2c9e +4 -0
- agents_shipgate-0.2.0/.hypothesis/constants/10d0fede45f841c7 +4 -0
- agents_shipgate-0.2.0/.hypothesis/constants/125e13b1a1f73e76 +4 -0
- agents_shipgate-0.2.0/.hypothesis/constants/26367d2b196b18f1 +4 -0
- agents_shipgate-0.2.0/.hypothesis/constants/3a3b45671fdb419c +4 -0
- agents_shipgate-0.2.0/.hypothesis/constants/446a38b73cd2dd8d +4 -0
- agents_shipgate-0.2.0/.hypothesis/constants/45a2f3ececac2119 +4 -0
- agents_shipgate-0.2.0/.hypothesis/constants/473edb7165d7b1cf +4 -0
- agents_shipgate-0.2.0/.hypothesis/constants/55baab0f8575ca40 +4 -0
- agents_shipgate-0.2.0/.hypothesis/constants/59942de603c4777c +4 -0
- agents_shipgate-0.2.0/.hypothesis/constants/5ac8e7be06834a1a +4 -0
- agents_shipgate-0.2.0/.hypothesis/constants/5ddbb9b6b9539bfd +4 -0
- agents_shipgate-0.2.0/.hypothesis/constants/61c9d918e742bb34 +4 -0
- agents_shipgate-0.2.0/.hypothesis/constants/65ee062b3ed27a35 +4 -0
- agents_shipgate-0.2.0/.hypothesis/constants/6e0c83e84ff62933 +4 -0
- agents_shipgate-0.2.0/.hypothesis/constants/70ca871038129781 +4 -0
- agents_shipgate-0.2.0/.hypothesis/constants/7533d038fb74a4f9 +4 -0
- agents_shipgate-0.2.0/.hypothesis/constants/78017d02d729a509 +4 -0
- agents_shipgate-0.2.0/.hypothesis/constants/7912350aed40e15e +4 -0
- agents_shipgate-0.2.0/.hypothesis/constants/82c478e9bab89dc4 +4 -0
- agents_shipgate-0.2.0/.hypothesis/constants/83001b28c6de5c54 +4 -0
- agents_shipgate-0.2.0/.hypothesis/constants/849889251d5ef6f9 +4 -0
- agents_shipgate-0.2.0/.hypothesis/constants/8c5413d81fa0f702 +4 -0
- agents_shipgate-0.2.0/.hypothesis/constants/8f2a55b3f9964317 +4 -0
- agents_shipgate-0.2.0/.hypothesis/constants/a9b11637db1557ac +4 -0
- agents_shipgate-0.2.0/.hypothesis/constants/ad515af1c1923a06 +4 -0
- agents_shipgate-0.2.0/.hypothesis/constants/b5953d7c9a9f2821 +4 -0
- agents_shipgate-0.2.0/.hypothesis/constants/b8222c767a411a6a +4 -0
- agents_shipgate-0.2.0/.hypothesis/constants/cdfd83c248effd35 +4 -0
- agents_shipgate-0.2.0/.hypothesis/constants/d05ee1c296a90c1c +4 -0
- agents_shipgate-0.2.0/.hypothesis/constants/d2daadc405b9d15f +4 -0
- agents_shipgate-0.2.0/.hypothesis/constants/da523675d9c4b986 +4 -0
- agents_shipgate-0.2.0/.hypothesis/constants/de6a9a8817ede715 +4 -0
- agents_shipgate-0.2.0/.hypothesis/constants/e45724350b67358e +4 -0
- agents_shipgate-0.2.0/.hypothesis/constants/f0ec78e2350f8f59 +4 -0
- agents_shipgate-0.2.0/.hypothesis/constants/f84de8d134574937 +4 -0
- agents_shipgate-0.2.0/.hypothesis/constants/fbad946c1cfeaa00 +4 -0
- agents_shipgate-0.2.0/.hypothesis/unicode_data/15.0.0/charmap.json.gz +0 -0
- agents_shipgate-0.2.0/.hypothesis/unicode_data/15.0.0/codec-utf-8.json.gz +0 -0
- agents_shipgate-0.2.0/CHANGELOG.md +14 -0
- agents_shipgate-0.2.0/CONTRIBUTING.md +51 -0
- agents_shipgate-0.2.0/LICENSE +185 -0
- agents_shipgate-0.2.0/PKG-INFO +217 -0
- agents_shipgate-0.2.0/README.md +190 -0
- agents_shipgate-0.2.0/ROADMAP.md +24 -0
- agents_shipgate-0.2.0/SECURITY.md +34 -0
- agents_shipgate-0.2.0/action.yml +235 -0
- agents_shipgate-0.2.0/docs/baseline.md +51 -0
- agents_shipgate-0.2.0/docs/category.md +28 -0
- agents_shipgate-0.2.0/docs/checks.md +227 -0
- agents_shipgate-0.2.0/docs/decisions.md +24 -0
- agents_shipgate-0.2.0/docs/distribution.md +41 -0
- agents_shipgate-0.2.0/docs/integrations.md +108 -0
- agents_shipgate-0.2.0/docs/manifest-v0.1.md +252 -0
- agents_shipgate-0.2.0/docs/report-schema.v0.1.json +475 -0
- agents_shipgate-0.2.0/docs/report-schema.v0.2.json +120 -0
- agents_shipgate-0.2.0/docs/troubleshooting.md +69 -0
- agents_shipgate-0.2.0/docs/trust-model.md +47 -0
- agents_shipgate-0.2.0/pyproject.toml +69 -0
- agents_shipgate-0.2.0/samples/baseline_workflow/README.md +18 -0
- agents_shipgate-0.2.0/samples/clean_read_only_agent/shipgate.yaml +30 -0
- agents_shipgate-0.2.0/samples/clean_read_only_agent/tools.json +25 -0
- agents_shipgate-0.2.0/samples/multi_agent_workspace/billing/shipgate.yaml +21 -0
- agents_shipgate-0.2.0/samples/multi_agent_workspace/billing/tools.json +22 -0
- agents_shipgate-0.2.0/samples/multi_agent_workspace/support/shipgate.yaml +21 -0
- agents_shipgate-0.2.0/samples/multi_agent_workspace/support/tools.json +14 -0
- agents_shipgate-0.2.0/samples/simple_openai_api_agent/expected/report.json +697 -0
- agents_shipgate-0.2.0/samples/simple_openai_api_agent/expected/report.md +118 -0
- agents_shipgate-0.2.0/samples/simple_openai_api_agent/openai-config.json +6 -0
- agents_shipgate-0.2.0/samples/simple_openai_api_agent/policies/openai-api-policy.yaml +14 -0
- agents_shipgate-0.2.0/samples/simple_openai_api_agent/prompts/support_refund.md +3 -0
- agents_shipgate-0.2.0/samples/simple_openai_api_agent/schemas/refund_decision.schema.json +13 -0
- agents_shipgate-0.2.0/samples/simple_openai_api_agent/shipgate.yaml +48 -0
- agents_shipgate-0.2.0/samples/simple_openai_api_agent/tests/openai-api-cases.json +8 -0
- agents_shipgate-0.2.0/samples/simple_openai_api_agent/tools/openai-tools.json +46 -0
- agents_shipgate-0.2.0/samples/simple_openai_api_agent/traces/sample.jsonl +1 -0
- agents_shipgate-0.2.0/samples/support_refund_agent/.agents-shipgate/mcp-tools.json +60 -0
- agents_shipgate-0.2.0/samples/support_refund_agent/.agents-shipgate/wildcard-tools.json +5 -0
- agents_shipgate-0.2.0/samples/support_refund_agent/agents/refund_agent.py +14 -0
- agents_shipgate-0.2.0/samples/support_refund_agent/expected/report.json +751 -0
- agents_shipgate-0.2.0/samples/support_refund_agent/expected/report.md +119 -0
- agents_shipgate-0.2.0/samples/support_refund_agent/shipgate.yaml +96 -0
- agents_shipgate-0.2.0/samples/support_refund_agent/specs/support-tools.openapi.yaml +164 -0
- agents_shipgate-0.2.0/src/agents_shipgate/__init__.py +3 -0
- agents_shipgate-0.2.0/src/agents_shipgate/__main__.py +5 -0
- agents_shipgate-0.2.0/src/agents_shipgate/checks/__init__.py +2 -0
- agents_shipgate-0.2.0/src/agents_shipgate/checks/api.py +400 -0
- agents_shipgate-0.2.0/src/agents_shipgate/checks/auth.py +104 -0
- agents_shipgate-0.2.0/src/agents_shipgate/checks/base.py +71 -0
- agents_shipgate-0.2.0/src/agents_shipgate/checks/documentation.py +113 -0
- agents_shipgate-0.2.0/src/agents_shipgate/checks/inventory.py +70 -0
- agents_shipgate-0.2.0/src/agents_shipgate/checks/manifest_consistency.py +166 -0
- agents_shipgate-0.2.0/src/agents_shipgate/checks/manifest_scope.py +170 -0
- agents_shipgate-0.2.0/src/agents_shipgate/checks/policy.py +65 -0
- agents_shipgate-0.2.0/src/agents_shipgate/checks/registry.py +210 -0
- agents_shipgate-0.2.0/src/agents_shipgate/checks/schema.py +129 -0
- agents_shipgate-0.2.0/src/agents_shipgate/checks/side_effects.py +49 -0
- agents_shipgate-0.2.0/src/agents_shipgate/ci/__init__.py +2 -0
- agents_shipgate-0.2.0/src/agents_shipgate/ci/exit_policy.py +35 -0
- agents_shipgate-0.2.0/src/agents_shipgate/ci/github_summary.py +27 -0
- agents_shipgate-0.2.0/src/agents_shipgate/cli/__init__.py +2 -0
- agents_shipgate-0.2.0/src/agents_shipgate/cli/discovery.py +205 -0
- agents_shipgate-0.2.0/src/agents_shipgate/cli/main.py +477 -0
- agents_shipgate-0.2.0/src/agents_shipgate/cli/scan.py +366 -0
- agents_shipgate-0.2.0/src/agents_shipgate/config/__init__.py +2 -0
- agents_shipgate-0.2.0/src/agents_shipgate/config/loader.py +120 -0
- agents_shipgate-0.2.0/src/agents_shipgate/config/schema.py +312 -0
- agents_shipgate-0.2.0/src/agents_shipgate/core/__init__.py +2 -0
- agents_shipgate-0.2.0/src/agents_shipgate/core/baseline.py +113 -0
- agents_shipgate-0.2.0/src/agents_shipgate/core/context.py +16 -0
- agents_shipgate-0.2.0/src/agents_shipgate/core/errors.py +11 -0
- agents_shipgate-0.2.0/src/agents_shipgate/core/findings.py +249 -0
- agents_shipgate-0.2.0/src/agents_shipgate/core/logging.py +38 -0
- agents_shipgate-0.2.0/src/agents_shipgate/core/models.py +272 -0
- agents_shipgate-0.2.0/src/agents_shipgate/core/risk_hints.py +173 -0
- agents_shipgate-0.2.0/src/agents_shipgate/inputs/__init__.py +2 -0
- agents_shipgate-0.2.0/src/agents_shipgate/inputs/common.py +141 -0
- agents_shipgate-0.2.0/src/agents_shipgate/inputs/mcp.py +114 -0
- agents_shipgate-0.2.0/src/agents_shipgate/inputs/openai_api.py +355 -0
- agents_shipgate-0.2.0/src/agents_shipgate/inputs/openai_sdk_static.py +162 -0
- agents_shipgate-0.2.0/src/agents_shipgate/inputs/openapi.py +324 -0
- agents_shipgate-0.2.0/src/agents_shipgate/py.typed +1 -0
- agents_shipgate-0.2.0/src/agents_shipgate/report/__init__.py +2 -0
- agents_shipgate-0.2.0/src/agents_shipgate/report/json_report.py +10 -0
- agents_shipgate-0.2.0/src/agents_shipgate/report/markdown.py +248 -0
- agents_shipgate-0.2.0/tests/test_action_metadata.py +71 -0
- agents_shipgate-0.2.0/tests/test_ci.py +19 -0
- agents_shipgate-0.2.0/tests/test_cli.py +378 -0
- agents_shipgate-0.2.0/tests/test_config.py +99 -0
- agents_shipgate-0.2.0/tests/test_documentation_checks.py +69 -0
- agents_shipgate-0.2.0/tests/test_findings.py +184 -0
- agents_shipgate-0.2.0/tests/test_inputs.py +462 -0
- agents_shipgate-0.2.0/tests/test_manifest_consistency.py +134 -0
- agents_shipgate-0.2.0/tests/test_openai_api.py +258 -0
- agents_shipgate-0.2.0/tests/test_openapi_fuzz.py +46 -0
- agents_shipgate-0.2.0/tests/test_plugins.py +141 -0
- agents_shipgate-0.2.0/tests/test_property_loaders.py +97 -0
- agents_shipgate-0.2.0/tests/test_registry.py +45 -0
- agents_shipgate-0.2.0/tests/test_reports.py +234 -0
- agents_shipgate-0.2.0/tests/test_scan.py +612 -0
|
@@ -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,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/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/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/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/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/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/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/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/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/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']
|
|
Binary file
|
|
@@ -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.
|