@opensoha/contracts 0.1.4

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 (328) hide show
  1. package/COMPATIBILITY.md +306 -0
  2. package/LICENSE +201 -0
  3. package/README.md +224 -0
  4. package/agent/agent-checkpoint.schema.json +19 -0
  5. package/agent/agent-observation.schema.json +20 -0
  6. package/agent/agent-protocol.schema.json +717 -0
  7. package/agent/agent-provider-definition.schema.json +44 -0
  8. package/agent/agent-provider-registry.schema.json +25 -0
  9. package/agent/agent-provider-runtime-event.schema.json +26 -0
  10. package/agent/agent-run-step.schema.json +24 -0
  11. package/agent/conformance-run.schema.json +19 -0
  12. package/agent/environment-lease.schema.json +31 -0
  13. package/agent/environment-snapshot.schema.json +26 -0
  14. package/agent/environment-template.schema.json +19 -0
  15. package/agent/fleet-target.schema.json +15 -0
  16. package/agent/multi-agent-plan.schema.json +18 -0
  17. package/agent/provider-rollout.schema.json +19 -0
  18. package/apiresponse/response.go +25 -0
  19. package/apiresponse/response_test.go +27 -0
  20. package/auth/token-claims.schema.json +78 -0
  21. package/capabilities/cluster-capability-matrix.schema.json +87 -0
  22. package/compat/json-schema-ecosystem-0.1.0.json +59 -0
  23. package/compat/openapi-0.1.0.snapshot.json +5076 -0
  24. package/compat/openapi-loose-boundaries-0.1.0.json +769 -0
  25. package/connectors/connector-event-envelope.schema.json +64 -0
  26. package/evaluation/evaluation-dataset.schema.json +28 -0
  27. package/evaluation/evaluation-result.schema.json +18 -0
  28. package/evaluation/evaluation-run.schema.json +19 -0
  29. package/evaluation/executor-profile.schema.json +18 -0
  30. package/evaluation/feedback-sample.schema.json +20 -0
  31. package/evaluation/gate-decision.schema.json +20 -0
  32. package/evaluation/gate-policy.schema.json +18 -0
  33. package/evaluation/replay-plan.schema.json +17 -0
  34. package/evaluation/sample-attempt.schema.json +22 -0
  35. package/events/event-envelope.schema.json +58 -0
  36. package/examples/agent-profile/k8s-sre-readonly.json +16 -0
  37. package/examples/cluster-capability-matrix/runtime-parity.json +40 -0
  38. package/examples/connector-event-envelope/feishu-message.json +19 -0
  39. package/examples/gateway-capability-baseline/minimal.json +61 -0
  40. package/examples/gateway-manifest/minimal.json +72 -0
  41. package/examples/governance/approval-request.json +35 -0
  42. package/examples/governance/audit-log.json +14 -0
  43. package/examples/marketplace-catalog/default.json +75 -0
  44. package/examples/mcp-preset/k8s-readonly.json +20 -0
  45. package/examples/openapi/agent-run-tool-call-request.json +11 -0
  46. package/examples/openapi/agent-tool-call-result-envelope.json +19 -0
  47. package/examples/openapi/cloud-extension-point-list-envelope.json +15 -0
  48. package/examples/openapi/directory-runtime-status-envelope.json +31 -0
  49. package/examples/openapi/gateway-manifest-envelope.json +53 -0
  50. package/examples/openapi/tool-invocation-request.json +14 -0
  51. package/examples/openapi/tool-invocation-result-envelope.json +23 -0
  52. package/examples/plugin-manifest/compute-provider.json +27 -0
  53. package/examples/plugin-manifest/connector.json +76 -0
  54. package/examples/plugin-manifest/skill-pack.json +47 -0
  55. package/examples/runner-operation-lifecycle/late-callback.json +27 -0
  56. package/examples/skill-manifest/k8s-sre.json +22 -0
  57. package/examples/token-claims/service-account.json +15 -0
  58. package/fixtures/json-schema/agent-checkpoint/invalid/raw-state.json +1 -0
  59. package/fixtures/json-schema/agent-checkpoint/valid/minimal.json +1 -0
  60. package/fixtures/json-schema/agent-observation/invalid/extra-secret.json +1 -0
  61. package/fixtures/json-schema/agent-observation/valid/tool.json +1 -0
  62. package/fixtures/json-schema/agent-profile/invalid/missing-scope.json +15 -0
  63. package/fixtures/json-schema/agent-profile/valid/k8s-sre-readonly.json +35 -0
  64. package/fixtures/json-schema/agent-protocol/invalid/missing-agent-id.json +3 -0
  65. package/fixtures/json-schema/agent-protocol/valid/agent-run-callback-legacy.json +9 -0
  66. package/fixtures/json-schema/agent-protocol/valid/agent-run-callback-with-events.json +39 -0
  67. package/fixtures/json-schema/agent-protocol/valid/execution-task-claim.json +5 -0
  68. package/fixtures/json-schema/agent-provider-definition/invalid/missing-command.json +1 -0
  69. package/fixtures/json-schema/agent-provider-definition/valid/cli.json +1 -0
  70. package/fixtures/json-schema/agent-provider-registry/invalid/zero-revision.json +1 -0
  71. package/fixtures/json-schema/agent-provider-registry/valid/minimal.json +1 -0
  72. package/fixtures/json-schema/agent-provider-runtime-event/invalid/health-without-provider.json +1 -0
  73. package/fixtures/json-schema/agent-provider-runtime-event/valid/ack.json +1 -0
  74. package/fixtures/json-schema/agent-run-step/invalid/unknown-state.json +1 -0
  75. package/fixtures/json-schema/agent-run-step/valid/running.json +1 -0
  76. package/fixtures/json-schema/approval-request/invalid/missing-status.json +12 -0
  77. package/fixtures/json-schema/approval-request/valid/high-risk-tool.json +56 -0
  78. package/fixtures/json-schema/audit-log/invalid/extra-field.json +10 -0
  79. package/fixtures/json-schema/audit-log/valid/tool-denied.json +23 -0
  80. package/fixtures/json-schema/cluster-capability-matrix/invalid/missing-agent-support.json +16 -0
  81. package/fixtures/json-schema/cluster-capability-matrix/invalid/partial-without-reason.json +18 -0
  82. package/fixtures/json-schema/cluster-capability-matrix/valid/runtime-parity.json +59 -0
  83. package/fixtures/json-schema/conformance-run/invalid/missing.json +1 -0
  84. package/fixtures/json-schema/conformance-run/valid/passed.json +1 -0
  85. package/fixtures/json-schema/connector-checkpoint/invalid/missing.json +1 -0
  86. package/fixtures/json-schema/connector-checkpoint/valid/http.json +1 -0
  87. package/fixtures/json-schema/connector-definition/invalid/missing.json +1 -0
  88. package/fixtures/json-schema/connector-definition/valid/http.json +1 -0
  89. package/fixtures/json-schema/connector-event-envelope/invalid/missing-payload.json +11 -0
  90. package/fixtures/json-schema/connector-event-envelope/invalid/unknown-top-level-field.json +13 -0
  91. package/fixtures/json-schema/connector-event-envelope/valid/feishu-message.json +19 -0
  92. package/fixtures/json-schema/context-envelope/invalid/envelope.json +1 -0
  93. package/fixtures/json-schema/context-envelope/valid/envelope.json +1 -0
  94. package/fixtures/json-schema/environment-lease/invalid/unbounded.json +1 -0
  95. package/fixtures/json-schema/environment-lease/valid/observe.json +1 -0
  96. package/fixtures/json-schema/environment-snapshot/invalid/negative-usage.json +1 -0
  97. package/fixtures/json-schema/environment-snapshot/valid/active.json +1 -0
  98. package/fixtures/json-schema/environment-template/invalid/missing.json +1 -0
  99. package/fixtures/json-schema/environment-template/valid/container.json +1 -0
  100. package/fixtures/json-schema/evaluation-dataset/invalid/no-samples.json +1 -0
  101. package/fixtures/json-schema/evaluation-dataset/valid/minimal.json +1 -0
  102. package/fixtures/json-schema/evaluation-result/invalid/bad-score.json +1 -0
  103. package/fixtures/json-schema/evaluation-result/valid/passed.json +1 -0
  104. package/fixtures/json-schema/evaluation-run/invalid/no-candidate.json +1 -0
  105. package/fixtures/json-schema/evaluation-run/valid/running.json +1 -0
  106. package/fixtures/json-schema/event-envelope/invalid/bad-severity.json +7 -0
  107. package/fixtures/json-schema/event-envelope/valid/minimal.json +14 -0
  108. package/fixtures/json-schema/executor-profile/invalid/missing.json +1 -0
  109. package/fixtures/json-schema/executor-profile/valid/readonly.json +1 -0
  110. package/fixtures/json-schema/feedback-sample/invalid/missing.json +1 -0
  111. package/fixtures/json-schema/feedback-sample/valid/pending.json +1 -0
  112. package/fixtures/json-schema/fleet-target/invalid/missing.json +1 -0
  113. package/fixtures/json-schema/fleet-target/valid/linux.json +1 -0
  114. package/fixtures/json-schema/gate-decision/invalid/missing.json +1 -0
  115. package/fixtures/json-schema/gate-decision/valid/pass.json +1 -0
  116. package/fixtures/json-schema/gate-policy/invalid/missing.json +1 -0
  117. package/fixtures/json-schema/gate-policy/valid/release.json +1 -0
  118. package/fixtures/json-schema/gateway-capability-baseline/invalid/missing-owner.json +32 -0
  119. package/fixtures/json-schema/gateway-capability-baseline/valid/minimal.json +61 -0
  120. package/fixtures/json-schema/gateway-manifest/invalid/bad-risk-level.json +37 -0
  121. package/fixtures/json-schema/gateway-manifest/valid/minimal.json +48 -0
  122. package/fixtures/json-schema/graph-revision/invalid/missing.json +1 -0
  123. package/fixtures/json-schema/graph-revision/valid/active.json +1 -0
  124. package/fixtures/json-schema/index-publish/invalid/missing.json +1 -0
  125. package/fixtures/json-schema/index-publish/valid/publish.json +1 -0
  126. package/fixtures/json-schema/ingestion-job/invalid/missing.json +1 -0
  127. package/fixtures/json-schema/ingestion-job/valid/queued.json +1 -0
  128. package/fixtures/json-schema/ingestion-stage/invalid/missing.json +1 -0
  129. package/fixtures/json-schema/ingestion-stage/valid/succeeded.json +1 -0
  130. package/fixtures/json-schema/knowledge-base/invalid/base.json +1 -0
  131. package/fixtures/json-schema/knowledge-base/valid/base.json +1 -0
  132. package/fixtures/json-schema/knowledge-search/invalid/search.json +1 -0
  133. package/fixtures/json-schema/knowledge-search/valid/search.json +1 -0
  134. package/fixtures/json-schema/knowledge-source/invalid/source.json +1 -0
  135. package/fixtures/json-schema/knowledge-source/valid/source.json +1 -0
  136. package/fixtures/json-schema/marketplace-catalog/invalid/missing-source.json +5 -0
  137. package/fixtures/json-schema/marketplace-catalog/valid/minimal.json +44 -0
  138. package/fixtures/json-schema/mcp-preset/invalid/bad-risk-level.json +20 -0
  139. package/fixtures/json-schema/mcp-preset/valid/k8s-readonly.json +40 -0
  140. package/fixtures/json-schema/memory-policy/invalid/missing.json +1 -0
  141. package/fixtures/json-schema/memory-policy/valid/explicit.json +1 -0
  142. package/fixtures/json-schema/memory-record/invalid/missing.json +1 -0
  143. package/fixtures/json-schema/memory-record/valid/explicit.json +1 -0
  144. package/fixtures/json-schema/multi-agent-plan/invalid/missing.json +1 -0
  145. package/fixtures/json-schema/multi-agent-plan/valid/running.json +1 -0
  146. package/fixtures/json-schema/observability-log-query-v1/invalid/missing-query.json +6 -0
  147. package/fixtures/json-schema/observability-log-query-v1/valid/request.json +15 -0
  148. package/fixtures/json-schema/observability-log-query-v1/valid/response.json +13 -0
  149. package/fixtures/json-schema/plugin-manifest/invalid/bad-type.json +7 -0
  150. package/fixtures/json-schema/plugin-manifest/invalid/logs-query-without-action.json +28 -0
  151. package/fixtures/json-schema/plugin-manifest/invalid/manifest-only-observability-provider.json +26 -0
  152. package/fixtures/json-schema/plugin-manifest/invalid/manifest-only-read-provider.json +23 -0
  153. package/fixtures/json-schema/plugin-manifest/invalid/write-provider-without-actions.json +23 -0
  154. package/fixtures/json-schema/plugin-manifest/valid/compute-provider.json +25 -0
  155. package/fixtures/json-schema/plugin-manifest/valid/minimal.json +14 -0
  156. package/fixtures/json-schema/plugin-manifest/valid/observability-provider.json +29 -0
  157. package/fixtures/json-schema/project-manifest/invalid/inline-secret.json +14 -0
  158. package/fixtures/json-schema/project-manifest/valid/demo.json +21 -0
  159. package/fixtures/json-schema/provider-rollout/invalid/missing.json +1 -0
  160. package/fixtures/json-schema/provider-rollout/valid/canary.json +1 -0
  161. package/fixtures/json-schema/replay-plan/invalid/missing.json +1 -0
  162. package/fixtures/json-schema/replay-plan/valid/readonly.json +1 -0
  163. package/fixtures/json-schema/retrieval-trace/invalid/missing.json +1 -0
  164. package/fixtures/json-schema/retrieval-trace/valid/grounded.json +1 -0
  165. package/fixtures/json-schema/runner-operation-lifecycle/invalid/bad-state.json +7 -0
  166. package/fixtures/json-schema/runner-operation-lifecycle/invalid/missing-runner-id.json +6 -0
  167. package/fixtures/json-schema/runner-operation-lifecycle/valid/final-failed.json +27 -0
  168. package/fixtures/json-schema/runner-operation-lifecycle/valid/heartbeat.json +19 -0
  169. package/fixtures/json-schema/sample-attempt/invalid/missing.json +1 -0
  170. package/fixtures/json-schema/sample-attempt/valid/completed.json +1 -0
  171. package/fixtures/json-schema/skill-manifest/invalid/bad-id.json +5 -0
  172. package/fixtures/json-schema/skill-manifest/valid/minimal.json +8 -0
  173. package/fixtures/json-schema/token-claims/invalid/bad-token-kind.json +9 -0
  174. package/fixtures/json-schema/token-claims/valid/service-account.json +15 -0
  175. package/fixtures/openapi/AIGatewayManifestEnvelope/invalid/bad-date.json +28 -0
  176. package/fixtures/openapi/AIGatewayManifestEnvelope/valid/minimal.json +31 -0
  177. package/fixtures/openapi/AgentProviderRegistryAcknowledgement/invalid/missing-targeted.json +7 -0
  178. package/fixtures/openapi/AgentProviderRegistryAcknowledgement/valid/rollout.json +17 -0
  179. package/fixtures/openapi/AgentRunCallbackRequest/invalid/missing-agent-id.json +6 -0
  180. package/fixtures/openapi/AgentRunCallbackRequest/valid/succeeded.json +10 -0
  181. package/fixtures/openapi/AgentRunCallbackRequest/valid/with-events.json +39 -0
  182. package/fixtures/openapi/AuthResultEnvelope/invalid/missing-tokens.json +13 -0
  183. package/fixtures/openapi/AuthResultEnvelope/valid/session.json +20 -0
  184. package/fixtures/openapi/CloudExtensionPointListEnvelope/invalid/missing-exclusions.json +11 -0
  185. package/fixtures/openapi/CloudExtensionPointListEnvelope/valid/managed-fleet.json +19 -0
  186. package/fixtures/openapi/ComputeAccessSourceListEnvelope/invalid/bad-source-type.json +15 -0
  187. package/fixtures/openapi/ComputeAccessSourceListEnvelope/valid/mixed.json +19 -0
  188. package/fixtures/openapi/ComputeOverviewEnvelope/invalid/bad-section-status.json +9 -0
  189. package/fixtures/openapi/ComputeOverviewEnvelope/valid/partial.json +33 -0
  190. package/fixtures/openapi/ComputeProviderListEnvelope/invalid/bad-domain.json +23 -0
  191. package/fixtures/openapi/ComputeProviderListEnvelope/valid/builtin.json +30 -0
  192. package/fixtures/openapi/ComputeResourceRelationListEnvelope/invalid/bad-relation.json +29 -0
  193. package/fixtures/openapi/ComputeResourceRelationListEnvelope/valid/vm-runtime.json +33 -0
  194. package/fixtures/openapi/ComputeTaskListEnvelope/invalid/missing-source-id.json +19 -0
  195. package/fixtures/openapi/ComputeTaskListEnvelope/valid/running.json +30 -0
  196. package/fixtures/openapi/DeliveryDraftInput/invalid/missing-application-key.json +9 -0
  197. package/fixtures/openapi/DeliveryDraftInput/valid/ai-service.json +25 -0
  198. package/fixtures/openapi/DirectoryEventListEnvelope/invalid/unknown-status.json +13 -0
  199. package/fixtures/openapi/DirectoryEventListEnvelope/valid/failed.json +16 -0
  200. package/fixtures/openapi/DirectoryPersonLifecycle/invalid/unknown-employment-status.json +5 -0
  201. package/fixtures/openapi/DirectoryPersonLifecycle/valid/departed.json +6 -0
  202. package/fixtures/openapi/DirectoryRuntimeStatusEnvelope/invalid/negative-event-count.json +11 -0
  203. package/fixtures/openapi/DirectoryRuntimeStatusEnvelope/valid/verified.json +14 -0
  204. package/fixtures/openapi/DockerContainerStartInput/invalid/missing-image.json +8 -0
  205. package/fixtures/openapi/DockerContainerStartInput/valid/git-dockerfile.json +22 -0
  206. package/fixtures/openapi/DockerOperationCallbackRequest/invalid/logs-not-array.json +7 -0
  207. package/fixtures/openapi/DockerOperationCallbackRequest/valid/succeeded.json +9 -0
  208. package/fixtures/openapi/ErrorEnvelope/invalid/extra-field.json +7 -0
  209. package/fixtures/openapi/ErrorEnvelope/valid/error.json +7 -0
  210. package/fixtures/openapi/EvaluationGateRequest/invalid/missing-candidate.json +4 -0
  211. package/fixtures/openapi/EvaluationGateRequest/valid/candidate.json +5 -0
  212. package/fixtures/openapi/ExecutionCallbackRequest/invalid/extra-field.json +6 -0
  213. package/fixtures/openapi/ExecutionCallbackRequest/valid/succeeded.json +7 -0
  214. package/fixtures/openapi/GovernanceStatusEnvelope/invalid/window-hours-string.json +81 -0
  215. package/fixtures/openapi/GovernanceStatusEnvelope/valid/minimal.json +81 -0
  216. package/fixtures/openapi/IdentityErrorEnvelope/invalid/raw-assertion.json +7 -0
  217. package/fixtures/openapi/IdentityErrorEnvelope/valid/invalid-signature.json +7 -0
  218. package/fixtures/openapi/IdentityOutpostClaimRequest/invalid/missing-protocol-version.json +4 -0
  219. package/fixtures/openapi/IdentityOutpostClaimRequest/valid/current-version.json +5 -0
  220. package/fixtures/openapi/IdentityRuntimeCapabilityEnvelope/invalid/missing-runtime-state.json +17 -0
  221. package/fixtures/openapi/IdentityRuntimeCapabilityEnvelope/valid/available.json +17 -0
  222. package/fixtures/openapi/KnowledgeIngestionJobInput/invalid/missing-source.json +1 -0
  223. package/fixtures/openapi/KnowledgeIngestionJobInput/valid/source.json +3 -0
  224. package/fixtures/openapi/KubernetesResourceAgentCreateRequest/invalid/unresolved-target.json +18 -0
  225. package/fixtures/openapi/KubernetesResourceAgentCreateRequest/valid/resolved-target.json +25 -0
  226. package/fixtures/openapi/KubernetesResourceCreateRequest/invalid/unknown-source.json +5 -0
  227. package/fixtures/openapi/KubernetesResourceCreateRequest/valid/global-multi-document.json +5 -0
  228. package/fixtures/openapi/KubernetesResourceCreateResultEnvelope/invalid/bad-document-index.json +21 -0
  229. package/fixtures/openapi/KubernetesResourceCreateResultEnvelope/valid/partial.json +62 -0
  230. package/fixtures/openapi/KubernetesResourceCreateScopeDecisionEnvelope/invalid/missing-capability.json +12 -0
  231. package/fixtures/openapi/KubernetesResourceCreateScopeDecisionEnvelope/valid/allowed.json +17 -0
  232. package/fixtures/openapi/KubernetesResourcePreflightEnvelope/invalid/warning-without-message.json +32 -0
  233. package/fixtures/openapi/KubernetesResourcePreflightEnvelope/valid/mixed-diagnostics.json +83 -0
  234. package/fixtures/openapi/LogPage/invalid/missing-entry-source.json +12 -0
  235. package/fixtures/openapi/LogPage/valid/partial-runtime.json +42 -0
  236. package/fixtures/openapi/LogQuery/invalid/missing-selector.json +3 -0
  237. package/fixtures/openapi/LogQuery/invalid/unknown-source-mode.json +6 -0
  238. package/fixtures/openapi/LogQuery/valid/docker-project.json +12 -0
  239. package/fixtures/openapi/LogQuery/valid/runtime-workload.json +21 -0
  240. package/fixtures/openapi/LogStreamEvent/invalid/missing-entry.json +3 -0
  241. package/fixtures/openapi/LogStreamEvent/invalid/unknown-event-type.json +3 -0
  242. package/fixtures/openapi/LogStreamEvent/valid/live-entry.json +16 -0
  243. package/fixtures/openapi/MCPCapabilityListEnvelope/invalid/missing-scopes.json +9 -0
  244. package/fixtures/openapi/MCPCapabilityListEnvelope/valid/minimal.json +10 -0
  245. package/fixtures/openapi/MFAAdminResetRequest/invalid/missing-reason.json +3 -0
  246. package/fixtures/openapi/MFAAdminResetRequest/valid/security-incident.json +4 -0
  247. package/fixtures/openapi/MFAWebAuthnRequestOptionsEnvelope/invalid/missing-challenge-id.json +9 -0
  248. package/fixtures/openapi/MFAWebAuthnRequestOptionsEnvelope/valid/step-up.json +11 -0
  249. package/fixtures/openapi/ManifestDeploymentEnvelope/invalid/bad-condition-status.json +33 -0
  250. package/fixtures/openapi/ManifestDeploymentEnvelope/valid/converged.json +36 -0
  251. package/fixtures/openapi/ManifestSourceUpdateInput/invalid/unknown-mode.json +6 -0
  252. package/fixtures/openapi/ManifestSourceUpdateInput/valid/soha-managed.json +6 -0
  253. package/fixtures/openapi/ObservabilityDataSource/valid/healthy.json +33 -0
  254. package/fixtures/openapi/ObservabilityDataSourceInput/invalid/secret-in-config.json +9 -0
  255. package/fixtures/openapi/ObservabilityDataSourceInput/valid/loki.json +33 -0
  256. package/fixtures/openapi/ObservabilityDataSourceInput/valid/provider.json +21 -0
  257. package/fixtures/openapi/PasswordLoginRequest/invalid/extra-field.json +5 -0
  258. package/fixtures/openapi/PasswordLoginRequest/valid/password-login.json +4 -0
  259. package/fixtures/openapi/PersonalAccessTokenInput/invalid/extra-field.json +6 -0
  260. package/fixtures/openapi/PersonalAccessTokenInput/valid/create.json +9 -0
  261. package/fixtures/openapi/PluginManifest/invalid/bad-type.json +7 -0
  262. package/fixtures/openapi/PluginManifest/valid/skill-pack.json +12 -0
  263. package/fixtures/openapi/RepositoryInput/invalid/embedded-token.json +8 -0
  264. package/fixtures/openapi/RepositoryInput/valid/gitlab.json +11 -0
  265. package/fixtures/openapi/RuntimeConfigChangeRequest/invalid/missing-version.json +8 -0
  266. package/fixtures/openapi/RuntimeConfigChangeRequest/valid/feature-flags.json +14 -0
  267. package/fixtures/openapi/RuntimeConfigSnapshotEnvelope/invalid/editable-secret.json +17 -0
  268. package/fixtures/openapi/RuntimeConfigSnapshotEnvelope/invalid/exposed-default-secret.json +18 -0
  269. package/fixtures/openapi/RuntimeConfigSnapshotEnvelope/invalid/exposed-effective-secret.json +18 -0
  270. package/fixtures/openapi/RuntimeConfigSnapshotEnvelope/valid/effective.json +34 -0
  271. package/fixtures/openapi/SAMLMetadataInput/invalid/unknown-source.json +4 -0
  272. package/fixtures/openapi/SAMLMetadataInput/valid/xml.json +4 -0
  273. package/fixtures/openapi/SecretCreateRequest/invalid/missing-value.json +5 -0
  274. package/fixtures/openapi/SecretCreateRequest/valid/create.json +13 -0
  275. package/fixtures/openapi/SecretLeaseRedemptionEnvelope/invalid/invalid-alias.json +9 -0
  276. package/fixtures/openapi/SecretLeaseRedemptionEnvelope/valid/redeem.json +9 -0
  277. package/fixtures/openapi/SecretMetadataEnvelope/invalid/plaintext-value.json +15 -0
  278. package/fixtures/openapi/SecretMetadataEnvelope/valid/metadata.json +20 -0
  279. package/fixtures/openapi/SecretRotateRequest/invalid/empty-value.json +3 -0
  280. package/fixtures/openapi/SecretRotateRequest/valid/rotate.json +3 -0
  281. package/fixtures/openapi/ServiceAccountInput/invalid/missing-status.json +4 -0
  282. package/fixtures/openapi/ServiceAccountInput/valid/create.json +8 -0
  283. package/fixtures/openapi/WorkbenchStreamEvent/invalid/extra-field.json +11 -0
  284. package/fixtures/openapi/WorkbenchStreamEvent/invalid/missing-server-fields.json +5 -0
  285. package/fixtures/openapi/WorkbenchStreamEvent/valid/message-done.json +13 -0
  286. package/gen/go/sohaapi/client.go +989 -0
  287. package/gen/go/sohaapi/client_test.go +2127 -0
  288. package/gen/go/sohaapi/types.go +21450 -0
  289. package/gen/ts/sohaapi/index.ts +22869 -0
  290. package/go.mod +18 -0
  291. package/go.sum +46 -0
  292. package/governance/approval-request.schema.json +187 -0
  293. package/governance/audit-log.schema.json +37 -0
  294. package/helmrelease/release.go +108 -0
  295. package/helmrelease/release_test.go +9 -0
  296. package/knowledge/connector-checkpoint.schema.json +16 -0
  297. package/knowledge/connector-definition.schema.json +18 -0
  298. package/knowledge/context-envelope.schema.json +32 -0
  299. package/knowledge/graph-revision.schema.json +21 -0
  300. package/knowledge/index-publish.schema.json +17 -0
  301. package/knowledge/ingestion-job.schema.json +22 -0
  302. package/knowledge/ingestion-stage.schema.json +19 -0
  303. package/knowledge/knowledge-base.schema.json +48 -0
  304. package/knowledge/knowledge-search.schema.json +21 -0
  305. package/knowledge/knowledge-source.schema.json +28 -0
  306. package/knowledge/retrieval-trace.schema.json +21 -0
  307. package/mcp/gateway-capability-baseline.schema.json +290 -0
  308. package/mcp/gateway-manifest.schema.json +210 -0
  309. package/memory/memory-policy.schema.json +19 -0
  310. package/memory/memory-record.schema.json +25 -0
  311. package/openapi/soha-api.json +42282 -0
  312. package/openapi/soha-api.yaml +21748 -0
  313. package/openapi/spec_generated.go +23 -0
  314. package/openapi/spec_test.go +38 -0
  315. package/package.json +122 -0
  316. package/plugins/marketplace-catalog.schema.json +120 -0
  317. package/plugins/observability-log-query-v1.schema.json +88 -0
  318. package/plugins/plugin-manifest.schema.json +498 -0
  319. package/presets/mcp-preset.schema.json +142 -0
  320. package/profiles/agent-profile.schema.json +154 -0
  321. package/resource/crd_definition.go +10 -0
  322. package/resource/gateway_details_test.go +55 -0
  323. package/resource/models.go +1587 -0
  324. package/resource/models_test.go +72 -0
  325. package/runner/operation-lifecycle.schema.json +112 -0
  326. package/skills/skill-manifest.schema.json +64 -0
  327. package/streamlimit/limited_buffer.go +58 -0
  328. package/streamlimit/limited_buffer_test.go +38 -0
