@orchestraworks/cli 0.5.5 → 0.5.8
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.
- package/README.md +1 -1
- package/dist/artifacts/prelude.js +10 -1
- package/dist/cli/api/execute.js +7 -7
- package/dist/cli/core/auth.d.ts +11 -1
- package/dist/cli/core/auth.js +48 -4
- package/dist/cli/core/errors.js +4 -0
- package/dist/cli/core/platform-client.d.ts +3 -2
- package/dist/cli/core/profile.d.ts +2 -2
- package/dist/cli/factory/apply-preview.d.ts +23 -6
- package/dist/cli/factory/apply-preview.js +70 -43
- package/dist/cli/factory/apply-render.js +12 -4
- package/dist/cli/factory/apply.d.ts +7 -2
- package/dist/cli/factory/apply.js +86 -29
- package/dist/cli/factory/diff.js +20 -12
- package/dist/cli/factory/image-upload.d.ts +90 -0
- package/dist/cli/factory/image-upload.js +489 -0
- package/dist/cli/factory/synth.d.ts +7 -0
- package/dist/cli/factory/synth.js +35 -0
- package/dist/cli/firstRun.d.ts +5 -5
- package/dist/cli/firstRun.js +18 -17
- package/dist/cli/main.d.ts +1 -1
- package/dist/cli/main.js +4 -3
- package/dist/cli/upload.d.ts +3 -1
- package/dist/cli/upload.js +9 -2
- package/dist/constructs/agent.d.ts +9 -1
- package/dist/constructs/agent.js +7 -0
- package/dist/constructs/compute-provider.js +2 -2
- package/dist/constructs/connection.d.ts +22 -16
- package/dist/constructs/connection.js +29 -92
- package/dist/constructs/connector.d.ts +3 -1
- package/dist/constructs/connector.js +2 -0
- package/dist/constructs/egress-preset.d.ts +7 -52
- package/dist/constructs/egress-preset.js +7 -91
- package/dist/constructs/environment.d.ts +47 -70
- package/dist/constructs/environment.js +103 -213
- package/dist/constructs/gateway-key.d.ts +4 -1
- package/dist/constructs/gateway-key.js +4 -3
- package/dist/constructs/interfaces.d.ts +10 -2
- package/dist/constructs/model-provider-key.js +2 -3
- package/dist/constructs/pipeline.d.ts +5 -2
- package/dist/constructs/pipeline.js +4 -0
- package/dist/constructs/references.d.ts +4 -0
- package/dist/constructs/references.js +20 -0
- package/dist/constructs/role.d.ts +32 -0
- package/dist/constructs/role.js +77 -0
- package/dist/constructs/rules.d.ts +4 -4
- package/dist/constructs/rules.js +3 -3
- package/dist/constructs/secret.d.ts +36 -13
- package/dist/constructs/secret.js +110 -14
- package/dist/constructs/service-account.d.ts +12 -0
- package/dist/constructs/service-account.js +23 -0
- package/dist/constructs/skill.d.ts +3 -1
- package/dist/constructs/skill.js +2 -0
- package/dist/constructs/team-membership.d.ts +43 -0
- package/dist/constructs/team-membership.js +59 -0
- package/dist/constructs/team.d.ts +40 -0
- package/dist/constructs/team.js +107 -0
- package/dist/constructs/trigger.d.ts +7 -4
- package/dist/constructs/trigger.js +4 -0
- package/dist/constructs/workflow.d.ts +1 -1
- package/dist/core/factory.d.ts +0 -7
- package/dist/core/factory.js +15 -53
- package/dist/core/gateway-key-recipe.js +23 -2
- package/dist/core/host-pattern.d.ts +5 -0
- package/dist/core/host-pattern.js +14 -0
- package/dist/core/labels.d.ts +1 -1
- package/dist/core/labels.js +1 -1
- package/dist/core/outbound-warning.d.ts +2 -2
- package/dist/core/outbound-warning.js +52 -41
- package/dist/core/plan.d.ts +14 -11
- package/dist/core/plan.js +12 -11
- package/dist/engine/apply-core.d.ts +71 -67
- package/dist/engine/apply-core.js +120 -95
- package/dist/engine/client.d.ts +12 -4
- package/dist/engine/client.js +8 -3
- package/dist/engine/compute-provider-reconcile.js +1 -1
- package/dist/engine/condition-references.d.ts +2 -2
- package/dist/engine/condition-references.js +6 -6
- package/dist/engine/connection-install-link-reconcile.d.ts +4 -3
- package/dist/engine/connection-install-link-reconcile.js +35 -28
- package/dist/engine/diff.d.ts +12 -14
- package/dist/engine/diff.js +247 -113
- package/dist/engine/gateway-key-reconcile.d.ts +12 -9
- package/dist/engine/gateway-key-reconcile.js +43 -36
- package/dist/engine/model-provider-key-reconcile.js +2 -2
- package/dist/engine/pipeline-reconcile.d.ts +8 -9
- package/dist/engine/pipeline-reconcile.js +14 -10
- package/dist/engine/reconcile.d.ts +7 -21
- package/dist/engine/reconcile.js +115 -215
- package/dist/engine/refusals.d.ts +14 -31
- package/dist/engine/refusals.js +32 -81
- package/dist/engine/role-membership-reconcile.d.ts +19 -0
- package/dist/engine/role-membership-reconcile.js +276 -0
- package/dist/engine/secrets-apply.d.ts +18 -4
- package/dist/engine/secrets-apply.js +39 -4
- package/dist/engine/trigger-reconcile.d.ts +22 -23
- package/dist/engine/trigger-reconcile.js +43 -65
- package/dist/engine/workflow-reconcile.d.ts +2 -2
- package/dist/engine/workflow-reconcile.js +5 -5
- package/dist/generated/cli-commands.json +15398 -11771
- package/dist/generated/cli-dispatch.d.ts +4 -3
- package/dist/generated/cli-dispatch.js +76 -62
- package/dist/index.d.ts +12 -7
- package/dist/index.js +5 -3
- package/dist/metrics/metric.d.ts +3 -3
- package/dist/metrics/metric.js +1 -1
- package/docs/REFERENCE.md +102 -95
- package/node_modules/@orchestraworks/client/dist/apis/AgentsApi.d.ts +1 -1
- package/node_modules/@orchestraworks/client/dist/apis/AgentsApi.js +2 -2
- package/node_modules/@orchestraworks/client/dist/apis/ArtifactsApi.d.ts +1 -1
- package/node_modules/@orchestraworks/client/dist/apis/ArtifactsApi.js +2 -2
- package/node_modules/@orchestraworks/client/dist/apis/ConnectionInstallLinksApi.d.ts +1 -1
- package/node_modules/@orchestraworks/client/dist/apis/ConnectionInstallLinksApi.js +2 -2
- package/node_modules/@orchestraworks/client/dist/apis/ConnectionsApi.d.ts +1 -1
- package/node_modules/@orchestraworks/client/dist/apis/ConnectionsApi.js +2 -2
- package/node_modules/@orchestraworks/client/dist/apis/EnvironmentsApi.d.ts +1 -1
- package/node_modules/@orchestraworks/client/dist/apis/EnvironmentsApi.js +2 -2
- package/node_modules/@orchestraworks/client/dist/apis/FilesApi.d.ts +1 -1
- package/node_modules/@orchestraworks/client/dist/apis/FilesApi.js +2 -2
- package/node_modules/@orchestraworks/client/dist/apis/ImagesApi.d.ts +88 -0
- package/node_modules/@orchestraworks/client/dist/apis/ImagesApi.js +239 -0
- package/node_modules/@orchestraworks/client/dist/apis/MetricsApi.d.ts +1 -1
- package/node_modules/@orchestraworks/client/dist/apis/MetricsApi.js +2 -2
- package/node_modules/@orchestraworks/client/dist/apis/OrganizationsApi.d.ts +1 -15
- package/node_modules/@orchestraworks/client/dist/apis/OrganizationsApi.js +3 -49
- package/node_modules/@orchestraworks/client/dist/apis/PipelinesApi.d.ts +1 -1
- package/node_modules/@orchestraworks/client/dist/apis/PipelinesApi.js +2 -2
- package/node_modules/@orchestraworks/client/dist/apis/ProviderConnectionIntentsApi.d.ts +1 -1
- package/node_modules/@orchestraworks/client/dist/apis/ProviderConnectionIntentsApi.js +2 -2
- package/node_modules/@orchestraworks/client/dist/apis/SecretsApi.d.ts +1 -1
- package/node_modules/@orchestraworks/client/dist/apis/SecretsApi.js +2 -2
- package/node_modules/@orchestraworks/client/dist/apis/SessionsApi.d.ts +1 -1
- package/node_modules/@orchestraworks/client/dist/apis/SessionsApi.js +2 -2
- package/node_modules/@orchestraworks/client/dist/apis/SkillsApi.d.ts +1 -1
- package/node_modules/@orchestraworks/client/dist/apis/SkillsApi.js +2 -2
- package/node_modules/@orchestraworks/client/dist/apis/TeamMembershipsApi.d.ts +96 -0
- package/node_modules/@orchestraworks/client/dist/apis/{GroupsApi.js → TeamMembershipsApi.js} +62 -59
- package/node_modules/@orchestraworks/client/dist/apis/TeamsApi.d.ts +93 -0
- package/node_modules/@orchestraworks/client/dist/apis/{ProjectsApi.js → TeamsApi.js} +55 -55
- package/node_modules/@orchestraworks/client/dist/apis/TriggersApi.d.ts +1 -1
- package/node_modules/@orchestraworks/client/dist/apis/TriggersApi.js +2 -2
- package/node_modules/@orchestraworks/client/dist/apis/UsersApi.d.ts +0 -15
- package/node_modules/@orchestraworks/client/dist/apis/UsersApi.js +0 -49
- package/node_modules/@orchestraworks/client/dist/apis/VolumesApi.d.ts +1 -1
- package/node_modules/@orchestraworks/client/dist/apis/VolumesApi.js +2 -2
- package/node_modules/@orchestraworks/client/dist/apis/WorkItemsApi.d.ts +2 -2
- package/node_modules/@orchestraworks/client/dist/apis/WorkItemsApi.js +4 -4
- package/node_modules/@orchestraworks/client/dist/apis/WorkflowsApi.d.ts +1 -1
- package/node_modules/@orchestraworks/client/dist/apis/WorkflowsApi.js +2 -2
- package/node_modules/@orchestraworks/client/dist/apis/index.d.ts +3 -2
- package/node_modules/@orchestraworks/client/dist/apis/index.js +3 -2
- package/node_modules/@orchestraworks/client/dist/esm/apis/AgentsApi.d.ts +1 -1
- package/node_modules/@orchestraworks/client/dist/esm/apis/AgentsApi.js +2 -2
- package/node_modules/@orchestraworks/client/dist/esm/apis/ArtifactsApi.d.ts +1 -1
- package/node_modules/@orchestraworks/client/dist/esm/apis/ArtifactsApi.js +2 -2
- package/node_modules/@orchestraworks/client/dist/esm/apis/ConnectionInstallLinksApi.d.ts +1 -1
- package/node_modules/@orchestraworks/client/dist/esm/apis/ConnectionInstallLinksApi.js +2 -2
- package/node_modules/@orchestraworks/client/dist/esm/apis/ConnectionsApi.d.ts +1 -1
- package/node_modules/@orchestraworks/client/dist/esm/apis/ConnectionsApi.js +2 -2
- package/node_modules/@orchestraworks/client/dist/esm/apis/EnvironmentsApi.d.ts +1 -1
- package/node_modules/@orchestraworks/client/dist/esm/apis/EnvironmentsApi.js +2 -2
- package/node_modules/@orchestraworks/client/dist/esm/apis/FilesApi.d.ts +1 -1
- package/node_modules/@orchestraworks/client/dist/esm/apis/FilesApi.js +2 -2
- package/node_modules/@orchestraworks/client/dist/esm/apis/ImagesApi.d.ts +88 -0
- package/node_modules/@orchestraworks/client/dist/esm/apis/ImagesApi.js +235 -0
- package/node_modules/@orchestraworks/client/dist/esm/apis/MetricsApi.d.ts +1 -1
- package/node_modules/@orchestraworks/client/dist/esm/apis/MetricsApi.js +2 -2
- package/node_modules/@orchestraworks/client/dist/esm/apis/OrganizationsApi.d.ts +1 -15
- package/node_modules/@orchestraworks/client/dist/esm/apis/OrganizationsApi.js +3 -49
- package/node_modules/@orchestraworks/client/dist/esm/apis/PipelinesApi.d.ts +1 -1
- package/node_modules/@orchestraworks/client/dist/esm/apis/PipelinesApi.js +2 -2
- package/node_modules/@orchestraworks/client/dist/esm/apis/ProviderConnectionIntentsApi.d.ts +1 -1
- package/node_modules/@orchestraworks/client/dist/esm/apis/ProviderConnectionIntentsApi.js +2 -2
- package/node_modules/@orchestraworks/client/dist/esm/apis/SecretsApi.d.ts +1 -1
- package/node_modules/@orchestraworks/client/dist/esm/apis/SecretsApi.js +2 -2
- package/node_modules/@orchestraworks/client/dist/esm/apis/SessionsApi.d.ts +1 -1
- package/node_modules/@orchestraworks/client/dist/esm/apis/SessionsApi.js +2 -2
- package/node_modules/@orchestraworks/client/dist/esm/apis/SkillsApi.d.ts +1 -1
- package/node_modules/@orchestraworks/client/dist/esm/apis/SkillsApi.js +2 -2
- package/node_modules/@orchestraworks/client/dist/esm/apis/TeamMembershipsApi.d.ts +96 -0
- package/node_modules/@orchestraworks/client/dist/esm/apis/{GroupsApi.js → TeamMembershipsApi.js} +60 -57
- package/node_modules/@orchestraworks/client/dist/esm/apis/TeamsApi.d.ts +93 -0
- package/node_modules/@orchestraworks/client/dist/esm/apis/{ProjectsApi.js → TeamsApi.js} +53 -53
- package/node_modules/@orchestraworks/client/dist/esm/apis/TriggersApi.d.ts +1 -1
- package/node_modules/@orchestraworks/client/dist/esm/apis/TriggersApi.js +2 -2
- package/node_modules/@orchestraworks/client/dist/esm/apis/UsersApi.d.ts +0 -15
- package/node_modules/@orchestraworks/client/dist/esm/apis/UsersApi.js +0 -49
- package/node_modules/@orchestraworks/client/dist/esm/apis/VolumesApi.d.ts +1 -1
- package/node_modules/@orchestraworks/client/dist/esm/apis/VolumesApi.js +2 -2
- package/node_modules/@orchestraworks/client/dist/esm/apis/WorkItemsApi.d.ts +2 -2
- package/node_modules/@orchestraworks/client/dist/esm/apis/WorkItemsApi.js +4 -4
- package/node_modules/@orchestraworks/client/dist/esm/apis/WorkflowsApi.d.ts +1 -1
- package/node_modules/@orchestraworks/client/dist/esm/apis/WorkflowsApi.js +2 -2
- package/node_modules/@orchestraworks/client/dist/esm/apis/index.d.ts +3 -2
- package/node_modules/@orchestraworks/client/dist/esm/apis/index.js +3 -2
- package/node_modules/@orchestraworks/client/dist/esm/models/AddArtifactVersionRequest.d.ts +1 -1
- package/node_modules/@orchestraworks/client/dist/esm/models/Agent.d.ts +9 -3
- package/node_modules/@orchestraworks/client/dist/esm/models/Agent.js +3 -2
- package/node_modules/@orchestraworks/client/dist/esm/models/ApiErrorDetail.d.ts +9 -1
- package/node_modules/@orchestraworks/client/dist/esm/models/ApiErrorDetail.js +5 -1
- package/node_modules/@orchestraworks/client/dist/esm/models/Artifact.d.ts +2 -2
- package/node_modules/@orchestraworks/client/dist/esm/models/Artifact.js +2 -2
- package/node_modules/@orchestraworks/client/dist/esm/models/ArtifactSummary.d.ts +2 -2
- package/node_modules/@orchestraworks/client/dist/esm/models/ArtifactSummary.js +2 -2
- package/node_modules/@orchestraworks/client/dist/esm/models/AssignAction.d.ts +1 -1
- package/node_modules/@orchestraworks/client/dist/esm/models/AssignAction.js +2 -2
- package/node_modules/@orchestraworks/client/dist/esm/models/AssignWorkItemRequest.d.ts +2 -2
- package/node_modules/@orchestraworks/client/dist/esm/models/AssignWorkItemRequest.js +2 -2
- package/node_modules/@orchestraworks/client/dist/esm/models/ComputeProviderTarget.d.ts +6 -0
- package/node_modules/@orchestraworks/client/dist/esm/models/ComputeProviderTarget.js +2 -0
- package/node_modules/@orchestraworks/client/dist/esm/models/Connection.d.ts +16 -3
- package/node_modules/@orchestraworks/client/dist/esm/models/Connection.js +8 -2
- package/node_modules/@orchestraworks/client/dist/esm/models/ConnectionInstallLink.d.ts +2 -2
- package/node_modules/@orchestraworks/client/dist/esm/models/ConnectionInstallLink.js +2 -2
- package/node_modules/@orchestraworks/client/dist/esm/models/Connector.d.ts +2 -2
- package/node_modules/@orchestraworks/client/dist/esm/models/Connector.js +2 -2
- package/node_modules/@orchestraworks/client/dist/esm/models/CreateAgentRequest.d.ts +2 -2
- package/node_modules/@orchestraworks/client/dist/esm/models/CreateAgentRequest.js +2 -2
- package/node_modules/@orchestraworks/client/dist/esm/models/CreateArtifactRequest.d.ts +4 -4
- package/node_modules/@orchestraworks/client/dist/esm/models/CreateArtifactRequest.js +2 -2
- package/node_modules/@orchestraworks/client/dist/esm/models/CreateConnectionInstallLinkRequest.d.ts +3 -3
- package/node_modules/@orchestraworks/client/dist/esm/models/CreateConnectionInstallLinkRequest.js +2 -2
- package/node_modules/@orchestraworks/client/dist/esm/models/CreateConnectionRequest.d.ts +8 -2
- package/node_modules/@orchestraworks/client/dist/esm/models/CreateConnectionRequest.js +4 -2
- package/node_modules/@orchestraworks/client/dist/esm/models/CreateConnectorRequest.d.ts +2 -2
- package/node_modules/@orchestraworks/client/dist/esm/models/CreateConnectorRequest.js +2 -2
- package/node_modules/@orchestraworks/client/dist/esm/models/CreateDashboardRequest.d.ts +3 -3
- package/node_modules/@orchestraworks/client/dist/esm/models/CreateDashboardRequest.js +2 -2
- package/node_modules/@orchestraworks/client/dist/esm/models/CreateEnvironmentRequest.d.ts +2 -2
- package/node_modules/@orchestraworks/client/dist/esm/models/CreateEnvironmentRequest.js +2 -2
- package/node_modules/@orchestraworks/client/dist/esm/models/CreateFileRequest.d.ts +2 -2
- package/node_modules/@orchestraworks/client/dist/esm/models/CreateFileRequest.js +2 -2
- package/node_modules/@orchestraworks/client/dist/esm/models/CreateGatewayKeyRequest.d.ts +2 -2
- package/node_modules/@orchestraworks/client/dist/esm/models/CreateGatewayKeyRequest.js +2 -2
- package/node_modules/@orchestraworks/client/dist/esm/models/CreateImageRequest.d.ts +38 -0
- package/node_modules/@orchestraworks/client/dist/esm/models/{GroupMemberAgent.js → CreateImageRequest.js} +12 -16
- package/node_modules/@orchestraworks/client/dist/esm/models/CreateMachineRequest.d.ts +2 -2
- package/node_modules/@orchestraworks/client/dist/esm/models/CreateMachineRequest.js +2 -2
- package/node_modules/@orchestraworks/client/dist/esm/models/CreateMetricRequest.d.ts +2 -2
- package/node_modules/@orchestraworks/client/dist/esm/models/CreateMetricRequest.js +2 -2
- package/node_modules/@orchestraworks/client/dist/esm/models/CreateOrganizationInvitationRequest.d.ts +4 -4
- package/node_modules/@orchestraworks/client/dist/esm/models/CreateOrganizationInvitationRequest.js +3 -3
- package/node_modules/@orchestraworks/client/dist/esm/models/CreateOrganizationMembershipRequest.d.ts +1 -8
- package/node_modules/@orchestraworks/client/dist/esm/models/CreateOrganizationMembershipRequest.js +0 -3
- package/node_modules/@orchestraworks/client/dist/esm/models/CreatePipelineRequest.d.ts +2 -2
- package/node_modules/@orchestraworks/client/dist/esm/models/CreatePipelineRequest.js +2 -2
- package/node_modules/@orchestraworks/client/dist/esm/models/CreateProviderConnectionIntentRequest.d.ts +3 -3
- package/node_modules/@orchestraworks/client/dist/esm/models/CreateProviderConnectionIntentRequest.js +2 -2
- package/node_modules/@orchestraworks/client/dist/esm/models/CreateSecretRequest.d.ts +8 -2
- package/node_modules/@orchestraworks/client/dist/esm/models/CreateSecretRequest.js +4 -2
- package/node_modules/@orchestraworks/client/dist/esm/models/CreateSessionRequest.d.ts +2 -2
- package/node_modules/@orchestraworks/client/dist/esm/models/CreateSessionRequest.js +2 -2
- package/node_modules/@orchestraworks/client/dist/esm/models/CreateSkillRequest.d.ts +2 -2
- package/node_modules/@orchestraworks/client/dist/esm/models/CreateSkillRequest.js +2 -2
- package/node_modules/@orchestraworks/client/dist/esm/models/CreateTeamMembershipRequest.d.ts +65 -0
- package/node_modules/@orchestraworks/client/dist/esm/models/CreateTeamMembershipRequest.js +61 -0
- package/node_modules/@orchestraworks/client/dist/esm/models/CreateTeamRequest.d.ts +80 -0
- package/node_modules/@orchestraworks/client/dist/esm/models/CreateTeamRequest.js +64 -0
- package/node_modules/@orchestraworks/client/dist/esm/models/CreateTriggerRequest.d.ts +2 -2
- package/node_modules/@orchestraworks/client/dist/esm/models/CreateTriggerRequest.js +2 -2
- package/node_modules/@orchestraworks/client/dist/esm/models/CreateVolumeRequest.d.ts +2 -2
- package/node_modules/@orchestraworks/client/dist/esm/models/CreateVolumeRequest.js +2 -2
- package/node_modules/@orchestraworks/client/dist/esm/models/CreateWorkflowRequest.d.ts +1 -1
- package/node_modules/@orchestraworks/client/dist/esm/models/Dashboard.d.ts +8 -2
- package/node_modules/@orchestraworks/client/dist/esm/models/Dashboard.js +6 -2
- package/node_modules/@orchestraworks/client/dist/esm/models/DashboardChart.d.ts +45 -4
- package/node_modules/@orchestraworks/client/dist/esm/models/DashboardChart.js +29 -5
- package/node_modules/@orchestraworks/client/dist/esm/models/DashboardChartQuery.d.ts +1 -1
- package/node_modules/@orchestraworks/client/dist/esm/models/Delivery.d.ts +2 -2
- package/node_modules/@orchestraworks/client/dist/esm/models/Delivery.js +2 -2
- package/node_modules/@orchestraworks/client/dist/esm/models/EgressPolicyRule.d.ts +0 -13
- package/node_modules/@orchestraworks/client/dist/esm/models/EgressPolicyRule.js +0 -5
- package/node_modules/@orchestraworks/client/dist/esm/models/EntitlementTeamUsage.d.ts +58 -0
- package/node_modules/@orchestraworks/client/dist/esm/models/EntitlementTeamUsage.js +64 -0
- package/node_modules/@orchestraworks/client/dist/esm/models/Environment.d.ts +2 -2
- package/node_modules/@orchestraworks/client/dist/esm/models/Environment.js +2 -2
- package/node_modules/@orchestraworks/client/dist/esm/models/EnvironmentEgressPolicy.d.ts +1 -1
- package/node_modules/@orchestraworks/client/dist/esm/models/GatewayKey.d.ts +2 -2
- package/node_modules/@orchestraworks/client/dist/esm/models/GatewayKey.js +2 -2
- package/node_modules/@orchestraworks/client/dist/esm/models/Image.d.ts +113 -0
- package/node_modules/@orchestraworks/client/dist/esm/models/Image.js +91 -0
- package/node_modules/@orchestraworks/client/dist/esm/models/InboundWebhookEdge.d.ts +2 -2
- package/node_modules/@orchestraworks/client/dist/esm/models/InboundWebhookEdge.js +2 -2
- package/node_modules/@orchestraworks/client/dist/esm/models/InvitationTeamMembership.d.ts +44 -0
- package/node_modules/@orchestraworks/client/dist/esm/models/InvitationTeamMembership.js +47 -0
- package/node_modules/@orchestraworks/client/dist/esm/models/MachineEgressPolicyDiagnostics.d.ts +1 -1
- package/node_modules/@orchestraworks/client/dist/esm/models/MachineEgressRuleDiagnostics.d.ts +0 -6
- package/node_modules/@orchestraworks/client/dist/esm/models/MachineEgressRuleDiagnostics.js +0 -4
- package/node_modules/@orchestraworks/client/dist/esm/models/MachineView.d.ts +2 -2
- package/node_modules/@orchestraworks/client/dist/esm/models/MachineView.js +2 -2
- package/node_modules/@orchestraworks/client/dist/esm/models/MessageWorkItemRequest.d.ts +1 -1
- package/node_modules/@orchestraworks/client/dist/esm/models/Metric.d.ts +2 -2
- package/node_modules/@orchestraworks/client/dist/esm/models/Metric.js +2 -2
- package/node_modules/@orchestraworks/client/dist/esm/models/MetricValue.d.ts +2 -2
- package/node_modules/@orchestraworks/client/dist/esm/models/MetricValue.js +2 -2
- package/node_modules/@orchestraworks/client/dist/esm/models/ModelFile.d.ts +2 -2
- package/node_modules/@orchestraworks/client/dist/esm/models/ModelFile.js +2 -2
- package/node_modules/@orchestraworks/client/dist/esm/models/OrganizationEntitlements.d.ts +7 -0
- package/node_modules/@orchestraworks/client/dist/esm/models/OrganizationEntitlements.js +5 -0
- package/node_modules/@orchestraworks/client/dist/esm/models/OrganizationInvitation.d.ts +4 -4
- package/node_modules/@orchestraworks/client/dist/esm/models/OrganizationInvitation.js +4 -4
- package/node_modules/@orchestraworks/client/dist/esm/models/OrganizationMembership.d.ts +5 -5
- package/node_modules/@orchestraworks/client/dist/esm/models/OrganizationMembership.js +4 -4
- package/node_modules/@orchestraworks/client/dist/esm/models/PageImage.d.ts +51 -0
- package/node_modules/@orchestraworks/client/dist/esm/models/{PageProject.js → PageImage.js} +11 -11
- package/node_modules/@orchestraworks/client/dist/esm/models/PageTeam.d.ts +51 -0
- package/node_modules/@orchestraworks/client/dist/esm/models/{PageGroupSummary.js → PageTeam.js} +11 -11
- package/node_modules/@orchestraworks/client/dist/esm/models/PageTeamMembership.d.ts +51 -0
- package/node_modules/@orchestraworks/client/dist/esm/models/PageTeamMembership.js +56 -0
- package/node_modules/@orchestraworks/client/dist/esm/models/Pipeline.d.ts +2 -2
- package/node_modules/@orchestraworks/client/dist/esm/models/Pipeline.js +2 -2
- package/node_modules/@orchestraworks/client/dist/esm/models/PolicyAssignment.d.ts +8 -2
- package/node_modules/@orchestraworks/client/dist/esm/models/PolicyAssignment.js +4 -2
- package/node_modules/@orchestraworks/client/dist/esm/models/ProviderConnectionIntent.d.ts +2 -2
- package/node_modules/@orchestraworks/client/dist/esm/models/ProviderConnectionIntent.js +2 -2
- package/node_modules/@orchestraworks/client/dist/esm/models/ReferenceSubject.d.ts +1 -1
- package/node_modules/@orchestraworks/client/dist/esm/models/ReferenceSubject.js +1 -1
- package/node_modules/@orchestraworks/client/dist/esm/models/Role.d.ts +6 -0
- package/node_modules/@orchestraworks/client/dist/esm/models/Role.js +4 -0
- package/node_modules/@orchestraworks/client/dist/esm/models/Secret.d.ts +16 -3
- package/node_modules/@orchestraworks/client/dist/esm/models/Secret.js +8 -2
- package/node_modules/@orchestraworks/client/dist/esm/models/ServiceAccount.d.ts +7 -1
- package/node_modules/@orchestraworks/client/dist/esm/models/ServiceAccount.js +1 -0
- package/node_modules/@orchestraworks/client/dist/esm/models/Session.d.ts +3 -2
- package/node_modules/@orchestraworks/client/dist/esm/models/Session.js +3 -2
- package/node_modules/@orchestraworks/client/dist/esm/models/SessionSummary.d.ts +3 -2
- package/node_modules/@orchestraworks/client/dist/esm/models/SessionSummary.js +3 -2
- package/node_modules/@orchestraworks/client/dist/esm/models/Skill.d.ts +2 -2
- package/node_modules/@orchestraworks/client/dist/esm/models/Skill.js +2 -2
- package/node_modules/@orchestraworks/client/dist/esm/models/SnapshotAnchor.d.ts +1 -1
- package/node_modules/@orchestraworks/client/dist/esm/models/Team.d.ts +104 -0
- package/node_modules/@orchestraworks/client/dist/esm/models/{GroupSummary.js → Team.js} +25 -15
- package/node_modules/@orchestraworks/client/dist/esm/models/TeamMembership.d.ts +83 -0
- package/node_modules/@orchestraworks/client/dist/esm/models/TeamMembership.js +77 -0
- package/node_modules/@orchestraworks/client/dist/esm/models/Trigger.d.ts +2 -2
- package/node_modules/@orchestraworks/client/dist/esm/models/Trigger.js +2 -2
- package/node_modules/@orchestraworks/client/dist/esm/models/TriggerTarget.d.ts +1 -1
- package/node_modules/@orchestraworks/client/dist/esm/models/UpdateArtifactRequest.d.ts +1 -1
- package/node_modules/@orchestraworks/client/dist/esm/models/UpdateConnectionRequest.d.ts +6 -0
- package/node_modules/@orchestraworks/client/dist/esm/models/UpdateConnectionRequest.js +2 -0
- package/node_modules/@orchestraworks/client/dist/esm/models/UpdateOrganizationInvitationRequest.d.ts +4 -4
- package/node_modules/@orchestraworks/client/dist/esm/models/UpdateOrganizationInvitationRequest.js +3 -3
- package/node_modules/@orchestraworks/client/dist/esm/models/UpdateOrganizationMembershipRequest.d.ts +1 -8
- package/node_modules/@orchestraworks/client/dist/esm/models/UpdateOrganizationMembershipRequest.js +0 -3
- package/node_modules/@orchestraworks/client/dist/esm/models/UpdateSecretRequest.d.ts +6 -0
- package/node_modules/@orchestraworks/client/dist/esm/models/UpdateSecretRequest.js +2 -0
- package/node_modules/@orchestraworks/client/dist/esm/models/UpdateTeamMembershipRequest.d.ts +47 -0
- package/node_modules/@orchestraworks/client/dist/esm/models/UpdateTeamMembershipRequest.js +51 -0
- package/node_modules/@orchestraworks/client/dist/esm/models/UpdateTeamRequest.d.ts +68 -0
- package/node_modules/@orchestraworks/client/dist/esm/models/UpdateTeamRequest.js +58 -0
- package/node_modules/@orchestraworks/client/dist/esm/models/UserGrant.d.ts +2 -2
- package/node_modules/@orchestraworks/client/dist/esm/models/UserGrant.js +2 -2
- package/node_modules/@orchestraworks/client/dist/esm/models/Volume.d.ts +10 -3
- package/node_modules/@orchestraworks/client/dist/esm/models/Volume.js +4 -2
- package/node_modules/@orchestraworks/client/dist/esm/models/WorkItemActivity.d.ts +2 -2
- package/node_modules/@orchestraworks/client/dist/esm/models/WorkItemAssignment.d.ts +7 -7
- package/node_modules/@orchestraworks/client/dist/esm/models/WorkItemAssignment.js +5 -5
- package/node_modules/@orchestraworks/client/dist/esm/models/WorkItemDraftAssignment.d.ts +2 -2
- package/node_modules/@orchestraworks/client/dist/esm/models/WorkItemDraftAssignment.js +2 -2
- package/node_modules/@orchestraworks/client/dist/esm/models/Workflow.d.ts +2 -2
- package/node_modules/@orchestraworks/client/dist/esm/models/Workflow.js +2 -2
- package/node_modules/@orchestraworks/client/dist/esm/models/index.d.ts +13 -17
- package/node_modules/@orchestraworks/client/dist/esm/models/index.js +13 -17
- package/node_modules/@orchestraworks/client/dist/models/AddArtifactVersionRequest.d.ts +1 -1
- package/node_modules/@orchestraworks/client/dist/models/Agent.d.ts +9 -3
- package/node_modules/@orchestraworks/client/dist/models/Agent.js +3 -2
- package/node_modules/@orchestraworks/client/dist/models/ApiErrorDetail.d.ts +9 -1
- package/node_modules/@orchestraworks/client/dist/models/ApiErrorDetail.js +5 -1
- package/node_modules/@orchestraworks/client/dist/models/Artifact.d.ts +2 -2
- package/node_modules/@orchestraworks/client/dist/models/Artifact.js +2 -2
- package/node_modules/@orchestraworks/client/dist/models/ArtifactSummary.d.ts +2 -2
- package/node_modules/@orchestraworks/client/dist/models/ArtifactSummary.js +2 -2
- package/node_modules/@orchestraworks/client/dist/models/AssignAction.d.ts +1 -1
- package/node_modules/@orchestraworks/client/dist/models/AssignAction.js +2 -2
- package/node_modules/@orchestraworks/client/dist/models/AssignWorkItemRequest.d.ts +2 -2
- package/node_modules/@orchestraworks/client/dist/models/AssignWorkItemRequest.js +2 -2
- package/node_modules/@orchestraworks/client/dist/models/ComputeProviderTarget.d.ts +6 -0
- package/node_modules/@orchestraworks/client/dist/models/ComputeProviderTarget.js +2 -0
- package/node_modules/@orchestraworks/client/dist/models/Connection.d.ts +16 -3
- package/node_modules/@orchestraworks/client/dist/models/Connection.js +8 -2
- package/node_modules/@orchestraworks/client/dist/models/ConnectionInstallLink.d.ts +2 -2
- package/node_modules/@orchestraworks/client/dist/models/ConnectionInstallLink.js +2 -2
- package/node_modules/@orchestraworks/client/dist/models/Connector.d.ts +2 -2
- package/node_modules/@orchestraworks/client/dist/models/Connector.js +2 -2
- package/node_modules/@orchestraworks/client/dist/models/CreateAgentRequest.d.ts +2 -2
- package/node_modules/@orchestraworks/client/dist/models/CreateAgentRequest.js +2 -2
- package/node_modules/@orchestraworks/client/dist/models/CreateArtifactRequest.d.ts +4 -4
- package/node_modules/@orchestraworks/client/dist/models/CreateArtifactRequest.js +2 -2
- package/node_modules/@orchestraworks/client/dist/models/CreateConnectionInstallLinkRequest.d.ts +3 -3
- package/node_modules/@orchestraworks/client/dist/models/CreateConnectionInstallLinkRequest.js +2 -2
- package/node_modules/@orchestraworks/client/dist/models/CreateConnectionRequest.d.ts +8 -2
- package/node_modules/@orchestraworks/client/dist/models/CreateConnectionRequest.js +4 -2
- package/node_modules/@orchestraworks/client/dist/models/CreateConnectorRequest.d.ts +2 -2
- package/node_modules/@orchestraworks/client/dist/models/CreateConnectorRequest.js +2 -2
- package/node_modules/@orchestraworks/client/dist/models/CreateDashboardRequest.d.ts +3 -3
- package/node_modules/@orchestraworks/client/dist/models/CreateDashboardRequest.js +2 -2
- package/node_modules/@orchestraworks/client/dist/models/CreateEnvironmentRequest.d.ts +2 -2
- package/node_modules/@orchestraworks/client/dist/models/CreateEnvironmentRequest.js +2 -2
- package/node_modules/@orchestraworks/client/dist/models/CreateFileRequest.d.ts +2 -2
- package/node_modules/@orchestraworks/client/dist/models/CreateFileRequest.js +2 -2
- package/node_modules/@orchestraworks/client/dist/models/CreateGatewayKeyRequest.d.ts +2 -2
- package/node_modules/@orchestraworks/client/dist/models/CreateGatewayKeyRequest.js +2 -2
- package/node_modules/@orchestraworks/client/dist/models/CreateImageRequest.d.ts +38 -0
- package/node_modules/@orchestraworks/client/dist/models/CreateImageRequest.js +54 -0
- package/node_modules/@orchestraworks/client/dist/models/CreateMachineRequest.d.ts +2 -2
- package/node_modules/@orchestraworks/client/dist/models/CreateMachineRequest.js +2 -2
- package/node_modules/@orchestraworks/client/dist/models/CreateMetricRequest.d.ts +2 -2
- package/node_modules/@orchestraworks/client/dist/models/CreateMetricRequest.js +2 -2
- package/node_modules/@orchestraworks/client/dist/models/CreateOrganizationInvitationRequest.d.ts +4 -4
- package/node_modules/@orchestraworks/client/dist/models/CreateOrganizationInvitationRequest.js +3 -3
- package/node_modules/@orchestraworks/client/dist/models/CreateOrganizationMembershipRequest.d.ts +1 -8
- package/node_modules/@orchestraworks/client/dist/models/CreateOrganizationMembershipRequest.js +0 -3
- package/node_modules/@orchestraworks/client/dist/models/CreatePipelineRequest.d.ts +2 -2
- package/node_modules/@orchestraworks/client/dist/models/CreatePipelineRequest.js +2 -2
- package/node_modules/@orchestraworks/client/dist/models/CreateProviderConnectionIntentRequest.d.ts +3 -3
- package/node_modules/@orchestraworks/client/dist/models/CreateProviderConnectionIntentRequest.js +2 -2
- package/node_modules/@orchestraworks/client/dist/models/CreateSecretRequest.d.ts +8 -2
- package/node_modules/@orchestraworks/client/dist/models/CreateSecretRequest.js +4 -2
- package/node_modules/@orchestraworks/client/dist/models/CreateSessionRequest.d.ts +2 -2
- package/node_modules/@orchestraworks/client/dist/models/CreateSessionRequest.js +2 -2
- package/node_modules/@orchestraworks/client/dist/models/CreateSkillRequest.d.ts +2 -2
- package/node_modules/@orchestraworks/client/dist/models/CreateSkillRequest.js +2 -2
- package/node_modules/@orchestraworks/client/dist/models/CreateTeamMembershipRequest.d.ts +65 -0
- package/node_modules/@orchestraworks/client/dist/models/CreateTeamMembershipRequest.js +69 -0
- package/node_modules/@orchestraworks/client/dist/models/CreateTeamRequest.d.ts +80 -0
- package/node_modules/@orchestraworks/client/dist/models/CreateTeamRequest.js +72 -0
- package/node_modules/@orchestraworks/client/dist/models/CreateTriggerRequest.d.ts +2 -2
- package/node_modules/@orchestraworks/client/dist/models/CreateTriggerRequest.js +2 -2
- package/node_modules/@orchestraworks/client/dist/models/CreateVolumeRequest.d.ts +2 -2
- package/node_modules/@orchestraworks/client/dist/models/CreateVolumeRequest.js +2 -2
- package/node_modules/@orchestraworks/client/dist/models/CreateWorkflowRequest.d.ts +1 -1
- package/node_modules/@orchestraworks/client/dist/models/Dashboard.d.ts +8 -2
- package/node_modules/@orchestraworks/client/dist/models/Dashboard.js +6 -2
- package/node_modules/@orchestraworks/client/dist/models/DashboardChart.d.ts +45 -4
- package/node_modules/@orchestraworks/client/dist/models/DashboardChart.js +30 -6
- package/node_modules/@orchestraworks/client/dist/models/DashboardChartQuery.d.ts +1 -1
- package/node_modules/@orchestraworks/client/dist/models/Delivery.d.ts +2 -2
- package/node_modules/@orchestraworks/client/dist/models/Delivery.js +2 -2
- package/node_modules/@orchestraworks/client/dist/models/EgressPolicyRule.d.ts +0 -13
- package/node_modules/@orchestraworks/client/dist/models/EgressPolicyRule.js +0 -5
- package/node_modules/@orchestraworks/client/dist/models/EntitlementTeamUsage.d.ts +58 -0
- package/node_modules/@orchestraworks/client/dist/models/EntitlementTeamUsage.js +72 -0
- package/node_modules/@orchestraworks/client/dist/models/Environment.d.ts +2 -2
- package/node_modules/@orchestraworks/client/dist/models/Environment.js +2 -2
- package/node_modules/@orchestraworks/client/dist/models/EnvironmentEgressPolicy.d.ts +1 -1
- package/node_modules/@orchestraworks/client/dist/models/GatewayKey.d.ts +2 -2
- package/node_modules/@orchestraworks/client/dist/models/GatewayKey.js +2 -2
- package/node_modules/@orchestraworks/client/dist/models/Image.d.ts +113 -0
- package/node_modules/@orchestraworks/client/dist/models/Image.js +99 -0
- package/node_modules/@orchestraworks/client/dist/models/InboundWebhookEdge.d.ts +2 -2
- package/node_modules/@orchestraworks/client/dist/models/InboundWebhookEdge.js +2 -2
- package/node_modules/@orchestraworks/client/dist/models/InvitationTeamMembership.d.ts +44 -0
- package/node_modules/@orchestraworks/client/dist/models/InvitationTeamMembership.js +54 -0
- package/node_modules/@orchestraworks/client/dist/models/MachineEgressPolicyDiagnostics.d.ts +1 -1
- package/node_modules/@orchestraworks/client/dist/models/MachineEgressRuleDiagnostics.d.ts +0 -6
- package/node_modules/@orchestraworks/client/dist/models/MachineEgressRuleDiagnostics.js +0 -4
- package/node_modules/@orchestraworks/client/dist/models/MachineView.d.ts +2 -2
- package/node_modules/@orchestraworks/client/dist/models/MachineView.js +2 -2
- package/node_modules/@orchestraworks/client/dist/models/MessageWorkItemRequest.d.ts +1 -1
- package/node_modules/@orchestraworks/client/dist/models/Metric.d.ts +2 -2
- package/node_modules/@orchestraworks/client/dist/models/Metric.js +2 -2
- package/node_modules/@orchestraworks/client/dist/models/MetricValue.d.ts +2 -2
- package/node_modules/@orchestraworks/client/dist/models/MetricValue.js +2 -2
- package/node_modules/@orchestraworks/client/dist/models/ModelFile.d.ts +2 -2
- package/node_modules/@orchestraworks/client/dist/models/ModelFile.js +2 -2
- package/node_modules/@orchestraworks/client/dist/models/OrganizationEntitlements.d.ts +7 -0
- package/node_modules/@orchestraworks/client/dist/models/OrganizationEntitlements.js +5 -0
- package/node_modules/@orchestraworks/client/dist/models/OrganizationInvitation.d.ts +4 -4
- package/node_modules/@orchestraworks/client/dist/models/OrganizationInvitation.js +4 -4
- package/node_modules/@orchestraworks/client/dist/models/OrganizationMembership.d.ts +5 -5
- package/node_modules/@orchestraworks/client/dist/models/OrganizationMembership.js +4 -4
- package/node_modules/@orchestraworks/client/dist/models/PageImage.d.ts +51 -0
- package/node_modules/@orchestraworks/client/dist/models/{PageProject.js → PageImage.js} +16 -16
- package/node_modules/@orchestraworks/client/dist/models/PageTeam.d.ts +51 -0
- package/node_modules/@orchestraworks/client/dist/models/{PageGroupSummary.js → PageTeam.js} +16 -16
- package/node_modules/@orchestraworks/client/dist/models/PageTeamMembership.d.ts +51 -0
- package/node_modules/@orchestraworks/client/dist/models/PageTeamMembership.js +63 -0
- package/node_modules/@orchestraworks/client/dist/models/Pipeline.d.ts +2 -2
- package/node_modules/@orchestraworks/client/dist/models/Pipeline.js +2 -2
- package/node_modules/@orchestraworks/client/dist/models/PolicyAssignment.d.ts +8 -2
- package/node_modules/@orchestraworks/client/dist/models/PolicyAssignment.js +4 -2
- package/node_modules/@orchestraworks/client/dist/models/ProviderConnectionIntent.d.ts +2 -2
- package/node_modules/@orchestraworks/client/dist/models/ProviderConnectionIntent.js +2 -2
- package/node_modules/@orchestraworks/client/dist/models/ReferenceSubject.d.ts +1 -1
- package/node_modules/@orchestraworks/client/dist/models/ReferenceSubject.js +1 -1
- package/node_modules/@orchestraworks/client/dist/models/Role.d.ts +6 -0
- package/node_modules/@orchestraworks/client/dist/models/Role.js +4 -0
- package/node_modules/@orchestraworks/client/dist/models/Secret.d.ts +16 -3
- package/node_modules/@orchestraworks/client/dist/models/Secret.js +8 -2
- package/node_modules/@orchestraworks/client/dist/models/ServiceAccount.d.ts +7 -1
- package/node_modules/@orchestraworks/client/dist/models/ServiceAccount.js +1 -0
- package/node_modules/@orchestraworks/client/dist/models/Session.d.ts +3 -2
- package/node_modules/@orchestraworks/client/dist/models/Session.js +3 -2
- package/node_modules/@orchestraworks/client/dist/models/SessionSummary.d.ts +3 -2
- package/node_modules/@orchestraworks/client/dist/models/SessionSummary.js +3 -2
- package/node_modules/@orchestraworks/client/dist/models/Skill.d.ts +2 -2
- package/node_modules/@orchestraworks/client/dist/models/Skill.js +2 -2
- package/node_modules/@orchestraworks/client/dist/models/SnapshotAnchor.d.ts +1 -1
- package/node_modules/@orchestraworks/client/dist/models/Team.d.ts +104 -0
- package/node_modules/@orchestraworks/client/dist/models/{GroupSummary.js → Team.js} +31 -21
- package/node_modules/@orchestraworks/client/dist/models/TeamMembership.d.ts +83 -0
- package/node_modules/@orchestraworks/client/dist/models/TeamMembership.js +85 -0
- package/node_modules/@orchestraworks/client/dist/models/Trigger.d.ts +2 -2
- package/node_modules/@orchestraworks/client/dist/models/Trigger.js +2 -2
- package/node_modules/@orchestraworks/client/dist/models/TriggerTarget.d.ts +1 -1
- package/node_modules/@orchestraworks/client/dist/models/UpdateArtifactRequest.d.ts +1 -1
- package/node_modules/@orchestraworks/client/dist/models/UpdateConnectionRequest.d.ts +6 -0
- package/node_modules/@orchestraworks/client/dist/models/UpdateConnectionRequest.js +2 -0
- package/node_modules/@orchestraworks/client/dist/models/UpdateOrganizationInvitationRequest.d.ts +4 -4
- package/node_modules/@orchestraworks/client/dist/models/UpdateOrganizationInvitationRequest.js +3 -3
- package/node_modules/@orchestraworks/client/dist/models/UpdateOrganizationMembershipRequest.d.ts +1 -8
- package/node_modules/@orchestraworks/client/dist/models/UpdateOrganizationMembershipRequest.js +0 -3
- package/node_modules/@orchestraworks/client/dist/models/UpdateSecretRequest.d.ts +6 -0
- package/node_modules/@orchestraworks/client/dist/models/UpdateSecretRequest.js +2 -0
- package/node_modules/@orchestraworks/client/dist/models/UpdateTeamMembershipRequest.d.ts +47 -0
- package/node_modules/@orchestraworks/client/dist/models/UpdateTeamMembershipRequest.js +59 -0
- package/node_modules/@orchestraworks/client/dist/models/UpdateTeamRequest.d.ts +68 -0
- package/node_modules/@orchestraworks/client/dist/models/UpdateTeamRequest.js +66 -0
- package/node_modules/@orchestraworks/client/dist/models/UserGrant.d.ts +2 -2
- package/node_modules/@orchestraworks/client/dist/models/UserGrant.js +2 -2
- package/node_modules/@orchestraworks/client/dist/models/Volume.d.ts +10 -3
- package/node_modules/@orchestraworks/client/dist/models/Volume.js +4 -2
- package/node_modules/@orchestraworks/client/dist/models/WorkItemActivity.d.ts +2 -2
- package/node_modules/@orchestraworks/client/dist/models/WorkItemAssignment.d.ts +7 -7
- package/node_modules/@orchestraworks/client/dist/models/WorkItemAssignment.js +5 -5
- package/node_modules/@orchestraworks/client/dist/models/WorkItemDraftAssignment.d.ts +2 -2
- package/node_modules/@orchestraworks/client/dist/models/WorkItemDraftAssignment.js +2 -2
- package/node_modules/@orchestraworks/client/dist/models/Workflow.d.ts +2 -2
- package/node_modules/@orchestraworks/client/dist/models/Workflow.js +2 -2
- package/node_modules/@orchestraworks/client/dist/models/index.d.ts +13 -17
- package/node_modules/@orchestraworks/client/dist/models/index.js +13 -17
- package/node_modules/@orchestraworks/client/package.json +1 -1
- package/package.json +4 -4
- package/skills/orchestra/SKILL.md +82 -67
- package/skills/orchestra-fdk/references/authoring.md +83 -45
- package/skills/orchestra-fdk/references/environment.md +214 -33
- package/skills/orchestra-fdk/references/troubleshooting.md +10 -8
- package/templates/bug-fix/main.ts +6 -1
- package/templates/engineering-team/README.md +10 -7
- package/templates/engineering-team/agents/engineer-agent.md +38 -16
- package/templates/engineering-team/lib/environment.ts +15 -3
- package/templates/engineering-team/main.ts +1 -1
- package/templates/todo-factory/main.ts +6 -1
- package/dist/constructs/project.d.ts +0 -33
- package/dist/constructs/project.js +0 -82
- package/node_modules/@orchestraworks/client/dist/apis/GroupsApi.d.ts +0 -95
- package/node_modules/@orchestraworks/client/dist/apis/ProjectsApi.d.ts +0 -93
- package/node_modules/@orchestraworks/client/dist/esm/apis/GroupsApi.d.ts +0 -95
- package/node_modules/@orchestraworks/client/dist/esm/apis/ProjectsApi.d.ts +0 -93
- package/node_modules/@orchestraworks/client/dist/esm/models/CreateGroupRequest.d.ts +0 -82
- package/node_modules/@orchestraworks/client/dist/esm/models/CreateGroupRequest.js +0 -74
- package/node_modules/@orchestraworks/client/dist/esm/models/CreateOrganizationRequest.d.ts +0 -53
- package/node_modules/@orchestraworks/client/dist/esm/models/CreateOrganizationRequest.js +0 -50
- package/node_modules/@orchestraworks/client/dist/esm/models/CreateProjectRequest.d.ts +0 -52
- package/node_modules/@orchestraworks/client/dist/esm/models/CreateProjectRequest.js +0 -49
- package/node_modules/@orchestraworks/client/dist/esm/models/CreateUserRequest.d.ts +0 -46
- package/node_modules/@orchestraworks/client/dist/esm/models/CreateUserRequest.js +0 -47
- package/node_modules/@orchestraworks/client/dist/esm/models/CredentialBinding.d.ts +0 -57
- package/node_modules/@orchestraworks/client/dist/esm/models/CredentialBinding.js +0 -50
- package/node_modules/@orchestraworks/client/dist/esm/models/Group.d.ts +0 -106
- package/node_modules/@orchestraworks/client/dist/esm/models/Group.js +0 -92
- package/node_modules/@orchestraworks/client/dist/esm/models/GroupMember.d.ts +0 -40
- package/node_modules/@orchestraworks/client/dist/esm/models/GroupMember.js +0 -45
- package/node_modules/@orchestraworks/client/dist/esm/models/GroupMemberAgent.d.ts +0 -44
- package/node_modules/@orchestraworks/client/dist/esm/models/GroupMemberReference.d.ts +0 -38
- package/node_modules/@orchestraworks/client/dist/esm/models/GroupMemberReference.js +0 -43
- package/node_modules/@orchestraworks/client/dist/esm/models/GroupMemberUser.d.ts +0 -38
- package/node_modules/@orchestraworks/client/dist/esm/models/GroupMemberUser.js +0 -45
- package/node_modules/@orchestraworks/client/dist/esm/models/GroupSummary.d.ts +0 -86
- package/node_modules/@orchestraworks/client/dist/esm/models/PageGroupSummary.d.ts +0 -51
- package/node_modules/@orchestraworks/client/dist/esm/models/PageProject.d.ts +0 -51
- package/node_modules/@orchestraworks/client/dist/esm/models/Project.d.ts +0 -76
- package/node_modules/@orchestraworks/client/dist/esm/models/Project.js +0 -69
- package/node_modules/@orchestraworks/client/dist/esm/models/RoleAssignment.d.ts +0 -38
- package/node_modules/@orchestraworks/client/dist/esm/models/RoleAssignment.js +0 -45
- package/node_modules/@orchestraworks/client/dist/esm/models/UpdateGroupRequest.d.ts +0 -70
- package/node_modules/@orchestraworks/client/dist/esm/models/UpdateGroupRequest.js +0 -60
- package/node_modules/@orchestraworks/client/dist/esm/models/UpdateProjectRequest.d.ts +0 -46
- package/node_modules/@orchestraworks/client/dist/esm/models/UpdateProjectRequest.js +0 -45
- package/node_modules/@orchestraworks/client/dist/models/CreateGroupRequest.d.ts +0 -82
- package/node_modules/@orchestraworks/client/dist/models/CreateGroupRequest.js +0 -82
- package/node_modules/@orchestraworks/client/dist/models/CreateOrganizationRequest.d.ts +0 -53
- package/node_modules/@orchestraworks/client/dist/models/CreateOrganizationRequest.js +0 -57
- package/node_modules/@orchestraworks/client/dist/models/CreateProjectRequest.d.ts +0 -52
- package/node_modules/@orchestraworks/client/dist/models/CreateProjectRequest.js +0 -56
- package/node_modules/@orchestraworks/client/dist/models/CreateUserRequest.d.ts +0 -46
- package/node_modules/@orchestraworks/client/dist/models/CreateUserRequest.js +0 -54
- package/node_modules/@orchestraworks/client/dist/models/CredentialBinding.d.ts +0 -57
- package/node_modules/@orchestraworks/client/dist/models/CredentialBinding.js +0 -57
- package/node_modules/@orchestraworks/client/dist/models/Group.d.ts +0 -106
- package/node_modules/@orchestraworks/client/dist/models/Group.js +0 -100
- package/node_modules/@orchestraworks/client/dist/models/GroupMember.d.ts +0 -40
- package/node_modules/@orchestraworks/client/dist/models/GroupMember.js +0 -52
- package/node_modules/@orchestraworks/client/dist/models/GroupMemberAgent.d.ts +0 -44
- package/node_modules/@orchestraworks/client/dist/models/GroupMemberAgent.js +0 -58
- package/node_modules/@orchestraworks/client/dist/models/GroupMemberReference.d.ts +0 -38
- package/node_modules/@orchestraworks/client/dist/models/GroupMemberReference.js +0 -50
- package/node_modules/@orchestraworks/client/dist/models/GroupMemberUser.d.ts +0 -38
- package/node_modules/@orchestraworks/client/dist/models/GroupMemberUser.js +0 -52
- package/node_modules/@orchestraworks/client/dist/models/GroupSummary.d.ts +0 -86
- package/node_modules/@orchestraworks/client/dist/models/PageGroupSummary.d.ts +0 -51
- package/node_modules/@orchestraworks/client/dist/models/PageProject.d.ts +0 -51
- package/node_modules/@orchestraworks/client/dist/models/Project.d.ts +0 -76
- package/node_modules/@orchestraworks/client/dist/models/Project.js +0 -76
- package/node_modules/@orchestraworks/client/dist/models/RoleAssignment.d.ts +0 -38
- package/node_modules/@orchestraworks/client/dist/models/RoleAssignment.js +0 -52
- package/node_modules/@orchestraworks/client/dist/models/UpdateGroupRequest.d.ts +0 -70
- package/node_modules/@orchestraworks/client/dist/models/UpdateGroupRequest.js +0 -68
- package/node_modules/@orchestraworks/client/dist/models/UpdateProjectRequest.d.ts +0 -46
- package/node_modules/@orchestraworks/client/dist/models/UpdateProjectRequest.js +0 -52
package/dist/engine/diff.js
CHANGED
|
@@ -12,7 +12,7 @@ import { isEnvImportMarker, parseEnvImportMarker } from "../constructs/reference
|
|
|
12
12
|
import { gatewayKeyRefOf } from "../core/gateway-key-recipe.js";
|
|
13
13
|
import { labelsPatch, MANAGED_BY_LABEL_KEY } from "../core/labels.js";
|
|
14
14
|
import { isRefToken, refToken } from "../core/tokens.js";
|
|
15
|
-
import { modelSettingsUnchanged, standbyCapacityUnchanged, platformErrorMessage, } from "./apply-core.js";
|
|
15
|
+
import { createTeamResolver, mapError, modelSettingsUnchanged, standbyCapacityUnchanged, platformErrorMessage, } from "./apply-core.js";
|
|
16
16
|
import { httpStatusOf } from "./client.js";
|
|
17
17
|
import { describeRefusal, describeStageEffects, leftoverRefusals, pipelineChange, pipelineUnchanged, previewPipelineChange, resolveGateReferences, workflowStagesAfterApply, } from "./pipeline-reconcile.js";
|
|
18
18
|
import { describeEntryChange, describeOverlaps, entriesUnchanged, pipelineEntryChange, proposedWorkflows, } from "./pipeline-workflow-reconcile.js";
|
|
@@ -22,10 +22,10 @@ import { computeProviderPatch, } from "./compute-provider-reconcile.js";
|
|
|
22
22
|
import { paginate } from "./pages.js";
|
|
23
23
|
import { isCeremonyBackedConnection } from "./connection-install-link-reconcile.js";
|
|
24
24
|
import { reservedProviderSecretIds } from "./preflight.js";
|
|
25
|
-
import {
|
|
26
|
-
import { connectionUnchanged,
|
|
25
|
+
import { gatewayKeyPairRefusal, refusalOf, } from "./refusals.js";
|
|
26
|
+
import { connectionUnchanged, environmentUnchanged, getBySlugOrUndefined, subsetDeepEqual, } from "./reconcile.js";
|
|
27
27
|
import { removedConfigurationNotice } from "./connector-configuration.js";
|
|
28
|
-
import { containsCommandLineRecipe, metadataInjectionChange, pendingCredentialWrite, replacesLiveCredentialValue, resolveSecretValueSource, rootEnvName, } from "./secrets-apply.js";
|
|
28
|
+
import { containsCommandLineRecipe, declaredSecretHosts, metadataHostsChange, metadataInjectionChange, pendingCredentialWrite, replacesLiveCredentialValue, resolveSecretValueSource, rootEnvName, } from "./secrets-apply.js";
|
|
29
29
|
/** Overridable for tests. */
|
|
30
30
|
export const ORPHAN_SCAN_CAP = 5;
|
|
31
31
|
/**
|
|
@@ -65,12 +65,15 @@ export async function diffResources(plan, apis, opts) {
|
|
|
65
65
|
// build and a push for a write apply refuses the moment it reaches the same binding.
|
|
66
66
|
let reservedCache;
|
|
67
67
|
const reserved = () => (reservedCache ??= reservedProviderSecretIds(apis));
|
|
68
|
+
let rolesCache;
|
|
69
|
+
const roles = () => (rolesCache ??= paginate((page, limit) => apis.roles.listRoles({ page, limit })).then((read) => read.items));
|
|
68
70
|
const pass = {
|
|
69
71
|
apis,
|
|
70
72
|
env: opts.env,
|
|
71
73
|
planSlugByRef,
|
|
72
|
-
|
|
74
|
+
teams: opts.teams ?? (await previewTeamResolver(plan, apis)),
|
|
73
75
|
reserved,
|
|
76
|
+
roles,
|
|
74
77
|
reads: opts.reads ?? createDiffReadCache(apis),
|
|
75
78
|
triggers: opts.triggers ?? [],
|
|
76
79
|
};
|
|
@@ -88,38 +91,54 @@ export async function diffPlan(plan, apis, opts) {
|
|
|
88
91
|
return entries;
|
|
89
92
|
}
|
|
90
93
|
/**
|
|
91
|
-
*
|
|
92
|
-
*
|
|
93
|
-
*
|
|
94
|
-
*
|
|
95
|
-
*
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
94
|
+
* The ONE team resolver for the PREVIEW side, shared by apply's pre-flight and `orchestra fdk diff`. A managed
|
|
95
|
+
* team that exists live resolves to its id; one that does not, or that this key cannot read, is
|
|
96
|
+
* `pending-managed`, since no live row can sit in a team nothing has created. An imported team the key cannot
|
|
97
|
+
* read is left unjudged, because a preview must not refuse against a team it merely cannot read. Reconcile
|
|
98
|
+
* builds its own, because it creates the managed teams and holds fresher ids than any preview.
|
|
99
|
+
*/
|
|
100
|
+
export async function previewTeamResolver(plan, apis) {
|
|
101
|
+
const known = new Map();
|
|
102
|
+
const pendingManaged = new Map();
|
|
103
|
+
for (const resource of plan.resources) {
|
|
104
|
+
if (resource.kind !== "team")
|
|
105
|
+
continue;
|
|
106
|
+
const token = refToken("team", resource.path.split("/"));
|
|
107
|
+
const live = await getBySlugOrUndefined(() => apis.teams.getTeam({ id: resource.slug })).catch(() => undefined);
|
|
108
|
+
if (live !== undefined)
|
|
109
|
+
known.set(token, live.id);
|
|
110
|
+
else
|
|
111
|
+
pendingManaged.set(token, resource.slug);
|
|
112
|
+
}
|
|
113
|
+
return createTeamResolver(apis, known, { preview: { pendingManaged } });
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* A preview never fails on a team read: an unreadable one decides nothing. `lives` are the rows the team is
|
|
117
|
+
* judged against, so a row in Shared reads Shared's id only when one of them reports a team.
|
|
99
118
|
*/
|
|
100
|
-
|
|
101
|
-
const
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
119
|
+
async function teamOf(pass, resource, raw, ...lives) {
|
|
120
|
+
const ctx = { kind: resource.kind, slug: resource.slug, op: "get" };
|
|
121
|
+
try {
|
|
122
|
+
let team = await pass.teams.desired(raw, ctx, []);
|
|
123
|
+
for (const live of lives)
|
|
124
|
+
team = await pass.teams.judged(team, live, ctx, []);
|
|
125
|
+
return team;
|
|
105
126
|
}
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
return { state: "resolved", projectId: live.id };
|
|
127
|
+
catch {
|
|
128
|
+
return undefined;
|
|
109
129
|
}
|
|
110
|
-
return managedRef !== undefined ? { state: "pending-managed", projectRef: managedRef } : { state: "none" };
|
|
111
130
|
}
|
|
112
131
|
/**
|
|
113
|
-
*
|
|
114
|
-
*
|
|
115
|
-
*
|
|
132
|
+
* Sets the resolved live team so the compare reflects the row apply selected, or drops the field for Shared
|
|
133
|
+
* and for a team not created yet. Safe because every body compare runs after the identity check has already
|
|
134
|
+
* proved the live team and the declared one agree.
|
|
116
135
|
*/
|
|
117
|
-
function
|
|
118
|
-
if (
|
|
119
|
-
body.
|
|
136
|
+
function stampDiffBodyTeam(body, team) {
|
|
137
|
+
if (team?.state === "resolved" && team.shared !== true) {
|
|
138
|
+
body.teamId = team.teamId;
|
|
120
139
|
}
|
|
121
140
|
else {
|
|
122
|
-
delete body.
|
|
141
|
+
delete body.teamId;
|
|
123
142
|
}
|
|
124
143
|
}
|
|
125
144
|
/**
|
|
@@ -130,7 +149,7 @@ function stampDiffBodyProject(body, projectStamp) {
|
|
|
130
149
|
function verdictFor(resource, live, evidence) {
|
|
131
150
|
return refusalOf(resource.kind, resource, {
|
|
132
151
|
env: evidence.env,
|
|
133
|
-
...(evidence.
|
|
152
|
+
...(evidence.team !== undefined ? { team: evidence.team } : {}),
|
|
134
153
|
...(live !== undefined ? { live } : {}),
|
|
135
154
|
...(evidence.resolvedDesired !== undefined ? { resolvedDesired: evidence.resolvedDesired } : {}),
|
|
136
155
|
...(evidence.gatewayPair !== undefined ? { gatewayPair: evidence.gatewayPair } : {}),
|
|
@@ -144,17 +163,17 @@ function verdictFor(resource, live, evidence) {
|
|
|
144
163
|
* are genuinely about both rows and pass through to both.
|
|
145
164
|
*/
|
|
146
165
|
function addressedTo(resource, verdict) {
|
|
147
|
-
if (verdict?.code === "
|
|
166
|
+
if (verdict?.code === "team-identity" && verdict.refusal.slug !== resource.slug) {
|
|
148
167
|
return null;
|
|
149
168
|
}
|
|
150
169
|
return verdict;
|
|
151
170
|
}
|
|
152
171
|
/**
|
|
153
|
-
* A
|
|
172
|
+
* A team-identity conflict keeps its own `refused` state and typed payload; every other verdict rides an
|
|
154
173
|
* ordinary state carrying {@link DiffEntry.blocked}.
|
|
155
174
|
*/
|
|
156
175
|
function refusedRow(resource, verdict) {
|
|
157
|
-
return verdict?.code === "
|
|
176
|
+
return verdict?.code === "team-identity" ? refused(resource, verdict.refusal, verdict.code) : undefined;
|
|
158
177
|
}
|
|
159
178
|
/**
|
|
160
179
|
* Carrying the classifier's own MESSAGE as `details` is the point of the fragment: both renderers print
|
|
@@ -164,7 +183,7 @@ function refusedRow(resource, verdict) {
|
|
|
164
183
|
* going to be applied, so why it will fail outranks what it would otherwise have written.
|
|
165
184
|
*/
|
|
166
185
|
function blockedOf(verdict) {
|
|
167
|
-
return verdict === null || verdict.code === "
|
|
186
|
+
return verdict === null || verdict.code === "team-identity"
|
|
168
187
|
? {}
|
|
169
188
|
: { blocked: verdict.code, details: verdict.message };
|
|
170
189
|
}
|
|
@@ -189,8 +208,12 @@ function sensitivityOf(valueFrom, exists, env) {
|
|
|
189
208
|
}
|
|
190
209
|
async function diffResource(resource, plan, pass) {
|
|
191
210
|
switch (resource.kind) {
|
|
192
|
-
case "
|
|
193
|
-
return
|
|
211
|
+
case "team":
|
|
212
|
+
return diffTeam(resource, pass);
|
|
213
|
+
case "role":
|
|
214
|
+
return diffRole(resource, pass);
|
|
215
|
+
case "team-membership":
|
|
216
|
+
return diffTeamMemberships(resource, pass);
|
|
194
217
|
case "gateway-key":
|
|
195
218
|
return diffGatewayKey(resource, plan, pass);
|
|
196
219
|
case "model-provider-key":
|
|
@@ -233,17 +256,129 @@ async function diffComputeProvider(resource, pass) {
|
|
|
233
256
|
const patch = computeProviderPatch(resource.payload, live);
|
|
234
257
|
return entry(resource, patch === undefined ? "no-change" : "update");
|
|
235
258
|
}
|
|
236
|
-
/**
|
|
237
|
-
|
|
238
|
-
|
|
259
|
+
/**
|
|
260
|
+
* The platform's 403 on a read is this key saying it may not touch the row: the same `refused` apply records
|
|
261
|
+
* when its write is refused, so a weak key's preview names every row it cannot apply.
|
|
262
|
+
*/
|
|
263
|
+
async function forbiddenOr(resource, op, read) {
|
|
264
|
+
try {
|
|
265
|
+
return { value: await read() };
|
|
266
|
+
}
|
|
267
|
+
catch (error) {
|
|
268
|
+
if (httpStatusOf(error) !== 403)
|
|
269
|
+
throw error;
|
|
270
|
+
const details = await mapError(error, { kind: resource.kind, slug: resource.slug, op });
|
|
271
|
+
return { refused: entry(resource, "refused", undefined, { blocked: "forbidden", details }) };
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
/** Name, privacy, assignment method and the declared labels are the managed fields; the parent is fixed. */
|
|
275
|
+
async function diffTeam(resource, pass) {
|
|
276
|
+
const read = await forbiddenOr(resource, "get", () => pass.reads.read("team", resource.slug));
|
|
277
|
+
if ("refused" in read)
|
|
278
|
+
return read.refused;
|
|
279
|
+
const live = read.value;
|
|
239
280
|
if (live === undefined) {
|
|
240
281
|
return entry(resource, "create");
|
|
241
282
|
}
|
|
242
283
|
const payload = resource.payload;
|
|
243
|
-
|
|
284
|
+
// Compared both ways, as apply compares it: a parent declared, changed or dropped is refused.
|
|
285
|
+
const declaredParent = payload.parentTeamId === undefined ? undefined : await teamOf(pass, resource, payload.parentTeamId);
|
|
286
|
+
const parentId = declaredParent?.state === "resolved" ? declaredParent.teamId : undefined;
|
|
287
|
+
const parentDeclared = payload.parentTeamId !== undefined;
|
|
288
|
+
const liveParent = live.parentTeamId ?? undefined;
|
|
289
|
+
if ((parentDeclared && parentId !== liveParent) || (!parentDeclared && liveParent !== undefined)) {
|
|
290
|
+
return entry(resource, "update", undefined, {
|
|
291
|
+
blocked: "team-parent-fixed",
|
|
292
|
+
details: `team '${resource.slug}': a team's parent is fixed when it is created, so apply cannot change it`,
|
|
293
|
+
});
|
|
294
|
+
}
|
|
295
|
+
const unchanged = live.name === payload.name &&
|
|
296
|
+
live._private === payload.private &&
|
|
297
|
+
(live.assignment ?? "AGENT_FIRST") === payload.assignment &&
|
|
298
|
+
labelsPatch(payload.labels, live.labels) === undefined;
|
|
299
|
+
return entry(resource, unchanged ? "no-change" : "update");
|
|
300
|
+
}
|
|
301
|
+
/** A custom role is found by its name, as apply finds it, and its policies compare as a set. */
|
|
302
|
+
async function diffRole(resource, pass) {
|
|
303
|
+
const payload = resource.payload;
|
|
304
|
+
const read = await forbiddenOr(resource, "list", () => pass.roles());
|
|
305
|
+
if ("refused" in read)
|
|
306
|
+
return read.refused;
|
|
307
|
+
const live = read.value.find((role) => role.name === payload.name && role.organizationId !== "org_global");
|
|
308
|
+
if (live === undefined)
|
|
309
|
+
return entry(resource, "create");
|
|
310
|
+
const unchanged = [...live.policyIds].sort().join(" ") === payload.policyIds.join(" ") &&
|
|
311
|
+
(payload.description === undefined || payload.description === live.description) &&
|
|
244
312
|
labelsPatch(payload.labels, live.labels) === undefined;
|
|
245
313
|
return entry(resource, unchanged ? "no-change" : "update");
|
|
246
314
|
}
|
|
315
|
+
/**
|
|
316
|
+
* A principal's rows compare as one set, keyed by scope. An agent the plan has not created yet has the rows the
|
|
317
|
+
* platform writes at agent create, which apply then replaces, so its row previews as an update.
|
|
318
|
+
*/
|
|
319
|
+
async function diffTeamMemberships(resource, pass) {
|
|
320
|
+
const payload = resource.payload;
|
|
321
|
+
const principal = payload.principal;
|
|
322
|
+
let membershipId;
|
|
323
|
+
if ("agentId" in principal) {
|
|
324
|
+
const live = await pass.reads.read("agent", resource.slug).catch(() => undefined);
|
|
325
|
+
if (live === undefined)
|
|
326
|
+
return entry(resource, "update", "rows written after the agent is created");
|
|
327
|
+
membershipId = live.membershipId;
|
|
328
|
+
}
|
|
329
|
+
else {
|
|
330
|
+
const account = await getBySlugOrUndefined(() => pass.apis.serviceAccounts.getServiceAccount({ id: principal.serviceAccountId }));
|
|
331
|
+
if (account === undefined) {
|
|
332
|
+
return entry(resource, "update", undefined, {
|
|
333
|
+
blocked: "service-account-missing",
|
|
334
|
+
details: `service account '${principal.serviceAccountId}' was not found; the kit never creates one`,
|
|
335
|
+
});
|
|
336
|
+
}
|
|
337
|
+
membershipId = account.membershipId;
|
|
338
|
+
}
|
|
339
|
+
if (membershipId === undefined)
|
|
340
|
+
return entry(resource, "update");
|
|
341
|
+
const read = await forbiddenOr(resource, "list", async () => {
|
|
342
|
+
const rows = await paginate(async (page, limit) => {
|
|
343
|
+
const result = await pass.apis.teamMemberships.listTeamMemberships({ membershipId, page, limit });
|
|
344
|
+
return { data: result.data, page, limit, total: result.total ?? result.data.length };
|
|
345
|
+
});
|
|
346
|
+
return rows.items;
|
|
347
|
+
});
|
|
348
|
+
if ("refused" in read)
|
|
349
|
+
return read.refused;
|
|
350
|
+
if (read.value === undefined)
|
|
351
|
+
return entry(resource, "update");
|
|
352
|
+
const live = new Map(read.value.map((row) => [row.allTeams === true ? "*" : `team:${row.teamId ?? ""}`, row.roleId]));
|
|
353
|
+
if (live.size !== payload.rows.length)
|
|
354
|
+
return entry(resource, "update");
|
|
355
|
+
for (const row of payload.rows) {
|
|
356
|
+
let scope = "*";
|
|
357
|
+
if ("teamId" in row) {
|
|
358
|
+
const team = await teamOf(pass, resource, row.teamId);
|
|
359
|
+
if (team?.state !== "resolved")
|
|
360
|
+
return entry(resource, "update");
|
|
361
|
+
scope = `team:${team.teamId}`;
|
|
362
|
+
}
|
|
363
|
+
const roleId = await roleIdOf(pass, row.roleId);
|
|
364
|
+
if (roleId === undefined || live.get(scope) !== roleId)
|
|
365
|
+
return entry(resource, "update");
|
|
366
|
+
}
|
|
367
|
+
return entry(resource, "no-change");
|
|
368
|
+
}
|
|
369
|
+
/**
|
|
370
|
+
* A row's role id: a managed role's slug as written, or a custom role this program declares, found by its name
|
|
371
|
+
* as apply finds it. A custom role that does not exist yet answers undefined, so its rows preview as an update.
|
|
372
|
+
*/
|
|
373
|
+
async function roleIdOf(pass, ref) {
|
|
374
|
+
if (!isRefToken(ref))
|
|
375
|
+
return ref;
|
|
376
|
+
const declared = pass.planSlugByRef.get(ref);
|
|
377
|
+
if (declared?.kind !== "role")
|
|
378
|
+
return undefined;
|
|
379
|
+
const roles = await pass.roles().catch(() => undefined);
|
|
380
|
+
return roles?.find((role) => role.name === declared.slug && role.organizationId !== "org_global")?.id;
|
|
381
|
+
}
|
|
247
382
|
async function diffSecret(resource, pass) {
|
|
248
383
|
// A gateway-key-backed secret has no env source at all: whether apply writes it is decided by whether the
|
|
249
384
|
// paired KEY exists, so it needs its own classification.
|
|
@@ -263,9 +398,10 @@ async function diffSecret(resource, pass) {
|
|
|
263
398
|
// it as an optimization made an overwrite of a live credential preview exactly like a first write, so the
|
|
264
399
|
// operator never saw the unrecoverable-replacement warning.
|
|
265
400
|
const live = await readSecret(pass, resource.slug);
|
|
266
|
-
// A readable
|
|
401
|
+
// A readable row in another team outranks every write verdict — apply refuses it in its read-only decision
|
|
267
402
|
// phase, ahead of the write and ahead of the confirmation.
|
|
268
|
-
const
|
|
403
|
+
const team = await teamOf(pass, resource, resource.payload.teamId, live);
|
|
404
|
+
const verdict = verdictFor(resource, live, { env, ...(team !== undefined ? { team } : {}) });
|
|
269
405
|
const identity = refusedRow(resource, verdict);
|
|
270
406
|
if (identity !== undefined)
|
|
271
407
|
return identity;
|
|
@@ -283,17 +419,27 @@ async function diffSecret(resource, pass) {
|
|
|
283
419
|
if (live === undefined) {
|
|
284
420
|
return entry(resource, "create", unsetNote, marks);
|
|
285
421
|
}
|
|
286
|
-
// Nothing to write, but the declared INJECTION RECIPE may still differ, and reconcile answers that
|
|
287
|
-
// real value-less PATCH. Reading only the value source here reported `no-change` for that edit, so a
|
|
288
|
-
// recipe-only change sailed past the `any-change` gate unapproved. Same
|
|
289
|
-
const
|
|
290
|
-
if (
|
|
291
|
-
return entry(resource, "update", withDetail(unsetNote,
|
|
422
|
+
// Nothing to write, but the declared INJECTION RECIPE or HOSTS may still differ, and reconcile answers that
|
|
423
|
+
// with a real value-less PATCH. Reading only the value source here reported `no-change` for that edit, so a
|
|
424
|
+
// recipe-only change sailed past the `any-change` gate unapproved. Same comparators as reconcile's.
|
|
425
|
+
const metadata = secretMetadataDetail(resource, live);
|
|
426
|
+
if (metadata !== undefined) {
|
|
427
|
+
return entry(resource, "update", withDetail(unsetNote, metadata), marks);
|
|
292
428
|
}
|
|
293
429
|
return entry(resource, "no-change", unsetNote, marks);
|
|
294
430
|
}
|
|
295
|
-
/** Value-free: a recipe
|
|
431
|
+
/** Value-free: a recipe and a host list are shape, never credential material. */
|
|
296
432
|
const INJECTION_RECIPE_CHANGE = "injection recipe changes";
|
|
433
|
+
const HOSTS_CHANGE = "hosts change";
|
|
434
|
+
function secretMetadataDetail(resource, live) {
|
|
435
|
+
const details = [
|
|
436
|
+
...(metadataInjectionChange(declaredInjection(resource), live.injection) !== undefined
|
|
437
|
+
? [INJECTION_RECIPE_CHANGE]
|
|
438
|
+
: []),
|
|
439
|
+
...(metadataHostsChange(declaredSecretHosts(resource.payload), live.hosts) !== undefined ? [HOSTS_CHANGE] : []),
|
|
440
|
+
];
|
|
441
|
+
return details.length > 0 ? details.join("; ") : undefined;
|
|
442
|
+
}
|
|
297
443
|
function declaredInjection(resource) {
|
|
298
444
|
return resource.payload.injection;
|
|
299
445
|
}
|
|
@@ -314,9 +460,10 @@ async function diffGatewayKey(resource, plan, pass) {
|
|
|
314
460
|
// whose paired Secret is gone, and a live key beside a Secret still carrying the mid-protocol marker — are
|
|
315
461
|
// properties of the pair, so the key is stamped `blocked` rather than presenting as an executable update.
|
|
316
462
|
const liveSecret = pairContext === undefined ? undefined : await readSecret(pass, pairContext.secretSlug);
|
|
463
|
+
const team = await teamOf(pass, resource, resource.payload.teamId, live, liveSecret);
|
|
317
464
|
const verdict = addressedTo(resource, verdictFor(resource, { key: live, secret: liveSecret, secretMarked: hasPendingMarker(liveSecret) }, {
|
|
318
465
|
env: pass.env,
|
|
319
|
-
|
|
466
|
+
...(team !== undefined ? { team } : {}),
|
|
320
467
|
...(pairContext !== undefined ? { gatewayPair: pairContext } : {}),
|
|
321
468
|
}));
|
|
322
469
|
const identity = refusedRow(resource, verdict);
|
|
@@ -327,9 +474,9 @@ async function diffGatewayKey(resource, plan, pass) {
|
|
|
327
474
|
return entry(resource, "create", "mints a new gateway key and writes its paired secret", marks);
|
|
328
475
|
}
|
|
329
476
|
const body = structuredClone(resource.payload);
|
|
330
|
-
// `slug` is create-only identity and `
|
|
477
|
+
// `slug` is create-only identity and `teamId` has no update seam, so neither participates in the compare.
|
|
331
478
|
delete body.slug;
|
|
332
|
-
delete body.
|
|
479
|
+
delete body.teamId;
|
|
333
480
|
return entry(resource, keyUnchanged(body, live) ? "no-change" : "update", undefined, marks);
|
|
334
481
|
}
|
|
335
482
|
function hasPendingMarker(secret) {
|
|
@@ -357,7 +504,7 @@ async function diffModelProviderKey(resource, pass) {
|
|
|
357
504
|
const env = pass.env;
|
|
358
505
|
const payload = resource.payload;
|
|
359
506
|
const live = (await scanModelProviderKeys(pass.apis)).find((row) => row.modelProvider === payload.modelProvider);
|
|
360
|
-
// No
|
|
507
|
+
// No team: organization-wide by construction, so there is no team to compare and no `refused` arm.
|
|
361
508
|
const verdict = verdictFor(resource, live, { env });
|
|
362
509
|
const marks = {
|
|
363
510
|
...blockedOf(verdict),
|
|
@@ -414,9 +561,10 @@ async function diffGatewayKeyBackedSecret(resource, gatewayKeyRef, pass) {
|
|
|
414
561
|
// Read UNCONDITIONALLY: both the sensitivity classification of the pending mint write and the pair verdict
|
|
415
562
|
// need to know whether the row exists.
|
|
416
563
|
const live = await readSecret(pass, resource.slug);
|
|
564
|
+
const team = await teamOf(pass, resource, resource.payload.teamId, liveKey, live);
|
|
417
565
|
// The PAIR's verdict: identity on either member first, then the two states in which the minted token is
|
|
418
566
|
// already unrecoverable.
|
|
419
|
-
const verdict = addressedTo(resource, gatewayKeyPairRefusal(keySlug ?? "", resource.slug, { key: liveKey, secret: live, secretMarked: hasPendingMarker(live) },
|
|
567
|
+
const verdict = addressedTo(resource, gatewayKeyPairRefusal(keySlug ?? "", resource.slug, { key: liveKey, secret: live, secretMarked: hasPendingMarker(live) }, team, pairContext));
|
|
420
568
|
const identity = refusedRow(resource, verdict);
|
|
421
569
|
if (identity !== undefined)
|
|
422
570
|
return identity;
|
|
@@ -440,50 +588,26 @@ async function diffGatewayKeyBackedSecret(resource, gatewayKeyRef, pass) {
|
|
|
440
588
|
return entry(resource, "update", details, blocked);
|
|
441
589
|
}
|
|
442
590
|
// Steady state writes no token, but the gateway lane still reconciles this Secret's declared INJECTION
|
|
443
|
-
// RECIPE with a value-less PATCH — same
|
|
444
|
-
|
|
445
|
-
|
|
591
|
+
// RECIPE and HOSTS with a value-less PATCH — same comparators as the ordinary secret arm.
|
|
592
|
+
const metadata = secretMetadataDetail(resource, live);
|
|
593
|
+
if (metadata !== undefined) {
|
|
594
|
+
return entry(resource, "update", withDetail(details, metadata), blocked);
|
|
446
595
|
}
|
|
447
596
|
return entry(resource, "no-change", details, blocked);
|
|
448
597
|
}
|
|
449
598
|
async function diffEnvironment(resource, pass) {
|
|
450
599
|
const live = await pass.reads.read("environment", resource.slug);
|
|
451
|
-
const
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
}));
|
|
455
|
-
// Placement is identity, checked the moment the row is readable.
|
|
600
|
+
const team = await teamOf(pass, resource, resource.payload.teamId, live);
|
|
601
|
+
const identity = refusedRow(resource, verdictFor(resource, live, { env: pass.env, ...(team !== undefined ? { team } : {}) }));
|
|
602
|
+
// A team is identity, checked the moment the row is readable.
|
|
456
603
|
if (identity !== undefined)
|
|
457
604
|
return identity;
|
|
458
605
|
const body = structuredClone(resource.payload);
|
|
459
|
-
// The
|
|
460
|
-
//
|
|
461
|
-
//
|
|
462
|
-
// secret (or binding one secret twice) preview as an ordinary executable create — so apply's pre-flight
|
|
463
|
-
// solicited an approval, and possibly a docker build and push, for a write reconcile refuses every time.
|
|
464
|
-
const boundSecrets = [];
|
|
606
|
+
// The pull credential is resolved and classified BEFORE the absent-row branch below, because the refusal
|
|
607
|
+
// is a property of the DECLARATION, not of whether a live row happens to exist: a brand-new environment
|
|
608
|
+
// naming a connection-owned secret must not preview as an ordinary executable create.
|
|
465
609
|
const pullSecrets = [];
|
|
466
|
-
|
|
467
|
-
const egress = body.egressPolicy;
|
|
468
|
-
for (const rule of egress?.rules ?? []) {
|
|
469
|
-
for (const binding of rule.credentialBindings ?? []) {
|
|
470
|
-
if (credentialBindingArm(binding) === "connection") {
|
|
471
|
-
binding.connectionId = await resolveIdForDiff(binding.connectionId, "connection", pass);
|
|
472
|
-
}
|
|
473
|
-
else {
|
|
474
|
-
// Built from the ref AS AUTHORED, before the resolved id overwrites it, through the ONE helper apply
|
|
475
|
-
// names the same binding with. Two mirrored builders is how this row came to print
|
|
476
|
-
// `credential 'Authorization'` for a binding apply refused as `→ secret 'openai'`.
|
|
477
|
-
const ref = binding.secretId;
|
|
478
|
-
const secretId = await resolveIdForDiff(ref, "secret", pass);
|
|
479
|
-
binding.secretId = secretId;
|
|
480
|
-
boundSecrets.push({
|
|
481
|
-
id: secretId,
|
|
482
|
-
label: egressCredentialBindingLabel(resource.path, rule.name, ref, binding.header),
|
|
483
|
-
});
|
|
484
|
-
}
|
|
485
|
-
}
|
|
486
|
-
}
|
|
610
|
+
stampDiffBodyTeam(body, team);
|
|
487
611
|
// Canonicalize every mount reference for the same reason apply does: apply stores the resolved id, so
|
|
488
612
|
// comparing a slug-authored reference against the stored id would report a swap apply never performs.
|
|
489
613
|
// The durable home is an ordinary `/home` entry, so it is covered here with every other mount.
|
|
@@ -506,20 +630,14 @@ async function diffEnvironment(resource, pass) {
|
|
|
506
630
|
if (typeof providerRef === "string" && providerRef.length > 0) {
|
|
507
631
|
launchSpec.computeProviderId = await resolveIdForDiff(providerRef, "compute-provider", pass);
|
|
508
632
|
}
|
|
509
|
-
|
|
510
|
-
* The two groups are classified SEPARATELY, in apply's own order, because the pairwise-distinct rule is
|
|
511
|
-
* about the egress group alone: merging them would invent a refusal for an environment that legally binds
|
|
512
|
-
* one secret both as an egress credential and as its registry pull credential.
|
|
513
|
-
*/
|
|
514
|
-
const classifyBoundSecrets = async (secretRefs) => secretRefs.length === 0
|
|
633
|
+
const bound = pullSecrets.length === 0
|
|
515
634
|
? null
|
|
516
635
|
: verdictFor(resource, live, {
|
|
517
636
|
env: pass.env,
|
|
518
|
-
|
|
519
|
-
resolvedDesired: { secretRefs },
|
|
637
|
+
...(team !== undefined ? { team } : {}),
|
|
638
|
+
resolvedDesired: { secretRefs: pullSecrets },
|
|
520
639
|
reserved: await pass.reserved(),
|
|
521
640
|
});
|
|
522
|
-
const bound = (await classifyBoundSecrets(boundSecrets)) ?? (await classifyBoundSecrets(pullSecrets));
|
|
523
641
|
if (live === undefined) {
|
|
524
642
|
// A create is still a create — the classification only decides whether it is EXECUTABLE.
|
|
525
643
|
return entry(resource, "create", undefined, blockedOf(bound));
|
|
@@ -545,7 +663,8 @@ async function diffConnector(resource, pass) {
|
|
|
545
663
|
return entry(resource, "create");
|
|
546
664
|
}
|
|
547
665
|
const body = structuredClone(resource.payload);
|
|
548
|
-
|
|
666
|
+
const team = await teamOf(pass, resource, body.teamId, live);
|
|
667
|
+
stampDiffBodyTeam(body, team);
|
|
549
668
|
for (const field of CONNECTOR_SECRET_WIRE_FIELDS) {
|
|
550
669
|
const ref = body[field];
|
|
551
670
|
if (typeof ref === "string" && ref !== "") {
|
|
@@ -556,7 +675,7 @@ async function diffConnector(resource, pass) {
|
|
|
556
675
|
// After the reference resolution above, so the immutable-field comparison is id-against-id.
|
|
557
676
|
const verdict = verdictFor(resource, liveRecord, {
|
|
558
677
|
env: pass.env,
|
|
559
|
-
|
|
678
|
+
...(team !== undefined ? { team } : {}),
|
|
560
679
|
resolvedDesired: body,
|
|
561
680
|
});
|
|
562
681
|
const identity = refusedRow(resource, verdict);
|
|
@@ -573,7 +692,8 @@ async function diffConnection(resource, pass) {
|
|
|
573
692
|
return entry(resource, "create"); // nothing readable ⇒ nothing for the classifier to say (see connector)
|
|
574
693
|
}
|
|
575
694
|
const body = structuredClone(resource.payload);
|
|
576
|
-
|
|
695
|
+
const team = await teamOf(pass, resource, body.teamId, live);
|
|
696
|
+
stampDiffBodyTeam(body, team);
|
|
577
697
|
const auth = body.auth;
|
|
578
698
|
if (auth !== undefined && typeof auth.secretId === "string" && auth.secretId !== "") {
|
|
579
699
|
auth.secretId = await resolveIdForDiff(auth.secretId, "secret", pass);
|
|
@@ -588,7 +708,7 @@ async function diffConnection(resource, pass) {
|
|
|
588
708
|
// adoption guard, and only the ceremony lane adopts a row it did not create.
|
|
589
709
|
const verdict = verdictFor(resource, liveRecord, {
|
|
590
710
|
env: pass.env,
|
|
591
|
-
|
|
711
|
+
...(team !== undefined ? { team } : {}),
|
|
592
712
|
resolvedDesired: { body, ceremonyBacked: isCeremonyBackedConnection(body) },
|
|
593
713
|
});
|
|
594
714
|
const identity = refusedRow(resource, verdict);
|
|
@@ -602,7 +722,8 @@ async function diffConnection(resource, pass) {
|
|
|
602
722
|
*/
|
|
603
723
|
async function diffSkill(resource, pass) {
|
|
604
724
|
const liveSkill = await pass.reads.read("skill", resource.slug);
|
|
605
|
-
const
|
|
725
|
+
const team = await teamOf(pass, resource, resource.payload.teamId, liveSkill);
|
|
726
|
+
const identity = refusedRow(resource, verdictFor(resource, liveSkill, { env: pass.env, ...(team !== undefined ? { team } : {}) }));
|
|
606
727
|
if (identity !== undefined) {
|
|
607
728
|
// Before the file reads, mirroring apply, which classifies before any `POST /files`.
|
|
608
729
|
return identity;
|
|
@@ -617,7 +738,8 @@ async function diffSkill(resource, pass) {
|
|
|
617
738
|
}
|
|
618
739
|
async function diffAgent(resource, pass, factory) {
|
|
619
740
|
const live = await pass.reads.read("agent", resource.slug);
|
|
620
|
-
const
|
|
741
|
+
const team = await teamOf(pass, resource, resource.payload.teamId, live);
|
|
742
|
+
const verdict = verdictFor(resource, live, { env: pass.env, ...(team !== undefined ? { team } : {}) });
|
|
621
743
|
const identity = refusedRow(resource, verdict);
|
|
622
744
|
if (identity !== undefined) {
|
|
623
745
|
// Before the memory-file reads, mirroring apply's classify-before-`POST /files` ordering.
|
|
@@ -627,7 +749,7 @@ async function diffAgent(resource, pass, factory) {
|
|
|
627
749
|
return entry(resource, "create");
|
|
628
750
|
}
|
|
629
751
|
const body = structuredClone(resource.payload);
|
|
630
|
-
|
|
752
|
+
stampDiffBodyTeam(body, team);
|
|
631
753
|
// Mirror apply's label compare and ownership stamp, so an unstamped live agent previews the `update` apply does.
|
|
632
754
|
const labelsMatch = labelsPatch(body.labels, live.labels, { [MANAGED_BY_LABEL_KEY]: factory }) === undefined;
|
|
633
755
|
delete body.labels;
|
|
@@ -644,8 +766,8 @@ async function diffAgent(resource, pass, factory) {
|
|
|
644
766
|
delete body.turnTimeout;
|
|
645
767
|
const standbyCapacityMatch = standbyCapacityUnchanged(body.standbyCapacity, live.standbyCapacity);
|
|
646
768
|
delete body.standbyCapacity;
|
|
647
|
-
// `
|
|
648
|
-
//
|
|
769
|
+
// `teamId` rides this compare harmlessly: the classifier already proved the live team IS the declared one,
|
|
770
|
+
// so it can only ever match here.
|
|
649
771
|
delete body.skillIds;
|
|
650
772
|
delete body.memoryFiles;
|
|
651
773
|
const scalarMatch = subsetDeepEqual(body, live);
|
|
@@ -668,17 +790,18 @@ async function diffAgent(resource, pass, factory) {
|
|
|
668
790
|
*/
|
|
669
791
|
async function diffPipeline(resource, pass, plan) {
|
|
670
792
|
const live = await pass.reads.read("pipeline", resource.slug);
|
|
671
|
-
const
|
|
793
|
+
const team = await teamOf(pass, resource, resource.payload.teamId, live);
|
|
794
|
+
const verdict = verdictFor(resource, live, { env: pass.env, ...(team !== undefined ? { team } : {}) });
|
|
672
795
|
const identity = refusedRow(resource, verdict);
|
|
673
796
|
if (identity !== undefined)
|
|
674
797
|
return identity;
|
|
675
798
|
if (live === undefined)
|
|
676
799
|
return entry(resource, "create");
|
|
677
|
-
// An agent or
|
|
800
|
+
// An agent or team a gate names is compared as the id the platform stores; one that does not resolve stays
|
|
678
801
|
// as written and so reads as a change, which apply then refuses by name.
|
|
679
802
|
const payload = await resolveGateReferences(resource.payload, {
|
|
680
803
|
agent: (ref) => resolveIdForDiff(ref, "agent", pass),
|
|
681
|
-
|
|
804
|
+
team: async (ref) => (await getBySlugOrUndefined(() => pass.apis.teams.getTeam({ id: ref })))?.id ?? ref,
|
|
682
805
|
});
|
|
683
806
|
const entries = pipelineEntryChange(payload, live, plan.factory);
|
|
684
807
|
const listsWorkflows = (payload.workflows ?? []).length > 0 || !entriesUnchanged(entries);
|
|
@@ -748,7 +871,13 @@ async function contentRefsUnchanged(desired, liveRefs, apis) {
|
|
|
748
871
|
async function orphanReport(plan, apis, cap) {
|
|
749
872
|
const prefix = `${plan.factory}-`;
|
|
750
873
|
const kinds = [
|
|
751
|
-
{
|
|
874
|
+
{
|
|
875
|
+
kind: "team",
|
|
876
|
+
list: async (page, limit) => {
|
|
877
|
+
const result = await apis.teams.listTeams({ page, limit });
|
|
878
|
+
return { data: result.data, page, limit, total: result.total ?? result.data.length };
|
|
879
|
+
},
|
|
880
|
+
},
|
|
752
881
|
{ kind: "gateway-key", list: (page, limit) => apis.gatewayKeys.listGatewayKeys({ page, limit }) },
|
|
753
882
|
{
|
|
754
883
|
kind: "model-provider-key",
|
|
@@ -840,8 +969,13 @@ async function getModelByKind(pass, kind, id) {
|
|
|
840
969
|
*/
|
|
841
970
|
async function readByKind(apis, kind, id) {
|
|
842
971
|
switch (kind) {
|
|
843
|
-
case "
|
|
844
|
-
return getBySlugOrUndefined(() => apis.
|
|
972
|
+
case "team":
|
|
973
|
+
return getBySlugOrUndefined(() => apis.teams.getTeam({ id }));
|
|
974
|
+
case "role":
|
|
975
|
+
return getBySlugOrUndefined(() => apis.roles.getRole({ id }));
|
|
976
|
+
// A principal's rows are read through its membership, never by id.
|
|
977
|
+
case "team-membership":
|
|
978
|
+
return undefined;
|
|
845
979
|
case "secret":
|
|
846
980
|
return getBySlugOrUndefined(() => apis.secrets.getSecret({ id }));
|
|
847
981
|
case "environment":
|