agent-connector-sdk 0.3.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- agent_connector_sdk-0.3.1/LICENSE +21 -0
- agent_connector_sdk-0.3.1/PKG-INFO +186 -0
- agent_connector_sdk-0.3.1/README.md +132 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/__init__.py +10 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/_contract_fields.py +92 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/_extras.py +22 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/_turtle.py +116 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/_version.py +3 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/a2a/__init__.py +46 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/a2a/app.py +83 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/a2a/client.py +117 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/a2a/models.py +112 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/access_contract.py +125 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/adapters/__init__.py +1 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/adapters/document_sources.py +441 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/adapters/event_envelope.py +109 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/adapters/event_errors.py +51 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/adapters/event_feed.py +192 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/adapters/event_feed_bindings.py +27 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/adapters/event_feed_records.py +171 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/adapters/event_identity.py +46 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/adapters/mcp_tool.py +201 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/adapters/mcp_tool_extract.py +130 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/adapters/mcp_tool_lifecycle.py +248 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/adapters/mcp_tool_paging.py +173 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/adapters/mcp_tool_records.py +111 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/adapters/tool_contract.py +77 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/adapters/web_fetch.py +221 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/adapters/web_fetch_helpers.py +73 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/artifacts/__init__.py +17 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/artifacts/annotations.py +109 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/artifacts/common.py +57 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/artifacts/ontology_imports.py +132 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/artifacts/pack.py +187 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/artifacts/prompts.py +129 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/artifacts/prompts_helpers.py +128 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/artifacts/resources.py +78 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/artifacts/skills.py +64 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/artifacts/tools.py +74 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/auth/__init__.py +17 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/auth/browser.py +570 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/auth/client_credentials.py +165 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/auth/delegation.py +266 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/auth/oidc.py +151 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/auth/static.py +85 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/auth/tokens.py +91 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/auth/values.py +33 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/certify/__init__.py +1 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/certify/certification.py +102 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/certify/checkout.py +145 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/certify/cli.py +211 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/certify/declared_coverage.py +50 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/certify/fingerprints.py +106 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/certify/listing.py +62 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/certify/options.py +46 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/certify/pin_journal.py +111 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/certify/pins.py +136 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/certify/transaction.py +107 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/certify/verdicts.py +128 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/compute/__init__.py +25 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/compute/engine.py +203 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/config.py +274 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/config_git.py +20 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/contracts.py +146 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/credentials/__init__.py +17 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/credentials/openbao.py +122 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/credentials/provider.py +68 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/credentials/provider_profile.py +315 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/credentials/references.py +93 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/credentials/resolution.py +86 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/credentials/resolver.py +55 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/credentials/runtime_references.py +105 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/credentials/sensitivity.py +111 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/credentials/source.py +487 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/current_plan.py +67 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/data_prep/__init__.py +128 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/data_prep/_base.py +11 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/data_prep/_classification.py +14 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/data_prep/certification/__init__.py +47 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/data_prep/certification/adapters.py +128 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/data_prep/certification/job.py +226 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/data_prep/certification/models.py +242 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/data_prep/kernel.py +1285 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/data_prep/models.py +516 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/data_prep/profiling.py +178 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/decide/__init__.py +110 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/decide/consumers.py +115 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/decide/epistemic_graph.py +190 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/decide/options.py +78 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/decide/outcome.py +137 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/decide/points.py +121 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/decide/transport.py +120 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/discovery.py +170 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/earth_observations/__init__.py +8 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/earth_observations/records.py +113 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/embeddings.py +264 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/entitlements.py +217 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/exceptions.py +69 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/exposure.py +22 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/file_lock.py +263 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/finance/__init__.py +7 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/finance/account.py +79 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/finance/alpaca_account.py +71 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/finance/alpaca_stocks.py +107 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/finance/banking.py +206 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/finance/central_bank_calendar.py +106 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/finance/crypto.py +99 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/finance/csv_import.py +189 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/finance/errors.py +29 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/finance/etf_flows.py +89 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/finance/feeds.py +244 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/finance/fred_series.py +109 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/finance/market_data.py +290 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/finance/multi_asset.py +103 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/finance/records.py +134 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/finance/strategy_export.py +297 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/http/__init__.py +20 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/http/bodies.py +81 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/http/client.py +135 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/http/egress.py +508 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/http/errors.py +136 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/http/flow.py +112 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/http/options.py +124 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/http/pagination.py +139 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/http/problems.py +126 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/http/redaction.py +54 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/http/responses.py +112 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/http/retry.py +145 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/http/safe_post.py +70 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/http/support.py +453 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/http/transport.py +136 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/httpsupport/__init__.py +11 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/httpsupport/auth.py +137 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/httpsupport/client_protocol.py +176 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/httpsupport/pagination.py +362 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/httpsupport/rate_limit.py +195 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/httpsupport/redaction.py +145 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/identifiers.py +55 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/identity.py +87 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/ingest/__init__.py +111 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/ingest/channel.py +64 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/ingest/engine.py +168 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/ingest/errors.py +17 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/ingest/model.py +179 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/ingest/records.py +48 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/ingest/request.py +223 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/ingest/service.py +196 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/ingest/source_sync.py +480 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/ingest/sources.py +144 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/ingest/transport.py +82 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/library_state.py +76 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/manifest/__init__.py +1 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/manifest/integrity.py +555 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/manifest/live_contract.py +229 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/manifest/loader.py +134 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/manifest/model.py +229 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/manifest/ontology_pack.py +199 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/manifest/package_validation.py +172 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/manifest/presets.py +269 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/manifest/provider_runtime.py +64 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/manifest/tool_schema.py +174 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/mcp/__init__.py +9 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/mcp/action_dispatch.py +235 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/mcp/auth/__init__.py +14 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/mcp/auth/factory.py +60 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/mcp/auth/jwt.py +140 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/mcp/auth/policy.py +103 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/mcp/auth/proxies.py +127 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/mcp/auth/static.py +113 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/mcp/auth/verifiers.py +74 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/mcp/body_boundary.py +99 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/mcp/change_events.py +78 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/mcp/concurrency.py +98 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/mcp/confirmation.py +141 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/mcp/content.py +184 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/mcp/context.py +145 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/mcp/env_drift.py +594 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/mcp/exposure.py +7 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/mcp/graphql.py +107 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/mcp/http_boundary.py +126 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/mcp/method_tools.py +630 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/mcp/middleware.py +51 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/mcp/network.py +225 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/mcp/network_inputs.py +197 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/mcp/network_validation.py +133 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/mcp/parser.py +125 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/mcp/registry.py +162 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/mcp/schema_disclosure.py +157 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/mcp/schema_disclosure_models.py +62 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/mcp/schema_disclosure_provider.py +112 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/mcp/served_security.py +166 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/mcp/server.py +185 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/mcp/tool_surface.py +311 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/mcp/versioning.py +33 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/mcp/visibility.py +62 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/mcp/visibility_filters.py +61 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/mcp/visibility_policy.py +148 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/ontology/access_contract.ttl +50 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/paths.py +185 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/payments.py +289 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/ports/__init__.py +21 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/ports/artifact_kind.py +27 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/ports/audit_reservation.py +26 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/ports/authorization_verifier.py +23 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/ports/change_source.py +43 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/ports/connector_registry.py +30 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/ports/decide_runner.py +80 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/ports/errors.py +39 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/ports/repair_proposals.py +28 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/ports/session.py +103 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/ports/sink.py +51 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/ports/source_adapter.py +44 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/ports/transport.py +23 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/ports/writeback.py +36 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/ports/writeback_ledger.py +50 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/ports/writeback_transport.py +46 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/privacy.py +128 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/privacy_pii.py +82 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/privacy_reference.py +44 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/privacy_rules.py +251 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/progress.py +38 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/py.typed +0 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/repository/__init__.py +54 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/repository/errors.py +7 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/repository/identity.py +43 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/repository/indexing.py +107 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/repository/local_git.py +178 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/repository/manifest.py +65 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/repository/models.py +163 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/repository/provider.py +37 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/repository/ref_walk_provider.py +42 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/repository/refs.py +59 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/repository/transport.py +144 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/repository/tree_batch.py +117 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/repository/walk.py +104 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/runner/__init__.py +16 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/runner/backoff.py +26 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/runner/cli.py +189 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/runner/composition.py +212 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/runner/credentialed_endpoint.py +31 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/runner/descriptors.py +129 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/runner/endpoints.py +99 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/runner/errors.py +57 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/runner/health_reporting.py +58 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/runner/health_server.py +142 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/runner/health_state.py +185 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/runner/logs.py +53 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/runner/plans.py +198 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/runner/provisioning.py +85 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/runner/services.py +34 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/runner/sink_probe.py +25 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/runner/static_registry.py +63 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/runner/supervisor.py +126 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/runner/syncing.py +226 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/runner/worker.py +205 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/schema_contract.py +108 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/schema_drift.py +202 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/schema_repair.py +61 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/signing.py +110 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/sinks/__init__.py +1 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/sinks/epistemic_graph.py +180 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/skills/__init__.py +9 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/skills/agent-connector-sdk-development/SKILL.md +203 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/source_connectors/__init__.py +71 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/source_connectors/base.py +224 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/source_connectors/checkpoint.py +73 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/source_connectors/connectors/__init__.py +21 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/source_connectors/connectors/arxiv.py +294 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/source_connectors/connectors/database.py +350 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/source_connectors/connectors/graphql_document.py +2943 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/source_connectors/connectors/mcp_package.py +326 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/source_connectors/connectors/package_manifest.py +262 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/source_connectors/connectors/rest.py +259 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/source_connectors/connectors/rss.py +252 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/source_connectors/connectors/web.py +195 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/source_connectors/http_safety.py +1114 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/source_connectors/registry.py +173 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/source_connectors/universal.py +977 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/streaming.py +271 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/taxonomy/__init__.py +8 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/taxonomy/records.py +78 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/testing/__init__.py +19 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/testing/artifact_kinds.py +125 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/testing/certificates.py +113 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/testing/duplicate_symbol_scan.py +88 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/testing/fleet_migration.py +106 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/testing/http_clients.py +144 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/testing/http_server.py +122 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/testing/readiness.py +10 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/testing/repair_proposals.py +27 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/testing/results.py +41 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/testing/sinks.py +275 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/testing/source_adapters.py +174 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/testing/writeback.py +219 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/testing/writeback_audit.py +41 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/tls/__init__.py +16 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/tls/context.py +62 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/tls/errors.py +13 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/tls/material.py +108 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/tls/profile.py +116 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/tls/resolve.py +244 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/tls/selection.py +174 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/transports/__init__.py +1 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/transports/mcp.py +91 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/transports/mcp_changes.py +130 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/transports/mcp_session.py +140 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/utilities.py +134 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/vendor_extractors/__init__.py +36 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/vendor_extractors/_records.py +66 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/vendor_extractors/a2a.py +125 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/vendor_extractors/a2a_helpers.py +101 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/vendor_extractors/ansible.py +70 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/vendor_extractors/archer.py +118 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/vendor_extractors/archimate.py +103 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/vendor_extractors/aris.py +110 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/vendor_extractors/caddy.py +93 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/vendor_extractors/camunda.py +169 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/vendor_extractors/ciso_assistant.py +167 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/vendor_extractors/ciso_assistant_helpers.py +73 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/vendor_extractors/contract.py +97 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/vendor_extractors/egeria.py +254 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/vendor_extractors/egeria_helpers.py +79 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/vendor_extractors/emerald.py +126 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/vendor_extractors/erpnext.py +113 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/vendor_extractors/erpnext_helpers.py +196 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/vendor_extractors/grafana.py +152 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/vendor_extractors/grafana_helpers.py +50 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/vendor_extractors/home_assistant.py +86 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/vendor_extractors/infra.py +105 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/vendor_extractors/infra_helpers.py +95 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/vendor_extractors/kafka.py +98 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/vendor_extractors/keycloak.py +121 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/vendor_extractors/leanix.py +226 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/vendor_extractors/lgtm.py +129 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/vendor_extractors/mealie.py +128 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/vendor_extractors/microsoft.py +106 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/vendor_extractors/nextcloud.py +136 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/vendor_extractors/odoo.py +127 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/vendor_extractors/okta.py +161 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/vendor_extractors/portainer.py +136 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/vendor_extractors/salesforce.py +102 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/vendor_extractors/servicenow.py +163 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/vendor_extractors/servicenow_helpers.py +111 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/vendor_extractors/social.py +201 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/vendor_extractors/technitium_dns.py +111 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/vendor_extractors/twenty.py +122 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/vendor_extractors/twenty_helpers.py +88 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/vendor_extractors/uptime_kuma.py +74 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/vendor_extractors/wger.py +140 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/voice_supply_chain/__init__.py +14 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/voice_supply_chain/license_registry.py +110 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/voice_supply_chain/manifest.py +178 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/voice_supply_chain/store.py +14 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/writeback/__init__.py +1 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/writeback/authorization.py +95 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/writeback/connector.py +122 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/writeback/durable_files.py +33 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/writeback/durable_ledger.py +151 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/writeback/durable_transport.py +167 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/writeback/epistemic_graph.py +121 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/writeback/errors.py +56 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/writeback/memory.py +184 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/writeback/models.py +33 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/writeback/recovery.py +175 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/writeback/service.py +152 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/writeback/validation.py +97 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/writeback_sinks/__init__.py +63 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/writeback_sinks/_env.py +66 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/writeback_sinks/core.py +506 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/writeback_sinks/governed.py +420 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/writeback_sinks/models.py +15 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/writeback_sinks/sinks/__init__.py +1 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/writeback_sinks/sinks/ansible.py +64 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/writeback_sinks/sinks/archimate.py +93 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/writeback_sinks/sinks/capability.py +215 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/writeback_sinks/sinks/ciso_assistant.py +95 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/writeback_sinks/sinks/egeria.py +92 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/writeback_sinks/sinks/emerald.py +103 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/writeback_sinks/sinks/erpnext.py +144 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/writeback_sinks/sinks/home_assistant.py +74 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/writeback_sinks/sinks/identity.py +158 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/writeback_sinks/sinks/issue_tracker.py +258 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/writeback_sinks/sinks/leanix.py +195 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/writeback_sinks/sinks/legal.py +81 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/writeback_sinks/sinks/mealie.py +90 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/writeback_sinks/sinks/nextcloud.py +108 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/writeback_sinks/sinks/ops.py +155 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/writeback_sinks/sinks/process.py +438 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/writeback_sinks/sinks/salesforce.py +98 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/writeback_sinks/sinks/servicenow.py +271 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/writeback_sinks/sinks/twenty.py +105 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/writeback_sinks/sinks/wger.py +108 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk/writeback_sinks/spec_link.py +262 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk.egg-info/PKG-INFO +186 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk.egg-info/SOURCES.txt +533 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk.egg-info/dependency_links.txt +1 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk.egg-info/entry_points.txt +22 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk.egg-info/requires.txt +44 -0
- agent_connector_sdk-0.3.1/agent_connector_sdk.egg-info/top_level.txt +1 -0
- agent_connector_sdk-0.3.1/pyproject.toml +485 -0
- agent_connector_sdk-0.3.1/setup.cfg +4 -0
- agent_connector_sdk-0.3.1/tests/test_a2a_protocol.py +147 -0
- agent_connector_sdk-0.3.1/tests/test_access_contract.py +125 -0
- agent_connector_sdk-0.3.1/tests/test_access_contract_helpers.py +24 -0
- agent_connector_sdk-0.3.1/tests/test_adapters_web_fetch.py +70 -0
- agent_connector_sdk-0.3.1/tests/test_adapters_web_fetch_source_adapter.py +122 -0
- agent_connector_sdk-0.3.1/tests/test_agent_config.py +57 -0
- agent_connector_sdk-0.3.1/tests/test_artifacts_discovery.py +510 -0
- agent_connector_sdk-0.3.1/tests/test_au_helper_parity.py +73 -0
- agent_connector_sdk-0.3.1/tests/test_base_install_mcp_free.py +95 -0
- agent_connector_sdk-0.3.1/tests/test_certify_cli.py +268 -0
- agent_connector_sdk-0.3.1/tests/test_certify_declared_coverage.py +31 -0
- agent_connector_sdk-0.3.1/tests/test_certify_pins.py +375 -0
- agent_connector_sdk-0.3.1/tests/test_change_subscriptions.py +183 -0
- agent_connector_sdk-0.3.1/tests/test_check_public_specs_gate.py +51 -0
- agent_connector_sdk-0.3.1/tests/test_client_credentials_literal_secret.py +75 -0
- agent_connector_sdk-0.3.1/tests/test_compute_adapter.py +125 -0
- agent_connector_sdk-0.3.1/tests/test_connector_runtime_adds.py +265 -0
- agent_connector_sdk-0.3.1/tests/test_connector_runtime_from_au.py +134 -0
- agent_connector_sdk-0.3.1/tests/test_contracts_and_sink.py +577 -0
- agent_connector_sdk-0.3.1/tests/test_credential_provider.py +42 -0
- agent_connector_sdk-0.3.1/tests/test_credential_sensitivity.py +44 -0
- agent_connector_sdk-0.3.1/tests/test_credentials.py +144 -0
- agent_connector_sdk-0.3.1/tests/test_current_plan.py +134 -0
- agent_connector_sdk-0.3.1/tests/test_decide_consumers.py +248 -0
- agent_connector_sdk-0.3.1/tests/test_decide_epistemic_graph.py +347 -0
- agent_connector_sdk-0.3.1/tests/test_doc_privacy_scanner.py +51 -0
- agent_connector_sdk-0.3.1/tests/test_document_sources.py +328 -0
- agent_connector_sdk-0.3.1/tests/test_duplicate_symbol_scan.py +91 -0
- agent_connector_sdk-0.3.1/tests/test_earth_observation_records.py +99 -0
- agent_connector_sdk-0.3.1/tests/test_embeddings.py +157 -0
- agent_connector_sdk-0.3.1/tests/test_entitlement_catalogs.py +57 -0
- agent_connector_sdk-0.3.1/tests/test_entitlements.py +103 -0
- agent_connector_sdk-0.3.1/tests/test_event_feeds.py +584 -0
- agent_connector_sdk-0.3.1/tests/test_extraction.py +400 -0
- agent_connector_sdk-0.3.1/tests/test_finance_account_read.py +76 -0
- agent_connector_sdk-0.3.1/tests/test_finance_alpaca_stocks.py +90 -0
- agent_connector_sdk-0.3.1/tests/test_finance_banking.py +75 -0
- agent_connector_sdk-0.3.1/tests/test_finance_central_bank_calendar.py +99 -0
- agent_connector_sdk-0.3.1/tests/test_finance_crypto.py +77 -0
- agent_connector_sdk-0.3.1/tests/test_finance_csv_import.py +96 -0
- agent_connector_sdk-0.3.1/tests/test_finance_etf_flows.py +78 -0
- agent_connector_sdk-0.3.1/tests/test_finance_feeds.py +68 -0
- agent_connector_sdk-0.3.1/tests/test_finance_fred_series.py +96 -0
- agent_connector_sdk-0.3.1/tests/test_finance_market_data.py +115 -0
- agent_connector_sdk-0.3.1/tests/test_finance_records.py +213 -0
- agent_connector_sdk-0.3.1/tests/test_finance_strategy_export.py +81 -0
- agent_connector_sdk-0.3.1/tests/test_fleet_migration_scan.py +106 -0
- agent_connector_sdk-0.3.1/tests/test_fleet_recertification.py +86 -0
- agent_connector_sdk-0.3.1/tests/test_foundation.py +180 -0
- agent_connector_sdk-0.3.1/tests/test_http_client.py +552 -0
- agent_connector_sdk-0.3.1/tests/test_http_dns_pinned_egress.py +223 -0
- agent_connector_sdk-0.3.1/tests/test_http_egress.py +62 -0
- agent_connector_sdk-0.3.1/tests/test_http_units.py +215 -0
- agent_connector_sdk-0.3.1/tests/test_identifiers.py +45 -0
- agent_connector_sdk-0.3.1/tests/test_ingest.py +392 -0
- agent_connector_sdk-0.3.1/tests/test_library_state.py +65 -0
- agent_connector_sdk-0.3.1/tests/test_manifest.py +214 -0
- agent_connector_sdk-0.3.1/tests/test_manifest_integrity.py +158 -0
- agent_connector_sdk-0.3.1/tests/test_mcp_client_credentials.py +276 -0
- agent_connector_sdk-0.3.1/tests/test_mcp_confirmation_roundtrip.py +233 -0
- agent_connector_sdk-0.3.1/tests/test_mcp_dispatch.py +228 -0
- agent_connector_sdk-0.3.1/tests/test_mcp_graphql_context.py +91 -0
- agent_connector_sdk-0.3.1/tests/test_mcp_native_primitives.py +104 -0
- agent_connector_sdk-0.3.1/tests/test_method_tools.py +92 -0
- agent_connector_sdk-0.3.1/tests/test_network_serving.py +221 -0
- agent_connector_sdk-0.3.1/tests/test_ontology_pack.py +119 -0
- agent_connector_sdk-0.3.1/tests/test_operation_tools.py +314 -0
- agent_connector_sdk-0.3.1/tests/test_outbound_auth.py +362 -0
- agent_connector_sdk-0.3.1/tests/test_pack_ontology_imports.py +114 -0
- agent_connector_sdk-0.3.1/tests/test_pagination_modes.py +225 -0
- agent_connector_sdk-0.3.1/tests/test_paths_mcp_config.py +25 -0
- agent_connector_sdk-0.3.1/tests/test_payments.py +117 -0
- agent_connector_sdk-0.3.1/tests/test_platform_config_dir.py +124 -0
- agent_connector_sdk-0.3.1/tests/test_privacy.py +94 -0
- agent_connector_sdk-0.3.1/tests/test_progress_and_http_conformance.py +85 -0
- agent_connector_sdk-0.3.1/tests/test_prompt_content.py +323 -0
- agent_connector_sdk-0.3.1/tests/test_provider_runtime.py +48 -0
- agent_connector_sdk-0.3.1/tests/test_public_surface_source_ingest.py +102 -0
- agent_connector_sdk-0.3.1/tests/test_public_surface_writeback_sinks.py +64 -0
- agent_connector_sdk-0.3.1/tests/test_registry_visibility_content.py +295 -0
- agent_connector_sdk-0.3.1/tests/test_release_quality_r001_r005.py +481 -0
- agent_connector_sdk-0.3.1/tests/test_repository_models.py +163 -0
- agent_connector_sdk-0.3.1/tests/test_repository_refs.py +107 -0
- agent_connector_sdk-0.3.1/tests/test_repository_refwalk_fastpath.py +155 -0
- agent_connector_sdk-0.3.1/tests/test_repository_transport.py +320 -0
- agent_connector_sdk-0.3.1/tests/test_runner_cli.py +318 -0
- agent_connector_sdk-0.3.1/tests/test_runner_config.py +179 -0
- agent_connector_sdk-0.3.1/tests/test_runner_end_to_end.py +224 -0
- agent_connector_sdk-0.3.1/tests/test_runner_health.py +505 -0
- agent_connector_sdk-0.3.1/tests/test_runner_supervision.py +227 -0
- agent_connector_sdk-0.3.1/tests/test_safe_post.py +54 -0
- agent_connector_sdk-0.3.1/tests/test_schema_disclosure.py +113 -0
- agent_connector_sdk-0.3.1/tests/test_schema_disclosure_artifacts.py +66 -0
- agent_connector_sdk-0.3.1/tests/test_schema_disclosure_provider.py +163 -0
- agent_connector_sdk-0.3.1/tests/test_schema_drift.py +484 -0
- agent_connector_sdk-0.3.1/tests/test_schema_repair.py +169 -0
- agent_connector_sdk-0.3.1/tests/test_served_security_and_provider_profile.py +292 -0
- agent_connector_sdk-0.3.1/tests/test_server_and_auth.py +314 -0
- agent_connector_sdk-0.3.1/tests/test_signing.py +54 -0
- agent_connector_sdk-0.3.1/tests/test_source_credentials.py +173 -0
- agent_connector_sdk-0.3.1/tests/test_source_sync.py +272 -0
- agent_connector_sdk-0.3.1/tests/test_source_sync_served.py +112 -0
- agent_connector_sdk-0.3.1/tests/test_streaming.py +126 -0
- agent_connector_sdk-0.3.1/tests/test_taxonomy_records.py +67 -0
- agent_connector_sdk-0.3.1/tests/test_tls_profiles.py +381 -0
- agent_connector_sdk-0.3.1/tests/test_tool_surface.py +209 -0
- agent_connector_sdk-0.3.1/tests/test_vendor_extractors_ansible.py +75 -0
- agent_connector_sdk-0.3.1/tests/test_vendor_extractors_archer_infra_a2a.py +120 -0
- agent_connector_sdk-0.3.1/tests/test_vendor_extractors_archimate.py +95 -0
- agent_connector_sdk-0.3.1/tests/test_vendor_extractors_aris_egeria_camunda.py +124 -0
- agent_connector_sdk-0.3.1/tests/test_vendor_extractors_caddy.py +81 -0
- agent_connector_sdk-0.3.1/tests/test_vendor_extractors_contract.py +58 -0
- agent_connector_sdk-0.3.1/tests/test_vendor_extractors_emerald.py +91 -0
- agent_connector_sdk-0.3.1/tests/test_vendor_extractors_grafana_leanix_erpnext.py +154 -0
- agent_connector_sdk-0.3.1/tests/test_vendor_extractors_home_assistant.py +80 -0
- agent_connector_sdk-0.3.1/tests/test_vendor_extractors_kafka.py +84 -0
- agent_connector_sdk-0.3.1/tests/test_vendor_extractors_keycloak.py +98 -0
- agent_connector_sdk-0.3.1/tests/test_vendor_extractors_lgtm.py +98 -0
- agent_connector_sdk-0.3.1/tests/test_vendor_extractors_mealie.py +104 -0
- agent_connector_sdk-0.3.1/tests/test_vendor_extractors_microsoft.py +83 -0
- agent_connector_sdk-0.3.1/tests/test_vendor_extractors_nextcloud.py +111 -0
- agent_connector_sdk-0.3.1/tests/test_vendor_extractors_odoo.py +78 -0
- agent_connector_sdk-0.3.1/tests/test_vendor_extractors_portainer.py +99 -0
- agent_connector_sdk-0.3.1/tests/test_vendor_extractors_salesforce.py +79 -0
- agent_connector_sdk-0.3.1/tests/test_vendor_extractors_servicenow_ciso_social.py +154 -0
- agent_connector_sdk-0.3.1/tests/test_vendor_extractors_technitium_dns.py +81 -0
- agent_connector_sdk-0.3.1/tests/test_vendor_extractors_uptime_kuma.py +83 -0
- agent_connector_sdk-0.3.1/tests/test_vendor_extractors_wger_okta_twenty.py +169 -0
- agent_connector_sdk-0.3.1/tests/test_writeback.py +145 -0
- agent_connector_sdk-0.3.1/tests/test_writeback_audit_reservation.py +47 -0
- agent_connector_sdk-0.3.1/tests/test_writeback_durable.py +293 -0
- agent_connector_sdk-0.3.1/tests/test_writeback_process_restart.py +148 -0
- agent_connector_sdk-0.3.1/tests/test_writeback_sink_process.py +196 -0
- agent_connector_sdk-0.3.1/tests/test_writeback_sinks.py +517 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Knuckles Team
|
|
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.
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: agent-connector-sdk
|
|
3
|
+
Version: 0.3.1
|
|
4
|
+
Summary: Connector SDK for the agent-packages fleet: MCP server scaffolding, connector manifests, and typed source/content extension ports
|
|
5
|
+
Author-email: Repository Maintainers <maintainers@knuckles.team>
|
|
6
|
+
License-Expression: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/Knuckles-Team/agent-connector-sdk
|
|
8
|
+
Project-URL: Documentation, https://knuckles-team.github.io/agent-connector-sdk/
|
|
9
|
+
Classifier: Development Status :: 4 - Beta
|
|
10
|
+
Classifier: Environment :: Console
|
|
11
|
+
Classifier: Operating System :: POSIX :: Linux
|
|
12
|
+
Classifier: Programming Language :: Python :: 3
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
16
|
+
Requires-Python: >=3.12
|
|
17
|
+
Description-Content-Type: text/markdown
|
|
18
|
+
License-File: LICENSE
|
|
19
|
+
Requires-Dist: epistemic-graph<3.0.0,>=2.27.3
|
|
20
|
+
Requires-Dist: mcp-types<3,>=2.3.0
|
|
21
|
+
Requires-Dist: pydantic<3,>=2.14.1
|
|
22
|
+
Requires-Dist: PyYAML>=6.0.3
|
|
23
|
+
Requires-Dist: httpx>=0.28.1
|
|
24
|
+
Requires-Dist: httpx2>=2.13.1
|
|
25
|
+
Requires-Dist: anyio>=4.15.1
|
|
26
|
+
Requires-Dist: cryptography>=50.0.2
|
|
27
|
+
Provides-Extra: integrity
|
|
28
|
+
Requires-Dist: rdflib>=7.1.0; extra == "integrity"
|
|
29
|
+
Provides-Extra: mcp
|
|
30
|
+
Requires-Dist: fastmcp<5,>=4.1.0; extra == "mcp"
|
|
31
|
+
Requires-Dist: mcp<3,>=2.3.0; extra == "mcp"
|
|
32
|
+
Provides-Extra: a2a
|
|
33
|
+
Requires-Dist: fasta2a[pydantic-ai]<1.0.0,>=0.6.1; extra == "a2a"
|
|
34
|
+
Requires-Dist: starlette<2,>=1.8.0; extra == "a2a"
|
|
35
|
+
Provides-Extra: feeds
|
|
36
|
+
Requires-Dist: feedparser>=6.0.12; extra == "feeds"
|
|
37
|
+
Provides-Extra: dataprep
|
|
38
|
+
Requires-Dist: pyarrow>=24.0.0; extra == "dataprep"
|
|
39
|
+
Provides-Extra: db
|
|
40
|
+
Requires-Dist: psycopg[binary]>=3.2.0; extra == "db"
|
|
41
|
+
Requires-Dist: PyMySQL>=1.1.1; extra == "db"
|
|
42
|
+
Requires-Dist: pymongo>=4.10.0; extra == "db"
|
|
43
|
+
Requires-Dist: oracledb>=2.5.0; extra == "db"
|
|
44
|
+
Provides-Extra: mssql
|
|
45
|
+
Requires-Dist: pyodbc>=5.2.0; extra == "mssql"
|
|
46
|
+
Provides-Extra: graphql
|
|
47
|
+
Requires-Dist: graphql-core>=3.2.5; extra == "graphql"
|
|
48
|
+
Provides-Extra: market
|
|
49
|
+
Requires-Dist: pandas>=2.2.0; extra == "market"
|
|
50
|
+
Requires-Dist: yfinance>=0.2.50; extra == "market"
|
|
51
|
+
Provides-Extra: stream
|
|
52
|
+
Requires-Dist: websockets>=14.0; extra == "stream"
|
|
53
|
+
Dynamic: license-file
|
|
54
|
+
|
|
55
|
+
# Agent Connector SDK
|
|
56
|
+
|
|
57
|
+
<p align="center">
|
|
58
|
+
<img src="docs/assets/brands/agent-connector-sdk-logo-v1.png" alt="Agent Connector SDK logo" width="180">
|
|
59
|
+
</p>
|
|
60
|
+
|
|
61
|
+
<p align="center">
|
|
62
|
+
<b>Build secure connectors once. Serve, synchronize, and write back through one governed contract.</b><br>
|
|
63
|
+
<sub>The typed source-integration boundary for MCP services and Epistemic Graph.</sub>
|
|
64
|
+
</p>
|
|
65
|
+
|
|
66
|
+
[](https://pypi.org/project/agent-connector-sdk/)
|
|
67
|
+
[](https://github.com/Knuckles-Team/agent-connector-sdk/actions/workflows/release.yml)
|
|
68
|
+
[](https://knuckles-team.github.io/agent-connector-sdk/)
|
|
69
|
+
[](https://github.com/Knuckles-Team/agent-connector-sdk/stargazers)
|
|
70
|
+
[](https://github.com/Knuckles-Team/agent-connector-sdk/forks)
|
|
71
|
+
[](https://github.com/Knuckles-Team/agent-connector-sdk/graphs/contributors)
|
|
72
|
+
[](LICENSE)
|
|
73
|
+
[](https://github.com/Knuckles-Team/agent-connector-sdk/commits/main)
|
|
74
|
+
[](https://github.com/Knuckles-Team/agent-connector-sdk/pulls)
|
|
75
|
+
[](https://github.com/Knuckles-Team/agent-connector-sdk/pulls?q=is%3Apr+is%3Aclosed)
|
|
76
|
+
[](https://github.com/Knuckles-Team/agent-connector-sdk/issues)
|
|
77
|
+
[](https://github.com/Knuckles-Team/agent-connector-sdk)
|
|
78
|
+
[](https://github.com/Knuckles-Team/agent-connector-sdk)
|
|
79
|
+
[](https://github.com/Knuckles-Team/agent-connector-sdk)
|
|
80
|
+
[](https://github.com/Knuckles-Team/agent-connector-sdk)
|
|
81
|
+
[](https://pypi.org/project/agent-connector-sdk/)
|
|
82
|
+
[](https://pypi.org/project/agent-connector-sdk/)
|
|
83
|
+
[](https://pypi.org/project/agent-connector-sdk/)
|
|
84
|
+
[](https://pypi.org/project/agent-connector-sdk/)
|
|
85
|
+
|
|
86
|
+
<p align="center">
|
|
87
|
+
<a href="https://knuckles-team.github.io/agent-connector-sdk/">Documentation</a> ·
|
|
88
|
+
<a href="https://knuckles-team.github.io/agent-connector-sdk/capabilities/">Capabilities</a> ·
|
|
89
|
+
<a href="https://knuckles-team.github.io/agent-connector-sdk/extension-ports/">Interfaces</a> ·
|
|
90
|
+
<a href="https://knuckles-team.github.io/agent-connector-sdk/status/">Status</a>
|
|
91
|
+
</p>
|
|
92
|
+
|
|
93
|
+
---
|
|
94
|
+
|
|
95
|
+
## Quick Start
|
|
96
|
+
|
|
97
|
+
Create a project and install the SDK:
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
uv init --bare demo-connector
|
|
101
|
+
cd demo-connector
|
|
102
|
+
uv add agent-connector-sdk
|
|
103
|
+
uv sync
|
|
104
|
+
uv run connector-sync --help
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
The command prints the supervised synchronization options without opening a
|
|
108
|
+
source session. Continue with the
|
|
109
|
+
[connector tutorial](https://knuckles-team.github.io/agent-connector-sdk/tutorial/)
|
|
110
|
+
to build and run a one-file MCP connector, observe its health response, add
|
|
111
|
+
declarative content, certify the live schema, and join source synchronization.
|
|
112
|
+
|
|
113
|
+
## Overview
|
|
114
|
+
|
|
115
|
+
Agent Connector SDK is the ecosystem's source-integration boundary. It turns
|
|
116
|
+
vendor APIs and domain tools into secure MCP connectors, transports bounded
|
|
117
|
+
source evidence into Epistemic Graph, indexes immutable repository snapshots,
|
|
118
|
+
and applies authorized changes back to source systems.
|
|
119
|
+
|
|
120
|
+
Connector packages retain vendor behavior. The SDK owns transport, lifecycle,
|
|
121
|
+
certification, and effect execution. Generated Epistemic Graph contracts own
|
|
122
|
+
durable graph records, checkpoints, content identity, and receipts.
|
|
123
|
+
|
|
124
|
+
Package version: 0.3.1.
|
|
125
|
+
|
|
126
|
+
## Key Capabilities
|
|
127
|
+
|
|
128
|
+
- Build FastMCP servers with authentication, safe exposure, health, visibility,
|
|
129
|
+
rate limits, change subscriptions, and consistent tool surfaces.
|
|
130
|
+
- Publish skills, prompts, ontologies, SHACL shapes, and connector manifests as
|
|
131
|
+
typed MCP content.
|
|
132
|
+
- Extract bounded source pages and advance checkpoints only from matching
|
|
133
|
+
durable Epistemic Graph receipts.
|
|
134
|
+
- Import deterministic ConnectorPack archives without copying graph DTOs or
|
|
135
|
+
digest algorithms into connector packages.
|
|
136
|
+
- Stream authenticated immutable repository snapshots into the generated
|
|
137
|
+
`IndexRepository` boundary without becoming a semantic writer.
|
|
138
|
+
- Govern write-back through dry-run, authorization, source-version checks,
|
|
139
|
+
idempotency, and uncertain-effect reconciliation.
|
|
140
|
+
- Certify extension identity, live MCP schemas, pagination, and safety behavior
|
|
141
|
+
before activation.
|
|
142
|
+
|
|
143
|
+
## Documentation
|
|
144
|
+
|
|
145
|
+
Start with [Build the operator's first connector](https://knuckles-team.github.io/agent-connector-sdk/tutorial/),
|
|
146
|
+
then choose the reference that matches the work:
|
|
147
|
+
|
|
148
|
+
- [Documentation home](https://knuckles-team.github.io/agent-connector-sdk/)
|
|
149
|
+
- [Capabilities](https://knuckles-team.github.io/agent-connector-sdk/capabilities/)
|
|
150
|
+
- [Architecture](https://knuckles-team.github.io/agent-connector-sdk/architecture/)
|
|
151
|
+
- [Connector servers](https://knuckles-team.github.io/agent-connector-sdk/connector-servers/)
|
|
152
|
+
- [Schema disclosure](https://knuckles-team.github.io/agent-connector-sdk/schema-disclosure/)
|
|
153
|
+
- [Source synchronization](https://knuckles-team.github.io/agent-connector-sdk/connector-sync/)
|
|
154
|
+
- [Repository ingestion](https://knuckles-team.github.io/agent-connector-sdk/repository-ingestion/)
|
|
155
|
+
- [Extension interfaces](https://knuckles-team.github.io/agent-connector-sdk/extension-ports/)
|
|
156
|
+
- [Current status](https://knuckles-team.github.io/agent-connector-sdk/status/)
|
|
157
|
+
|
|
158
|
+
Sibling authorities: [Epistemic Graph](https://knuckles-team.github.io/epistemic-graph/)
|
|
159
|
+
owns durable graph state and generated contracts; [Arbora](https://knuckles-team.github.io/arbora/)
|
|
160
|
+
owns authenticated runtime composition.
|
|
161
|
+
|
|
162
|
+
## Architecture
|
|
163
|
+
|
|
164
|
+

|
|
165
|
+
|
|
166
|
+
| Boundary | Owned here | Owned elsewhere |
|
|
167
|
+
|---|---|---|
|
|
168
|
+
| Connector service | MCP lifecycle, exposure policy, content capture, certification | Vendor models and business semantics stay in the connector package. |
|
|
169
|
+
| Source ingest | Discovery, bounded extraction, transport, receipt verification | Epistemic Graph owns mapping, checkpoints, provenance, and commit receipts. |
|
|
170
|
+
| Repository ingest | Authenticated snapshots, stable manifests, bounded object transport | Epistemic Graph owns indexing, graph projection, and semantic interpretation. |
|
|
171
|
+
| Write-back | Preview, source-version checks, apply, and reconciliation | Epistemic Graph owns change sets, authorization decisions, and durable outcomes. |
|
|
172
|
+
| Runtime composition | Typed ports and checked dependency requirements | Arbora supplies authenticated identity, clients, and live authority. |
|
|
173
|
+
|
|
174
|
+
The SDK depends directly on `epistemic-graph>=2.27.0`. Generated SourceIngest,
|
|
175
|
+
ConnectorPack, IndexRepository, and WriteBack clients and models are the graph
|
|
176
|
+
boundary; the SDK adds no parallel graph contract.
|
|
177
|
+
|
|
178
|
+
## Contributing
|
|
179
|
+
|
|
180
|
+
Issues and pull requests are welcome. Follow [AGENTS.md](AGENTS.md) for ownership,
|
|
181
|
+
isolation, and validation rules, and run the affected tests and public-surface
|
|
182
|
+
gates before submitting a change.
|
|
183
|
+
|
|
184
|
+
## License
|
|
185
|
+
|
|
186
|
+
Agent Connector SDK is released under the [MIT License](LICENSE).
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
# Agent Connector SDK
|
|
2
|
+
|
|
3
|
+
<p align="center">
|
|
4
|
+
<img src="docs/assets/brands/agent-connector-sdk-logo-v1.png" alt="Agent Connector SDK logo" width="180">
|
|
5
|
+
</p>
|
|
6
|
+
|
|
7
|
+
<p align="center">
|
|
8
|
+
<b>Build secure connectors once. Serve, synchronize, and write back through one governed contract.</b><br>
|
|
9
|
+
<sub>The typed source-integration boundary for MCP services and Epistemic Graph.</sub>
|
|
10
|
+
</p>
|
|
11
|
+
|
|
12
|
+
[](https://pypi.org/project/agent-connector-sdk/)
|
|
13
|
+
[](https://github.com/Knuckles-Team/agent-connector-sdk/actions/workflows/release.yml)
|
|
14
|
+
[](https://knuckles-team.github.io/agent-connector-sdk/)
|
|
15
|
+
[](https://github.com/Knuckles-Team/agent-connector-sdk/stargazers)
|
|
16
|
+
[](https://github.com/Knuckles-Team/agent-connector-sdk/forks)
|
|
17
|
+
[](https://github.com/Knuckles-Team/agent-connector-sdk/graphs/contributors)
|
|
18
|
+
[](LICENSE)
|
|
19
|
+
[](https://github.com/Knuckles-Team/agent-connector-sdk/commits/main)
|
|
20
|
+
[](https://github.com/Knuckles-Team/agent-connector-sdk/pulls)
|
|
21
|
+
[](https://github.com/Knuckles-Team/agent-connector-sdk/pulls?q=is%3Apr+is%3Aclosed)
|
|
22
|
+
[](https://github.com/Knuckles-Team/agent-connector-sdk/issues)
|
|
23
|
+
[](https://github.com/Knuckles-Team/agent-connector-sdk)
|
|
24
|
+
[](https://github.com/Knuckles-Team/agent-connector-sdk)
|
|
25
|
+
[](https://github.com/Knuckles-Team/agent-connector-sdk)
|
|
26
|
+
[](https://github.com/Knuckles-Team/agent-connector-sdk)
|
|
27
|
+
[](https://pypi.org/project/agent-connector-sdk/)
|
|
28
|
+
[](https://pypi.org/project/agent-connector-sdk/)
|
|
29
|
+
[](https://pypi.org/project/agent-connector-sdk/)
|
|
30
|
+
[](https://pypi.org/project/agent-connector-sdk/)
|
|
31
|
+
|
|
32
|
+
<p align="center">
|
|
33
|
+
<a href="https://knuckles-team.github.io/agent-connector-sdk/">Documentation</a> ·
|
|
34
|
+
<a href="https://knuckles-team.github.io/agent-connector-sdk/capabilities/">Capabilities</a> ·
|
|
35
|
+
<a href="https://knuckles-team.github.io/agent-connector-sdk/extension-ports/">Interfaces</a> ·
|
|
36
|
+
<a href="https://knuckles-team.github.io/agent-connector-sdk/status/">Status</a>
|
|
37
|
+
</p>
|
|
38
|
+
|
|
39
|
+
---
|
|
40
|
+
|
|
41
|
+
## Quick Start
|
|
42
|
+
|
|
43
|
+
Create a project and install the SDK:
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
uv init --bare demo-connector
|
|
47
|
+
cd demo-connector
|
|
48
|
+
uv add agent-connector-sdk
|
|
49
|
+
uv sync
|
|
50
|
+
uv run connector-sync --help
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
The command prints the supervised synchronization options without opening a
|
|
54
|
+
source session. Continue with the
|
|
55
|
+
[connector tutorial](https://knuckles-team.github.io/agent-connector-sdk/tutorial/)
|
|
56
|
+
to build and run a one-file MCP connector, observe its health response, add
|
|
57
|
+
declarative content, certify the live schema, and join source synchronization.
|
|
58
|
+
|
|
59
|
+
## Overview
|
|
60
|
+
|
|
61
|
+
Agent Connector SDK is the ecosystem's source-integration boundary. It turns
|
|
62
|
+
vendor APIs and domain tools into secure MCP connectors, transports bounded
|
|
63
|
+
source evidence into Epistemic Graph, indexes immutable repository snapshots,
|
|
64
|
+
and applies authorized changes back to source systems.
|
|
65
|
+
|
|
66
|
+
Connector packages retain vendor behavior. The SDK owns transport, lifecycle,
|
|
67
|
+
certification, and effect execution. Generated Epistemic Graph contracts own
|
|
68
|
+
durable graph records, checkpoints, content identity, and receipts.
|
|
69
|
+
|
|
70
|
+
Package version: 0.3.1.
|
|
71
|
+
|
|
72
|
+
## Key Capabilities
|
|
73
|
+
|
|
74
|
+
- Build FastMCP servers with authentication, safe exposure, health, visibility,
|
|
75
|
+
rate limits, change subscriptions, and consistent tool surfaces.
|
|
76
|
+
- Publish skills, prompts, ontologies, SHACL shapes, and connector manifests as
|
|
77
|
+
typed MCP content.
|
|
78
|
+
- Extract bounded source pages and advance checkpoints only from matching
|
|
79
|
+
durable Epistemic Graph receipts.
|
|
80
|
+
- Import deterministic ConnectorPack archives without copying graph DTOs or
|
|
81
|
+
digest algorithms into connector packages.
|
|
82
|
+
- Stream authenticated immutable repository snapshots into the generated
|
|
83
|
+
`IndexRepository` boundary without becoming a semantic writer.
|
|
84
|
+
- Govern write-back through dry-run, authorization, source-version checks,
|
|
85
|
+
idempotency, and uncertain-effect reconciliation.
|
|
86
|
+
- Certify extension identity, live MCP schemas, pagination, and safety behavior
|
|
87
|
+
before activation.
|
|
88
|
+
|
|
89
|
+
## Documentation
|
|
90
|
+
|
|
91
|
+
Start with [Build the operator's first connector](https://knuckles-team.github.io/agent-connector-sdk/tutorial/),
|
|
92
|
+
then choose the reference that matches the work:
|
|
93
|
+
|
|
94
|
+
- [Documentation home](https://knuckles-team.github.io/agent-connector-sdk/)
|
|
95
|
+
- [Capabilities](https://knuckles-team.github.io/agent-connector-sdk/capabilities/)
|
|
96
|
+
- [Architecture](https://knuckles-team.github.io/agent-connector-sdk/architecture/)
|
|
97
|
+
- [Connector servers](https://knuckles-team.github.io/agent-connector-sdk/connector-servers/)
|
|
98
|
+
- [Schema disclosure](https://knuckles-team.github.io/agent-connector-sdk/schema-disclosure/)
|
|
99
|
+
- [Source synchronization](https://knuckles-team.github.io/agent-connector-sdk/connector-sync/)
|
|
100
|
+
- [Repository ingestion](https://knuckles-team.github.io/agent-connector-sdk/repository-ingestion/)
|
|
101
|
+
- [Extension interfaces](https://knuckles-team.github.io/agent-connector-sdk/extension-ports/)
|
|
102
|
+
- [Current status](https://knuckles-team.github.io/agent-connector-sdk/status/)
|
|
103
|
+
|
|
104
|
+
Sibling authorities: [Epistemic Graph](https://knuckles-team.github.io/epistemic-graph/)
|
|
105
|
+
owns durable graph state and generated contracts; [Arbora](https://knuckles-team.github.io/arbora/)
|
|
106
|
+
owns authenticated runtime composition.
|
|
107
|
+
|
|
108
|
+
## Architecture
|
|
109
|
+
|
|
110
|
+

|
|
111
|
+
|
|
112
|
+
| Boundary | Owned here | Owned elsewhere |
|
|
113
|
+
|---|---|---|
|
|
114
|
+
| Connector service | MCP lifecycle, exposure policy, content capture, certification | Vendor models and business semantics stay in the connector package. |
|
|
115
|
+
| Source ingest | Discovery, bounded extraction, transport, receipt verification | Epistemic Graph owns mapping, checkpoints, provenance, and commit receipts. |
|
|
116
|
+
| Repository ingest | Authenticated snapshots, stable manifests, bounded object transport | Epistemic Graph owns indexing, graph projection, and semantic interpretation. |
|
|
117
|
+
| Write-back | Preview, source-version checks, apply, and reconciliation | Epistemic Graph owns change sets, authorization decisions, and durable outcomes. |
|
|
118
|
+
| Runtime composition | Typed ports and checked dependency requirements | Arbora supplies authenticated identity, clients, and live authority. |
|
|
119
|
+
|
|
120
|
+
The SDK depends directly on `epistemic-graph>=2.27.0`. Generated SourceIngest,
|
|
121
|
+
ConnectorPack, IndexRepository, and WriteBack clients and models are the graph
|
|
122
|
+
boundary; the SDK adds no parallel graph contract.
|
|
123
|
+
|
|
124
|
+
## Contributing
|
|
125
|
+
|
|
126
|
+
Issues and pull requests are welcome. Follow [AGENTS.md](AGENTS.md) for ownership,
|
|
127
|
+
isolation, and validation rules, and run the affected tests and public-surface
|
|
128
|
+
gates before submitting a change.
|
|
129
|
+
|
|
130
|
+
## License
|
|
131
|
+
|
|
132
|
+
Agent Connector SDK is released under the [MIT License](LICENSE).
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"""agent-connector-sdk: the connector-facing SDK for the agent-packages fleet.
|
|
2
|
+
|
|
3
|
+
Public modules are imported by their own path (``agent_connector_sdk.mcp.server``,
|
|
4
|
+
``agent_connector_sdk.ports`` and so on); this package root deliberately exports
|
|
5
|
+
only the version so that importing it never pulls in the MCP server stack.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
from agent_connector_sdk._version import __version__
|
|
9
|
+
|
|
10
|
+
__all__ = ["__version__"]
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"""Typed field readers for ``ac:AccessContract`` subjects."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from ._turtle import AccessContractError, Term
|
|
6
|
+
from .credentials.references import SecretReferenceError, parse_secret_reference
|
|
7
|
+
|
|
8
|
+
AC = "https://knuckles-team.github.io/agent-connector-sdk/access#"
|
|
9
|
+
ACCESS_KINDS = frozenset({"mcp_tool", "http_endpoint", "graphql_query", "a2a_skill"})
|
|
10
|
+
PAGINATION_MODES = frozenset({"none", "cursor", "offset", "page"})
|
|
11
|
+
PUSHDOWN_OPS = frozenset({"filter", "sort", "limit", "project"})
|
|
12
|
+
COST_HINTS = frozenset({"low", "medium", "high"})
|
|
13
|
+
|
|
14
|
+
Props = dict[str, list[Term]]
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
def _one(props: Props, name: str, subject: str) -> Term | None:
|
|
18
|
+
values = props.get(AC + name, [])
|
|
19
|
+
if len(values) > 1:
|
|
20
|
+
raise AccessContractError(f"{subject}: ac:{name} appears more than once")
|
|
21
|
+
return values[0] if values else None
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
def text(props: Props, name: str, subject: str) -> str:
|
|
25
|
+
"""Return a required non-empty string property."""
|
|
26
|
+
value = _one(props, name, subject)
|
|
27
|
+
if not isinstance(value, str) or not value.strip():
|
|
28
|
+
raise AccessContractError(f"{subject}: missing ac:{name}")
|
|
29
|
+
return value
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
def integer(props: Props, name: str, subject: str) -> int | None:
|
|
33
|
+
"""Return an optional non-negative integer property."""
|
|
34
|
+
value = _one(props, name, subject)
|
|
35
|
+
if value is not None and (not isinstance(value, int) or value < 0):
|
|
36
|
+
raise AccessContractError(
|
|
37
|
+
f"{subject}: ac:{name} must be a non-negative integer"
|
|
38
|
+
)
|
|
39
|
+
return value
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
def choice(
|
|
43
|
+
props: Props,
|
|
44
|
+
name: str,
|
|
45
|
+
subject: str,
|
|
46
|
+
*,
|
|
47
|
+
allowed: frozenset[str],
|
|
48
|
+
default: str | None = None,
|
|
49
|
+
) -> str:
|
|
50
|
+
"""Return a property constrained to ``allowed``; ``default`` makes it optional."""
|
|
51
|
+
raw = _one(props, name, subject) if default is not None else None
|
|
52
|
+
value = text(props, name, subject) if default is None else str(raw or default)
|
|
53
|
+
if value not in allowed:
|
|
54
|
+
raise AccessContractError(f"{subject}: unknown ac:{name} {value!r}")
|
|
55
|
+
return value
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
def pushdown(props: Props, subject: str) -> frozenset[str]:
|
|
59
|
+
"""Return the declared pushdown operations, refusing unknown ones."""
|
|
60
|
+
ops = frozenset(str(op) for op in props.get(AC + "pushdown", []))
|
|
61
|
+
unknown = sorted(ops - PUSHDOWN_OPS)
|
|
62
|
+
if unknown:
|
|
63
|
+
raise AccessContractError(f"{subject}: unknown ac:pushdown {unknown}")
|
|
64
|
+
return ops
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
def parameters(props: Props) -> tuple[str, ...]:
|
|
68
|
+
"""Return the declared operation parameters in sorted order."""
|
|
69
|
+
return tuple(sorted(str(p) for p in props.get(AC + "parameter", [])))
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
def auth_ref(props: Props, subject: str) -> str | None:
|
|
73
|
+
"""Return a rendered credential reference, refusing a literal secret."""
|
|
74
|
+
value = _one(props, "authRef", subject)
|
|
75
|
+
if value is None:
|
|
76
|
+
return None
|
|
77
|
+
try:
|
|
78
|
+
return parse_secret_reference(str(value)).render()
|
|
79
|
+
except SecretReferenceError:
|
|
80
|
+
raise AccessContractError(
|
|
81
|
+
f"{subject}: ac:authRef must be a credential reference, not a secret"
|
|
82
|
+
) from None
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
def bindings(graph: dict[str, Props], contract: str) -> tuple[tuple[str, str], ...]:
|
|
86
|
+
"""Return the sorted (property, field) pairs bound to ``contract``."""
|
|
87
|
+
pairs = []
|
|
88
|
+
for subject, props in graph.items():
|
|
89
|
+
if contract in props.get(AC + "contract", []):
|
|
90
|
+
prop = text(props, "property", subject)
|
|
91
|
+
pairs.append((prop, text(props, "field", subject)))
|
|
92
|
+
return tuple(sorted(pairs))
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"""Clear errors for features that need an optional extra of the base install."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import importlib
|
|
6
|
+
|
|
7
|
+
__all__ = ["require_mcp_extra"]
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
def require_mcp_extra(feature: str) -> None:
|
|
11
|
+
"""Raise ``ImportError`` naming the ``mcp`` extra when fastmcp or mcp is absent."""
|
|
12
|
+
missing = []
|
|
13
|
+
for name in ("fastmcp", "mcp"):
|
|
14
|
+
try:
|
|
15
|
+
importlib.import_module(name)
|
|
16
|
+
except ImportError:
|
|
17
|
+
missing.append(name)
|
|
18
|
+
if missing:
|
|
19
|
+
raise ImportError(
|
|
20
|
+
f"{feature} needs {' and '.join(missing)}, which the base install of "
|
|
21
|
+
'agent-connector-sdk leaves out; install "agent-connector-sdk[mcp]"'
|
|
22
|
+
)
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
"""Flat Turtle reader used by the access-contract parser.
|
|
2
|
+
|
|
3
|
+
It tokenizes one restricted profile (see :mod:`agent_connector_sdk.access_contract`)
|
|
4
|
+
and raises :class:`AccessContractError` on anything outside it.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
from __future__ import annotations
|
|
8
|
+
|
|
9
|
+
import re
|
|
10
|
+
from collections import defaultdict
|
|
11
|
+
|
|
12
|
+
RDF_TYPE = "http://www.w3.org/1999/02/22-rdf-syntax-ns#type"
|
|
13
|
+
|
|
14
|
+
_TOKEN_RE = re.compile(
|
|
15
|
+
r"(?P<ws>\s+|#[^\n]*)"
|
|
16
|
+
r"|(?P<iri><[^<>\s]*>)"
|
|
17
|
+
r'|(?P<str>"(?:[^"\\\n]|\\.)*")'
|
|
18
|
+
r"|(?P<int>-?\d+)"
|
|
19
|
+
r"|(?P<prefix>@prefix)"
|
|
20
|
+
r"|(?P<pname>[A-Za-z_]?[\w-]*:(?:[\w-](?:[\w.-]*[\w-])?)?)"
|
|
21
|
+
r"|(?P<a>a(?=\s))"
|
|
22
|
+
r"|(?P<punct>[;,.])"
|
|
23
|
+
)
|
|
24
|
+
|
|
25
|
+
Term = str | int
|
|
26
|
+
Triple = tuple[str, str, Term]
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
class AccessContractError(ValueError):
|
|
30
|
+
"""A connector ontology declares an invalid access contract."""
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
def _tokens(text: str) -> list[tuple[str, str]]:
|
|
34
|
+
out: list[tuple[str, str]] = []
|
|
35
|
+
pos = 0
|
|
36
|
+
while pos < len(text):
|
|
37
|
+
match = _TOKEN_RE.match(text, pos)
|
|
38
|
+
if match is None or match.end() == pos:
|
|
39
|
+
raise AccessContractError(f"unsupported Turtle at offset {pos}")
|
|
40
|
+
kind = match.lastgroup or ""
|
|
41
|
+
if kind != "ws":
|
|
42
|
+
out.append((kind, match.group()))
|
|
43
|
+
pos = match.end()
|
|
44
|
+
return out
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
class _Reader:
|
|
48
|
+
def __init__(self, text: str) -> None:
|
|
49
|
+
self.toks = _tokens(text)
|
|
50
|
+
self.pos = 0
|
|
51
|
+
self.prefixes: dict[str, str] = {}
|
|
52
|
+
self.triples: list[Triple] = []
|
|
53
|
+
|
|
54
|
+
def next(self) -> tuple[str, str]:
|
|
55
|
+
if self.pos >= len(self.toks):
|
|
56
|
+
raise AccessContractError("unexpected end of Turtle")
|
|
57
|
+
self.pos += 1
|
|
58
|
+
return self.toks[self.pos - 1]
|
|
59
|
+
|
|
60
|
+
def expect(self, value: str) -> None:
|
|
61
|
+
if self.next()[1] != value:
|
|
62
|
+
raise AccessContractError(f"expected {value!r}")
|
|
63
|
+
|
|
64
|
+
def term(self) -> Term:
|
|
65
|
+
kind, value = self.next()
|
|
66
|
+
if kind == "iri":
|
|
67
|
+
return value[1:-1]
|
|
68
|
+
if kind == "a":
|
|
69
|
+
return RDF_TYPE
|
|
70
|
+
if kind == "pname":
|
|
71
|
+
prefix, _, local = value.partition(":")
|
|
72
|
+
if prefix not in self.prefixes:
|
|
73
|
+
raise AccessContractError(f"undeclared prefix {prefix!r}")
|
|
74
|
+
return self.prefixes[prefix] + local
|
|
75
|
+
if kind == "str":
|
|
76
|
+
return value[1:-1].replace('\\"', '"').replace("\\\\", "\\")
|
|
77
|
+
if kind == "int":
|
|
78
|
+
return int(value)
|
|
79
|
+
raise AccessContractError(f"unexpected token {value!r}")
|
|
80
|
+
|
|
81
|
+
def prefix(self) -> None:
|
|
82
|
+
kind, name = self.next()
|
|
83
|
+
iri = self.next()
|
|
84
|
+
if kind != "pname" or not name.endswith(":") or iri[0] != "iri":
|
|
85
|
+
raise AccessContractError("malformed @prefix")
|
|
86
|
+
self.prefixes[name[:-1]] = iri[1][1:-1]
|
|
87
|
+
self.expect(".")
|
|
88
|
+
|
|
89
|
+
def statement(self) -> None:
|
|
90
|
+
subject = str(self.term())
|
|
91
|
+
sep = ";"
|
|
92
|
+
while sep == ";":
|
|
93
|
+
predicate = str(self.term())
|
|
94
|
+
sep = ","
|
|
95
|
+
while sep == ",":
|
|
96
|
+
self.triples.append((subject, predicate, self.term()))
|
|
97
|
+
sep = self.next()[1]
|
|
98
|
+
if sep != ".":
|
|
99
|
+
raise AccessContractError("statement must end with '.'")
|
|
100
|
+
|
|
101
|
+
def read(self) -> list[Triple]:
|
|
102
|
+
while self.pos < len(self.toks):
|
|
103
|
+
if self.toks[self.pos][0] == "prefix":
|
|
104
|
+
self.pos += 1
|
|
105
|
+
self.prefix()
|
|
106
|
+
else:
|
|
107
|
+
self.statement()
|
|
108
|
+
return self.triples
|
|
109
|
+
|
|
110
|
+
|
|
111
|
+
def parse_graph(text: str) -> dict[str, dict[str, list[Term]]]:
|
|
112
|
+
"""Read flat Turtle into a subject -> predicate -> objects index."""
|
|
113
|
+
graph: dict[str, dict[str, list[Term]]] = defaultdict(lambda: defaultdict(list))
|
|
114
|
+
for subject, predicate, obj in _Reader(text).read():
|
|
115
|
+
graph[subject][predicate].append(obj)
|
|
116
|
+
return graph
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"""Agent-to-Agent (A2A) protocol pieces any connector or host can reuse.
|
|
2
|
+
|
|
3
|
+
CONCEPT:SDK-CONNECTOR-CONTROL-R014.21
|
|
4
|
+
|
|
5
|
+
The base install carries the wire models and the JSON-RPC client (pydantic and
|
|
6
|
+
httpx only). The server-side application factory needs the optional ``a2a``
|
|
7
|
+
extra (fasta2a and starlette); a host such as arbora mounts it behind its own
|
|
8
|
+
admission and authentication. Nothing here stores tasks or builds cards from a
|
|
9
|
+
graph: durable task state and graph-derived cards belong to the host.
|
|
10
|
+
"""
|
|
11
|
+
|
|
12
|
+
from __future__ import annotations
|
|
13
|
+
|
|
14
|
+
from typing import Any
|
|
15
|
+
|
|
16
|
+
from .client import A2AClient, A2AResult
|
|
17
|
+
from .models import (
|
|
18
|
+
A2AMessage,
|
|
19
|
+
A2ATask,
|
|
20
|
+
A2ATaskStatus,
|
|
21
|
+
AgentCard,
|
|
22
|
+
AgentSkill,
|
|
23
|
+
TaskState,
|
|
24
|
+
TextPart,
|
|
25
|
+
)
|
|
26
|
+
|
|
27
|
+
__all__ = [
|
|
28
|
+
"A2AClient",
|
|
29
|
+
"A2AMessage",
|
|
30
|
+
"A2AResult",
|
|
31
|
+
"A2ATask",
|
|
32
|
+
"A2ATaskStatus",
|
|
33
|
+
"AgentCard",
|
|
34
|
+
"AgentSkill",
|
|
35
|
+
"TaskState",
|
|
36
|
+
"TextPart",
|
|
37
|
+
"create_a2a_app",
|
|
38
|
+
]
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
def __getattr__(name: str) -> Any:
|
|
42
|
+
if name == "create_a2a_app":
|
|
43
|
+
from .app import create_a2a_app
|
|
44
|
+
|
|
45
|
+
return create_a2a_app
|
|
46
|
+
raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
|