@@ -0,0 +1,28 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://opensoha.dev/schemas/knowledge/knowledge-source.schema.json",
4
+ "title": "Knowledge Source",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": ["id", "knowledgeBaseId", "name", "kind", "syncPolicy", "status", "createdAt", "updatedAt"],
8
+ "properties": {
9
+ "id": { "type": "string", "minLength": 1 },
10
+ "knowledgeBaseId": { "type": "string", "minLength": 1 },
11
+ "name": { "type": "string", "minLength": 1, "maxLength": 160 },
12
+ "kind": { "enum": ["inline", "http", "git", "object"] },
13
+ "configRef": { "type": "string" },
14
+ "config": { "type": "object" },
15
+ "syncPolicy": {
16
+ "type": "object",
17
+ "additionalProperties": false,
18
+ "required": ["mode"],
19
+ "properties": { "mode": { "enum": ["manual", "scheduled"] }, "schedule": { "type": "string" } }
20
+ },
21
+ "cursor": { "type": "string" },
22
+ "status": { "enum": ["pending", "ready", "syncing", "failed"] },
23
+ "lastError": { "type": "string" },
24
+ "lastSyncedAt": { "type": "string", "format": "date-time" },
25
+ "createdAt": { "type": "string", "format": "date-time" },
26
+ "updatedAt": { "type": "string", "format": "date-time" }
27
+ }
28
+ }
@@ -0,0 +1,21 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://opensoha.dev/schemas/knowledge/retrieval-trace.schema.json",
4
+ "title": "Production Retrieval Trace",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": ["schemaVersion", "traceId", "queryHash", "indexRevision", "routeRef", "candidateCount", "hitCount", "noAnswer", "timingMs"],
8
+ "properties": {
9
+ "schemaVersion": { "const": "opensoha.dev/knowledge-retrieval-trace/v1" },
10
+ "traceId": { "type": "string", "minLength": 1 },
11
+ "queryHash": { "type": "string", "pattern": "^sha256:[a-f0-9]{64}$" },
12
+ "indexRevision": { "type": "string", "minLength": 1 },
13
+ "routeRef": { "type": "string", "minLength": 1 },
14
+ "providerRef": { "type": "string" },
15
+ "candidateCount": { "type": "integer", "minimum": 0 },
16
+ "hitCount": { "type": "integer", "minimum": 0 },
17
+ "noAnswer": { "type": "boolean" },
18
+ "degraded": { "type": "boolean" },
19
+ "timingMs": { "type": "integer", "minimum": 0 }
20
+ }
21
+ }
@@ -0,0 +1,290 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://contracts.opensoha.dev/mcp/gateway-capability-baseline.schema.json",
4
+ "title": "Soha AI Gateway Capability Baseline",
5
+ "description": "Release-governed AI Gateway capability baseline used by skills, CLI/MCP validation, and product release review. Unlike the runtime manifest, this catalog may include approved or reserved capabilities before they are visible to a caller.",
6
+ "type": "object",
7
+ "required": ["schemaVersion", "version", "source", "tools"],
8
+ "properties": {
9
+ "$schema": {
10
+ "type": "string",
11
+ "minLength": 1
12
+ },
13
+ "schemaVersion": {
14
+ "const": "opensoha.dev/gateway-capability-catalog/v1"
15
+ },
16
+ "version": {
17
+ "type": "string",
18
+ "pattern": "^[0-9]+\\.[0-9]+\\.[0-9]+([-+][A-Za-z0-9.-]+)?$"
19
+ },
20
+ "source": {
21
+ "type": "object",
22
+ "required": ["repository", "path", "syncStrategy"],
23
+ "properties": {
24
+ "repository": {
25
+ "type": "string",
26
+ "minLength": 1
27
+ },
28
+ "path": {
29
+ "type": "string",
30
+ "minLength": 1
31
+ },
32
+ "syncStrategy": {
33
+ "type": "string",
34
+ "minLength": 1
35
+ }
36
+ },
37
+ "additionalProperties": false
38
+ },
39
+ "plannedSkills": {
40
+ "type": "array",
41
+ "items": {
42
+ "type": "string",
43
+ "minLength": 1
44
+ },
45
+ "uniqueItems": true
46
+ },
47
+ "tools": {
48
+ "type": "array",
49
+ "minItems": 1,
50
+ "items": {
51
+ "$ref": "#/$defs/ToolRecord"
52
+ },
53
+ "uniqueItems": true
54
+ },
55
+ "resources": {
56
+ "type": "array",
57
+ "items": {
58
+ "$ref": "#/$defs/ResourceRecord"
59
+ },
60
+ "uniqueItems": true
61
+ },
62
+ "prompts": {
63
+ "type": "array",
64
+ "items": {
65
+ "$ref": "#/$defs/PromptRecord"
66
+ },
67
+ "uniqueItems": true
68
+ }
69
+ },
70
+ "additionalProperties": false,
71
+ "$defs": {
72
+ "RiskLevel": {
73
+ "type": "string",
74
+ "enum": ["read", "analyze", "mutate", "execute", "high"]
75
+ },
76
+ "BaselineStatus": {
77
+ "type": "string",
78
+ "enum": ["stable-runtime", "baseline-approved", "baseline-proposed", "reserved", "deprecated"]
79
+ },
80
+ "StringArray": {
81
+ "type": "array",
82
+ "items": {
83
+ "type": "string",
84
+ "minLength": 1
85
+ },
86
+ "uniqueItems": true
87
+ },
88
+ "StringArrayAllowEmpty": {
89
+ "type": "array",
90
+ "items": {
91
+ "type": "string",
92
+ "minLength": 1
93
+ },
94
+ "uniqueItems": true
95
+ },
96
+ "AuditRecord": {
97
+ "type": "object",
98
+ "required": ["resourceKind", "relatedIds"],
99
+ "properties": {
100
+ "resourceKind": {
101
+ "type": "string",
102
+ "minLength": 1
103
+ },
104
+ "relatedIds": {
105
+ "$ref": "#/$defs/StringArray"
106
+ }
107
+ },
108
+ "additionalProperties": false
109
+ },
110
+ "ToolRecord": {
111
+ "type": "object",
112
+ "required": [
113
+ "name",
114
+ "title",
115
+ "domain",
116
+ "owningWorkbench",
117
+ "owningService",
118
+ "action",
119
+ "riskLevel",
120
+ "permissionKeys",
121
+ "requiredScopes",
122
+ "mcpAdapterId",
123
+ "mcpToolName",
124
+ "requiresApproval",
125
+ "status",
126
+ "skillRefs",
127
+ "audit",
128
+ "redaction",
129
+ "moduleId",
130
+ "routeEvidence"
131
+ ],
132
+ "properties": {
133
+ "name": {
134
+ "type": "string",
135
+ "minLength": 1
136
+ },
137
+ "title": {
138
+ "type": "string",
139
+ "minLength": 1
140
+ },
141
+ "domain": {
142
+ "type": "string",
143
+ "minLength": 1
144
+ },
145
+ "owningWorkbench": {
146
+ "type": "string",
147
+ "minLength": 1
148
+ },
149
+ "owningService": {
150
+ "type": "string",
151
+ "minLength": 1
152
+ },
153
+ "action": {
154
+ "type": "string",
155
+ "minLength": 1
156
+ },
157
+ "riskLevel": {
158
+ "$ref": "#/$defs/RiskLevel"
159
+ },
160
+ "permissionKeys": {
161
+ "$ref": "#/$defs/StringArray"
162
+ },
163
+ "requiredScopes": {
164
+ "$ref": "#/$defs/StringArray"
165
+ },
166
+ "mcpAdapterId": {
167
+ "type": "string",
168
+ "minLength": 1
169
+ },
170
+ "mcpToolName": {
171
+ "type": "string",
172
+ "minLength": 1
173
+ },
174
+ "requiresApproval": {
175
+ "type": "boolean"
176
+ },
177
+ "status": {
178
+ "$ref": "#/$defs/BaselineStatus"
179
+ },
180
+ "skillRefs": {
181
+ "$ref": "#/$defs/StringArray"
182
+ },
183
+ "resourceRefs": {
184
+ "$ref": "#/$defs/StringArrayAllowEmpty"
185
+ },
186
+ "promptRefs": {
187
+ "$ref": "#/$defs/StringArrayAllowEmpty"
188
+ },
189
+ "audit": {
190
+ "$ref": "#/$defs/AuditRecord"
191
+ },
192
+ "redaction": {
193
+ "$ref": "#/$defs/StringArray"
194
+ },
195
+ "moduleId": {
196
+ "type": "string",
197
+ "minLength": 1
198
+ },
199
+ "routeEvidence": {
200
+ "$ref": "#/$defs/StringArray"
201
+ }
202
+ },
203
+ "additionalProperties": false
204
+ },
205
+ "ResourceRecord": {
206
+ "type": "object",
207
+ "required": [
208
+ "name",
209
+ "description",
210
+ "permissionKeys",
211
+ "requiredScopes",
212
+ "status",
213
+ "skillRefs",
214
+ "toolRefs",
215
+ "promptRefs"
216
+ ],
217
+ "properties": {
218
+ "name": {
219
+ "type": "string",
220
+ "minLength": 1
221
+ },
222
+ "description": {
223
+ "type": "string",
224
+ "minLength": 1
225
+ },
226
+ "permissionKeys": {
227
+ "$ref": "#/$defs/StringArray"
228
+ },
229
+ "requiredScopes": {
230
+ "$ref": "#/$defs/StringArray"
231
+ },
232
+ "status": {
233
+ "$ref": "#/$defs/BaselineStatus"
234
+ },
235
+ "skillRefs": {
236
+ "$ref": "#/$defs/StringArray"
237
+ },
238
+ "toolRefs": {
239
+ "$ref": "#/$defs/StringArray"
240
+ },
241
+ "promptRefs": {
242
+ "$ref": "#/$defs/StringArrayAllowEmpty"
243
+ }
244
+ },
245
+ "additionalProperties": false
246
+ },
247
+ "PromptRecord": {
248
+ "type": "object",
249
+ "required": [
250
+ "name",
251
+ "description",
252
+ "permissionKeys",
253
+ "requiredScopes",
254
+ "status",
255
+ "skillRefs",
256
+ "toolRefs",
257
+ "resourceRefs"
258
+ ],
259
+ "properties": {
260
+ "name": {
261
+ "type": "string",
262
+ "minLength": 1
263
+ },
264
+ "description": {
265
+ "type": "string",
266
+ "minLength": 1
267
+ },
268
+ "permissionKeys": {
269
+ "$ref": "#/$defs/StringArray"
270
+ },
271
+ "requiredScopes": {
272
+ "$ref": "#/$defs/StringArray"
273
+ },
274
+ "status": {
275
+ "$ref": "#/$defs/BaselineStatus"
276
+ },
277
+ "skillRefs": {
278
+ "$ref": "#/$defs/StringArray"
279
+ },
280
+ "toolRefs": {
281
+ "$ref": "#/$defs/StringArray"
282
+ },
283
+ "resourceRefs": {
284
+ "$ref": "#/$defs/StringArrayAllowEmpty"
285
+ }
286
+ },
287
+ "additionalProperties": false
288
+ }
289
+ }
290
+ }
@@ -0,0 +1,210 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://contracts.opensoha.dev/mcp/gateway-manifest.schema.json",
4
+ "title": "Soha AI Gateway Manifest",
5
+ "description": "Permission-filtered capability manifest consumed by Soha CLI, MCP clients, AI agents, and web console surfaces.",
6
+ "type": "object",
7
+ "required": [
8
+ "name",
9
+ "version",
10
+ "generatedAt",
11
+ "principal",
12
+ "caller",
13
+ "permissionKeys",
14
+ "tools",
15
+ "summary"
16
+ ],
17
+ "properties": {
18
+ "name": { "type": "string" },
19
+ "version": { "type": "string" },
20
+ "generatedAt": { "type": "string", "format": "date-time" },
21
+ "principal": { "$ref": "#/$defs/Principal" },
22
+ "caller": { "$ref": "#/$defs/CallerContext" },
23
+ "permissionKeys": {
24
+ "type": "array",
25
+ "items": { "type": "string" }
26
+ },
27
+ "tools": {
28
+ "type": "array",
29
+ "items": { "$ref": "#/$defs/ToolCapability" }
30
+ },
31
+ "resources": {
32
+ "type": "array",
33
+ "items": { "$ref": "#/$defs/ResourceCapability" }
34
+ },
35
+ "prompts": {
36
+ "type": "array",
37
+ "items": { "$ref": "#/$defs/PromptCapability" }
38
+ },
39
+ "skills": {
40
+ "type": "array",
41
+ "items": { "$ref": "#/$defs/SkillCapability" }
42
+ },
43
+ "summary": { "$ref": "#/$defs/ManifestSummary" }
44
+ },
45
+ "additionalProperties": false,
46
+ "$defs": {
47
+ "JSONSchema": {
48
+ "type": "object",
49
+ "additionalProperties": true
50
+ },
51
+ "Principal": {
52
+ "type": "object",
53
+ "required": ["userId", "userName", "email", "roles", "teams", "projects", "tags"],
54
+ "properties": {
55
+ "userId": { "type": "string" },
56
+ "userName": { "type": "string" },
57
+ "email": { "type": "string" },
58
+ "roles": {
59
+ "type": "array",
60
+ "items": { "type": "string" }
61
+ },
62
+ "teams": {
63
+ "type": "array",
64
+ "items": { "type": "string" }
65
+ },
66
+ "projects": {
67
+ "type": "array",
68
+ "items": { "type": "string" }
69
+ },
70
+ "tags": {
71
+ "type": "array",
72
+ "items": { "type": "string" }
73
+ },
74
+ "permissionKeys": {
75
+ "type": "array",
76
+ "items": { "type": "string" }
77
+ }
78
+ },
79
+ "additionalProperties": true
80
+ },
81
+ "CallerContext": {
82
+ "type": "object",
83
+ "required": ["identityMode"],
84
+ "properties": {
85
+ "identityMode": { "type": "string" },
86
+ "aiClientId": { "type": "string" },
87
+ "aiClientName": { "type": "string" },
88
+ "skillId": { "type": "string" },
89
+ "tokenId": { "type": "string" },
90
+ "sessionId": { "type": "string" },
91
+ "subjectType": { "type": "string" },
92
+ "subjectId": { "type": "string" },
93
+ "source": { "type": "string" }
94
+ },
95
+ "additionalProperties": false
96
+ },
97
+ "RiskLevel": {
98
+ "type": "string",
99
+ "enum": ["read", "analyze", "mutate", "execute", "high"]
100
+ },
101
+ "ToolCapability": {
102
+ "type": "object",
103
+ "required": [
104
+ "name",
105
+ "title",
106
+ "description",
107
+ "domain",
108
+ "action",
109
+ "riskLevel",
110
+ "permissionKeys",
111
+ "requiresApproval"
112
+ ],
113
+ "properties": {
114
+ "name": { "type": "string" },
115
+ "title": { "type": "string" },
116
+ "description": { "type": "string" },
117
+ "domain": { "type": "string" },
118
+ "action": { "type": "string" },
119
+ "riskLevel": { "$ref": "#/$defs/RiskLevel" },
120
+ "permissionKeys": {
121
+ "type": "array",
122
+ "items": { "type": "string" }
123
+ },
124
+ "requiredScopes": {
125
+ "type": "array",
126
+ "items": { "type": "string" }
127
+ },
128
+ "mcpAdapterId": { "type": "string" },
129
+ "mcpToolName": { "type": "string" },
130
+ "requiresApproval": { "type": "boolean" },
131
+ "inputSchema": { "$ref": "#/$defs/JSONSchema" },
132
+ "outputSchema": { "$ref": "#/$defs/JSONSchema" }
133
+ },
134
+ "additionalProperties": false
135
+ },
136
+ "ResourceCapability": {
137
+ "type": "object",
138
+ "required": ["name", "description", "permissionKeys"],
139
+ "properties": {
140
+ "name": { "type": "string" },
141
+ "description": { "type": "string" },
142
+ "permissionKeys": {
143
+ "type": "array",
144
+ "items": { "type": "string" }
145
+ },
146
+ "requiredScopes": {
147
+ "type": "array",
148
+ "items": { "type": "string" }
149
+ },
150
+ "contextSchema": { "$ref": "#/$defs/JSONSchema" }
151
+ },
152
+ "additionalProperties": false
153
+ },
154
+ "PromptCapability": {
155
+ "type": "object",
156
+ "required": ["name", "description", "permissionKeys"],
157
+ "properties": {
158
+ "name": { "type": "string" },
159
+ "description": { "type": "string" },
160
+ "permissionKeys": {
161
+ "type": "array",
162
+ "items": { "type": "string" }
163
+ },
164
+ "requiredScopes": {
165
+ "type": "array",
166
+ "items": { "type": "string" }
167
+ },
168
+ "argumentSchema": { "$ref": "#/$defs/JSONSchema" },
169
+ "contextSchema": { "$ref": "#/$defs/JSONSchema" }
170
+ },
171
+ "additionalProperties": false
172
+ },
173
+ "SkillCapability": {
174
+ "type": "object",
175
+ "required": ["id", "name", "category", "description"],
176
+ "properties": {
177
+ "id": { "type": "string" },
178
+ "name": { "type": "string" },
179
+ "category": { "type": "string" },
180
+ "description": { "type": "string" },
181
+ "capabilityRefs": {
182
+ "type": "array",
183
+ "items": { "type": "string" }
184
+ },
185
+ "permissionKeys": {
186
+ "type": "array",
187
+ "items": { "type": "string" }
188
+ },
189
+ "requiredScopes": {
190
+ "type": "array",
191
+ "items": { "type": "string" }
192
+ }
193
+ },
194
+ "additionalProperties": false
195
+ },
196
+ "ManifestSummary": {
197
+ "type": "object",
198
+ "required": ["toolCount", "resourceCount", "promptCount", "skillCount", "deniedCount"],
199
+ "properties": {
200
+ "toolCount": { "type": "integer", "minimum": 0 },
201
+ "resourceCount": { "type": "integer", "minimum": 0 },
202
+ "promptCount": { "type": "integer", "minimum": 0 },
203
+ "skillCount": { "type": "integer", "minimum": 0 },
204
+ "deniedCount": { "type": "integer", "minimum": 0 }
205
+ },
206
+ "additionalProperties": false
207
+ }
208
+ }
209
+ }
210
+
@@ -0,0 +1,19 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://opensoha.dev/schemas/memory/memory-policy.schema.json",
4
+ "title": "Long-Term Memory Policy",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": ["schemaVersion", "id", "version", "ownerTypes", "defaultTtlSeconds", "maximumTtlSeconds", "minimumConfidence", "explicitWriteOnly", "enabled"],
8
+ "properties": {
9
+ "schemaVersion": { "const": "opensoha.dev/memory-policy/v1" },
10
+ "id": { "type": "string", "minLength": 1 },
11
+ "version": { "type": "string", "minLength": 1 },
12
+ "ownerTypes": { "type": "array", "minItems": 1, "maxItems": 3, "uniqueItems": true, "items": { "enum": ["user", "session", "agent"] } },
13
+ "defaultTtlSeconds": { "type": "integer", "minimum": 1, "maximum": 31536000 },
14
+ "maximumTtlSeconds": { "type": "integer", "minimum": 1, "maximum": 31536000 },
15
+ "minimumConfidence": { "type": "number", "minimum": 0, "maximum": 1 },
16
+ "explicitWriteOnly": { "type": "boolean" },
17
+ "enabled": { "type": "boolean" }
18
+ }
19
+ }
@@ -0,0 +1,25 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://opensoha.dev/schemas/memory/memory-record.schema.json",
4
+ "title": "Explicit Long-Term Memory Record",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": ["schemaVersion", "id", "ownerType", "ownerId", "scopeHash", "fact", "sourceType", "confidence", "validFrom", "policyVersion", "status", "createdAt"],
8
+ "properties": {
9
+ "schemaVersion": { "const": "opensoha.dev/memory-record/v1" },
10
+ "id": { "type": "string", "minLength": 1 },
11
+ "ownerType": { "enum": ["user", "session", "agent"] },
12
+ "ownerId": { "type": "string", "minLength": 1 },
13
+ "scopeHash": { "type": "string", "pattern": "^sha256:[a-f0-9]{64}$" },
14
+ "fact": { "type": "string", "minLength": 1, "maxLength": 8000 },
15
+ "sourceType": { "enum": ["explicit_user", "curated_extractor"] },
16
+ "sourceRefs": { "type": "array", "maxItems": 32, "items": { "type": "string" } },
17
+ "confidence": { "type": "number", "minimum": 0, "maximum": 1 },
18
+ "validFrom": { "type": "string", "format": "date-time" },
19
+ "expiresAt": { "type": "string", "format": "date-time" },
20
+ "policyVersion": { "type": "string", "minLength": 1 },
21
+ "status": { "enum": ["active", "expired", "deleted"] },
22
+ "createdAt": { "type": "string", "format": "date-time" },
23
+ "deletedAt": { "type": "string", "format": "date-time" }
24
+ }
25
+ }