scion-sdk 0.5.6__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (573) hide show
  1. scion_sdk-0.5.6/LICENSE +21 -0
  2. scion_sdk-0.5.6/PKG-INFO +198 -0
  3. scion_sdk-0.5.6/README.md +136 -0
  4. scion_sdk-0.5.6/agent_connector_sdk/__init__.py +23 -0
  5. scion_sdk-0.5.6/agent_connector_sdk/_contract_fields.py +92 -0
  6. scion_sdk-0.5.6/agent_connector_sdk/_extras.py +22 -0
  7. scion_sdk-0.5.6/agent_connector_sdk/_turtle.py +116 -0
  8. scion_sdk-0.5.6/agent_connector_sdk/_version.py +8 -0
  9. scion_sdk-0.5.6/agent_connector_sdk/a2a/__init__.py +46 -0
  10. scion_sdk-0.5.6/agent_connector_sdk/a2a/app.py +83 -0
  11. scion_sdk-0.5.6/agent_connector_sdk/a2a/client.py +117 -0
  12. scion_sdk-0.5.6/agent_connector_sdk/a2a/models.py +112 -0
  13. scion_sdk-0.5.6/agent_connector_sdk/access_contract.py +125 -0
  14. scion_sdk-0.5.6/agent_connector_sdk/adapters/__init__.py +1 -0
  15. scion_sdk-0.5.6/agent_connector_sdk/adapters/document_sources.py +441 -0
  16. scion_sdk-0.5.6/agent_connector_sdk/adapters/event_envelope.py +109 -0
  17. scion_sdk-0.5.6/agent_connector_sdk/adapters/event_errors.py +51 -0
  18. scion_sdk-0.5.6/agent_connector_sdk/adapters/event_feed.py +192 -0
  19. scion_sdk-0.5.6/agent_connector_sdk/adapters/event_feed_bindings.py +27 -0
  20. scion_sdk-0.5.6/agent_connector_sdk/adapters/event_feed_records.py +171 -0
  21. scion_sdk-0.5.6/agent_connector_sdk/adapters/event_identity.py +46 -0
  22. scion_sdk-0.5.6/agent_connector_sdk/adapters/mcp_tool.py +253 -0
  23. scion_sdk-0.5.6/agent_connector_sdk/adapters/mcp_tool_extract.py +130 -0
  24. scion_sdk-0.5.6/agent_connector_sdk/adapters/mcp_tool_fanout.py +198 -0
  25. scion_sdk-0.5.6/agent_connector_sdk/adapters/mcp_tool_lifecycle.py +246 -0
  26. scion_sdk-0.5.6/agent_connector_sdk/adapters/mcp_tool_paging.py +173 -0
  27. scion_sdk-0.5.6/agent_connector_sdk/adapters/mcp_tool_records.py +111 -0
  28. scion_sdk-0.5.6/agent_connector_sdk/adapters/tool_contract.py +77 -0
  29. scion_sdk-0.5.6/agent_connector_sdk/adapters/web_fetch.py +221 -0
  30. scion_sdk-0.5.6/agent_connector_sdk/adapters/web_fetch_helpers.py +73 -0
  31. scion_sdk-0.5.6/agent_connector_sdk/artifacts/__init__.py +17 -0
  32. scion_sdk-0.5.6/agent_connector_sdk/artifacts/annotations.py +109 -0
  33. scion_sdk-0.5.6/agent_connector_sdk/artifacts/common.py +57 -0
  34. scion_sdk-0.5.6/agent_connector_sdk/artifacts/ontology_imports.py +132 -0
  35. scion_sdk-0.5.6/agent_connector_sdk/artifacts/pack.py +199 -0
  36. scion_sdk-0.5.6/agent_connector_sdk/artifacts/prompts.py +129 -0
  37. scion_sdk-0.5.6/agent_connector_sdk/artifacts/prompts_helpers.py +128 -0
  38. scion_sdk-0.5.6/agent_connector_sdk/artifacts/resource_derivation.py +313 -0
  39. scion_sdk-0.5.6/agent_connector_sdk/artifacts/resource_descriptor.py +252 -0
  40. scion_sdk-0.5.6/agent_connector_sdk/artifacts/resources.py +70 -0
  41. scion_sdk-0.5.6/agent_connector_sdk/artifacts/skills.py +64 -0
  42. scion_sdk-0.5.6/agent_connector_sdk/artifacts/tools.py +74 -0
  43. scion_sdk-0.5.6/agent_connector_sdk/auth/__init__.py +22 -0
  44. scion_sdk-0.5.6/agent_connector_sdk/auth/browser.py +570 -0
  45. scion_sdk-0.5.6/agent_connector_sdk/auth/client_credentials.py +165 -0
  46. scion_sdk-0.5.6/agent_connector_sdk/auth/declare.py +393 -0
  47. scion_sdk-0.5.6/agent_connector_sdk/auth/delegation.py +266 -0
  48. scion_sdk-0.5.6/agent_connector_sdk/auth/oidc.py +151 -0
  49. scion_sdk-0.5.6/agent_connector_sdk/auth/refresh_token.py +101 -0
  50. scion_sdk-0.5.6/agent_connector_sdk/auth/rotating.py +117 -0
  51. scion_sdk-0.5.6/agent_connector_sdk/auth/static.py +85 -0
  52. scion_sdk-0.5.6/agent_connector_sdk/auth/tokens.py +96 -0
  53. scion_sdk-0.5.6/agent_connector_sdk/auth/values.py +33 -0
  54. scion_sdk-0.5.6/agent_connector_sdk/certify/__init__.py +1 -0
  55. scion_sdk-0.5.6/agent_connector_sdk/certify/certification.py +102 -0
  56. scion_sdk-0.5.6/agent_connector_sdk/certify/checkout.py +58 -0
  57. scion_sdk-0.5.6/agent_connector_sdk/certify/cli.py +185 -0
  58. scion_sdk-0.5.6/agent_connector_sdk/certify/declared_coverage.py +50 -0
  59. scion_sdk-0.5.6/agent_connector_sdk/certify/fingerprints.py +106 -0
  60. scion_sdk-0.5.6/agent_connector_sdk/certify/listing.py +65 -0
  61. scion_sdk-0.5.6/agent_connector_sdk/certify/options.py +46 -0
  62. scion_sdk-0.5.6/agent_connector_sdk/certify/verdicts.py +90 -0
  63. scion_sdk-0.5.6/agent_connector_sdk/cli.py +27 -0
  64. scion_sdk-0.5.6/agent_connector_sdk/compute/__init__.py +25 -0
  65. scion_sdk-0.5.6/agent_connector_sdk/compute/engine.py +203 -0
  66. scion_sdk-0.5.6/agent_connector_sdk/config.py +274 -0
  67. scion_sdk-0.5.6/agent_connector_sdk/config_git.py +20 -0
  68. scion_sdk-0.5.6/agent_connector_sdk/config_mounts.py +137 -0
  69. scion_sdk-0.5.6/agent_connector_sdk/connector.py +355 -0
  70. scion_sdk-0.5.6/agent_connector_sdk/connector_hooks.py +196 -0
  71. scion_sdk-0.5.6/agent_connector_sdk/connector_identity.py +249 -0
  72. scion_sdk-0.5.6/agent_connector_sdk/contracts.py +146 -0
  73. scion_sdk-0.5.6/agent_connector_sdk/credentials/__init__.py +17 -0
  74. scion_sdk-0.5.6/agent_connector_sdk/credentials/openbao.py +128 -0
  75. scion_sdk-0.5.6/agent_connector_sdk/credentials/provider.py +68 -0
  76. scion_sdk-0.5.6/agent_connector_sdk/credentials/provider_profile.py +315 -0
  77. scion_sdk-0.5.6/agent_connector_sdk/credentials/references.py +93 -0
  78. scion_sdk-0.5.6/agent_connector_sdk/credentials/resolution.py +86 -0
  79. scion_sdk-0.5.6/agent_connector_sdk/credentials/resolver.py +55 -0
  80. scion_sdk-0.5.6/agent_connector_sdk/credentials/runtime_references.py +105 -0
  81. scion_sdk-0.5.6/agent_connector_sdk/credentials/sensitivity.py +111 -0
  82. scion_sdk-0.5.6/agent_connector_sdk/credentials/source.py +487 -0
  83. scion_sdk-0.5.6/agent_connector_sdk/current_plan.py +67 -0
  84. scion_sdk-0.5.6/agent_connector_sdk/data_prep/__init__.py +128 -0
  85. scion_sdk-0.5.6/agent_connector_sdk/data_prep/_base.py +11 -0
  86. scion_sdk-0.5.6/agent_connector_sdk/data_prep/_classification.py +14 -0
  87. scion_sdk-0.5.6/agent_connector_sdk/data_prep/certification/__init__.py +47 -0
  88. scion_sdk-0.5.6/agent_connector_sdk/data_prep/certification/adapters.py +128 -0
  89. scion_sdk-0.5.6/agent_connector_sdk/data_prep/certification/job.py +226 -0
  90. scion_sdk-0.5.6/agent_connector_sdk/data_prep/certification/models.py +242 -0
  91. scion_sdk-0.5.6/agent_connector_sdk/data_prep/kernel.py +1285 -0
  92. scion_sdk-0.5.6/agent_connector_sdk/data_prep/models.py +516 -0
  93. scion_sdk-0.5.6/agent_connector_sdk/data_prep/profiling.py +178 -0
  94. scion_sdk-0.5.6/agent_connector_sdk/decide/__init__.py +110 -0
  95. scion_sdk-0.5.6/agent_connector_sdk/decide/consumers.py +115 -0
  96. scion_sdk-0.5.6/agent_connector_sdk/decide/epistemic_graph.py +190 -0
  97. scion_sdk-0.5.6/agent_connector_sdk/decide/options.py +78 -0
  98. scion_sdk-0.5.6/agent_connector_sdk/decide/outcome.py +137 -0
  99. scion_sdk-0.5.6/agent_connector_sdk/decide/points.py +121 -0
  100. scion_sdk-0.5.6/agent_connector_sdk/decide/transport.py +120 -0
  101. scion_sdk-0.5.6/agent_connector_sdk/discovery.py +170 -0
  102. scion_sdk-0.5.6/agent_connector_sdk/earth_observations/__init__.py +8 -0
  103. scion_sdk-0.5.6/agent_connector_sdk/earth_observations/records.py +113 -0
  104. scion_sdk-0.5.6/agent_connector_sdk/embeddings.py +264 -0
  105. scion_sdk-0.5.6/agent_connector_sdk/entitlements.py +217 -0
  106. scion_sdk-0.5.6/agent_connector_sdk/exceptions.py +69 -0
  107. scion_sdk-0.5.6/agent_connector_sdk/exposure.py +22 -0
  108. scion_sdk-0.5.6/agent_connector_sdk/file_lock.py +263 -0
  109. scion_sdk-0.5.6/agent_connector_sdk/finance/__init__.py +7 -0
  110. scion_sdk-0.5.6/agent_connector_sdk/finance/account.py +79 -0
  111. scion_sdk-0.5.6/agent_connector_sdk/finance/alpaca_account.py +71 -0
  112. scion_sdk-0.5.6/agent_connector_sdk/finance/alpaca_stocks.py +107 -0
  113. scion_sdk-0.5.6/agent_connector_sdk/finance/banking.py +206 -0
  114. scion_sdk-0.5.6/agent_connector_sdk/finance/central_bank_calendar.py +106 -0
  115. scion_sdk-0.5.6/agent_connector_sdk/finance/crypto.py +99 -0
  116. scion_sdk-0.5.6/agent_connector_sdk/finance/csv_import.py +189 -0
  117. scion_sdk-0.5.6/agent_connector_sdk/finance/errors.py +29 -0
  118. scion_sdk-0.5.6/agent_connector_sdk/finance/etf_flows.py +89 -0
  119. scion_sdk-0.5.6/agent_connector_sdk/finance/feeds.py +244 -0
  120. scion_sdk-0.5.6/agent_connector_sdk/finance/fred_series.py +109 -0
  121. scion_sdk-0.5.6/agent_connector_sdk/finance/market_data.py +286 -0
  122. scion_sdk-0.5.6/agent_connector_sdk/finance/multi_asset.py +103 -0
  123. scion_sdk-0.5.6/agent_connector_sdk/finance/records.py +134 -0
  124. scion_sdk-0.5.6/agent_connector_sdk/finance/strategy_export.py +297 -0
  125. scion_sdk-0.5.6/agent_connector_sdk/http/__init__.py +20 -0
  126. scion_sdk-0.5.6/agent_connector_sdk/http/bodies.py +81 -0
  127. scion_sdk-0.5.6/agent_connector_sdk/http/client.py +142 -0
  128. scion_sdk-0.5.6/agent_connector_sdk/http/egress.py +508 -0
  129. scion_sdk-0.5.6/agent_connector_sdk/http/errors.py +136 -0
  130. scion_sdk-0.5.6/agent_connector_sdk/http/flow.py +112 -0
  131. scion_sdk-0.5.6/agent_connector_sdk/http/options.py +124 -0
  132. scion_sdk-0.5.6/agent_connector_sdk/http/pagination.py +139 -0
  133. scion_sdk-0.5.6/agent_connector_sdk/http/problems.py +126 -0
  134. scion_sdk-0.5.6/agent_connector_sdk/http/redaction.py +54 -0
  135. scion_sdk-0.5.6/agent_connector_sdk/http/responses.py +112 -0
  136. scion_sdk-0.5.6/agent_connector_sdk/http/retry.py +145 -0
  137. scion_sdk-0.5.6/agent_connector_sdk/http/safe_post.py +70 -0
  138. scion_sdk-0.5.6/agent_connector_sdk/http/support.py +453 -0
  139. scion_sdk-0.5.6/agent_connector_sdk/http/transport.py +136 -0
  140. scion_sdk-0.5.6/agent_connector_sdk/httpsupport/__init__.py +11 -0
  141. scion_sdk-0.5.6/agent_connector_sdk/httpsupport/auth.py +137 -0
  142. scion_sdk-0.5.6/agent_connector_sdk/httpsupport/client_protocol.py +176 -0
  143. scion_sdk-0.5.6/agent_connector_sdk/httpsupport/pagination.py +434 -0
  144. scion_sdk-0.5.6/agent_connector_sdk/httpsupport/rate_limit.py +246 -0
  145. scion_sdk-0.5.6/agent_connector_sdk/httpsupport/redaction.py +145 -0
  146. scion_sdk-0.5.6/agent_connector_sdk/identifiers.py +55 -0
  147. scion_sdk-0.5.6/agent_connector_sdk/identity.py +87 -0
  148. scion_sdk-0.5.6/agent_connector_sdk/ingest/__init__.py +162 -0
  149. scion_sdk-0.5.6/agent_connector_sdk/ingest/channel.py +64 -0
  150. scion_sdk-0.5.6/agent_connector_sdk/ingest/engine.py +170 -0
  151. scion_sdk-0.5.6/agent_connector_sdk/ingest/errors.py +17 -0
  152. scion_sdk-0.5.6/agent_connector_sdk/ingest/for_each.py +67 -0
  153. scion_sdk-0.5.6/agent_connector_sdk/ingest/live_declaration.py +298 -0
  154. scion_sdk-0.5.6/agent_connector_sdk/ingest/mapping.py +272 -0
  155. scion_sdk-0.5.6/agent_connector_sdk/ingest/model.py +196 -0
  156. scion_sdk-0.5.6/agent_connector_sdk/ingest/paging.py +143 -0
  157. scion_sdk-0.5.6/agent_connector_sdk/ingest/privacy.py +122 -0
  158. scion_sdk-0.5.6/agent_connector_sdk/ingest/records.py +48 -0
  159. scion_sdk-0.5.6/agent_connector_sdk/ingest/request.py +227 -0
  160. scion_sdk-0.5.6/agent_connector_sdk/ingest/service.py +196 -0
  161. scion_sdk-0.5.6/agent_connector_sdk/ingest/source_sync.py +671 -0
  162. scion_sdk-0.5.6/agent_connector_sdk/ingest/sources.py +126 -0
  163. scion_sdk-0.5.6/agent_connector_sdk/ingest/stream.py +424 -0
  164. scion_sdk-0.5.6/agent_connector_sdk/ingest/tools.py +126 -0
  165. scion_sdk-0.5.6/agent_connector_sdk/ingest/transport.py +82 -0
  166. scion_sdk-0.5.6/agent_connector_sdk/library_state.py +76 -0
  167. scion_sdk-0.5.6/agent_connector_sdk/manifest/__init__.py +1 -0
  168. scion_sdk-0.5.6/agent_connector_sdk/manifest/declaration.py +123 -0
  169. scion_sdk-0.5.6/agent_connector_sdk/manifest/live_contract.py +229 -0
  170. scion_sdk-0.5.6/agent_connector_sdk/manifest/model.py +64 -0
  171. scion_sdk-0.5.6/agent_connector_sdk/manifest/presets.py +272 -0
  172. scion_sdk-0.5.6/agent_connector_sdk/manifest/provider_runtime.py +64 -0
  173. scion_sdk-0.5.6/agent_connector_sdk/manifest/tool_schema.py +174 -0
  174. scion_sdk-0.5.6/agent_connector_sdk/mcp/__init__.py +9 -0
  175. scion_sdk-0.5.6/agent_connector_sdk/mcp/action_dispatch.py +235 -0
  176. scion_sdk-0.5.6/agent_connector_sdk/mcp/action_split.py +753 -0
  177. scion_sdk-0.5.6/agent_connector_sdk/mcp/auth/__init__.py +14 -0
  178. scion_sdk-0.5.6/agent_connector_sdk/mcp/auth/factory.py +60 -0
  179. scion_sdk-0.5.6/agent_connector_sdk/mcp/auth/jwt.py +140 -0
  180. scion_sdk-0.5.6/agent_connector_sdk/mcp/auth/policy.py +103 -0
  181. scion_sdk-0.5.6/agent_connector_sdk/mcp/auth/proxies.py +127 -0
  182. scion_sdk-0.5.6/agent_connector_sdk/mcp/auth/static.py +113 -0
  183. scion_sdk-0.5.6/agent_connector_sdk/mcp/auth/verifiers.py +74 -0
  184. scion_sdk-0.5.6/agent_connector_sdk/mcp/body_boundary.py +99 -0
  185. scion_sdk-0.5.6/agent_connector_sdk/mcp/change_events.py +78 -0
  186. scion_sdk-0.5.6/agent_connector_sdk/mcp/concurrency.py +98 -0
  187. scion_sdk-0.5.6/agent_connector_sdk/mcp/confirmation.py +141 -0
  188. scion_sdk-0.5.6/agent_connector_sdk/mcp/content.py +322 -0
  189. scion_sdk-0.5.6/agent_connector_sdk/mcp/context.py +145 -0
  190. scion_sdk-0.5.6/agent_connector_sdk/mcp/env_drift.py +619 -0
  191. scion_sdk-0.5.6/agent_connector_sdk/mcp/exposure.py +7 -0
  192. scion_sdk-0.5.6/agent_connector_sdk/mcp/graphql.py +107 -0
  193. scion_sdk-0.5.6/agent_connector_sdk/mcp/http_boundary.py +126 -0
  194. scion_sdk-0.5.6/agent_connector_sdk/mcp/method_tools.py +655 -0
  195. scion_sdk-0.5.6/agent_connector_sdk/mcp/middleware.py +51 -0
  196. scion_sdk-0.5.6/agent_connector_sdk/mcp/network.py +225 -0
  197. scion_sdk-0.5.6/agent_connector_sdk/mcp/network_inputs.py +197 -0
  198. scion_sdk-0.5.6/agent_connector_sdk/mcp/network_validation.py +133 -0
  199. scion_sdk-0.5.6/agent_connector_sdk/mcp/parser.py +134 -0
  200. scion_sdk-0.5.6/agent_connector_sdk/mcp/registry.py +162 -0
  201. scion_sdk-0.5.6/agent_connector_sdk/mcp/schema_disclosure.py +157 -0
  202. scion_sdk-0.5.6/agent_connector_sdk/mcp/schema_disclosure_models.py +62 -0
  203. scion_sdk-0.5.6/agent_connector_sdk/mcp/schema_disclosure_provider.py +112 -0
  204. scion_sdk-0.5.6/agent_connector_sdk/mcp/served_security.py +166 -0
  205. scion_sdk-0.5.6/agent_connector_sdk/mcp/server.py +187 -0
  206. scion_sdk-0.5.6/agent_connector_sdk/mcp/tool_surface.py +443 -0
  207. scion_sdk-0.5.6/agent_connector_sdk/mcp/versioning.py +33 -0
  208. scion_sdk-0.5.6/agent_connector_sdk/mcp/visibility.py +62 -0
  209. scion_sdk-0.5.6/agent_connector_sdk/mcp/visibility_filters.py +61 -0
  210. scion_sdk-0.5.6/agent_connector_sdk/mcp/visibility_policy.py +148 -0
  211. scion_sdk-0.5.6/agent_connector_sdk/ontology/access_contract.ttl +50 -0
  212. scion_sdk-0.5.6/agent_connector_sdk/paths.py +185 -0
  213. scion_sdk-0.5.6/agent_connector_sdk/payments.py +289 -0
  214. scion_sdk-0.5.6/agent_connector_sdk/ports/__init__.py +21 -0
  215. scion_sdk-0.5.6/agent_connector_sdk/ports/artifact_kind.py +27 -0
  216. scion_sdk-0.5.6/agent_connector_sdk/ports/audit_reservation.py +26 -0
  217. scion_sdk-0.5.6/agent_connector_sdk/ports/authorization_verifier.py +23 -0
  218. scion_sdk-0.5.6/agent_connector_sdk/ports/change_source.py +43 -0
  219. scion_sdk-0.5.6/agent_connector_sdk/ports/connector_registry.py +30 -0
  220. scion_sdk-0.5.6/agent_connector_sdk/ports/decide_runner.py +80 -0
  221. scion_sdk-0.5.6/agent_connector_sdk/ports/errors.py +39 -0
  222. scion_sdk-0.5.6/agent_connector_sdk/ports/repair_proposals.py +28 -0
  223. scion_sdk-0.5.6/agent_connector_sdk/ports/session.py +103 -0
  224. scion_sdk-0.5.6/agent_connector_sdk/ports/sink.py +59 -0
  225. scion_sdk-0.5.6/agent_connector_sdk/ports/source_adapter.py +44 -0
  226. scion_sdk-0.5.6/agent_connector_sdk/ports/transport.py +23 -0
  227. scion_sdk-0.5.6/agent_connector_sdk/ports/web_source.py +318 -0
  228. scion_sdk-0.5.6/agent_connector_sdk/ports/writeback.py +36 -0
  229. scion_sdk-0.5.6/agent_connector_sdk/ports/writeback_ledger.py +50 -0
  230. scion_sdk-0.5.6/agent_connector_sdk/ports/writeback_transport.py +46 -0
  231. scion_sdk-0.5.6/agent_connector_sdk/privacy.py +169 -0
  232. scion_sdk-0.5.6/agent_connector_sdk/privacy_pii.py +82 -0
  233. scion_sdk-0.5.6/agent_connector_sdk/privacy_reference.py +44 -0
  234. scion_sdk-0.5.6/agent_connector_sdk/privacy_rules.py +251 -0
  235. scion_sdk-0.5.6/agent_connector_sdk/progress.py +38 -0
  236. scion_sdk-0.5.6/agent_connector_sdk/py.typed +0 -0
  237. scion_sdk-0.5.6/agent_connector_sdk/repository/__init__.py +54 -0
  238. scion_sdk-0.5.6/agent_connector_sdk/repository/errors.py +7 -0
  239. scion_sdk-0.5.6/agent_connector_sdk/repository/identity.py +43 -0
  240. scion_sdk-0.5.6/agent_connector_sdk/repository/indexing.py +107 -0
  241. scion_sdk-0.5.6/agent_connector_sdk/repository/local_git.py +178 -0
  242. scion_sdk-0.5.6/agent_connector_sdk/repository/manifest.py +65 -0
  243. scion_sdk-0.5.6/agent_connector_sdk/repository/models.py +163 -0
  244. scion_sdk-0.5.6/agent_connector_sdk/repository/provider.py +37 -0
  245. scion_sdk-0.5.6/agent_connector_sdk/repository/ref_walk_provider.py +42 -0
  246. scion_sdk-0.5.6/agent_connector_sdk/repository/refs.py +59 -0
  247. scion_sdk-0.5.6/agent_connector_sdk/repository/transport.py +144 -0
  248. scion_sdk-0.5.6/agent_connector_sdk/repository/tree_batch.py +117 -0
  249. scion_sdk-0.5.6/agent_connector_sdk/repository/walk.py +104 -0
  250. scion_sdk-0.5.6/agent_connector_sdk/runner/__init__.py +16 -0
  251. scion_sdk-0.5.6/agent_connector_sdk/runner/backoff.py +26 -0
  252. scion_sdk-0.5.6/agent_connector_sdk/runner/cli.py +189 -0
  253. scion_sdk-0.5.6/agent_connector_sdk/runner/composition.py +212 -0
  254. scion_sdk-0.5.6/agent_connector_sdk/runner/credentialed_endpoint.py +31 -0
  255. scion_sdk-0.5.6/agent_connector_sdk/runner/descriptors.py +107 -0
  256. scion_sdk-0.5.6/agent_connector_sdk/runner/endpoints.py +99 -0
  257. scion_sdk-0.5.6/agent_connector_sdk/runner/errors.py +57 -0
  258. scion_sdk-0.5.6/agent_connector_sdk/runner/health_reporting.py +58 -0
  259. scion_sdk-0.5.6/agent_connector_sdk/runner/health_server.py +142 -0
  260. scion_sdk-0.5.6/agent_connector_sdk/runner/health_state.py +185 -0
  261. scion_sdk-0.5.6/agent_connector_sdk/runner/logs.py +53 -0
  262. scion_sdk-0.5.6/agent_connector_sdk/runner/plans.py +196 -0
  263. scion_sdk-0.5.6/agent_connector_sdk/runner/provisioning.py +85 -0
  264. scion_sdk-0.5.6/agent_connector_sdk/runner/services.py +34 -0
  265. scion_sdk-0.5.6/agent_connector_sdk/runner/sink_probe.py +25 -0
  266. scion_sdk-0.5.6/agent_connector_sdk/runner/static_registry.py +63 -0
  267. scion_sdk-0.5.6/agent_connector_sdk/runner/supervisor.py +126 -0
  268. scion_sdk-0.5.6/agent_connector_sdk/runner/syncing.py +226 -0
  269. scion_sdk-0.5.6/agent_connector_sdk/runner/worker.py +203 -0
  270. scion_sdk-0.5.6/agent_connector_sdk/schema_contract.py +108 -0
  271. scion_sdk-0.5.6/agent_connector_sdk/schema_drift.py +202 -0
  272. scion_sdk-0.5.6/agent_connector_sdk/schema_repair.py +61 -0
  273. scion_sdk-0.5.6/agent_connector_sdk/signing.py +110 -0
  274. scion_sdk-0.5.6/agent_connector_sdk/sinks/__init__.py +1 -0
  275. scion_sdk-0.5.6/agent_connector_sdk/sinks/epistemic_graph.py +198 -0
  276. scion_sdk-0.5.6/agent_connector_sdk/skills/__init__.py +9 -0
  277. scion_sdk-0.5.6/agent_connector_sdk/skills/agent-connector-sdk-development/SKILL.md +203 -0
  278. scion_sdk-0.5.6/agent_connector_sdk/source_connectors/__init__.py +71 -0
  279. scion_sdk-0.5.6/agent_connector_sdk/source_connectors/base.py +224 -0
  280. scion_sdk-0.5.6/agent_connector_sdk/source_connectors/checkpoint.py +73 -0
  281. scion_sdk-0.5.6/agent_connector_sdk/source_connectors/connectors/__init__.py +21 -0
  282. scion_sdk-0.5.6/agent_connector_sdk/source_connectors/connectors/arxiv.py +294 -0
  283. scion_sdk-0.5.6/agent_connector_sdk/source_connectors/connectors/database.py +350 -0
  284. scion_sdk-0.5.6/agent_connector_sdk/source_connectors/connectors/graphql_document.py +2943 -0
  285. scion_sdk-0.5.6/agent_connector_sdk/source_connectors/connectors/mcp_package.py +326 -0
  286. scion_sdk-0.5.6/agent_connector_sdk/source_connectors/connectors/package_manifest.py +262 -0
  287. scion_sdk-0.5.6/agent_connector_sdk/source_connectors/connectors/rest.py +259 -0
  288. scion_sdk-0.5.6/agent_connector_sdk/source_connectors/connectors/rss.py +252 -0
  289. scion_sdk-0.5.6/agent_connector_sdk/source_connectors/connectors/web.py +195 -0
  290. scion_sdk-0.5.6/agent_connector_sdk/source_connectors/http_safety.py +1114 -0
  291. scion_sdk-0.5.6/agent_connector_sdk/source_connectors/registry.py +173 -0
  292. scion_sdk-0.5.6/agent_connector_sdk/source_connectors/universal.py +977 -0
  293. scion_sdk-0.5.6/agent_connector_sdk/streaming.py +271 -0
  294. scion_sdk-0.5.6/agent_connector_sdk/taxonomy/__init__.py +8 -0
  295. scion_sdk-0.5.6/agent_connector_sdk/taxonomy/records.py +78 -0
  296. scion_sdk-0.5.6/agent_connector_sdk/testing/__init__.py +19 -0
  297. scion_sdk-0.5.6/agent_connector_sdk/testing/artifact_kinds.py +125 -0
  298. scion_sdk-0.5.6/agent_connector_sdk/testing/certificates.py +113 -0
  299. scion_sdk-0.5.6/agent_connector_sdk/testing/conformance.py +287 -0
  300. scion_sdk-0.5.6/agent_connector_sdk/testing/duplicate_symbol_scan.py +88 -0
  301. scion_sdk-0.5.6/agent_connector_sdk/testing/fleet_migration.py +106 -0
  302. scion_sdk-0.5.6/agent_connector_sdk/testing/http_clients.py +144 -0
  303. scion_sdk-0.5.6/agent_connector_sdk/testing/http_server.py +198 -0
  304. scion_sdk-0.5.6/agent_connector_sdk/testing/ontology_rollup.py +80 -0
  305. scion_sdk-0.5.6/agent_connector_sdk/testing/plugin.py +85 -0
  306. scion_sdk-0.5.6/agent_connector_sdk/testing/readiness.py +10 -0
  307. scion_sdk-0.5.6/agent_connector_sdk/testing/repair_proposals.py +27 -0
  308. scion_sdk-0.5.6/agent_connector_sdk/testing/results.py +41 -0
  309. scion_sdk-0.5.6/agent_connector_sdk/testing/sinks.py +278 -0
  310. scion_sdk-0.5.6/agent_connector_sdk/testing/source_adapters.py +174 -0
  311. scion_sdk-0.5.6/agent_connector_sdk/testing/web_source_conformance.py +250 -0
  312. scion_sdk-0.5.6/agent_connector_sdk/testing/writeback.py +219 -0
  313. scion_sdk-0.5.6/agent_connector_sdk/testing/writeback_audit.py +41 -0
  314. scion_sdk-0.5.6/agent_connector_sdk/tls/__init__.py +16 -0
  315. scion_sdk-0.5.6/agent_connector_sdk/tls/context.py +62 -0
  316. scion_sdk-0.5.6/agent_connector_sdk/tls/errors.py +13 -0
  317. scion_sdk-0.5.6/agent_connector_sdk/tls/material.py +108 -0
  318. scion_sdk-0.5.6/agent_connector_sdk/tls/profile.py +116 -0
  319. scion_sdk-0.5.6/agent_connector_sdk/tls/resolve.py +244 -0
  320. scion_sdk-0.5.6/agent_connector_sdk/tls/selection.py +205 -0
  321. scion_sdk-0.5.6/agent_connector_sdk/transports/__init__.py +1 -0
  322. scion_sdk-0.5.6/agent_connector_sdk/transports/graphql.py +329 -0
  323. scion_sdk-0.5.6/agent_connector_sdk/transports/mcp.py +91 -0
  324. scion_sdk-0.5.6/agent_connector_sdk/transports/mcp_changes.py +130 -0
  325. scion_sdk-0.5.6/agent_connector_sdk/transports/mcp_session.py +140 -0
  326. scion_sdk-0.5.6/agent_connector_sdk/utilities.py +134 -0
  327. scion_sdk-0.5.6/agent_connector_sdk/vendor_extractors/__init__.py +36 -0
  328. scion_sdk-0.5.6/agent_connector_sdk/vendor_extractors/_records.py +66 -0
  329. scion_sdk-0.5.6/agent_connector_sdk/vendor_extractors/a2a.py +125 -0
  330. scion_sdk-0.5.6/agent_connector_sdk/vendor_extractors/a2a_helpers.py +101 -0
  331. scion_sdk-0.5.6/agent_connector_sdk/vendor_extractors/ansible.py +70 -0
  332. scion_sdk-0.5.6/agent_connector_sdk/vendor_extractors/archer.py +118 -0
  333. scion_sdk-0.5.6/agent_connector_sdk/vendor_extractors/archimate.py +103 -0
  334. scion_sdk-0.5.6/agent_connector_sdk/vendor_extractors/aris.py +110 -0
  335. scion_sdk-0.5.6/agent_connector_sdk/vendor_extractors/caddy.py +93 -0
  336. scion_sdk-0.5.6/agent_connector_sdk/vendor_extractors/camunda.py +169 -0
  337. scion_sdk-0.5.6/agent_connector_sdk/vendor_extractors/ciso_assistant.py +167 -0
  338. scion_sdk-0.5.6/agent_connector_sdk/vendor_extractors/ciso_assistant_helpers.py +73 -0
  339. scion_sdk-0.5.6/agent_connector_sdk/vendor_extractors/contract.py +97 -0
  340. scion_sdk-0.5.6/agent_connector_sdk/vendor_extractors/egeria.py +254 -0
  341. scion_sdk-0.5.6/agent_connector_sdk/vendor_extractors/egeria_helpers.py +79 -0
  342. scion_sdk-0.5.6/agent_connector_sdk/vendor_extractors/emerald.py +126 -0
  343. scion_sdk-0.5.6/agent_connector_sdk/vendor_extractors/erpnext.py +113 -0
  344. scion_sdk-0.5.6/agent_connector_sdk/vendor_extractors/erpnext_helpers.py +196 -0
  345. scion_sdk-0.5.6/agent_connector_sdk/vendor_extractors/grafana.py +152 -0
  346. scion_sdk-0.5.6/agent_connector_sdk/vendor_extractors/grafana_helpers.py +50 -0
  347. scion_sdk-0.5.6/agent_connector_sdk/vendor_extractors/home_assistant.py +86 -0
  348. scion_sdk-0.5.6/agent_connector_sdk/vendor_extractors/infra.py +105 -0
  349. scion_sdk-0.5.6/agent_connector_sdk/vendor_extractors/infra_helpers.py +95 -0
  350. scion_sdk-0.5.6/agent_connector_sdk/vendor_extractors/kafka.py +98 -0
  351. scion_sdk-0.5.6/agent_connector_sdk/vendor_extractors/keycloak.py +121 -0
  352. scion_sdk-0.5.6/agent_connector_sdk/vendor_extractors/leanix.py +226 -0
  353. scion_sdk-0.5.6/agent_connector_sdk/vendor_extractors/lgtm.py +129 -0
  354. scion_sdk-0.5.6/agent_connector_sdk/vendor_extractors/mealie.py +128 -0
  355. scion_sdk-0.5.6/agent_connector_sdk/vendor_extractors/microsoft.py +106 -0
  356. scion_sdk-0.5.6/agent_connector_sdk/vendor_extractors/nextcloud.py +136 -0
  357. scion_sdk-0.5.6/agent_connector_sdk/vendor_extractors/odoo.py +127 -0
  358. scion_sdk-0.5.6/agent_connector_sdk/vendor_extractors/okta.py +161 -0
  359. scion_sdk-0.5.6/agent_connector_sdk/vendor_extractors/portainer.py +136 -0
  360. scion_sdk-0.5.6/agent_connector_sdk/vendor_extractors/salesforce.py +102 -0
  361. scion_sdk-0.5.6/agent_connector_sdk/vendor_extractors/servicenow.py +163 -0
  362. scion_sdk-0.5.6/agent_connector_sdk/vendor_extractors/servicenow_helpers.py +111 -0
  363. scion_sdk-0.5.6/agent_connector_sdk/vendor_extractors/social.py +201 -0
  364. scion_sdk-0.5.6/agent_connector_sdk/vendor_extractors/technitium_dns.py +111 -0
  365. scion_sdk-0.5.6/agent_connector_sdk/vendor_extractors/twenty.py +122 -0
  366. scion_sdk-0.5.6/agent_connector_sdk/vendor_extractors/twenty_helpers.py +88 -0
  367. scion_sdk-0.5.6/agent_connector_sdk/vendor_extractors/uptime_kuma.py +74 -0
  368. scion_sdk-0.5.6/agent_connector_sdk/vendor_extractors/wger.py +140 -0
  369. scion_sdk-0.5.6/agent_connector_sdk/voice_supply_chain/__init__.py +14 -0
  370. scion_sdk-0.5.6/agent_connector_sdk/voice_supply_chain/license_registry.py +110 -0
  371. scion_sdk-0.5.6/agent_connector_sdk/voice_supply_chain/manifest.py +178 -0
  372. scion_sdk-0.5.6/agent_connector_sdk/voice_supply_chain/store.py +14 -0
  373. scion_sdk-0.5.6/agent_connector_sdk/writeback/__init__.py +1 -0
  374. scion_sdk-0.5.6/agent_connector_sdk/writeback/authorization.py +95 -0
  375. scion_sdk-0.5.6/agent_connector_sdk/writeback/connector.py +122 -0
  376. scion_sdk-0.5.6/agent_connector_sdk/writeback/durable_files.py +33 -0
  377. scion_sdk-0.5.6/agent_connector_sdk/writeback/durable_ledger.py +151 -0
  378. scion_sdk-0.5.6/agent_connector_sdk/writeback/durable_transport.py +167 -0
  379. scion_sdk-0.5.6/agent_connector_sdk/writeback/epistemic_graph.py +121 -0
  380. scion_sdk-0.5.6/agent_connector_sdk/writeback/errors.py +56 -0
  381. scion_sdk-0.5.6/agent_connector_sdk/writeback/memory.py +184 -0
  382. scion_sdk-0.5.6/agent_connector_sdk/writeback/models.py +33 -0
  383. scion_sdk-0.5.6/agent_connector_sdk/writeback/recovery.py +175 -0
  384. scion_sdk-0.5.6/agent_connector_sdk/writeback/service.py +152 -0
  385. scion_sdk-0.5.6/agent_connector_sdk/writeback/validation.py +97 -0
  386. scion_sdk-0.5.6/agent_connector_sdk/writeback_sinks/__init__.py +63 -0
  387. scion_sdk-0.5.6/agent_connector_sdk/writeback_sinks/_env.py +66 -0
  388. scion_sdk-0.5.6/agent_connector_sdk/writeback_sinks/core.py +506 -0
  389. scion_sdk-0.5.6/agent_connector_sdk/writeback_sinks/governed.py +420 -0
  390. scion_sdk-0.5.6/agent_connector_sdk/writeback_sinks/models.py +15 -0
  391. scion_sdk-0.5.6/agent_connector_sdk/writeback_sinks/sinks/__init__.py +1 -0
  392. scion_sdk-0.5.6/agent_connector_sdk/writeback_sinks/sinks/ansible.py +64 -0
  393. scion_sdk-0.5.6/agent_connector_sdk/writeback_sinks/sinks/archimate.py +93 -0
  394. scion_sdk-0.5.6/agent_connector_sdk/writeback_sinks/sinks/capability.py +215 -0
  395. scion_sdk-0.5.6/agent_connector_sdk/writeback_sinks/sinks/ciso_assistant.py +95 -0
  396. scion_sdk-0.5.6/agent_connector_sdk/writeback_sinks/sinks/egeria.py +92 -0
  397. scion_sdk-0.5.6/agent_connector_sdk/writeback_sinks/sinks/emerald.py +103 -0
  398. scion_sdk-0.5.6/agent_connector_sdk/writeback_sinks/sinks/erpnext.py +144 -0
  399. scion_sdk-0.5.6/agent_connector_sdk/writeback_sinks/sinks/home_assistant.py +74 -0
  400. scion_sdk-0.5.6/agent_connector_sdk/writeback_sinks/sinks/identity.py +158 -0
  401. scion_sdk-0.5.6/agent_connector_sdk/writeback_sinks/sinks/issue_tracker.py +258 -0
  402. scion_sdk-0.5.6/agent_connector_sdk/writeback_sinks/sinks/leanix.py +195 -0
  403. scion_sdk-0.5.6/agent_connector_sdk/writeback_sinks/sinks/legal.py +81 -0
  404. scion_sdk-0.5.6/agent_connector_sdk/writeback_sinks/sinks/mealie.py +90 -0
  405. scion_sdk-0.5.6/agent_connector_sdk/writeback_sinks/sinks/nextcloud.py +108 -0
  406. scion_sdk-0.5.6/agent_connector_sdk/writeback_sinks/sinks/ops.py +155 -0
  407. scion_sdk-0.5.6/agent_connector_sdk/writeback_sinks/sinks/process.py +438 -0
  408. scion_sdk-0.5.6/agent_connector_sdk/writeback_sinks/sinks/salesforce.py +98 -0
  409. scion_sdk-0.5.6/agent_connector_sdk/writeback_sinks/sinks/servicenow.py +271 -0
  410. scion_sdk-0.5.6/agent_connector_sdk/writeback_sinks/sinks/twenty.py +105 -0
  411. scion_sdk-0.5.6/agent_connector_sdk/writeback_sinks/sinks/wger.py +108 -0
  412. scion_sdk-0.5.6/agent_connector_sdk/writeback_sinks/spec_link.py +262 -0
  413. scion_sdk-0.5.6/pyproject.toml +502 -0
  414. scion_sdk-0.5.6/scion_sdk.egg-info/PKG-INFO +198 -0
  415. scion_sdk-0.5.6/scion_sdk.egg-info/SOURCES.txt +571 -0
  416. scion_sdk-0.5.6/scion_sdk.egg-info/dependency_links.txt +1 -0
  417. scion_sdk-0.5.6/scion_sdk.egg-info/entry_points.txt +25 -0
  418. scion_sdk-0.5.6/scion_sdk.egg-info/requires.txt +54 -0
  419. scion_sdk-0.5.6/scion_sdk.egg-info/top_level.txt +1 -0
  420. scion_sdk-0.5.6/setup.cfg +4 -0
  421. scion_sdk-0.5.6/tests/test_a2a_protocol.py +147 -0
  422. scion_sdk-0.5.6/tests/test_access_contract.py +125 -0
  423. scion_sdk-0.5.6/tests/test_access_contract_helpers.py +24 -0
  424. scion_sdk-0.5.6/tests/test_action_split.py +130 -0
  425. scion_sdk-0.5.6/tests/test_action_split_dedupe.py +415 -0
  426. scion_sdk-0.5.6/tests/test_adapters_web_fetch.py +70 -0
  427. scion_sdk-0.5.6/tests/test_adapters_web_fetch_source_adapter.py +122 -0
  428. scion_sdk-0.5.6/tests/test_agent_config.py +60 -0
  429. scion_sdk-0.5.6/tests/test_artifacts_discovery.py +510 -0
  430. scion_sdk-0.5.6/tests/test_au_helper_parity.py +73 -0
  431. scion_sdk-0.5.6/tests/test_auth_declarations.py +331 -0
  432. scion_sdk-0.5.6/tests/test_base_install_mcp_free.py +95 -0
  433. scion_sdk-0.5.6/tests/test_centralized_extras.py +54 -0
  434. scion_sdk-0.5.6/tests/test_certify_declared_coverage.py +31 -0
  435. scion_sdk-0.5.6/tests/test_certify_surface.py +129 -0
  436. scion_sdk-0.5.6/tests/test_change_subscriptions.py +183 -0
  437. scion_sdk-0.5.6/tests/test_check_public_specs_gate.py +51 -0
  438. scion_sdk-0.5.6/tests/test_client_credentials_literal_secret.py +78 -0
  439. scion_sdk-0.5.6/tests/test_compatibility_distribution.py +59 -0
  440. scion_sdk-0.5.6/tests/test_compute_adapter.py +144 -0
  441. scion_sdk-0.5.6/tests/test_conformance_plugin.py +166 -0
  442. scion_sdk-0.5.6/tests/test_connector_hooks.py +407 -0
  443. scion_sdk-0.5.6/tests/test_connector_identity.py +86 -0
  444. scion_sdk-0.5.6/tests/test_connector_run.py +231 -0
  445. scion_sdk-0.5.6/tests/test_connector_runtime_adds.py +299 -0
  446. scion_sdk-0.5.6/tests/test_connector_runtime_from_au.py +134 -0
  447. scion_sdk-0.5.6/tests/test_contracts_and_sink.py +608 -0
  448. scion_sdk-0.5.6/tests/test_credential_provider.py +42 -0
  449. scion_sdk-0.5.6/tests/test_credential_sensitivity.py +45 -0
  450. scion_sdk-0.5.6/tests/test_credentials.py +160 -0
  451. scion_sdk-0.5.6/tests/test_current_plan.py +134 -0
  452. scion_sdk-0.5.6/tests/test_decide_consumers.py +248 -0
  453. scion_sdk-0.5.6/tests/test_decide_epistemic_graph.py +347 -0
  454. scion_sdk-0.5.6/tests/test_default_content.py +50 -0
  455. scion_sdk-0.5.6/tests/test_doc_privacy_scanner.py +51 -0
  456. scion_sdk-0.5.6/tests/test_document_sources.py +328 -0
  457. scion_sdk-0.5.6/tests/test_duplicate_symbol_scan.py +91 -0
  458. scion_sdk-0.5.6/tests/test_earth_observation_records.py +99 -0
  459. scion_sdk-0.5.6/tests/test_eg_pack_entry_kinds.py +108 -0
  460. scion_sdk-0.5.6/tests/test_embeddings.py +157 -0
  461. scion_sdk-0.5.6/tests/test_entitlement_catalogs.py +57 -0
  462. scion_sdk-0.5.6/tests/test_entitlements.py +110 -0
  463. scion_sdk-0.5.6/tests/test_event_feeds.py +584 -0
  464. scion_sdk-0.5.6/tests/test_extraction.py +399 -0
  465. scion_sdk-0.5.6/tests/test_finance_account_read.py +76 -0
  466. scion_sdk-0.5.6/tests/test_finance_alpaca_stocks.py +90 -0
  467. scion_sdk-0.5.6/tests/test_finance_banking.py +75 -0
  468. scion_sdk-0.5.6/tests/test_finance_central_bank_calendar.py +99 -0
  469. scion_sdk-0.5.6/tests/test_finance_crypto.py +79 -0
  470. scion_sdk-0.5.6/tests/test_finance_csv_import.py +96 -0
  471. scion_sdk-0.5.6/tests/test_finance_etf_flows.py +78 -0
  472. scion_sdk-0.5.6/tests/test_finance_feeds.py +68 -0
  473. scion_sdk-0.5.6/tests/test_finance_fred_series.py +96 -0
  474. scion_sdk-0.5.6/tests/test_finance_market_data.py +116 -0
  475. scion_sdk-0.5.6/tests/test_finance_records.py +220 -0
  476. scion_sdk-0.5.6/tests/test_finance_strategy_export.py +82 -0
  477. scion_sdk-0.5.6/tests/test_fleet_migration_scan.py +106 -0
  478. scion_sdk-0.5.6/tests/test_for_each.py +270 -0
  479. scion_sdk-0.5.6/tests/test_foundation.py +180 -0
  480. scion_sdk-0.5.6/tests/test_graphql_client.py +213 -0
  481. scion_sdk-0.5.6/tests/test_http_client.py +552 -0
  482. scion_sdk-0.5.6/tests/test_http_dns_pinned_egress.py +223 -0
  483. scion_sdk-0.5.6/tests/test_http_egress.py +68 -0
  484. scion_sdk-0.5.6/tests/test_http_units.py +215 -0
  485. scion_sdk-0.5.6/tests/test_identifiers.py +47 -0
  486. scion_sdk-0.5.6/tests/test_ingest.py +391 -0
  487. scion_sdk-0.5.6/tests/test_ingest_citable_fields.py +78 -0
  488. scion_sdk-0.5.6/tests/test_ingest_mapping.py +113 -0
  489. scion_sdk-0.5.6/tests/test_ingest_strategies.py +337 -0
  490. scion_sdk-0.5.6/tests/test_ingest_stream.py +250 -0
  491. scion_sdk-0.5.6/tests/test_library_state.py +67 -0
  492. scion_sdk-0.5.6/tests/test_load_declaration.py +83 -0
  493. scion_sdk-0.5.6/tests/test_mcp_client_credentials.py +274 -0
  494. scion_sdk-0.5.6/tests/test_mcp_confirmation_roundtrip.py +233 -0
  495. scion_sdk-0.5.6/tests/test_mcp_dispatch.py +228 -0
  496. scion_sdk-0.5.6/tests/test_mcp_graphql_context.py +94 -0
  497. scion_sdk-0.5.6/tests/test_mcp_native_primitives.py +103 -0
  498. scion_sdk-0.5.6/tests/test_method_tools.py +92 -0
  499. scion_sdk-0.5.6/tests/test_network_serving.py +221 -0
  500. scion_sdk-0.5.6/tests/test_operation_tools.py +418 -0
  501. scion_sdk-0.5.6/tests/test_outbound_auth.py +362 -0
  502. scion_sdk-0.5.6/tests/test_pack_ontology_imports.py +114 -0
  503. scion_sdk-0.5.6/tests/test_pack_resource_schema.py +52 -0
  504. scion_sdk-0.5.6/tests/test_pagination_modes.py +193 -0
  505. scion_sdk-0.5.6/tests/test_paths_mcp_config.py +25 -0
  506. scion_sdk-0.5.6/tests/test_payments.py +119 -0
  507. scion_sdk-0.5.6/tests/test_platform_config_dir.py +124 -0
  508. scion_sdk-0.5.6/tests/test_privacy.py +94 -0
  509. scion_sdk-0.5.6/tests/test_progress_and_http_conformance.py +85 -0
  510. scion_sdk-0.5.6/tests/test_prompt_content.py +328 -0
  511. scion_sdk-0.5.6/tests/test_provider_runtime.py +52 -0
  512. scion_sdk-0.5.6/tests/test_public_docs_structure.py +50 -0
  513. scion_sdk-0.5.6/tests/test_public_surface_source_ingest.py +102 -0
  514. scion_sdk-0.5.6/tests/test_public_surface_writeback_sinks.py +64 -0
  515. scion_sdk-0.5.6/tests/test_registry_visibility_content.py +284 -0
  516. scion_sdk-0.5.6/tests/test_release_quality_r001_r005.py +481 -0
  517. scion_sdk-0.5.6/tests/test_repository_models.py +163 -0
  518. scion_sdk-0.5.6/tests/test_repository_refs.py +107 -0
  519. scion_sdk-0.5.6/tests/test_repository_refwalk_fastpath.py +155 -0
  520. scion_sdk-0.5.6/tests/test_repository_transport.py +320 -0
  521. scion_sdk-0.5.6/tests/test_resource_declarations.py +262 -0
  522. scion_sdk-0.5.6/tests/test_runner_cli.py +315 -0
  523. scion_sdk-0.5.6/tests/test_runner_config.py +180 -0
  524. scion_sdk-0.5.6/tests/test_runner_end_to_end.py +224 -0
  525. scion_sdk-0.5.6/tests/test_runner_health.py +505 -0
  526. scion_sdk-0.5.6/tests/test_runner_supervision.py +227 -0
  527. scion_sdk-0.5.6/tests/test_safe_post.py +57 -0
  528. scion_sdk-0.5.6/tests/test_schema_disclosure.py +113 -0
  529. scion_sdk-0.5.6/tests/test_schema_disclosure_artifacts.py +66 -0
  530. scion_sdk-0.5.6/tests/test_schema_disclosure_provider.py +163 -0
  531. scion_sdk-0.5.6/tests/test_schema_drift.py +484 -0
  532. scion_sdk-0.5.6/tests/test_schema_repair.py +169 -0
  533. scion_sdk-0.5.6/tests/test_served_security_and_provider_profile.py +293 -0
  534. scion_sdk-0.5.6/tests/test_server_and_auth.py +314 -0
  535. scion_sdk-0.5.6/tests/test_signing.py +58 -0
  536. scion_sdk-0.5.6/tests/test_single_declaration.py +338 -0
  537. scion_sdk-0.5.6/tests/test_source_credentials.py +177 -0
  538. scion_sdk-0.5.6/tests/test_source_sync.py +271 -0
  539. scion_sdk-0.5.6/tests/test_source_sync_edges.py +202 -0
  540. scion_sdk-0.5.6/tests/test_source_sync_served.py +113 -0
  541. scion_sdk-0.5.6/tests/test_streaming.py +126 -0
  542. scion_sdk-0.5.6/tests/test_taxonomy_records.py +67 -0
  543. scion_sdk-0.5.6/tests/test_tls_profiles.py +381 -0
  544. scion_sdk-0.5.6/tests/test_tool_surface.py +209 -0
  545. scion_sdk-0.5.6/tests/test_vendor_extractors_ansible.py +75 -0
  546. scion_sdk-0.5.6/tests/test_vendor_extractors_archer_infra_a2a.py +120 -0
  547. scion_sdk-0.5.6/tests/test_vendor_extractors_archimate.py +95 -0
  548. scion_sdk-0.5.6/tests/test_vendor_extractors_aris_egeria_camunda.py +124 -0
  549. scion_sdk-0.5.6/tests/test_vendor_extractors_caddy.py +81 -0
  550. scion_sdk-0.5.6/tests/test_vendor_extractors_contract.py +58 -0
  551. scion_sdk-0.5.6/tests/test_vendor_extractors_emerald.py +91 -0
  552. scion_sdk-0.5.6/tests/test_vendor_extractors_grafana_leanix_erpnext.py +154 -0
  553. scion_sdk-0.5.6/tests/test_vendor_extractors_home_assistant.py +80 -0
  554. scion_sdk-0.5.6/tests/test_vendor_extractors_kafka.py +84 -0
  555. scion_sdk-0.5.6/tests/test_vendor_extractors_keycloak.py +98 -0
  556. scion_sdk-0.5.6/tests/test_vendor_extractors_lgtm.py +98 -0
  557. scion_sdk-0.5.6/tests/test_vendor_extractors_mealie.py +104 -0
  558. scion_sdk-0.5.6/tests/test_vendor_extractors_microsoft.py +83 -0
  559. scion_sdk-0.5.6/tests/test_vendor_extractors_nextcloud.py +111 -0
  560. scion_sdk-0.5.6/tests/test_vendor_extractors_odoo.py +78 -0
  561. scion_sdk-0.5.6/tests/test_vendor_extractors_portainer.py +99 -0
  562. scion_sdk-0.5.6/tests/test_vendor_extractors_salesforce.py +79 -0
  563. scion_sdk-0.5.6/tests/test_vendor_extractors_servicenow_ciso_social.py +154 -0
  564. scion_sdk-0.5.6/tests/test_vendor_extractors_technitium_dns.py +81 -0
  565. scion_sdk-0.5.6/tests/test_vendor_extractors_uptime_kuma.py +83 -0
  566. scion_sdk-0.5.6/tests/test_vendor_extractors_wger_okta_twenty.py +169 -0
  567. scion_sdk-0.5.6/tests/test_web_source_contract.py +257 -0
  568. scion_sdk-0.5.6/tests/test_writeback.py +145 -0
  569. scion_sdk-0.5.6/tests/test_writeback_audit_reservation.py +47 -0
  570. scion_sdk-0.5.6/tests/test_writeback_durable.py +293 -0
  571. scion_sdk-0.5.6/tests/test_writeback_process_restart.py +148 -0
  572. scion_sdk-0.5.6/tests/test_writeback_sink_process.py +196 -0
  573. scion_sdk-0.5.6/tests/test_writeback_sinks.py +519 -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,198 @@
