agentqit 0.1.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.
- agentqit-0.1.0/.github/ISSUE_TEMPLATE/bug_report.yml +29 -0
- agentqit-0.1.0/.github/ISSUE_TEMPLATE/config.yml +5 -0
- agentqit-0.1.0/.github/ISSUE_TEMPLATE/feature_request.yml +22 -0
- agentqit-0.1.0/.github/pull_request_template.md +12 -0
- agentqit-0.1.0/.github/workflows/ci.yml +95 -0
- agentqit-0.1.0/.github/workflows/release.yml +98 -0
- agentqit-0.1.0/.gitignore +30 -0
- agentqit-0.1.0/.pre-commit-config.yaml +14 -0
- agentqit-0.1.0/AGENTS.md +69 -0
- agentqit-0.1.0/CHANGELOG.md +21 -0
- agentqit-0.1.0/CODE_OF_CONDUCT.md +16 -0
- agentqit-0.1.0/CONTRIBUTING.md +52 -0
- agentqit-0.1.0/LICENSE +21 -0
- agentqit-0.1.0/PKG-INFO +99 -0
- agentqit-0.1.0/README.md +92 -0
- agentqit-0.1.0/README.pypi.md +65 -0
- agentqit-0.1.0/SECURITY.md +30 -0
- agentqit-0.1.0/SUPPORT.md +13 -0
- agentqit-0.1.0/docs/agent-integration.md +131 -0
- agentqit-0.1.0/docs/architecture.md +76 -0
- agentqit-0.1.0/docs/browser-runtime.md +127 -0
- agentqit-0.1.0/docs/compatibility.md +87 -0
- agentqit-0.1.0/docs/distribution.md +122 -0
- agentqit-0.1.0/docs/getting-started.md +74 -0
- agentqit-0.1.0/docs/interface-comparison.md +61 -0
- agentqit-0.1.0/docs/plugin-api.md +42 -0
- agentqit-0.1.0/docs/releases.md +115 -0
- agentqit-0.1.0/docs/result-contract.md +98 -0
- agentqit-0.1.0/docs/roadmap.md +23 -0
- agentqit-0.1.0/docs/schemas/profile-v1.json +592 -0
- agentqit-0.1.0/docs/schemas/registry-v1.json +515 -0
- agentqit-0.1.0/docs/schemas/result-v1.json +287 -0
- agentqit-0.1.0/docs/schemas/workspace-v1.json +273 -0
- agentqit-0.1.0/docs/verification.md +65 -0
- agentqit-0.1.0/docs/workspaces.md +122 -0
- agentqit-0.1.0/examples/orders/LICENSE +21 -0
- agentqit-0.1.0/examples/orders/README.md +84 -0
- agentqit-0.1.0/examples/orders/agentqit.yaml +7 -0
- agentqit-0.1.0/examples/orders/profile.demo.yaml +5 -0
- agentqit-0.1.0/examples/orders/pyproject.toml +21 -0
- agentqit-0.1.0/examples/orders/src/qa_product_orders/__init__.py +26 -0
- agentqit-0.1.0/examples/orders/src/qa_product_orders/demo.py +125 -0
- agentqit-0.1.0/examples/orders/src/qa_product_orders/openapi.json +111 -0
- agentqit-0.1.0/examples/orders/src/qa_product_orders/operations.yaml +124 -0
- agentqit-0.1.0/examples/orders/src/qa_product_orders/profile.example.yaml +4 -0
- agentqit-0.1.0/examples/orders/src/qa_product_orders/requirements.md +13 -0
- agentqit-0.1.0/examples/orders/src/qa_product_orders/ui.html +81 -0
- agentqit-0.1.0/pyproject.toml +83 -0
- agentqit-0.1.0/src/qa_cli/__init__.py +1 -0
- agentqit-0.1.0/src/qa_cli/app.py +1575 -0
- agentqit-0.1.0/src/qa_cli/browser_commands.py +92 -0
- agentqit-0.1.0/src/qa_cli/openapi_import.py +496 -0
- agentqit-0.1.0/src/qa_cli/parsing.py +120 -0
- agentqit-0.1.0/src/qa_cli/product_scaffold.py +286 -0
- agentqit-0.1.0/src/qa_cli/renderers.py +26 -0
- agentqit-0.1.0/src/qa_cli/settings.py +21 -0
- agentqit-0.1.0/src/qa_cli/workspace_commands.py +184 -0
- agentqit-0.1.0/src/qa_mcp/__init__.py +1 -0
- agentqit-0.1.0/src/qa_mcp/__main__.py +32 -0
- agentqit-0.1.0/src/qa_mcp/browser_tools.py +87 -0
- agentqit-0.1.0/src/qa_mcp/rendering.py +31 -0
- agentqit-0.1.0/src/qa_mcp/server.py +146 -0
- agentqit-0.1.0/src/qa_mcp/session_tools.py +51 -0
- agentqit-0.1.0/src/qa_runtime/__init__.py +5 -0
- agentqit-0.1.0/src/qa_runtime/adapters/__init__.py +1 -0
- agentqit-0.1.0/src/qa_runtime/adapters/credential_helper.py +89 -0
- agentqit-0.1.0/src/qa_runtime/adapters/credentials.py +23 -0
- agentqit-0.1.0/src/qa_runtime/adapters/environment.py +30 -0
- agentqit-0.1.0/src/qa_runtime/adapters/httpx.py +117 -0
- agentqit-0.1.0/src/qa_runtime/adapters/kafka.py +594 -0
- agentqit-0.1.0/src/qa_runtime/adapters/kubernetes.py +274 -0
- agentqit-0.1.0/src/qa_runtime/adapters/oauth2.py +132 -0
- agentqit-0.1.0/src/qa_runtime/adapters/playwright.py +379 -0
- agentqit-0.1.0/src/qa_runtime/adapters/postgres.py +242 -0
- agentqit-0.1.0/src/qa_runtime/adapters/s3.py +232 -0
- agentqit-0.1.0/src/qa_runtime/adapters/static_auth.py +64 -0
- agentqit-0.1.0/src/qa_runtime/adapters/tls.py +67 -0
- agentqit-0.1.0/src/qa_runtime/adapters/vault.py +160 -0
- agentqit-0.1.0/src/qa_runtime/adapters/vault_auth.py +93 -0
- agentqit-0.1.0/src/qa_runtime/application.py +311 -0
- agentqit-0.1.0/src/qa_runtime/artifacts.py +189 -0
- agentqit-0.1.0/src/qa_runtime/authoring.py +142 -0
- agentqit-0.1.0/src/qa_runtime/bootstrap.py +228 -0
- agentqit-0.1.0/src/qa_runtime/browser_catalog.py +57 -0
- agentqit-0.1.0/src/qa_runtime/browser_models.py +129 -0
- agentqit-0.1.0/src/qa_runtime/codecs/__init__.py +1 -0
- agentqit-0.1.0/src/qa_runtime/codecs/catalog.py +104 -0
- agentqit-0.1.0/src/qa_runtime/codecs/protobuf.py +89 -0
- agentqit-0.1.0/src/qa_runtime/compiler.py +106 -0
- agentqit-0.1.0/src/qa_runtime/contracts.py +124 -0
- agentqit-0.1.0/src/qa_runtime/credential_config.py +156 -0
- agentqit-0.1.0/src/qa_runtime/engine.py +386 -0
- agentqit-0.1.0/src/qa_runtime/errors.py +51 -0
- agentqit-0.1.0/src/qa_runtime/evidence.py +304 -0
- agentqit-0.1.0/src/qa_runtime/handlers/__init__.py +1 -0
- agentqit-0.1.0/src/qa_runtime/handlers/browser.py +89 -0
- agentqit-0.1.0/src/qa_runtime/handlers/database.py +203 -0
- agentqit-0.1.0/src/qa_runtime/handlers/http.py +371 -0
- agentqit-0.1.0/src/qa_runtime/handlers/kafka.py +790 -0
- agentqit-0.1.0/src/qa_runtime/handlers/kafka_offsets.py +107 -0
- agentqit-0.1.0/src/qa_runtime/handlers/kubernetes.py +169 -0
- agentqit-0.1.0/src/qa_runtime/handlers/s3.py +425 -0
- agentqit-0.1.0/src/qa_runtime/lifecycle.py +53 -0
- agentqit-0.1.0/src/qa_runtime/models.py +519 -0
- agentqit-0.1.0/src/qa_runtime/onboarding.py +444 -0
- agentqit-0.1.0/src/qa_runtime/plugins.py +108 -0
- agentqit-0.1.0/src/qa_runtime/ports/__init__.py +1 -0
- agentqit-0.1.0/src/qa_runtime/ports/auth.py +23 -0
- agentqit-0.1.0/src/qa_runtime/ports/browser.py +30 -0
- agentqit-0.1.0/src/qa_runtime/ports/credentials.py +9 -0
- agentqit-0.1.0/src/qa_runtime/ports/database.py +33 -0
- agentqit-0.1.0/src/qa_runtime/ports/decoding.py +11 -0
- agentqit-0.1.0/src/qa_runtime/ports/http.py +11 -0
- agentqit-0.1.0/src/qa_runtime/ports/kafka.py +140 -0
- agentqit-0.1.0/src/qa_runtime/ports/kubernetes.py +28 -0
- agentqit-0.1.0/src/qa_runtime/ports/operation.py +38 -0
- agentqit-0.1.0/src/qa_runtime/ports/product.py +99 -0
- agentqit-0.1.0/src/qa_runtime/ports/s3.py +56 -0
- agentqit-0.1.0/src/qa_runtime/ports/tls.py +8 -0
- agentqit-0.1.0/src/qa_runtime/profile.py +72 -0
- agentqit-0.1.0/src/qa_runtime/registry.py +189 -0
- agentqit-0.1.0/src/qa_runtime/resources.py +11 -0
- agentqit-0.1.0/src/qa_runtime/security.py +146 -0
- agentqit-0.1.0/src/qa_runtime/serialization.py +27 -0
- agentqit-0.1.0/src/qa_runtime/sessions.py +315 -0
- agentqit-0.1.0/src/qa_runtime/version.py +5 -0
- agentqit-0.1.0/src/qa_runtime/workspace.py +139 -0
- agentqit-0.1.0/tests/conftest.py +6 -0
- agentqit-0.1.0/tests/fixtures/compatibility/v1/agentqit.yaml +8 -0
- agentqit-0.1.0/tests/fixtures/compatibility/v1/operations/items.yaml +26 -0
- agentqit-0.1.0/tests/fixtures/compatibility/v1/qa.yaml +9 -0
- agentqit-0.1.0/tests/integration/test_browser_sessions.py +323 -0
- agentqit-0.1.0/tests/integration/test_cli_evidence_workflow.py +220 -0
- agentqit-0.1.0/tests/integration/test_cli_kafka_checkpoint.py +275 -0
- agentqit-0.1.0/tests/integration/test_cli_multiple_products.py +146 -0
- agentqit-0.1.0/tests/integration/test_cli_vault.py +163 -0
- agentqit-0.1.0/tests/integration/test_cli_workspace.py +41 -0
- agentqit-0.1.0/tests/integration/test_mcp_server.py +184 -0
- agentqit-0.1.0/tests/integration/test_orders_demo.py +174 -0
- agentqit-0.1.0/tests/integration/test_playwright_adapter.py +171 -0
- agentqit-0.1.0/tests/integration/test_release_compatibility.py +95 -0
- agentqit-0.1.0/tests/integration/test_workspace_application.py +163 -0
- agentqit-0.1.0/tests/unit/test_adapter_lifecycle.py +96 -0
- agentqit-0.1.0/tests/unit/test_artifacts.py +62 -0
- agentqit-0.1.0/tests/unit/test_authoring.py +109 -0
- agentqit-0.1.0/tests/unit/test_bootstrap.py +222 -0
- agentqit-0.1.0/tests/unit/test_browser_models.py +47 -0
- agentqit-0.1.0/tests/unit/test_browser_provisioning.py +34 -0
- agentqit-0.1.0/tests/unit/test_cli_credential_source.py +42 -0
- agentqit-0.1.0/tests/unit/test_cli_parsing.py +85 -0
- agentqit-0.1.0/tests/unit/test_compiler.py +110 -0
- agentqit-0.1.0/tests/unit/test_custom_resource_onboarding.py +58 -0
- agentqit-0.1.0/tests/unit/test_dependency_boundaries.py +36 -0
- agentqit-0.1.0/tests/unit/test_environment_credentials.py +66 -0
- agentqit-0.1.0/tests/unit/test_evidence.py +369 -0
- agentqit-0.1.0/tests/unit/test_kafka_offsets.py +134 -0
- agentqit-0.1.0/tests/unit/test_native_runtime_configuration.py +104 -0
- agentqit-0.1.0/tests/unit/test_native_tls_bootstrap.py +138 -0
- agentqit-0.1.0/tests/unit/test_onboarding_review.py +88 -0
- agentqit-0.1.0/tests/unit/test_openapi_import.py +415 -0
- agentqit-0.1.0/tests/unit/test_protobuf_codec.py +112 -0
- agentqit-0.1.0/tests/unit/test_public_archives.py +32 -0
- agentqit-0.1.0/tests/unit/test_public_content.py +38 -0
- agentqit-0.1.0/tests/unit/test_release_gate.py +79 -0
- agentqit-0.1.0/tests/unit/test_renderers.py +69 -0
- agentqit-0.1.0/tests/unit/test_runtime_lifecycle_consistency.py +80 -0
- agentqit-0.1.0/tests/unit/test_runtime_result_boundary.py +310 -0
- agentqit-0.1.0/tests/unit/test_s3_adapter.py +385 -0
- agentqit-0.1.0/tests/unit/test_s3_handler.py +425 -0
- agentqit-0.1.0/tests/unit/test_tls.py +31 -0
- agentqit-0.1.0/tests/unit/test_vault_auth.py +61 -0
- agentqit-0.1.0/tests/unit/test_vault_credential_config.py +170 -0
- agentqit-0.1.0/tests/unit/test_vault_credentials.py +268 -0
- agentqit-0.1.0/tests/unit/test_vault_evidence_scope.py +71 -0
- agentqit-0.1.0/tests/unit/test_vault_onboarding.py +241 -0
- agentqit-0.1.0/tests/unit/test_verify_wheel.py +200 -0
- agentqit-0.1.0/tools/benchmark_interfaces.py +247 -0
- agentqit-0.1.0/tools/check_public_content.py +131 -0
- agentqit-0.1.0/tools/export_contracts.py +43 -0
- agentqit-0.1.0/tools/release_check.py +86 -0
- agentqit-0.1.0/tools/smoke_installed.py +221 -0
- agentqit-0.1.0/tools/verify_archives.py +107 -0
- agentqit-0.1.0/tools/verify_wheel.py +233 -0
- agentqit-0.1.0/uv.lock +2107 -0
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
name: Bug report
|
|
2
|
+
description: Report incorrect runtime, CLI, or plugin integration behavior.
|
|
3
|
+
body:
|
|
4
|
+
- type: textarea
|
|
5
|
+
id: behavior
|
|
6
|
+
attributes:
|
|
7
|
+
label: Expected and actual behavior
|
|
8
|
+
description: Explain the problem and what you expected to happen.
|
|
9
|
+
validations:
|
|
10
|
+
required: true
|
|
11
|
+
- type: textarea
|
|
12
|
+
id: reproduction
|
|
13
|
+
attributes:
|
|
14
|
+
label: Minimal reproduction
|
|
15
|
+
description: Include commands and synthetic configuration. Remove credentials and private records.
|
|
16
|
+
validations:
|
|
17
|
+
required: true
|
|
18
|
+
- type: textarea
|
|
19
|
+
id: environment
|
|
20
|
+
attributes:
|
|
21
|
+
label: Environment
|
|
22
|
+
description: AgentQit version or commit, Python version, operating system, plugin version, and installation method.
|
|
23
|
+
validations:
|
|
24
|
+
required: true
|
|
25
|
+
- type: textarea
|
|
26
|
+
id: evidence
|
|
27
|
+
attributes:
|
|
28
|
+
label: Relevant output
|
|
29
|
+
description: Include the redacted JSON result or error, if available.
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
name: Feature request
|
|
2
|
+
description: Propose a reusable capability or an integration improvement.
|
|
3
|
+
body:
|
|
4
|
+
- type: textarea
|
|
5
|
+
id: problem
|
|
6
|
+
attributes:
|
|
7
|
+
label: Problem to solve
|
|
8
|
+
description: Describe the backend testing task and the current limitation.
|
|
9
|
+
validations:
|
|
10
|
+
required: true
|
|
11
|
+
- type: textarea
|
|
12
|
+
id: proposal
|
|
13
|
+
attributes:
|
|
14
|
+
label: Proposed behavior
|
|
15
|
+
description: Explain how a human or agent would use the capability and observe its result.
|
|
16
|
+
validations:
|
|
17
|
+
required: true
|
|
18
|
+
- type: textarea
|
|
19
|
+
id: alternatives
|
|
20
|
+
attributes:
|
|
21
|
+
label: Alternatives
|
|
22
|
+
description: Mention existing operations or plugin composition you have considered.
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
## Change
|
|
2
|
+
|
|
3
|
+
Describe the problem and the resulting behavior.
|
|
4
|
+
|
|
5
|
+
## Validation
|
|
6
|
+
|
|
7
|
+
List the relevant checks and their results. Explain any skipped checks.
|
|
8
|
+
|
|
9
|
+
## Compatibility
|
|
10
|
+
|
|
11
|
+
Describe changes to CLI arguments, JSON, configuration, plugin APIs, or packaged
|
|
12
|
+
assets, if applicable. Link the updated documentation.
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
name: Validate
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
pull_request:
|
|
6
|
+
workflow_call:
|
|
7
|
+
|
|
8
|
+
permissions:
|
|
9
|
+
contents: read
|
|
10
|
+
|
|
11
|
+
jobs:
|
|
12
|
+
core:
|
|
13
|
+
strategy:
|
|
14
|
+
fail-fast: false
|
|
15
|
+
matrix:
|
|
16
|
+
os: [ubuntu-24.04, macos-15]
|
|
17
|
+
python: ["3.12", "3.13", "3.14"]
|
|
18
|
+
runs-on: ${{ matrix.os }}
|
|
19
|
+
steps:
|
|
20
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
21
|
+
- uses: astral-sh/setup-uv@c771a70e6277c0a99b617c7a806ffedaca235ff9 # v9.0.0
|
|
22
|
+
with:
|
|
23
|
+
version: "0.13.6"
|
|
24
|
+
python-version: ${{ matrix.python }}
|
|
25
|
+
- run: uv sync --frozen
|
|
26
|
+
- run: uv run python tools/check_public_content.py
|
|
27
|
+
- run: uv run ruff check src tests tools examples/orders/src
|
|
28
|
+
- run: uv run ruff format --check src tests tools examples/orders/src
|
|
29
|
+
- run: uv run pre-commit run --all-files
|
|
30
|
+
- run: uv run python tools/export_contracts.py --check
|
|
31
|
+
- run: uv run pytest
|
|
32
|
+
- run: uv build
|
|
33
|
+
- run: uv run python tools/verify_wheel.py dist
|
|
34
|
+
- run: uv run python tools/verify_archives.py dist
|
|
35
|
+
- run: uv run twine check --strict dist/*.whl dist/*.tar.gz
|
|
36
|
+
- run: uv venv .installed-check
|
|
37
|
+
- run: uv pip install --python .installed-check/bin/python dist/*.whl
|
|
38
|
+
- name: Verify isolated installation outside checkout
|
|
39
|
+
run: |
|
|
40
|
+
cd "$RUNNER_TEMP"
|
|
41
|
+
"$GITHUB_WORKSPACE/.installed-check/bin/python" -I "$GITHUB_WORKSPACE/tools/smoke_installed.py" --output "$RUNNER_TEMP/agentqit-smoke"
|
|
42
|
+
|
|
43
|
+
browser:
|
|
44
|
+
strategy:
|
|
45
|
+
fail-fast: false
|
|
46
|
+
matrix:
|
|
47
|
+
python: ["3.12", "3.13", "3.14"]
|
|
48
|
+
runs-on: ubuntu-24.04
|
|
49
|
+
steps:
|
|
50
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
51
|
+
- uses: astral-sh/setup-uv@c771a70e6277c0a99b617c7a806ffedaca235ff9 # v9.0.0
|
|
52
|
+
with:
|
|
53
|
+
version: "0.13.6"
|
|
54
|
+
python-version: ${{ matrix.python }}
|
|
55
|
+
- run: uv sync --frozen --extra browser
|
|
56
|
+
- run: uv run playwright install --with-deps chromium --only-shell
|
|
57
|
+
- run: uv run pytest -m browser
|
|
58
|
+
env:
|
|
59
|
+
AGENTQIT_BROWSER_TESTS: "1"
|
|
60
|
+
|
|
61
|
+
context:
|
|
62
|
+
runs-on: ubuntu-24.04
|
|
63
|
+
steps:
|
|
64
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
65
|
+
- uses: astral-sh/setup-uv@c771a70e6277c0a99b617c7a806ffedaca235ff9 # v9.0.0
|
|
66
|
+
with:
|
|
67
|
+
version: "0.13.6"
|
|
68
|
+
python-version: "3.12"
|
|
69
|
+
- run: uv sync --frozen
|
|
70
|
+
- run: uv run python tools/check_public_content.py
|
|
71
|
+
- name: Verify CLI/MCP workflows and catalog-size independence
|
|
72
|
+
run: uv run python tools/benchmark_interfaces.py --output .agentqit/context-review
|
|
73
|
+
- uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7
|
|
74
|
+
with:
|
|
75
|
+
name: interface-context-summary
|
|
76
|
+
path: .agentqit/context-review/summary.json
|
|
77
|
+
if-no-files-found: error
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
privacy:
|
|
81
|
+
runs-on: ubuntu-24.04
|
|
82
|
+
steps:
|
|
83
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
84
|
+
with:
|
|
85
|
+
fetch-depth: 0
|
|
86
|
+
- uses: astral-sh/setup-uv@c771a70e6277c0a99b617c7a806ffedaca235ff9 # v9.0.0
|
|
87
|
+
with:
|
|
88
|
+
version: "0.13.6"
|
|
89
|
+
python-version: "3.12"
|
|
90
|
+
- run: uv sync --frozen
|
|
91
|
+
- run: uv run python tools/check_public_content.py
|
|
92
|
+
- name: Install pinned secret scanner
|
|
93
|
+
run: go install github.com/zricethezav/gitleaks/v8@v8.30.1
|
|
94
|
+
- name: Scan reachable history without exposing matched values
|
|
95
|
+
run: '"$(go env GOPATH)/bin/gitleaks" git --redact --no-banner --log-opts="--all" .'
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
name: Prepare release
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
workflow_dispatch:
|
|
5
|
+
inputs:
|
|
6
|
+
version:
|
|
7
|
+
description: Canonical package version (without v)
|
|
8
|
+
required: true
|
|
9
|
+
type: string
|
|
10
|
+
publish:
|
|
11
|
+
description: Publish verified artifacts (requires separate repository activation)
|
|
12
|
+
default: false
|
|
13
|
+
type: boolean
|
|
14
|
+
|
|
15
|
+
permissions:
|
|
16
|
+
contents: read
|
|
17
|
+
|
|
18
|
+
concurrency:
|
|
19
|
+
group: agentqit-release
|
|
20
|
+
cancel-in-progress: false
|
|
21
|
+
|
|
22
|
+
jobs:
|
|
23
|
+
validate:
|
|
24
|
+
uses: ./.github/workflows/ci.yml
|
|
25
|
+
|
|
26
|
+
build:
|
|
27
|
+
needs: validate
|
|
28
|
+
runs-on: ubuntu-24.04
|
|
29
|
+
env:
|
|
30
|
+
RELEASE_VERSION: ${{ inputs.version }}
|
|
31
|
+
PUBLISH_REQUESTED: ${{ inputs.publish }}
|
|
32
|
+
PUBLICATION_ENABLED: ${{ vars.AGENTQIT_PUBLISH_ENABLED }}
|
|
33
|
+
steps:
|
|
34
|
+
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
|
35
|
+
with:
|
|
36
|
+
fetch-depth: 0
|
|
37
|
+
persist-credentials: false
|
|
38
|
+
- uses: astral-sh/setup-uv@c771a70e6277c0a99b617c7a806ffedaca235ff9 # v9.0.0
|
|
39
|
+
with:
|
|
40
|
+
version: "0.13.6"
|
|
41
|
+
python-version: "3.12"
|
|
42
|
+
- run: uv sync --frozen
|
|
43
|
+
- run: uv build
|
|
44
|
+
- run: uv run python tools/verify_wheel.py dist
|
|
45
|
+
- run: uv run python tools/verify_archives.py dist
|
|
46
|
+
- run: uv run twine check --strict dist/*.whl dist/*.tar.gz
|
|
47
|
+
- name: Verify release identity and write checksums
|
|
48
|
+
shell: bash
|
|
49
|
+
run: |
|
|
50
|
+
flags=()
|
|
51
|
+
if [ "$PUBLISH_REQUESTED" = "true" ]; then
|
|
52
|
+
test "$PUBLICATION_ENABLED" = "true"
|
|
53
|
+
test "$GITHUB_REF" = "refs/tags/v$RELEASE_VERSION"
|
|
54
|
+
flags+=(--require-tag)
|
|
55
|
+
fi
|
|
56
|
+
uv run python tools/release_check.py dist --version "$RELEASE_VERSION" "${flags[@]}"
|
|
57
|
+
- uses: actions/upload-artifact@cf430e030ddbb5b0abf93d22962f4752f3646cd9 # v7
|
|
58
|
+
with:
|
|
59
|
+
name: agentqit-release
|
|
60
|
+
path: dist/
|
|
61
|
+
if-no-files-found: error
|
|
62
|
+
retention-days: 14
|
|
63
|
+
|
|
64
|
+
publish:
|
|
65
|
+
if: inputs.publish && vars.AGENTQIT_PUBLISH_ENABLED == 'true'
|
|
66
|
+
needs: build
|
|
67
|
+
runs-on: ubuntu-24.04
|
|
68
|
+
environment: pypi
|
|
69
|
+
permissions:
|
|
70
|
+
id-token: write
|
|
71
|
+
steps:
|
|
72
|
+
- uses: actions/download-artifact@9000827ccba6bdab643e8b6fd33ac0654aef8333 # v8
|
|
73
|
+
with:
|
|
74
|
+
name: agentqit-release
|
|
75
|
+
path: release/
|
|
76
|
+
- name: Verify retained checksums and select distribution files
|
|
77
|
+
shell: python
|
|
78
|
+
run: |
|
|
79
|
+
import hashlib
|
|
80
|
+
import json
|
|
81
|
+
import pathlib
|
|
82
|
+
import shutil
|
|
83
|
+
source = pathlib.Path('release')
|
|
84
|
+
manifest = json.loads((source / 'release-manifest.json').read_text())
|
|
85
|
+
assert manifest['tag_verified'] is True
|
|
86
|
+
destination = pathlib.Path('dist')
|
|
87
|
+
destination.mkdir()
|
|
88
|
+
for name, details in manifest['files'].items():
|
|
89
|
+
assert pathlib.Path(name).name == name
|
|
90
|
+
assert name.endswith(('.whl', '.tar.gz'))
|
|
91
|
+
path = source / name
|
|
92
|
+
assert path.stat().st_size == details['bytes']
|
|
93
|
+
assert hashlib.sha256(path.read_bytes()).hexdigest() == details['sha256']
|
|
94
|
+
shutil.copyfile(path, destination / name)
|
|
95
|
+
assert len(list(destination.iterdir())) == 2
|
|
96
|
+
- uses: pypa/gh-action-pypi-publish@7245906fb61fa33a13554f9d5fb856fe61758086 # release/v1
|
|
97
|
+
with:
|
|
98
|
+
packages-dir: dist/
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
.venv/
|
|
2
|
+
.installed-check/
|
|
3
|
+
__pycache__/
|
|
4
|
+
*.py[cod]
|
|
5
|
+
.pytest_cache/
|
|
6
|
+
.ruff_cache/
|
|
7
|
+
.uv-cache/
|
|
8
|
+
.pre-commit-cache/
|
|
9
|
+
.coverage
|
|
10
|
+
coverage.*
|
|
11
|
+
junit-*.xml
|
|
12
|
+
htmlcov/
|
|
13
|
+
dist/
|
|
14
|
+
*.egg-info/
|
|
15
|
+
.idea/
|
|
16
|
+
.vscode/
|
|
17
|
+
.DS_Store
|
|
18
|
+
.codex/
|
|
19
|
+
.qa-cli/
|
|
20
|
+
.runs/
|
|
21
|
+
.agentqit/
|
|
22
|
+
playwright/.auth/
|
|
23
|
+
.env
|
|
24
|
+
.env.*
|
|
25
|
+
!.env.example
|
|
26
|
+
*.jks
|
|
27
|
+
*.key
|
|
28
|
+
|
|
29
|
+
# Local acceptance reports are retained for review, not published.
|
|
30
|
+
/docs/products/*/reports/20*/
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
minimum_pre_commit_version: "4.0.0"
|
|
2
|
+
repos:
|
|
3
|
+
- repo: local
|
|
4
|
+
hooks:
|
|
5
|
+
- id: ruff-check
|
|
6
|
+
name: ruff check
|
|
7
|
+
entry: uv run ruff check
|
|
8
|
+
language: system
|
|
9
|
+
types_or: [python, pyi]
|
|
10
|
+
- id: ruff-format-check
|
|
11
|
+
name: ruff format check
|
|
12
|
+
entry: uv run ruff format --check
|
|
13
|
+
language: system
|
|
14
|
+
types_or: [python, pyi]
|
agentqit-0.1.0/AGENTS.md
ADDED
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# Agent instructions
|
|
2
|
+
|
|
3
|
+
## Project
|
|
4
|
+
|
|
5
|
+
AgentQit provides application testing tools for AI agents. Read [the roadmap](docs/roadmap.md),
|
|
6
|
+
[compatibility](docs/compatibility.md), and [the release guide](docs/releases.md) before changing code.
|
|
7
|
+
Package publication requires an explicit maintainer instruction. Source changes
|
|
8
|
+
use pull requests and the required CI checks.
|
|
9
|
+
|
|
10
|
+
## Architecture
|
|
11
|
+
|
|
12
|
+
- `qa_runtime` owns contracts, compilation, execution, ports, and adapters.
|
|
13
|
+
- `qa_cli` owns argument parsing, configuration selection, and rendering.
|
|
14
|
+
- Product plugins own their catalogs, topology, auth/TLS composition, and guides.
|
|
15
|
+
- Core must not import CLI or product packages. CLI discovers products through
|
|
16
|
+
the `qa_runtime.products` entry point group.
|
|
17
|
+
- Add ordinary operations in a workspace or plugin YAML catalog. Add Python only for
|
|
18
|
+
composition or a capability that existing handlers cannot express.
|
|
19
|
+
- Keep `compile()` synchronous and free of network and credential access.
|
|
20
|
+
Execution and I/O ports are asynchronous; close resources with `aclose()`.
|
|
21
|
+
- Browser support uses [explicit task sessions](docs/browser-runtime.md),
|
|
22
|
+
a browser port, and an adapter. Compilation does not launch or provision browsers.
|
|
23
|
+
|
|
24
|
+
## Behavior and evidence
|
|
25
|
+
|
|
26
|
+
- Requirements and canonical contracts define expectations. Service code helps
|
|
27
|
+
explain implementation; it does not establish the expected business result.
|
|
28
|
+
- Return facts. Business assertions and verdicts belong to the caller.
|
|
29
|
+
- Preserve the `CommandResult` envelope and documented exit codes. JSON stdout
|
|
30
|
+
contains exactly one document; diagnostics belong on stderr.
|
|
31
|
+
- Do not introduce executable scenarios, arbitrary SQL/topic inputs, shell,
|
|
32
|
+
expression evaluation, or templates that execute code.
|
|
33
|
+
- `admission` is discovery metadata; it is not a separate authorization gate.
|
|
34
|
+
|
|
35
|
+
## Data and execution
|
|
36
|
+
|
|
37
|
+
- Use synthetic examples, reserved `.invalid` hostnames, and fake ports in tests.
|
|
38
|
+
- Keep system-specific contracts, source revisions, endpoints, records, and
|
|
39
|
+
credentials out of the reusable runtime and public examples.
|
|
40
|
+
- Profiles contain nonsecret configuration and credential references only.
|
|
41
|
+
Secrets enter through `CredentialSource` and use the shared recursive redactor.
|
|
42
|
+
- Keep TLS chain and hostname validation enabled.
|
|
43
|
+
- Keep authenticated browser state out of Git. JSON redaction does not sanitize
|
|
44
|
+
screenshots or trace archives; handle those through scoped artifact policy.
|
|
45
|
+
- Live execution requires a user task naming the target environment and scope.
|
|
46
|
+
- Mutations require explicit user authorization, `--allow-mutation`, and exact
|
|
47
|
+
environment `qa`. MCP additionally requires operator-granted host capability;
|
|
48
|
+
a tool argument cannot grant it. Enforce admission before transport I/O.
|
|
49
|
+
- After authorized QA, report created record IDs and effects. Keep those records
|
|
50
|
+
unless deletion was requested; restore temporary faults and locks.
|
|
51
|
+
|
|
52
|
+
## Changes
|
|
53
|
+
|
|
54
|
+
- Write public documentation and generated instructions in English.
|
|
55
|
+
- Update behavior, focused tests, and affected guides together.
|
|
56
|
+
- Normalize public errors through `RuntimeFailure` and the appropriate `ExitCode`.
|
|
57
|
+
- Change dependencies in `pyproject.toml` through uv; never hand-edit `uv.lock`.
|
|
58
|
+
- Start with focused tests, then run lint, format, and the full offline suite.
|
|
59
|
+
Packaging changes also require a build, archive inspection, and installation
|
|
60
|
+
checks outside the checkout.
|
|
61
|
+
- Include relevant validation results and supported scope with each change.
|
|
62
|
+
|
|
63
|
+
For a downstream plugin, follow [the integration workflow](docs/agent-integration.md).
|
|
64
|
+
|
|
65
|
+
|
|
66
|
+
Browser-marked acceptance uses owned synthetic loopback fixtures and provisioned
|
|
67
|
+
binaries. Run `AGENTQIT_BROWSER_TESTS=1 uv run pytest` after explicit browser setup.
|
|
68
|
+
The standard suite runs without browser binaries. Supported platforms and test
|
|
69
|
+
scope are documented in [verification](docs/verification.md).
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## 0.1.0 - 2026-11-02
|
|
4
|
+
|
|
5
|
+
- CPython 3.12, 3.13, and 3.14 support on macOS and Linux.
|
|
6
|
+
- Product-neutral runtime and CLI with public dependency sources.
|
|
7
|
+
- Local YAML workspaces and independently installed product plugins.
|
|
8
|
+
- Local stdio MCP with bounded discovery, plans, observations, invocation, and checkpoints.
|
|
9
|
+
- Interactive Playwright task sessions, scoped snapshot references, typed actions,
|
|
10
|
+
input masking, approved credential refs, screenshots, and private traces.
|
|
11
|
+
- Shared UI/backend journals, expiry/session/operation limits, and uncertain-outcome handling.
|
|
12
|
+
- Explicit environment credentials and standard Bearer/API-key header composition.
|
|
13
|
+
- Synthetic Orders UI/API, a separate plugin distribution, and deliberate frontend fault acceptance.
|
|
14
|
+
- Agent/contributor guides, CI, archive inspection, and isolated install checks.
|
|
15
|
+
- Workspace-aware MCP discovery: backend task/evidence tools remain available;
|
|
16
|
+
browser-only tools appear only when browser capabilities are configured.
|
|
17
|
+
- Installed-version commands, workspace schema export, frozen v1 consumer checks,
|
|
18
|
+
reviewed schema snapshots, and a documented compatibility/upgrade policy.
|
|
19
|
+
- Reproducible CLI/MCP context accounting against synthetic local backend workflows.
|
|
20
|
+
- Manual release preparation, source/tag/version checks, retained artifact hashes,
|
|
21
|
+
strict package metadata validation, and protected Trusted Publishing.
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Community guidelines
|
|
2
|
+
|
|
3
|
+
AgentQit welcomes respectful participation from people with different backgrounds
|
|
4
|
+
and levels of experience.
|
|
5
|
+
|
|
6
|
+
- Discuss ideas and technical evidence constructively.
|
|
7
|
+
- Be patient with questions and acknowledge mistakes without personal attacks.
|
|
8
|
+
- Do not harass, threaten, discriminate, or share another person's private information.
|
|
9
|
+
- Keep issue and pull-request discussions relevant to the project.
|
|
10
|
+
- Use synthetic data in examples and respect the security reporting policy.
|
|
11
|
+
|
|
12
|
+
Maintainers may edit or remove disruptive content, close discussions, and restrict
|
|
13
|
+
participation when necessary. Repeated or severe abuse can result in a permanent ban.
|
|
14
|
+
|
|
15
|
+
Use GitHub's private reporting tools to report abusive content or account behavior.
|
|
16
|
+
For a security vulnerability in AgentQit, follow [SECURITY.md](SECURITY.md).
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# Contributing
|
|
2
|
+
|
|
3
|
+
Start with [the roadmap](docs/roadmap.md) and [architecture](docs/architecture.md).
|
|
4
|
+
Please follow the [community guidelines](CODE_OF_CONDUCT.md).
|
|
5
|
+
|
|
6
|
+
Keep changes small and explain the problem, resulting behavior, and validation.
|
|
7
|
+
For a new operation, prefer a workspace or product YAML catalog. Change the runtime when a reusable
|
|
8
|
+
capability is missing across systems.
|
|
9
|
+
|
|
10
|
+
The development workflow is:
|
|
11
|
+
|
|
12
|
+
```sh
|
|
13
|
+
uv sync --frozen
|
|
14
|
+
uv run ruff check src tests tools examples/orders/src
|
|
15
|
+
uv run ruff format --check src tests tools examples/orders/src
|
|
16
|
+
uv run pre-commit run --all-files
|
|
17
|
+
uv run python tools/check_public_content.py
|
|
18
|
+
uv run python tools/export_contracts.py --check
|
|
19
|
+
uv run pytest
|
|
20
|
+
uv build
|
|
21
|
+
uv run python tools/verify_wheel.py dist
|
|
22
|
+
uv run python tools/verify_archives.py dist
|
|
23
|
+
uv run twine check --strict dist/*.whl dist/*.tar.gz
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
Tests use fake ports and owned synthetic fixtures. They must run without access
|
|
27
|
+
to an application environment or real credentials.
|
|
28
|
+
|
|
29
|
+
Public interface changes include the JSON envelope, exit codes, operation schema,
|
|
30
|
+
plugin API, configuration aliases, and CLI arguments. Cover relevant boundaries
|
|
31
|
+
and update their documentation in the same change.
|
|
32
|
+
|
|
33
|
+
Packaging validation must inspect both wheel and source distribution, install
|
|
34
|
+
from built artifacts outside the checkout, and exercise an independently built
|
|
35
|
+
example plugin. Run focused tests first; repeat broader checks when changes or
|
|
36
|
+
failures justify it.
|
|
37
|
+
|
|
38
|
+
Write documentation, issue descriptions, and pull requests in English. Include
|
|
39
|
+
only synthetic data in reproducible examples. Review [AGENTS.md](AGENTS.md) before
|
|
40
|
+
using an agent to contribute.
|
|
41
|
+
|
|
42
|
+
Native browser acceptance and clean-install validation are described in [verification](docs/verification.md).
|
|
43
|
+
|
|
44
|
+
Read [compatibility](docs/compatibility.md) before changing a public contract and
|
|
45
|
+
[the release guide](docs/releases.md) before preparing a version. Publication is
|
|
46
|
+
disabled by default and requires a separate owner instruction.
|
|
47
|
+
|
|
48
|
+
Before sharing changes, review the full diff and selected history for identifying
|
|
49
|
+
information and operational data. Publication checks flag developer-local paths,
|
|
50
|
+
non-example email addresses, unreviewed URL hosts, and operational files. Optional
|
|
51
|
+
local denylists stay outside version control. Never add sensitive literals as test
|
|
52
|
+
fixtures or scanner rules in this repository.
|
agentqit-0.1.0/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 AgentQit contributors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
agentqit-0.1.0/PKG-INFO
ADDED
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
|
+
Name: agentqit
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Application testing tools for AI agents
|
|
5
|
+
Project-URL: Source, https://github.com/akimovWare/AgentQit
|
|
6
|
+
Project-URL: Documentation, https://github.com/akimovWare/AgentQit/blob/main/README.md
|
|
7
|
+
Project-URL: Issues, https://github.com/akimovWare/AgentQit/issues
|
|
8
|
+
Project-URL: Changelog, https://github.com/akimovWare/AgentQit/blob/main/CHANGELOG.md
|
|
9
|
+
License-Expression: MIT
|
|
10
|
+
License-File: LICENSE
|
|
11
|
+
Classifier: Operating System :: POSIX
|
|
12
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
15
|
+
Classifier: Programming Language :: Python :: Implementation :: CPython
|
|
16
|
+
Requires-Python: >=3.12
|
|
17
|
+
Requires-Dist: aiokafka<1,>=0.12
|
|
18
|
+
Requires-Dist: anyio<5,>=4.8
|
|
19
|
+
Requires-Dist: asyncpg<1,>=0.30
|
|
20
|
+
Requires-Dist: botocore<2,>=1.42
|
|
21
|
+
Requires-Dist: defusedxml<1,>=0.7
|
|
22
|
+
Requires-Dist: httpx<1,>=0.28
|
|
23
|
+
Requires-Dist: mcp<3,>=2
|
|
24
|
+
Requires-Dist: protobuf<7,>=5
|
|
25
|
+
Requires-Dist: pydantic-settings<3,>=2.7
|
|
26
|
+
Requires-Dist: pydantic<3,>=2.10
|
|
27
|
+
Requires-Dist: pyjks<21,>=20
|
|
28
|
+
Requires-Dist: pyyaml<7,>=6.0
|
|
29
|
+
Requires-Dist: rich<15,>=13.9
|
|
30
|
+
Requires-Dist: typer<1,>=0.15
|
|
31
|
+
Provides-Extra: browser
|
|
32
|
+
Requires-Dist: playwright<2,>=1.55; extra == 'browser'
|
|
33
|
+
Description-Content-Type: text/markdown
|
|
34
|
+
|
|
35
|
+
# AgentQit
|
|
36
|
+
|
|
37
|
+
Application testing tools for AI agents.
|
|
38
|
+
|
|
39
|
+
AgentQit exposes typed browser actions, reviewed backend operations, and observations
|
|
40
|
+
with evidence. The agent selects checks from requirements and compares the returned
|
|
41
|
+
facts with expected behavior. CLI and local stdio MCP share one execution runtime.
|
|
42
|
+
|
|
43
|
+
CPython 3.12, 3.13, and 3.14; macOS and Linux.
|
|
44
|
+
|
|
45
|
+
## Install
|
|
46
|
+
|
|
47
|
+
With uv installed:
|
|
48
|
+
|
|
49
|
+
```sh
|
|
50
|
+
uv tool install --python 3.12 'agentqit[browser]>=0.1,<0.2'
|
|
51
|
+
qa browser install --headless-only
|
|
52
|
+
qa workspace init --directory ./my-qa --name sample
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
For backend-only use, omit `[browser]` and browser provisioning. Pin a reviewed
|
|
56
|
+
version such as `==0.1.0` for a reproducible installation.
|
|
57
|
+
|
|
58
|
+
Configure the workspace with reviewed operation YAML, your QA endpoints, and
|
|
59
|
+
explicit credential references. Ordinary integrations use YAML; reusable catalogs
|
|
60
|
+
and custom composition can use plugins.
|
|
61
|
+
|
|
62
|
+
## Connect an agent
|
|
63
|
+
|
|
64
|
+
Configure your MCP host to launch:
|
|
65
|
+
|
|
66
|
+
```sh
|
|
67
|
+
agentqit-mcp --workspace /absolute/path/to/my-qa
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
Interactive browser sessions use MCP. CLI also supports backend execution,
|
|
71
|
+
discovery, planning, and diagnostics. Writes require operator authorization,
|
|
72
|
+
caller opt-in, and `environment: qa`. Browser actions use scoped references;
|
|
73
|
+
evidence artifacts remain local and private by default.
|
|
74
|
+
|
|
75
|
+
## Update
|
|
76
|
+
|
|
77
|
+
```sh
|
|
78
|
+
uv tool upgrade agentqit
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
Updates follow the source and version constraints used at installation. Finish
|
|
82
|
+
tasks and stop MCP before upgrading, then restart it. Re-provision browser binaries
|
|
83
|
+
when Playwright changes. User YAML and credentials are separate from the application.
|
|
84
|
+
|
|
85
|
+
## Guides
|
|
86
|
+
|
|
87
|
+
- [Project overview](https://github.com/akimovWare/AgentQit)
|
|
88
|
+
- [Workspace and authentication setup](https://github.com/akimovWare/AgentQit/blob/main/docs/workspaces.md)
|
|
89
|
+
- [Agent integration](https://github.com/akimovWare/AgentQit/blob/main/docs/agent-integration.md)
|
|
90
|
+
- [Browser sessions and evidence](https://github.com/akimovWare/AgentQit/blob/main/docs/browser-runtime.md)
|
|
91
|
+
- [Installation and updates](https://github.com/akimovWare/AgentQit/blob/main/docs/distribution.md)
|
|
92
|
+
- [Compatibility](https://github.com/akimovWare/AgentQit/blob/main/docs/compatibility.md)
|
|
93
|
+
- [Security boundaries](https://github.com/akimovWare/AgentQit/blob/main/SECURITY.md)
|
|
94
|
+
|
|
95
|
+
A completed operation is an execution fact. Business conclusions belong to the
|
|
96
|
+
caller. Unknown write outcomes require state inspection before retrying.
|
|
97
|
+
Plugins execute trusted code; this runtime is a local tool, not a shared remote service.
|
|
98
|
+
|
|
99
|
+
[MIT license](https://github.com/akimovWare/AgentQit/blob/main/LICENSE).
|