@opensoha/contracts 0.1.17 → 0.1.19

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 (275) hide show
  1. package/COMPATIBILITY.md +72 -0
  2. package/README.md +38 -0
  3. package/auth/catalog_generated.go +2 -2
  4. package/auth/outpost_headers.go +17 -0
  5. package/auth/outpost_headers_test.go +16 -0
  6. package/auth/permission-catalog.json +383 -1
  7. package/compat/consumer-revisions.json +7 -0
  8. package/compat/json-schema-ecosystem-0.1.0.json +1 -1
  9. package/compat/openapi-loose-boundaries-0.1.0.json +78 -46
  10. package/delivery/canonical.go +136 -0
  11. package/delivery/document.go +203 -0
  12. package/delivery/document.schema.json +1527 -0
  13. package/delivery/document_test.go +191 -0
  14. package/delivery/parser.go +155 -0
  15. package/evaluation/evaluation-run.schema.json +64 -10
  16. package/fixtures/json-schema/gateway-manifest/invalid/bad-execution-mode.json +73 -0
  17. package/fixtures/json-schema/gateway-manifest/invalid/unversioned-check.json +85 -0
  18. package/fixtures/json-schema/gateway-manifest/valid/checks.json +86 -0
  19. package/fixtures/json-schema/gateway-manifest/valid/versioned-task.json +73 -0
  20. package/fixtures/json-schema/network-ingest-event/invalid/vpn-probe-negative-rtt.json +34 -0
  21. package/fixtures/json-schema/network-ingest-event/invalid/vpn-stats-secret.json +27 -0
  22. package/fixtures/json-schema/network-ingest-event/valid/vpn-probe-batch.json +45 -0
  23. package/fixtures/json-schema/network-ingest-event/valid/vpn-tunnel-stats.json +26 -0
  24. package/fixtures/json-schema/network-runtime-protocol/invalid/vpn-managed-bad-token.json +15 -0
  25. package/fixtures/json-schema/network-runtime-protocol/invalid/vpn-managed-mode-override.json +16 -0
  26. package/fixtures/json-schema/network-runtime-protocol/valid/managed-vpn-macos-enrollment.json +27 -0
  27. package/fixtures/json-schema/network-runtime-protocol/valid/vpn-managed-connect.json +15 -0
  28. package/fixtures/openapi/AgentChatInput/invalid/empty-question.json +4 -0
  29. package/fixtures/openapi/AgentChatInput/invalid/system-role.json +9 -0
  30. package/fixtures/openapi/AgentChatInput/valid/authorized-background.json +5 -0
  31. package/fixtures/openapi/AgentChatInput/valid/conversation.json +15 -0
  32. package/fixtures/openapi/AgentRunnerToolCallRequest/invalid/model-identity.json +1 -0
  33. package/fixtures/openapi/AgentRunnerToolCallRequest/valid/search.json +1 -0
  34. package/fixtures/openapi/ApplicationInput/invalid/negative-version.json +6 -0
  35. package/fixtures/openapi/ApplicationInput/invalid/zero-version.json +6 -0
  36. package/fixtures/openapi/ApplicationInput/valid/versioned.json +6 -0
  37. package/fixtures/openapi/ApprovalRequest/invalid/resolved-scopes.json +20 -0
  38. package/fixtures/openapi/ApprovalRequest/valid/resolved-scopes.json +21 -0
  39. package/fixtures/openapi/BuildTemplateInput/invalid/negative-revision.json +6 -0
  40. package/fixtures/openapi/BuildTemplateInput/valid/draft.json +11 -0
  41. package/fixtures/openapi/BuildTriggerRequest/invalid/no-ref.json +1 -0
  42. package/fixtures/openapi/BuildTriggerRequest/valid/no-environment.json +1 -0
  43. package/fixtures/openapi/BuildpacksConfiguration/invalid/mutable-builder.json +5 -0
  44. package/fixtures/openapi/BuildpacksConfiguration/invalid/privilege-override.json +6 -0
  45. package/fixtures/openapi/BuildpacksConfiguration/invalid/unsupported-platform.json +5 -0
  46. package/fixtures/openapi/BuildpacksConfiguration/valid/pinned.json +5 -0
  47. package/fixtures/openapi/CapabilityAssessment/invalid/contract.json +16 -0
  48. package/fixtures/openapi/CapabilityAssessment/valid/contract.json +16 -0
  49. package/fixtures/openapi/CapabilityPlan/invalid/contract.json +16 -0
  50. package/fixtures/openapi/CapabilityPlan/valid/contract.json +19 -0
  51. package/fixtures/openapi/CapabilityPlanValidation/invalid/contract.json +5 -0
  52. package/fixtures/openapi/CapabilityPlanValidation/valid/contract.json +11 -0
  53. package/fixtures/openapi/CapabilityTask/invalid/contract.json +33 -0
  54. package/fixtures/openapi/CapabilityTask/valid/contract.json +34 -0
  55. package/fixtures/openapi/CapabilityTaskInput/invalid/contract.json +22 -0
  56. package/fixtures/openapi/CapabilityTaskInput/valid/contract.json +22 -0
  57. package/fixtures/openapi/CapabilityValueSemantic/invalid/contract.json +4 -0
  58. package/fixtures/openapi/CapabilityValueSemantic/valid/contract.json +7 -0
  59. package/fixtures/openapi/ConnectionCheckResult/invalid/missing-health.json +1 -0
  60. package/fixtures/openapi/ConnectionCheckResult/invalid/task-id.json +1 -0
  61. package/fixtures/openapi/ConnectionCheckResult/valid/failure.json +1 -0
  62. package/fixtures/openapi/ConnectionCheckResult/valid/healthy.json +1 -0
  63. package/fixtures/openapi/DeliveryAccessResult/invalid/release-verification.json +8 -0
  64. package/fixtures/openapi/DeliveryAccessResult/valid/release-verification.json +8 -0
  65. package/fixtures/openapi/DeliveryBatchAssessment/invalid/release-verification.json +11 -0
  66. package/fixtures/openapi/DeliveryBatchAssessment/valid/release-verification.json +11 -0
  67. package/fixtures/openapi/DeliveryBatchAssessmentInput/invalid/release-verification.json +9 -0
  68. package/fixtures/openapi/DeliveryBatchAssessmentInput/valid/release-verification.json +8 -0
  69. package/fixtures/openapi/DeliveryBatchInput/invalid/ambiguous-source.json +19 -0
  70. package/fixtures/openapi/DeliveryBatchInput/invalid/missing-idempotency.json +16 -0
  71. package/fixtures/openapi/DeliveryBatchInput/valid/quick-deploy.json +17 -0
  72. package/fixtures/openapi/DeliveryBatchInput/valid/saved-workflow.json +5 -0
  73. package/fixtures/openapi/DeliveryBlueprintInput/invalid/unversioned-preset.json +31 -0
  74. package/fixtures/openapi/DeliveryBlueprintInput/valid/service-preset.json +32 -0
  75. package/fixtures/openapi/DeliveryDocument/invalid/unknown-field.json +24 -0
  76. package/fixtures/openapi/DeliveryDocument/invalid/unknown-kind.json +23 -0
  77. package/fixtures/openapi/DeliveryDocument/invalid/unknown-version.json +23 -0
  78. package/fixtures/openapi/DeliveryDocument/valid/build-template.json +26 -0
  79. package/fixtures/openapi/DeliveryDocument/valid/deployment-template.json +26 -0
  80. package/fixtures/openapi/DeliveryDocument/valid/legacy-dag.json +39 -0
  81. package/fixtures/openapi/DeliveryDocument/valid/workflow-template.json +23 -0
  82. package/fixtures/openapi/DeliveryDocument/valid/workflow.json +20 -0
  83. package/fixtures/openapi/DeliveryDraftInput/invalid/short-idempotency-key.json +30 -0
  84. package/fixtures/openapi/DeliveryDraftInput/valid/idempotent-create.json +30 -0
  85. package/fixtures/openapi/DeliveryDraftService/invalid/zero-version.json +7 -0
  86. package/fixtures/openapi/DeliveryDraftService/valid/versioned-template.json +9 -0
  87. package/fixtures/openapi/DeliveryExecutionHistoryPage/invalid-kind.json +9 -0
  88. package/fixtures/openapi/DeliveryExecutionHistoryPage/valid-build.json +16 -0
  89. package/fixtures/openapi/DeliveryExecutionHistoryPage/valid-empty.json +3 -0
  90. package/fixtures/openapi/DeliveryPlanApprovalInput/invalid/confirm.json +1 -0
  91. package/fixtures/openapi/DeliveryPlanApprovalInput/valid/approve.json +1 -0
  92. package/fixtures/openapi/DeliveryPlanInput/invalid/draft-manifest-revision.json +1 -0
  93. package/fixtures/openapi/DeliveryPlanInput/valid/manifest-revision.json +1 -0
  94. package/fixtures/openapi/DeliveryTargetInput/invalid/deploy-without-environment.json +7 -0
  95. package/fixtures/openapi/DeliveryTargetInput/valid/build-without-environment.json +6 -0
  96. package/fixtures/openapi/DeliveryTemplateSourceInput/invalid/duplicate-kind.json +13 -0
  97. package/fixtures/openapi/DeliveryTemplateSourceInput/invalid/embedded-credentials.json +16 -0
  98. package/fixtures/openapi/DeliveryTemplateSourceInput/invalid/empty-kinds.json +10 -0
  99. package/fixtures/openapi/DeliveryTemplateSourceInput/invalid/negative-generation.json +15 -0
  100. package/fixtures/openapi/DeliveryTemplateSourceInput/invalid/unknown-kind.json +12 -0
  101. package/fixtures/openapi/DeliveryTemplateSourceInput/valid/manual-source.json +15 -0
  102. package/fixtures/openapi/DeliveryWorkflowDefinition/invalid/unversioned-template.json +15 -0
  103. package/fixtures/openapi/DeliveryWorkflowDefinition/valid/cross-app.json +24 -0
  104. package/fixtures/openapi/DeliveryWorkflowInput/invalid/short-key.json +1 -0
  105. package/fixtures/openapi/DeliveryWorkflowInput/valid/idempotent-create.json +1 -0
  106. package/fixtures/openapi/DeploymentTemplatePreviewInput/invalid/invalid-target-override.json +7 -0
  107. package/fixtures/openapi/DeploymentTemplatePreviewInput/invalid/invalid-zero-version.json +6 -0
  108. package/fixtures/openapi/DeploymentTemplatePreviewInput/valid/valid.json +6 -0
  109. package/fixtures/openapi/DockerDeliveryConfiguration/invalid/empty-mappings.json +5 -0
  110. package/fixtures/openapi/DockerDeliveryConfiguration/valid/compose.json +7 -0
  111. package/fixtures/openapi/DockerDeliverySnapshot/invalid/missing-required-field.json +19 -0
  112. package/fixtures/openapi/DockerDeliverySnapshot/valid/frozen-project.json +20 -0
  113. package/fixtures/openapi/DockerOperationCallbackRequest/invalid/cancellation-acknowledged-not-boolean.json +13 -0
  114. package/fixtures/openapi/DockerOperationCallbackRequest/valid/cancellation-acknowledged.json +13 -0
  115. package/fixtures/openapi/DockerProjectInput/invalid/empty-host.json +4 -0
  116. package/fixtures/openapi/DockerProjectInput/valid/inline-idempotent.json +7 -0
  117. package/fixtures/openapi/DockerQuickCreateHostInput/invalid/capacity-type.json +1 -0
  118. package/fixtures/openapi/DockerQuickCreateHostInput/valid/capacity.json +1 -0
  119. package/fixtures/openapi/HelmDeliveryConfiguration/invalid/plain-credential.json +21 -0
  120. package/fixtures/openapi/HelmDeliveryConfiguration/invalid/release-name.json +20 -0
  121. package/fixtures/openapi/HelmDeliveryConfiguration/valid/private-oci.json +20 -0
  122. package/fixtures/openapi/HelmDeliverySnapshot/invalid/secret-plan.json +31 -0
  123. package/fixtures/openapi/HelmDeliverySnapshot/invalid/unknown-operation.json +28 -0
  124. package/fixtures/openapi/HelmDeliverySnapshot/valid/first-install.json +28 -0
  125. package/fixtures/openapi/IdentityApplication/invalid/outpost-status.json +1 -0
  126. package/fixtures/openapi/IdentityApplicationOnboardingInput/invalid/missing-access.json +12 -0
  127. package/fixtures/openapi/IdentityApplicationOnboardingInput/valid/link.json +13 -0
  128. package/fixtures/openapi/IdentityOutpost/invalid/missing-runtime-status.json +9 -0
  129. package/fixtures/openapi/IdentityOutpost/valid/healthy.json +17 -0
  130. package/fixtures/openapi/IdentityOutpost/valid/unregistered.json +12 -0
  131. package/fixtures/openapi/IdentityOutpostDeployment/invalid/missing-protocol.json +3 -0
  132. package/fixtures/openapi/IdentityOutpostDeployment/valid/remote.json +6 -0
  133. package/fixtures/openapi/IdentityOutpostInput/invalid/forged-observation.json +7 -0
  134. package/fixtures/openapi/IdentityOutpostInput/valid/forward-auth.json +6 -0
  135. package/fixtures/openapi/IdentityOutpostInput/valid/legacy.json +8 -0
  136. package/fixtures/openapi/IdentityProviderSetup/invalid/fake-verification.json +1 -0
  137. package/fixtures/openapi/IdentityProviderSetup/valid/incomplete.json +1 -0
  138. package/fixtures/openapi/IdentityProviderSetup/valid/remote.json +1 -0
  139. package/fixtures/openapi/IdentityProviderUserMetadata/invalid/attributes.json +8 -0
  140. package/fixtures/openapi/IdentityProviderUserMetadata/valid/attributes.json +13 -0
  141. package/fixtures/openapi/KubernetesCustomResource/invalid/negative-generation.json +1 -0
  142. package/fixtures/openapi/KubernetesCustomResource/valid/deleting-operator.json +1 -0
  143. package/fixtures/openapi/KubernetesResourceCreationReceipt/invalid/manifest-content.json +20 -0
  144. package/fixtures/openapi/KubernetesResourceCreationReceipt/valid/confirmed.json +20 -0
  145. package/fixtures/openapi/KubernetesResourceCreationReceipt/valid/unknown.json +19 -0
  146. package/fixtures/openapi/ManifestDeploymentEnvelope/invalid/negative-resource-observation.json +57 -0
  147. package/fixtures/openapi/ManifestDeploymentEnvelope/valid/operator-deleting.json +57 -0
  148. package/fixtures/openapi/ManifestExecutionTaskPayload/invalid/gitops-empty.json +7 -0
  149. package/fixtures/openapi/ManifestExecutionTaskPayload/valid/gitops-frozen-children.json +18 -0
  150. package/fixtures/openapi/ManifestKustomizeOptions/invalid/escaping-entry.json +1 -0
  151. package/fixtures/openapi/ManifestKustomizeOptions/invalid/mutable-image.json +1 -0
  152. package/fixtures/openapi/ManifestKustomizeOptions/valid/overlay-images.json +7 -0
  153. package/fixtures/openapi/ManifestRevisionInput/invalid/missing-version.json +1 -0
  154. package/fixtures/openapi/ManifestRevisionInput/valid/current-draft.json +1 -0
  155. package/fixtures/openapi/ManifestServiceTemplateInputs/invalid/mutable-image.json +8 -0
  156. package/fixtures/openapi/ManifestServiceTemplateInputs/valid/frozen-service-image.json +9 -0
  157. package/fixtures/openapi/NetworkVPNConnectionIntentInput/invalid/auto-with-gateway.json +6 -0
  158. package/fixtures/openapi/NetworkVPNConnectionIntentInput/invalid/missing-manual-gateway.json +5 -0
  159. package/fixtures/openapi/NetworkVPNConnectionIntentInput/invalid/mode-override.json +7 -0
  160. package/fixtures/openapi/NetworkVPNConnectionIntentInput/valid/auto-intent.json +5 -0
  161. package/fixtures/openapi/NetworkVPNConnectionIntentInput/valid/manual-intent.json +6 -0
  162. package/fixtures/openapi/NetworkVPNProfileInput/invalid/unknown-private-key.json +25 -0
  163. package/fixtures/openapi/NetworkVPNProfileInput/valid/assigned-profile.json +24 -0
  164. package/fixtures/openapi/NetworkVPNSelectionPolicyInput/invalid/unbounded-attempts.json +21 -0
  165. package/fixtures/openapi/NetworkVPNSelectionPolicyInput/valid/provider-policy.json +21 -0
  166. package/fixtures/openapi/ObservabilityMetricAssessmentInput/invalid/arbitrary-expression.json +10 -0
  167. package/fixtures/openapi/ObservabilityMetricAssessmentInput/valid/metric-window.json +10 -0
  168. package/fixtures/openapi/PluginManifest/valid/hermes-api.json +53 -0
  169. package/fixtures/openapi/ProgressiveRolloutControlInput/invalid/missing-identity.json +5 -0
  170. package/fixtures/openapi/ProgressiveRolloutControlInput/invalid/skip-analysis.json +5 -0
  171. package/fixtures/openapi/ProgressiveRolloutControlInput/valid/pause.json +5 -0
  172. package/fixtures/openapi/ReleaseTargetInput/invalid/missing-required-field.json +15 -0
  173. package/fixtures/openapi/ReleaseTargetInput/valid/docker-compose.json +16 -0
  174. package/fixtures/openapi/RepositoryAnalysis/invalid/moving-ref.json +11 -0
  175. package/fixtures/openapi/RepositoryAnalysis/valid/go.json +29 -0
  176. package/fixtures/openapi/RepositoryAnalysisInput/invalid/arbitrary-source-url.json +6 -0
  177. package/fixtures/openapi/RepositoryAnalysisInput/invalid/missing-ref.json +4 -0
  178. package/fixtures/openapi/RepositoryAnalysisInput/valid/nested-project.json +6 -0
  179. package/fixtures/openapi/ServiceDeploymentTemplateBinding/invalid/invalid-unpinned.json +4 -0
  180. package/fixtures/openapi/ServiceDeploymentTemplateBinding/valid/valid.json +7 -0
  181. package/fixtures/openapi/ServiceDeploymentTemplateInput/invalid/invalid-executable-schema.json +25 -0
  182. package/fixtures/openapi/ServiceDeploymentTemplateInput/invalid/invalid-missing-schema.json +21 -0
  183. package/fixtures/openapi/ServiceDeploymentTemplateInput/invalid/invalid-mixed-renderers.json +40 -0
  184. package/fixtures/openapi/ServiceDeploymentTemplateInput/valid/valid-nested-parameters.json +41 -0
  185. package/fixtures/openapi/ServiceDeploymentTemplateInput/valid/valid-yaml.json +34 -0
  186. package/fixtures/openapi/TemplatePublishInput/invalid/missing-revision.json +1 -0
  187. package/fixtures/openapi/TemplatePublishInput/invalid/unknown-field.json +4 -0
  188. package/fixtures/openapi/TemplatePublishInput/invalid/zero-revision.json +3 -0
  189. package/fixtures/openapi/TemplatePublishInput/valid/revision.json +3 -0
  190. package/fixtures/openapi/ToolCapability/invalid/bad-idempotency.json +35 -0
  191. package/fixtures/openapi/ToolCapability/invalid/unversioned-check.json +47 -0
  192. package/fixtures/openapi/ToolCapability/valid/checks.json +48 -0
  193. package/fixtures/openapi/ToolCapability/valid/versioned-task.json +35 -0
  194. package/fixtures/openapi/ToolInvocationRequest/invalid/empty-version.json +8 -0
  195. package/fixtures/openapi/ToolInvocationRequest/valid/versioned.json +8 -0
  196. package/fixtures/openapi/ToolInvocationResult/invalid/missing-status-call.json +13 -0
  197. package/fixtures/openapi/ToolInvocationResult/valid/task.json +20 -0
  198. package/fixtures/openapi/UpdateBrandingSettingsRequest/invalid/dark-logo-type.json +9 -0
  199. package/fixtures/openapi/UpdateBrandingSettingsRequest/valid/dark-logos.json +10 -0
  200. package/fixtures/openapi/VirtualMachineCreateInput/invalid/capacity-type.json +1 -0
  201. package/fixtures/openapi/VirtualMachineCreateInput/valid/capacity.json +1 -0
  202. package/fixtures/openapi/VirtualizationCapacityInput/invalid/missing-disk.json +1 -0
  203. package/fixtures/openapi/VirtualizationCapacityInput/valid/running-vm.json +1 -0
  204. package/fixtures/openapi/VirtualizationCapacityResult/invalid/invented-status.json +1 -0
  205. package/fixtures/openapi/VirtualizationCapacityResult/valid/available.json +1 -0
  206. package/fixtures/openapi/VirtualizationWorkerCreateInput/invalid/secret-input.json +5 -0
  207. package/fixtures/openapi/VirtualizationWorkerCreateInput/valid/one-worker.json +4 -0
  208. package/fixtures/openapi/VirtualizationWorkerPoolInput/invalid/external-owner.json +27 -0
  209. package/fixtures/openapi/VirtualizationWorkerPoolInput/invalid/zero-budget.json +27 -0
  210. package/fixtures/openapi/VirtualizationWorkerPoolInput/valid/registered.json +27 -0
  211. package/fixtures/openapi/VirtualizationWorkerPoolListEnvelope/invalid/nested-data.json +5 -0
  212. package/fixtures/openapi/VirtualizationWorkerPoolListEnvelope/valid/empty.json +3 -0
  213. package/fixtures/openapi/WorkbenchContextSelection/invalid/missing-file-content.json +8 -0
  214. package/fixtures/openapi/WorkbenchContextSelection/invalid/unknown-reference-kind.json +8 -0
  215. package/fixtures/openapi/WorkbenchContextSelection/valid/text-and-resource.json +17 -0
  216. package/fixtures/openapi/WorkbenchInspectionTaskInput/invalid/trigger-without-plan.json +10 -0
  217. package/fixtures/openapi/WorkbenchInspectionTaskInput/invalid/unknown-trigger.json +28 -0
  218. package/fixtures/openapi/WorkbenchInspectionTaskInput/invalid/zero-interval.json +28 -0
  219. package/fixtures/openapi/WorkbenchInspectionTaskInput/valid/alert-capability.json +30 -0
  220. package/fixtures/openapi/WorkbenchInspectionTaskInput/valid/scheduled-capability.json +28 -0
  221. package/fixtures/openapi/WorkbenchInspectionTrigger/invalid/missing-rule.json +3 -0
  222. package/fixtures/openapi/WorkbenchInspectionTrigger/invalid/schedule-alert-selector.json +4 -0
  223. package/fixtures/openapi/WorkbenchInspectionTrigger/valid/schedule.json +3 -0
  224. package/fixtures/openapi/WorkbenchModelPreferences/invalid/unknown-effort.json +1 -0
  225. package/fixtures/openapi/WorkbenchModelPreferences/valid/selected.json +1 -0
  226. package/fixtures/openapi/WorkflowCatalogPage/invalid/unsupported-kind.json +6 -0
  227. package/fixtures/openapi/WorkflowCatalogPage/valid/build-without-environment.json +6 -0
  228. package/fixtures/openapi/WorkflowTemplateInput/invalid/zero-revision.json +6 -0
  229. package/fixtures/openapi/WorkflowTemplateInput/valid/draft.json +10 -0
  230. package/gen/go/sohaapi/client.go +11 -3
  231. package/gen/go/sohaapi/client_test.go +26 -3
  232. package/gen/go/sohaapi/types.go +8103 -863
  233. package/gen/go/sohaapi/types_test.go +100 -1
  234. package/gen/go/sohaapi/vpn_models_test.go +21 -0
  235. package/gen/ts/sohaapi/index.ts +20390 -13160
  236. package/go.mod +107 -5
  237. package/go.sum +379 -16
  238. package/helmrelease/delivery.go +283 -0
  239. package/helmrelease/delivery_test.go +102 -0
  240. package/helmrelease/frozen_chart.go +91 -0
  241. package/helmrelease/result.go +27 -0
  242. package/helmrelease/runtime/delivery.go +508 -0
  243. package/helmrelease/runtime/delivery_test.go +236 -0
  244. package/helmrelease/runtime/resources_test.go +60 -0
  245. package/helmrelease/values.go +99 -0
  246. package/knowledge/context-envelope.schema.json +1 -0
  247. package/mcp/gateway-manifest.schema.json +387 -72
  248. package/network/README.md +40 -0
  249. package/network/network-ingest-event.schema.json +228 -0
  250. package/network/network-runtime-protocol.schema.json +457 -1
  251. package/openapi/soha-api.json +54874 -38722
  252. package/openapi/soha-api.yaml +12199 -4982
  253. package/openapi/spec_generated.go +3 -3
  254. package/package.json +3 -1
  255. package/resource/manifest_health.go +155 -0
  256. package/resource/manifest_health_test.go +37 -0
  257. package/resource/models.go +14 -0
  258. package/resource/runtime/argocd.go +166 -0
  259. package/resource/runtime/argocd_integration_test.go +142 -0
  260. package/resource/runtime/argocd_observation.go +143 -0
  261. package/resource/runtime/argocd_operation.go +253 -0
  262. package/resource/runtime/argocd_resources.go +115 -0
  263. package/resource/runtime/argocd_resources_test.go +107 -0
  264. package/resource/runtime/argocd_test.go +386 -0
  265. package/resource/runtime/health.go +115 -0
  266. package/resource/runtime/health_test.go +78 -0
  267. package/resource/runtime/operator_integration_test.go +174 -0
  268. package/resource/runtime/ownership.go +178 -0
  269. package/resource/runtime/ownership_test.go +178 -0
  270. package/resource/runtime/rollout_integration_test.go +287 -0
  271. package/resource/runtime/rollout_observation.go +252 -0
  272. package/resource/runtime/rollout_operation.go +398 -0
  273. package/resource/runtime/rollout_resources.go +385 -0
  274. package/resource/runtime/rollout_task.go +165 -0
  275. package/resource/runtime/rollout_test.go +450 -0