1
+ Metadata-Version: 2.4
2
+ Name: scion-sdk
3
+ Version: 0.5.6
4
+ Summary: Scion SDK for the Arbora ecosystem: 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/scion-sdk
8
+ Project-URL: Documentation, https://knuckles-team.github.io/scion-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.6
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: gql[requests]>=4.4.0; extra == "graphql"
48
+ Requires-Dist: graphql-core>=3.2.5; extra == "graphql"
49
+ Provides-Extra: market
50
+ Requires-Dist: pandas>=2.2.0; extra == "market"
51
+ Requires-Dist: yfinance>=0.2.50; extra == "market"
52
+ Provides-Extra: stream
53
+ Requires-Dist: websockets>=14.0; extra == "stream"
54
+ Provides-Extra: vector
55
+ Requires-Dist: qdrant-client>=1.18.0; extra == "vector"
56
+ Requires-Dist: psycopg[binary,pool]>=3.2.0; extra == "vector"
57
+ Requires-Dist: pymongo>=4.10.0; extra == "vector"
58
+ Provides-Extra: vector-chroma
59
+ Requires-Dist: chromadb>=1.5.0; extra == "vector-chroma"
60
+ Requires-Dist: llama-index-vector-stores-chroma>=0.5.0; extra == "vector-chroma"
61
+ Dynamic: license-file
62
+
63
+ # Scion SDK
64
+
65
+ <p align="center">
66
+ <img src="docs/assets/brands/agent-connector-sdk-logo-v1.png" alt="Scion SDK logo" width="180">
67
+ </p>
68
+
69
+ <p align="center">
70
+ <b>Build secure connectors once. Serve, synchronize, and write back through one governed contract.</b><br>
71
+ <sub>The typed source-integration boundary for MCP services and Medulla.</sub>
72
+ </p>
73
+
74
+ [![PyPI - Version](https://img.shields.io/pypi/v/scion-sdk)](https://pypi.org/project/scion-sdk/)
75
+ [![Build](https://github.com/Knuckles-Team/scion-sdk/actions/workflows/release.yml/badge.svg)](https://github.com/Knuckles-Team/scion-sdk/actions/workflows/release.yml)
76
+ [![Documentation](https://github.com/Knuckles-Team/scion-sdk/actions/workflows/pages.yml/badge.svg)](https://knuckles-team.github.io/scion-sdk/)
77
+ [![GitHub Repo stars](https://img.shields.io/github/stars/Knuckles-Team/scion-sdk)](https://github.com/Knuckles-Team/scion-sdk/stargazers)
78
+ [![GitHub forks](https://img.shields.io/github/forks/Knuckles-Team/scion-sdk)](https://github.com/Knuckles-Team/scion-sdk/forks)
79
+ [![GitHub contributors](https://img.shields.io/github/contributors/Knuckles-Team/scion-sdk)](https://github.com/Knuckles-Team/scion-sdk/graphs/contributors)
80
+ [![GitHub license](https://img.shields.io/github/license/Knuckles-Team/scion-sdk)](LICENSE)
81
+ [![GitHub last commit (by committer)](https://img.shields.io/github/last-commit/Knuckles-Team/scion-sdk)](https://github.com/Knuckles-Team/scion-sdk/commits/main)
82
+ [![GitHub pull requests](https://img.shields.io/github/issues-pr/Knuckles-Team/scion-sdk)](https://github.com/Knuckles-Team/scion-sdk/pulls)
83
+ [![GitHub closed pull requests](https://img.shields.io/github/issues-pr-closed/Knuckles-Team/scion-sdk)](https://github.com/Knuckles-Team/scion-sdk/pulls?q=is%3Apr+is%3Aclosed)
84
+ [![GitHub issues](https://img.shields.io/github/issues/Knuckles-Team/scion-sdk)](https://github.com/Knuckles-Team/scion-sdk/issues)
85
+ [![GitHub top language](https://img.shields.io/github/languages/top/Knuckles-Team/scion-sdk)](https://github.com/Knuckles-Team/scion-sdk)
86
+ [![GitHub language count](https://img.shields.io/github/languages/count/Knuckles-Team/scion-sdk)](https://github.com/Knuckles-Team/scion-sdk)
87
+ [![GitHub repo size](https://img.shields.io/github/repo-size/Knuckles-Team/scion-sdk)](https://github.com/Knuckles-Team/scion-sdk)
88
+ [![GitHub repo file count (file type)](https://img.shields.io/github/directory-file-count/Knuckles-Team/scion-sdk)](https://github.com/Knuckles-Team/scion-sdk)
89
+ [![PyPI - Downloads](https://img.shields.io/pypi/dd/scion-sdk)](https://pypi.org/project/scion-sdk/)
90
+ [![PyPI - License](https://img.shields.io/pypi/l/scion-sdk)](https://pypi.org/project/scion-sdk/)
91
+ [![PyPI - Wheel](https://img.shields.io/pypi/wheel/scion-sdk)](https://pypi.org/project/scion-sdk/)
92
+ [![PyPI - Implementation](https://img.shields.io/pypi/implementation/scion-sdk)](https://pypi.org/project/scion-sdk/)
93
+
94
+ <p align="center">
95
+ <a href="https://knuckles-team.github.io/scion-sdk/">Documentation</a> ·
96
+ <a href="https://knuckles-team.github.io/scion-sdk/capabilities/">Capabilities</a> ·
97
+ <a href="https://knuckles-team.github.io/scion-sdk/extension-ports/">Interfaces</a> ·
98
+ <a href="https://knuckles-team.github.io/scion-sdk/status/">Status</a>
99
+ </p>
100
+
101
+ ---
102
+
103
+ ## Quick Start
104
+
105
+ Install Scion SDK as `scion-sdk` and import it as
106
+ `agent_connector_sdk`. The repository is `scion-sdk`; package, CLI and API
107
+ identifiers remain unchanged.
108
+
109
+ Create a project and install the SDK:
110
+
111
+ ```bash
112
+ uv init --bare demo-connector
113
+ cd demo-connector
114
+ uv add scion-sdk
115
+ uv sync
116
+ uv run connector-sync --help
117
+ ```
118
+
119
+ The command prints the supervised synchronization options without opening a
120
+ source session. Continue with the
121
+ [connector tutorial](https://knuckles-team.github.io/scion-sdk/tutorial/)
122
+ to build and run a one-file MCP connector, observe its health response, add
123
+ declarative content, certify the live schema, and join source synchronization.
124
+
125
+ ## Overview
126
+
127
+ Scion SDK is the ecosystem's source-integration boundary. It turns
128
+ vendor APIs and domain tools into secure MCP connectors, transports bounded
129
+ source evidence into Medulla, indexes immutable repository snapshots,
130
+ and applies authorized changes back to source systems.
131
+
132
+ Connector packages retain vendor behavior. The SDK owns transport, lifecycle,
133
+ certification, and effect execution. Generated Medulla contracts own
134
+ durable graph records, checkpoints, content identity, and receipts.
135
+
136
+ ## Key Capabilities
137
+
138
+ - Build FastMCP servers with authentication, safe exposure, health, visibility,
139
+ rate limits, change subscriptions, and consistent tool surfaces.
140
+ - Publish skills, prompts, ontologies, SHACL shapes, and connector manifests as
141
+ typed MCP content.
142
+ - Extract bounded source pages and advance checkpoints only from matching
143
+ durable Medulla receipts.
144
+ - Import deterministic ConnectorPack archives without copying graph DTOs or
145
+ digest algorithms into connector packages.
146
+ - Stream authenticated immutable repository snapshots into the generated
147
+ `IndexRepository` boundary without becoming a semantic writer.
148
+ - Govern write-back through dry-run, authorization, source-version checks,
149
+ idempotency, and uncertain-effect reconciliation.
150
+ - Certify extension identity, live MCP schemas, pagination, and safety behavior
151
+ before activation.
152
+
153
+ ## Documentation
154
+
155
+ Start with [Build the operator's first connector](https://knuckles-team.github.io/scion-sdk/tutorial/),
156
+ then choose the reference that matches the work:
157
+
158
+ - [Documentation home](https://knuckles-team.github.io/scion-sdk/)
159
+ - [Capabilities](https://knuckles-team.github.io/scion-sdk/capabilities/)
160
+ - [Architecture](https://knuckles-team.github.io/scion-sdk/architecture/)
161
+ - [Connector servers](https://knuckles-team.github.io/scion-sdk/connector-servers/)
162
+ - [Schema disclosure](https://knuckles-team.github.io/scion-sdk/schema-disclosure/)
163
+ - [Source synchronization](https://knuckles-team.github.io/scion-sdk/connector-sync/)
164
+ - [Repository ingestion](https://knuckles-team.github.io/scion-sdk/repository-ingestion/)
165
+ - [Extension interfaces](https://knuckles-team.github.io/scion-sdk/extension-ports/)
166
+ - [Current status](https://knuckles-team.github.io/scion-sdk/status/)
167
+
168
+ Sibling authorities: [Medulla](https://knuckles-team.github.io/medulla/)
169
+ owns durable graph state and generated contracts; [Arbora](https://knuckles-team.github.io/arbora/)
170
+ owns authenticated runtime composition.
171
+
172
+ ## Architecture
173
+
174
+ [![Runtime architecture: people and clients enter through Arbora. Source systems flow through Scion SDK into Medulla.](https://raw.githubusercontent.com/Knuckles-Team/medulla/main/docs/assets/runtime-architecture.svg)](https://knuckles-team.github.io/.github/architecture/#sdk)
175
+
176
+ [Explore the live architecture](https://knuckles-team.github.io/.github/architecture/#sdk)
177
+
178
+ | Boundary | Owned here | Owned elsewhere |
179
+ |---|---|---|
180
+ | Connector service | MCP lifecycle, exposure policy, content capture, certification | Vendor models and business semantics stay in the connector package. |
181
+ | Source ingest | Discovery, bounded extraction, transport, receipt verification | Medulla owns mapping, checkpoints, provenance, and commit receipts. |
182
+ | Repository ingest | Authenticated snapshots, stable manifests, bounded object transport | Medulla owns indexing, graph projection, and semantic interpretation. |
183
+ | Write-back | Preview, source-version checks, apply, and reconciliation | Medulla owns change sets, authorization decisions, and durable outcomes. |
184
+ | Runtime composition | Typed ports and checked dependency requirements | Arbora supplies authenticated identity, clients, and live authority. |
185
+
186
+ The SDK depends directly on `epistemic-graph>=2.27.6`. Generated SourceIngest,
187
+ ConnectorPack, IndexRepository, and WriteBack clients and models are the graph
188
+ boundary; the SDK adds no parallel graph contract.
189
+
190
+ ## Contributing
191
+
192
+ Issues and pull requests are welcome. Follow [AGENTS.md](AGENTS.md) for ownership,
193
+ isolation, and validation rules, and run the affected tests and public-surface
194
+ gates before submitting a change.
195
+
196
+ ## License
197
+
198
+ Scion SDK is released under the [MIT License](LICENSE).
@@ -0,0 +1,136 @@
1
+ # Scion SDK
2
+
3
+ <p align="center">
4
+ <img src="docs/assets/brands/agent-connector-sdk-logo-v1.png" alt="Scion 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 Medulla.</sub>
10
+ </p>
11
+
12
+ [![PyPI - Version](https://img.shields.io/pypi/v/scion-sdk)](https://pypi.org/project/scion-sdk/)
13
+ [![Build](https://github.com/Knuckles-Team/scion-sdk/actions/workflows/release.yml/badge.svg)](https://github.com/Knuckles-Team/scion-sdk/actions/workflows/release.yml)
14
+ [![Documentation](https://github.com/Knuckles-Team/scion-sdk/actions/workflows/pages.yml/badge.svg)](https://knuckles-team.github.io/scion-sdk/)
15
+ [![GitHub Repo stars](https://img.shields.io/github/stars/Knuckles-Team/scion-sdk)](https://github.com/Knuckles-Team/scion-sdk/stargazers)
16
+ [![GitHub forks](https://img.shields.io/github/forks/Knuckles-Team/scion-sdk)](https://github.com/Knuckles-Team/scion-sdk/forks)
17
+ [![GitHub contributors](https://img.shields.io/github/contributors/Knuckles-Team/scion-sdk)](https://github.com/Knuckles-Team/scion-sdk/graphs/contributors)
18
+ [![GitHub license](https://img.shields.io/github/license/Knuckles-Team/scion-sdk)](LICENSE)
19
+ [![GitHub last commit (by committer)](https://img.shields.io/github/last-commit/Knuckles-Team/scion-sdk)](https://github.com/Knuckles-Team/scion-sdk/commits/main)
20
+ [![GitHub pull requests](https://img.shields.io/github/issues-pr/Knuckles-Team/scion-sdk)](https://github.com/Knuckles-Team/scion-sdk/pulls)
21
+ [![GitHub closed pull requests](https://img.shields.io/github/issues-pr-closed/Knuckles-Team/scion-sdk)](https://github.com/Knuckles-Team/scion-sdk/pulls?q=is%3Apr+is%3Aclosed)
22
+ [![GitHub issues](https://img.shields.io/github/issues/Knuckles-Team/scion-sdk)](https://github.com/Knuckles-Team/scion-sdk/issues)
23
+ [![GitHub top language](https://img.shields.io/github/languages/top/Knuckles-Team/scion-sdk)](https://github.com/Knuckles-Team/scion-sdk)
24
+ [![GitHub language count](https://img.shields.io/github/languages/count/Knuckles-Team/scion-sdk)](https://github.com/Knuckles-Team/scion-sdk)
25
+ [![GitHub repo size](https://img.shields.io/github/repo-size/Knuckles-Team/scion-sdk)](https://github.com/Knuckles-Team/scion-sdk)
26
+ [![GitHub repo file count (file type)](https://img.shields.io/github/directory-file-count/Knuckles-Team/scion-sdk)](https://github.com/Knuckles-Team/scion-sdk)
27
+ [![PyPI - Downloads](https://img.shields.io/pypi/dd/scion-sdk)](https://pypi.org/project/scion-sdk/)
28
+ [![PyPI - License](https://img.shields.io/pypi/l/scion-sdk)](https://pypi.org/project/scion-sdk/)
29
+ [![PyPI - Wheel](https://img.shields.io/pypi/wheel/scion-sdk)](https://pypi.org/project/scion-sdk/)
30
+ [![PyPI - Implementation](https://img.shields.io/pypi/implementation/scion-sdk)](https://pypi.org/project/scion-sdk/)
31
+
32
+ <p align="center">
33
+ <a href="https://knuckles-team.github.io/scion-sdk/">Documentation</a> ·
34
+ <a href="https://knuckles-team.github.io/scion-sdk/capabilities/">Capabilities</a> ·
35
+ <a href="https://knuckles-team.github.io/scion-sdk/extension-ports/">Interfaces</a> ·
36
+ <a href="https://knuckles-team.github.io/scion-sdk/status/">Status</a>
37
+ </p>
38
+
39
+ ---
40
+
41
+ ## Quick Start
42
+
43
+ Install Scion SDK as `scion-sdk` and import it as
44
+ `agent_connector_sdk`. The repository is `scion-sdk`; package, CLI and API
45
+ identifiers remain unchanged.
46
+
47
+ Create a project and install the SDK:
48
+
49
+ ```bash
50
+ uv init --bare demo-connector
51
+ cd demo-connector
52
+ uv add scion-sdk
53
+ uv sync
54
+ uv run connector-sync --help
55
+ ```
56
+
57
+ The command prints the supervised synchronization options without opening a
58
+ source session. Continue with the
59
+ [connector tutorial](https://knuckles-team.github.io/scion-sdk/tutorial/)
60
+ to build and run a one-file MCP connector, observe its health response, add
61
+ declarative content, certify the live schema, and join source synchronization.
62
+
63
+ ## Overview
64
+
65
+ Scion SDK is the ecosystem's source-integration boundary. It turns
66
+ vendor APIs and domain tools into secure MCP connectors, transports bounded
67
+ source evidence into Medulla, indexes immutable repository snapshots,
68
+ and applies authorized changes back to source systems.
69
+
70
+ Connector packages retain vendor behavior. The SDK owns transport, lifecycle,
71
+ certification, and effect execution. Generated Medulla contracts own
72
+ durable graph records, checkpoints, content identity, and receipts.
73
+
74
+ ## Key Capabilities
75
+
76
+ - Build FastMCP servers with authentication, safe exposure, health, visibility,
77
+ rate limits, change subscriptions, and consistent tool surfaces.
78
+ - Publish skills, prompts, ontologies, SHACL shapes, and connector manifests as
79
+ typed MCP content.
80
+ - Extract bounded source pages and advance checkpoints only from matching
81
+ durable Medulla receipts.
82
+ - Import deterministic ConnectorPack archives without copying graph DTOs or
83
+ digest algorithms into connector packages.
84
+ - Stream authenticated immutable repository snapshots into the generated
85
+ `IndexRepository` boundary without becoming a semantic writer.
86
+ - Govern write-back through dry-run, authorization, source-version checks,
87
+ idempotency, and uncertain-effect reconciliation.
88
+ - Certify extension identity, live MCP schemas, pagination, and safety behavior
89
+ before activation.
90
+
91
+ ## Documentation
92
+
93
+ Start with [Build the operator's first connector](https://knuckles-team.github.io/scion-sdk/tutorial/),
94
+ then choose the reference that matches the work:
95
+
96
+ - [Documentation home](https://knuckles-team.github.io/scion-sdk/)
97
+ - [Capabilities](https://knuckles-team.github.io/scion-sdk/capabilities/)
98
+ - [Architecture](https://knuckles-team.github.io/scion-sdk/architecture/)
99
+ - [Connector servers](https://knuckles-team.github.io/scion-sdk/connector-servers/)
100
+ - [Schema disclosure](https://knuckles-team.github.io/scion-sdk/schema-disclosure/)
101
+ - [Source synchronization](https://knuckles-team.github.io/scion-sdk/connector-sync/)
102
+ - [Repository ingestion](https://knuckles-team.github.io/scion-sdk/repository-ingestion/)
103
+ - [Extension interfaces](https://knuckles-team.github.io/scion-sdk/extension-ports/)
104
+ - [Current status](https://knuckles-team.github.io/scion-sdk/status/)
105
+
106
+ Sibling authorities: [Medulla](https://knuckles-team.github.io/medulla/)
107
+ owns durable graph state and generated contracts; [Arbora](https://knuckles-team.github.io/arbora/)
108
+ owns authenticated runtime composition.
109
+
110
+ ## Architecture
111
+
112
+ [![Runtime architecture: people and clients enter through Arbora. Source systems flow through Scion SDK into Medulla.](https://raw.githubusercontent.com/Knuckles-Team/medulla/main/docs/assets/runtime-architecture.svg)](https://knuckles-team.github.io/.github/architecture/#sdk)
113
+
114
+ [Explore the live architecture](https://knuckles-team.github.io/.github/architecture/#sdk)
115
+
116
+ | Boundary | Owned here | Owned elsewhere |
117
+ |---|---|---|
118
+ | Connector service | MCP lifecycle, exposure policy, content capture, certification | Vendor models and business semantics stay in the connector package. |
119
+ | Source ingest | Discovery, bounded extraction, transport, receipt verification | Medulla owns mapping, checkpoints, provenance, and commit receipts. |
120
+ | Repository ingest | Authenticated snapshots, stable manifests, bounded object transport | Medulla owns indexing, graph projection, and semantic interpretation. |
121
+ | Write-back | Preview, source-version checks, apply, and reconciliation | Medulla owns change sets, authorization decisions, and durable outcomes. |
122
+ | Runtime composition | Typed ports and checked dependency requirements | Arbora supplies authenticated identity, clients, and live authority. |
123
+
124
+ The SDK depends directly on `epistemic-graph>=2.27.6`. Generated SourceIngest,
125
+ ConnectorPack, IndexRepository, and WriteBack clients and models are the graph
126
+ boundary; the SDK adds no parallel graph contract.
127
+
128
+ ## Contributing
129
+
130
+ Issues and pull requests are welcome. Follow [AGENTS.md](AGENTS.md) for ownership,
131
+ isolation, and validation rules, and run the affected tests and public-surface
132
+ gates before submitting a change.
133
+
134
+ ## License
135
+
136
+ Scion SDK is released under the [MIT License](LICENSE).
@@ -0,0 +1,23 @@
1
+ """Scion 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). The package root exports the version
5
+ and, lazily, :class:`Connector` and :func:`run`, so importing it never pulls in
6
+ the MCP server stack.
7
+ """
8
+
9
+ from __future__ import annotations
10
+
11
+ from typing import Any
12
+
13
+ from agent_connector_sdk._version import __version__
14
+
15
+ __all__ = ["Connector", "__version__", "run"]
16
+
17
+
18
+ def __getattr__(name: str) -> Any:
19
+ if name in ("Connector", "run"):
20
+ from agent_connector_sdk import connector
21
+
22
+ return getattr(connector, name)
23
+ raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
@@ -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
+ 'scion-sdk leaves out; install "scion-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,8 @@
1
+ """The SDK version, read from installed package metadata.
2
+
3
+ ``pyproject.toml`` is the only file that spells it (SDK-CONNECTOR-CONTROL-R071.2).
4
+ """
5
+
6
+ from agent_connector_sdk.connector_identity import distribution_version
7
+
8
+ __version__ = distribution_version("scion-sdk")