@@ -21,6 +21,10 @@
21
21
  "messageId": { "$ref": "#/$defs/Identifier" },
22
22
  "messageType": {
23
23
  "enum": [
24
+ "vpn.managed.prepare.request",
25
+ "vpn.managed.prepare.result",
26
+ "vpn.managed.connect.request",
27
+ "vpn.managed.connect.result",
24
28
  "runtime.enroll.request",
25
29
  "runtime.enroll.result",
26
30
  "configuration.desired",
@@ -43,6 +47,9 @@
43
47
  "expiresAt": { "type": "string", "format": "date-time" },
44
48
  "payload": {
45
49
  "oneOf": [
50
+ { "$ref": "#/$defs/VPNManagedPrepareResult" },
51
+ { "$ref": "#/$defs/VPNManagedConnectRequest" },
52
+ { "$ref": "#/$defs/VPNManagedConnectResult" },
46
53
  { "$ref": "#/$defs/EnrollmentRequest" },
47
54
  { "$ref": "#/$defs/EnrollmentResult" },
48
55
  { "$ref": "#/$defs/ConfigurationDesired" },
@@ -60,6 +67,94 @@
60
67
  }
61
68
  },
62
69
  "allOf": [
70
+ {
71
+ "if": {
72
+ "properties": {
73
+ "messageType": {
74
+ "const": "vpn.managed.prepare.request"
75
+ }
76
+ },
77
+ "required": [
78
+ "messageType"
79
+ ]
80
+ },
81
+ "then": {
82
+ "properties": {
83
+ "runtimeKind": {
84
+ "const": "endpoint"
85
+ },
86
+ "payload": {
87
+ "$ref": "#/$defs/VPNManagedConnectRequest"
88
+ }
89
+ }
90
+ }
91
+ },
92
+ {
93
+ "if": {
94
+ "properties": {
95
+ "messageType": {
96
+ "const": "vpn.managed.prepare.result"
97
+ }
98
+ },
99
+ "required": [
100
+ "messageType"
101
+ ]
102
+ },
103
+ "then": {
104
+ "properties": {
105
+ "runtimeKind": {
106
+ "const": "endpoint"
107
+ },
108
+ "payload": {
109
+ "$ref": "#/$defs/VPNManagedPrepareResult"
110
+ }
111
+ }
112
+ }
113
+ },
114
+ {
115
+ "if": {
116
+ "properties": {
117
+ "messageType": {
118
+ "const": "vpn.managed.connect.request"
119
+ }
120
+ },
121
+ "required": [
122
+ "messageType"
123
+ ]
124
+ },
125
+ "then": {
126
+ "properties": {
127
+ "runtimeKind": {
128
+ "const": "endpoint"
129
+ },
130
+ "payload": {
131
+ "$ref": "#/$defs/VPNManagedConnectRequest"
132
+ }
133
+ }
134
+ }
135
+ },
136
+ {
137
+ "if": {
138
+ "properties": {
139
+ "messageType": {
140
+ "const": "vpn.managed.connect.result"
141
+ }
142
+ },
143
+ "required": [
144
+ "messageType"
145
+ ]
146
+ },
147
+ "then": {
148
+ "properties": {
149
+ "runtimeKind": {
150
+ "const": "endpoint"
151
+ },
152
+ "payload": {
153
+ "$ref": "#/$defs/VPNManagedConnectResult"
154
+ }
155
+ }
156
+ }
157
+ },
63
158
  {
64
159
  "if": { "properties": { "messageType": { "const": "runtime.enroll.request" } }, "required": ["messageType"] },
65
160
  "then": { "properties": { "payload": { "$ref": "#/$defs/EnrollmentRequest" } } }
@@ -144,6 +239,358 @@
144
239
  }
145
240
  ],
146
241
  "$defs": {
242
+ "VPNManagedPrepareRequest": {
243
+ "type": "object",
244
+ "additionalProperties": false,
245
+ "required": [
246
+ "requestId",
247
+ "intentId",
248
+ "intentToken"
249
+ ],
250
+ "properties": {
251
+ "requestId": {
252
+ "$ref": "#/$defs/Identifier"
253
+ },
254
+ "intentId": {
255
+ "$ref": "#/$defs/Identifier"
256
+ },
257
+ "intentToken": {
258
+ "type": "string",
259
+ "minLength": 43,
260
+ "maxLength": 43,
261
+ "pattern": "^[A-Za-z0-9_-]{43}$"
262
+ }
263
+ }
264
+ },
265
+ "VPNProbeDescriptor": {
266
+ "type": "object",
267
+ "additionalProperties": false,
268
+ "required": [
269
+ "gatewayId",
270
+ "runtimeId",
271
+ "name",
272
+ "providerCode"
273
+ ],
274
+ "properties": {
275
+ "gatewayId": {
276
+ "$ref": "#/$defs/Identifier"
277
+ },
278
+ "runtimeId": {
279
+ "$ref": "#/$defs/Identifier"
280
+ },
281
+ "name": {
282
+ "type": "string",
283
+ "maxLength": 200,
284
+ "minLength": 1
285
+ },
286
+ "providerCode": {
287
+ "type": "string",
288
+ "maxLength": 64
289
+ },
290
+ "url": {
291
+ "type": "string",
292
+ "maxLength": 2048,
293
+ "pattern": "^https://[^?#]+/vpn/probe$"
294
+ },
295
+ "token": {
296
+ "type": "string",
297
+ "minLength": 64,
298
+ "maxLength": 4096
299
+ },
300
+ "expiresAt": {
301
+ "type": "string",
302
+ "format": "date-time"
303
+ }
304
+ }
305
+ },
306
+ "VPNManagedPrepareResult": {
307
+ "type": "object",
308
+ "additionalProperties": false,
309
+ "required": [
310
+ "requestId",
311
+ "intentId",
312
+ "profileId",
313
+ "profileRevision",
314
+ "selectionPolicyRevision",
315
+ "expiresAt",
316
+ "samplesPerGateway",
317
+ "timeoutMillis",
318
+ "maxConcurrency",
319
+ "descriptors"
320
+ ],
321
+ "properties": {
322
+ "requestId": {
323
+ "$ref": "#/$defs/Identifier"
324
+ },
325
+ "intentId": {
326
+ "$ref": "#/$defs/Identifier"
327
+ },
328
+ "profileId": {
329
+ "$ref": "#/$defs/Identifier"
330
+ },
331
+ "profileRevision": {
332
+ "type": "integer",
333
+ "minimum": 1
334
+ },
335
+ "selectionPolicyRevision": {
336
+ "type": "integer",
337
+ "minimum": 1
338
+ },
339
+ "expiresAt": {
340
+ "type": "string",
341
+ "format": "date-time"
342
+ },
343
+ "samplesPerGateway": {
344
+ "type": "integer",
345
+ "minimum": 1,
346
+ "maximum": 10
347
+ },
348
+ "timeoutMillis": {
349
+ "type": "integer",
350
+ "minimum": 100,
351
+ "maximum": 3000
352
+ },
353
+ "maxConcurrency": {
354
+ "type": "integer",
355
+ "minimum": 1,
356
+ "maximum": 4
357
+ },
358
+ "descriptors": {
359
+ "type": "array",
360
+ "minItems": 0,
361
+ "maxItems": 32,
362
+ "items": {
363
+ "$ref": "#/$defs/VPNProbeDescriptor"
364
+ }
365
+ }
366
+ }
367
+ },
368
+ "VPNManagedConnectRequest": {
369
+ "type": "object",
370
+ "additionalProperties": false,
371
+ "required": [
372
+ "requestId",
373
+ "intentId",
374
+ "intentToken"
375
+ ],
376
+ "properties": {
377
+ "requestId": {
378
+ "$ref": "#/$defs/Identifier"
379
+ },
380
+ "intentId": {
381
+ "$ref": "#/$defs/Identifier"
382
+ },
383
+ "intentToken": {
384
+ "type": "string",
385
+ "minLength": 43,
386
+ "maxLength": 43,
387
+ "pattern": "^[A-Za-z0-9_-]{43}$"
388
+ },
389
+ "probeBatchId": {
390
+ "$ref": "#/$defs/Identifier"
391
+ }
392
+ }
393
+ },
394
+ "VPNManagedConnectResult": {
395
+ "type": "object",
396
+ "additionalProperties": false,
397
+ "required": [
398
+ "requestId",
399
+ "decision",
400
+ "reasonCode",
401
+ "policyVersion",
402
+ "validUntil",
403
+ "networkLeases",
404
+ "resourceLeases",
405
+ "profileId",
406
+ "profileRevision",
407
+ "selectionPolicyRevision",
408
+ "selection",
409
+ "selectionReason",
410
+ "siteId",
411
+ "networkSpaceId",
412
+ "mode",
413
+ "resourceIds",
414
+ "decisionId",
415
+ "failoverOnDisconnect",
416
+ "retryCooldownSeconds",
417
+ "maxAttempts"
418
+ ],
419
+ "properties": {
420
+ "requestId": {
421
+ "$ref": "#/$defs/Identifier"
422
+ },
423
+ "decision": {
424
+ "enum": [
425
+ "allow",
426
+ "deny"
427
+ ]
428
+ },
429
+ "reasonCode": {
430
+ "type": "string",
431
+ "minLength": 1,
432
+ "maxLength": 128
433
+ },
434
+ "sessionId": {
435
+ "$ref": "#/$defs/Identifier"
436
+ },
437
+ "gatewayId": {
438
+ "$ref": "#/$defs/Identifier"
439
+ },
440
+ "configurationVersion": {
441
+ "type": "integer",
442
+ "minimum": 1
443
+ },
444
+ "policyVersion": {
445
+ "type": "integer",
446
+ "minimum": 1
447
+ },
448
+ "validUntil": {
449
+ "type": "string",
450
+ "format": "date-time"
451
+ },
452
+ "networkLeases": {
453
+ "type": "array",
454
+ "maxItems": 256,
455
+ "items": {
456
+ "$ref": "#/$defs/NetworkLease"
457
+ }
458
+ },
459
+ "resourceLeases": {
460
+ "type": "array",
461
+ "maxItems": 512,
462
+ "items": {
463
+ "$ref": "#/$defs/ResourceLease"
464
+ }
465
+ },
466
+ "profileId": {
467
+ "$ref": "#/$defs/Identifier"
468
+ },
469
+ "profileRevision": {
470
+ "type": "integer",
471
+ "minimum": 1
472
+ },
473
+ "selectionPolicyRevision": {
474
+ "type": "integer",
475
+ "minimum": 1
476
+ },
477
+ "selection": {
478
+ "enum": [
479
+ "auto",
480
+ "manual"
481
+ ]
482
+ },
483
+ "selectionReason": {
484
+ "type": "string",
485
+ "maxLength": 128,
486
+ "minLength": 1
487
+ },
488
+ "siteId": {
489
+ "$ref": "#/$defs/Identifier"
490
+ },
491
+ "networkSpaceId": {
492
+ "$ref": "#/$defs/Identifier"
493
+ },
494
+ "mode": {
495
+ "enum": [
496
+ "internal_ztna",
497
+ "external_vpn",
498
+ "external_vpn_ztna",
499
+ "external_direct_ztna"
500
+ ]
501
+ },
502
+ "resourceIds": {
503
+ "type": "array",
504
+ "maxItems": 256,
505
+ "uniqueItems": true,
506
+ "items": {
507
+ "$ref": "#/$defs/Identifier"
508
+ }
509
+ },
510
+ "decisionId": {
511
+ "$ref": "#/$defs/Identifier"
512
+ },
513
+ "failoverOnDisconnect": {
514
+ "type": "boolean"
515
+ },
516
+ "retryCooldownSeconds": {
517
+ "type": "integer",
518
+ "minimum": 5,
519
+ "maximum": 300
520
+ },
521
+ "maxAttempts": {
522
+ "type": "integer",
523
+ "minimum": 1,
524
+ "maximum": 5
525
+ }
526
+ },
527
+ "allOf": [
528
+ {
529
+ "if": {
530
+ "properties": {
531
+ "decision": {
532
+ "const": "allow"
533
+ }
534
+ },
535
+ "required": [
536
+ "decision"
537
+ ]
538
+ },
539
+ "then": {
540
+ "required": [
541
+ "sessionId",
542
+ "gatewayId",
543
+ "configurationVersion"
544
+ ],
545
+ "anyOf": [
546
+ {
547
+ "properties": {
548
+ "networkLeases": {
549
+ "minItems": 1
550
+ }
551
+ }
552
+ },
553
+ {
554
+ "properties": {
555
+ "resourceLeases": {
556
+ "minItems": 1
557
+ }
558
+ }
559
+ }
560
+ ]
561
+ },
562
+ "else": {
563
+ "properties": {
564
+ "networkLeases": {
565
+ "maxItems": 0
566
+ },
567
+ "resourceLeases": {
568
+ "maxItems": 0
569
+ }
570
+ }
571
+ }
572
+ }
573
+ ]
574
+ },
575
+ "VPNProbeConfiguration": {
576
+ "type": "object",
577
+ "additionalProperties": false,
578
+ "required": [
579
+ "gatewayId",
580
+ "verificationKey"
581
+ ],
582
+ "properties": {
583
+ "gatewayId": {
584
+ "$ref": "#/$defs/Identifier"
585
+ },
586
+ "verificationKey": {
587
+ "type": "string",
588
+ "minLength": 44,
589
+ "maxLength": 44,
590
+ "pattern": "^[A-Za-z0-9+/]{43}=$"
591
+ }
592
+ }
593
+ },
147
594
  "Identifier": {
148
595
  "type": "string",
149
596
  "minLength": 1,
@@ -265,7 +712,7 @@
265
712
  "minItems": 1,
266
713
  "maxItems": 32,
267
714
  "uniqueItems": true,
268
- "items": { "enum": ["wireguard", "mihomo", "route-coordinator", "dns-coordinator"] }
715
+ "items": { "enum": ["wireguard", "mihomo", "route-coordinator", "dns-coordinator", "managed-vpn-v1", "vpn-probe-v1", "vpn-metrics-v1"] }
269
716
  }
270
717
  },
271
718
  "allOf": [{
@@ -316,6 +763,9 @@
316
763
  "resourceLeases"
317
764
  ],
318
765
  "properties": {
766
+ "vpnProbe": {
767
+ "$ref": "#/$defs/VPNProbeConfiguration"
768
+ },
319
769
  "configurationVersion": { "type": "integer", "minimum": 1 },
320
770
  "policyVersion": { "type": "integer", "minimum": 1 },
321
771
  "validUntil": { "type": "string", "format": "date-time" },
@@ -418,6 +868,12 @@
418
868
  "additionalProperties": false,
419
869
  "required": ["runtimeId", "publicKey", "allowedIPs", "persistentKeepaliveSeconds"],
420
870
  "properties": {
871
+ "sessionId": {
872
+ "$ref": "#/$defs/Identifier"
873
+ },
874
+ "vpnProfileId": {
875
+ "$ref": "#/$defs/Identifier"
876
+ },
421
877
  "runtimeId": { "$ref": "#/$defs/Identifier" },
422
878
  "deviceId": { "$ref": "#/$defs/Identifier" },
423
879
  "publicKey": { "$ref": "#/$defs/WireGuardPublicKey" },