@orchestraworks/cli 0.5.8 → 0.7.0
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/cli/api/approval.js +3 -3
- package/dist/cli/commands/outpost/local.js +3 -3
- package/dist/cli/commands/outpost/machine-names.d.ts +17 -0
- package/dist/cli/commands/outpost/machine-names.js +22 -0
- package/dist/cli/commands/outpost/up.js +7 -5
- package/dist/cli/commands/worker/enroll.d.ts +4 -3
- package/dist/cli/commands/worker/enroll.js +4 -3
- package/dist/cli/core/auth.d.ts +11 -1
- package/dist/cli/core/auth.js +21 -4
- package/dist/cli/core/session-body.d.ts +1 -1
- package/dist/cli/core/session-body.js +1 -1
- package/dist/cli/firstRun.js +2 -2
- package/dist/cli/main.js +4 -3
- package/dist/constructs/environment.d.ts +24 -11
- package/dist/constructs/environment.js +76 -12
- package/dist/constructs/secret.d.ts +17 -7
- package/dist/constructs/secret.js +24 -16
- package/dist/core/labels.d.ts +32 -6
- package/dist/core/labels.js +70 -8
- package/dist/engine/diff.js +38 -11
- package/dist/engine/gateway-key-reconcile.d.ts +1 -2
- package/dist/engine/gateway-key-reconcile.js +19 -15
- package/dist/engine/pipeline-reconcile.js +2 -2
- package/dist/engine/pipeline-workflow-reconcile.js +15 -9
- package/dist/engine/reconcile.js +48 -15
- package/dist/engine/refusals.d.ts +0 -5
- package/dist/engine/refusals.js +1 -5
- package/dist/engine/secrets-apply.d.ts +10 -14
- package/dist/engine/secrets-apply.js +12 -17
- package/dist/engine/workflow-reconcile.d.ts +1 -1
- package/dist/generated/cli-commands.json +170 -34
- package/dist/generated/providers.d.ts +40 -0
- package/dist/generated/providers.js +30 -0
- package/docs/REFERENCE.md +9 -7
- package/node_modules/@orchestraworks/client/dist/esm/models/ApiErrorDetail.d.ts +1 -1
- package/node_modules/@orchestraworks/client/dist/esm/models/CreateEnvironmentRequest.d.ts +7 -0
- package/node_modules/@orchestraworks/client/dist/esm/models/CreateEnvironmentRequest.js +3 -0
- package/node_modules/@orchestraworks/client/dist/esm/models/CreateSecretRequest.d.ts +4 -3
- package/node_modules/@orchestraworks/client/dist/esm/models/Environment.d.ts +7 -0
- package/node_modules/@orchestraworks/client/dist/esm/models/Environment.js +3 -0
- package/node_modules/@orchestraworks/client/dist/esm/models/EnvironmentCredential.d.ts +38 -0
- package/node_modules/@orchestraworks/client/dist/esm/models/EnvironmentCredential.js +45 -0
- package/node_modules/@orchestraworks/client/dist/esm/models/EnvironmentProvisionSpec.d.ts +1 -1
- package/node_modules/@orchestraworks/client/dist/esm/models/EnvironmentProvisionSpecRequest.d.ts +1 -1
- package/node_modules/@orchestraworks/client/dist/esm/models/EnvironmentSnapshot.d.ts +1 -1
- package/node_modules/@orchestraworks/client/dist/esm/models/InjectionRecipe.d.ts +6 -0
- package/node_modules/@orchestraworks/client/dist/esm/models/InjectionRecipe.js +2 -0
- package/node_modules/@orchestraworks/client/dist/esm/models/OAuthTokenRequest.d.ts +1 -1
- package/node_modules/@orchestraworks/client/dist/esm/models/Secret.d.ts +1 -7
- package/node_modules/@orchestraworks/client/dist/esm/models/Secret.js +0 -4
- package/node_modules/@orchestraworks/client/dist/esm/models/UpdateEnvironmentRequest.d.ts +7 -0
- package/node_modules/@orchestraworks/client/dist/esm/models/UpdateEnvironmentRequest.js +3 -0
- package/node_modules/@orchestraworks/client/dist/esm/models/UpdateSecretRequest.d.ts +4 -3
- package/node_modules/@orchestraworks/client/dist/esm/models/index.d.ts +1 -0
- package/node_modules/@orchestraworks/client/dist/esm/models/index.js +1 -0
- package/node_modules/@orchestraworks/client/dist/models/ApiErrorDetail.d.ts +1 -1
- package/node_modules/@orchestraworks/client/dist/models/CreateEnvironmentRequest.d.ts +7 -0
- package/node_modules/@orchestraworks/client/dist/models/CreateEnvironmentRequest.js +3 -0
- package/node_modules/@orchestraworks/client/dist/models/CreateSecretRequest.d.ts +4 -3
- package/node_modules/@orchestraworks/client/dist/models/Environment.d.ts +7 -0
- package/node_modules/@orchestraworks/client/dist/models/Environment.js +3 -0
- package/node_modules/@orchestraworks/client/dist/models/EnvironmentCredential.d.ts +38 -0
- package/node_modules/@orchestraworks/client/dist/models/EnvironmentCredential.js +52 -0
- package/node_modules/@orchestraworks/client/dist/models/EnvironmentProvisionSpec.d.ts +1 -1
- package/node_modules/@orchestraworks/client/dist/models/EnvironmentProvisionSpecRequest.d.ts +1 -1
- package/node_modules/@orchestraworks/client/dist/models/EnvironmentSnapshot.d.ts +1 -1
- package/node_modules/@orchestraworks/client/dist/models/InjectionRecipe.d.ts +6 -0
- package/node_modules/@orchestraworks/client/dist/models/InjectionRecipe.js +2 -0
- package/node_modules/@orchestraworks/client/dist/models/OAuthTokenRequest.d.ts +1 -1
- package/node_modules/@orchestraworks/client/dist/models/Secret.d.ts +1 -7
- package/node_modules/@orchestraworks/client/dist/models/Secret.js +0 -4
- package/node_modules/@orchestraworks/client/dist/models/UpdateEnvironmentRequest.d.ts +7 -0
- package/node_modules/@orchestraworks/client/dist/models/UpdateEnvironmentRequest.js +3 -0
- package/node_modules/@orchestraworks/client/dist/models/UpdateSecretRequest.d.ts +4 -3
- package/node_modules/@orchestraworks/client/dist/models/index.d.ts +1 -0
- package/node_modules/@orchestraworks/client/dist/models/index.js +1 -0
- package/node_modules/@orchestraworks/client/package.json +1 -1
- package/package.json +4 -4
- package/skills/orchestra/SKILL.md +132 -18
- package/skills/orchestra-fdk/references/authoring.md +511 -20
- package/skills/orchestra-fdk/references/environment.md +49 -12
- package/skills/orchestra-fdk/references/integrations/code-repo.md +26 -5
- package/skills/orchestra-fdk/references/phases/1-discover.md +1 -1
- package/skills/orchestra-fdk/references/phases/2-plan.md +1 -1
- package/skills/orchestra-fdk/references/troubleshooting.md +3 -2
- package/templates/bug-fix/main.ts +7 -4
- package/templates/engineering-team/lib/environment.ts +6 -3
- package/templates/engineering-team/package.json +1 -1
- package/templates/todo-factory/main.ts +7 -4
- package/templates/todo-factory/package.json +1 -1
|
@@ -547,6 +547,16 @@ export declare const Slack: {
|
|
|
547
547
|
readonly SessionPerConversation: import("../constructs/provider-types.js").Binding<"slack::app_mention" | "slack::message" | "slack::message.im" | "slack::message.mpim">;
|
|
548
548
|
readonly SessionPerThread: import("../constructs/provider-types.js").Binding<"slack::app_mention" | "slack::message" | "slack::message.im" | "slack::message.mpim">;
|
|
549
549
|
};
|
|
550
|
+
readonly skill: {
|
|
551
|
+
/**
|
|
552
|
+
* Accepts a platform id or a slug interchangeably — one rule for every reference property, stated
|
|
553
|
+
* once on `IResource` (`constructs/interfaces.ts`). A catalog row is seeded with slug = id, so this
|
|
554
|
+
* one key is both at once.
|
|
555
|
+
*/
|
|
556
|
+
readonly skillId: "skill_slack";
|
|
557
|
+
/** @internal — the reference this catalog skill contributes when passed (its `org_global` key). */
|
|
558
|
+
readonly _resourceId: () => string;
|
|
559
|
+
};
|
|
550
560
|
readonly conversation: {
|
|
551
561
|
readonly mention: import("../constructs/provider-types.js").ProviderEventHandle<"slack::app_mention">;
|
|
552
562
|
readonly dm: import("../constructs/provider-types.js").ProviderEventHandle<"slack::message.im">;
|
|
@@ -605,6 +615,16 @@ export declare const Teams: {
|
|
|
605
615
|
readonly SessionPerConversation: import("../constructs/provider-types.js").Binding<"teams::message">;
|
|
606
616
|
readonly SessionPerThread: import("../constructs/provider-types.js").Binding<"teams::message">;
|
|
607
617
|
};
|
|
618
|
+
readonly skill: {
|
|
619
|
+
/**
|
|
620
|
+
* Accepts a platform id or a slug interchangeably — one rule for every reference property, stated
|
|
621
|
+
* once on `IResource` (`constructs/interfaces.ts`). A catalog row is seeded with slug = id, so this
|
|
622
|
+
* one key is both at once.
|
|
623
|
+
*/
|
|
624
|
+
readonly skillId: "skill_teams";
|
|
625
|
+
/** @internal — the reference this catalog skill contributes when passed (its `org_global` key). */
|
|
626
|
+
readonly _resourceId: () => string;
|
|
627
|
+
};
|
|
608
628
|
readonly conversation: {
|
|
609
629
|
readonly message: import("../constructs/provider-types.js").ProviderEventHandle<"teams::message">;
|
|
610
630
|
readonly inChannel: () => ScopedCondition<"teams::message">;
|
|
@@ -1140,6 +1160,16 @@ export declare const Providers: {
|
|
|
1140
1160
|
readonly SessionPerConversation: import("../constructs/provider-types.js").Binding<"slack::app_mention" | "slack::message" | "slack::message.im" | "slack::message.mpim">;
|
|
1141
1161
|
readonly SessionPerThread: import("../constructs/provider-types.js").Binding<"slack::app_mention" | "slack::message" | "slack::message.im" | "slack::message.mpim">;
|
|
1142
1162
|
};
|
|
1163
|
+
readonly skill: {
|
|
1164
|
+
/**
|
|
1165
|
+
* Accepts a platform id or a slug interchangeably — one rule for every reference property, stated
|
|
1166
|
+
* once on `IResource` (`constructs/interfaces.ts`). A catalog row is seeded with slug = id, so this
|
|
1167
|
+
* one key is both at once.
|
|
1168
|
+
*/
|
|
1169
|
+
readonly skillId: "skill_slack";
|
|
1170
|
+
/** @internal — the reference this catalog skill contributes when passed (its `org_global` key). */
|
|
1171
|
+
readonly _resourceId: () => string;
|
|
1172
|
+
};
|
|
1143
1173
|
readonly conversation: {
|
|
1144
1174
|
readonly mention: import("../constructs/provider-types.js").ProviderEventHandle<"slack::app_mention">;
|
|
1145
1175
|
readonly dm: import("../constructs/provider-types.js").ProviderEventHandle<"slack::message.im">;
|
|
@@ -1191,6 +1221,16 @@ export declare const Providers: {
|
|
|
1191
1221
|
readonly SessionPerConversation: import("../constructs/provider-types.js").Binding<"teams::message">;
|
|
1192
1222
|
readonly SessionPerThread: import("../constructs/provider-types.js").Binding<"teams::message">;
|
|
1193
1223
|
};
|
|
1224
|
+
readonly skill: {
|
|
1225
|
+
/**
|
|
1226
|
+
* Accepts a platform id or a slug interchangeably — one rule for every reference property, stated
|
|
1227
|
+
* once on `IResource` (`constructs/interfaces.ts`). A catalog row is seeded with slug = id, so this
|
|
1228
|
+
* one key is both at once.
|
|
1229
|
+
*/
|
|
1230
|
+
readonly skillId: "skill_teams";
|
|
1231
|
+
/** @internal — the reference this catalog skill contributes when passed (its `org_global` key). */
|
|
1232
|
+
readonly _resourceId: () => string;
|
|
1233
|
+
};
|
|
1194
1234
|
readonly conversation: {
|
|
1195
1235
|
readonly message: import("../constructs/provider-types.js").ProviderEventHandle<"teams::message">;
|
|
1196
1236
|
readonly inChannel: () => ScopedCondition<"teams::message">;
|
|
@@ -538,6 +538,20 @@ export const Slack = {
|
|
|
538
538
|
conversational: true,
|
|
539
539
|
events: slackEvents,
|
|
540
540
|
bindings: slackBindings,
|
|
541
|
+
// The provider's catalog skill — attach it with `skills: [Slack.skill]`. A plain catalog literal
|
|
542
|
+
// satisfying `ISkill` rather than a registered plan import: a module-level constant has no construct
|
|
543
|
+
// scope to register one in. It skips synth-time plan-import registration only — at apply the ref still
|
|
544
|
+
// resolves through one idempotent getSkill, and boot validation guarantees the catalog row exists.
|
|
545
|
+
skill: {
|
|
546
|
+
/**
|
|
547
|
+
* Accepts a platform id or a slug interchangeably — one rule for every reference property, stated
|
|
548
|
+
* once on `IResource` (`constructs/interfaces.ts`). A catalog row is seeded with slug = id, so this
|
|
549
|
+
* one key is both at once.
|
|
550
|
+
*/
|
|
551
|
+
skillId: "skill_slack",
|
|
552
|
+
/** @internal — the reference this catalog skill contributes when passed (its `org_global` key). */
|
|
553
|
+
_resourceId: () => "skill_slack",
|
|
554
|
+
},
|
|
541
555
|
// The conversation authoring sugar, generated from the catalog conversation block.
|
|
542
556
|
conversation: {
|
|
543
557
|
mention: slackEvents.AppMention,
|
|
@@ -589,6 +603,20 @@ export const Teams = {
|
|
|
589
603
|
conversational: true,
|
|
590
604
|
events: teamsEvents,
|
|
591
605
|
bindings: teamsBindings,
|
|
606
|
+
// The provider's catalog skill — attach it with `skills: [Teams.skill]`. A plain catalog literal
|
|
607
|
+
// satisfying `ISkill` rather than a registered plan import: a module-level constant has no construct
|
|
608
|
+
// scope to register one in. It skips synth-time plan-import registration only — at apply the ref still
|
|
609
|
+
// resolves through one idempotent getSkill, and boot validation guarantees the catalog row exists.
|
|
610
|
+
skill: {
|
|
611
|
+
/**
|
|
612
|
+
* Accepts a platform id or a slug interchangeably — one rule for every reference property, stated
|
|
613
|
+
* once on `IResource` (`constructs/interfaces.ts`). A catalog row is seeded with slug = id, so this
|
|
614
|
+
* one key is both at once.
|
|
615
|
+
*/
|
|
616
|
+
skillId: "skill_teams",
|
|
617
|
+
/** @internal — the reference this catalog skill contributes when passed (its `org_global` key). */
|
|
618
|
+
_resourceId: () => "skill_teams",
|
|
619
|
+
},
|
|
592
620
|
// The conversation authoring sugar, generated from the catalog conversation block.
|
|
593
621
|
conversation: {
|
|
594
622
|
message: teamsEvents.Message,
|
|
@@ -673,6 +701,8 @@ export const PROVIDER_SKILL_IDS = {
|
|
|
673
701
|
"jira-classic": "skill_jira-classic",
|
|
674
702
|
"linear": "skill_linear",
|
|
675
703
|
"notion": "skill_notion",
|
|
704
|
+
"slack": "skill_slack",
|
|
705
|
+
"teams": "skill_teams",
|
|
676
706
|
"zendesk": "skill_zendesk",
|
|
677
707
|
};
|
|
678
708
|
/**
|
package/docs/REFERENCE.md
CHANGED
|
@@ -131,9 +131,11 @@ export ORCHESTRA_API_TOKEN="…" # any principal's bearer; the CLI ne
|
|
|
131
131
|
export ORCHESTRA_ORGANIZATION_ID="org_…"
|
|
132
132
|
```
|
|
133
133
|
|
|
134
|
+
Each `ORCHESTRA_` machine variable this page names also has a former `SFDK_` spelling. Until the rename's compatibility period ends ([D50](../../docs/specs/2026-10-03_2446_orchestra_rename_spec.md)), the platform and the worker still write the former spelling beside the new one, and every reader takes the new name first and the former one when the new one is absent.
|
|
135
|
+
|
|
134
136
|
**The auth-provider chain** (one ordered chain for every command, presence is selection):
|
|
135
137
|
`ORCHESTRA_API_TOKEN` → the file `ORCHESTRA_API_TOKEN_FILE` names → the `login` profile → the
|
|
136
|
-
platform-injected machine edge flag (`
|
|
138
|
+
platform-injected machine edge flag (`ORCHESTRA_AUTH_EDGE_INJECTED`) → a named missing-credentials error.
|
|
137
139
|
There is **no `--token` flag**: a token never appears in argv.
|
|
138
140
|
|
|
139
141
|
- **The token file.** On an Orchestra machine, the worker writes the agent's own platform token to a
|
|
@@ -158,14 +160,14 @@ bearer is itself a credential — with the unauthenticated `health` ping the one
|
|
|
158
160
|
print the resolved target org as a banner before any read/write, and warn when an exported
|
|
159
161
|
`ORCHESTRA_ORGANIZATION_ID` diverges from the profile's org (so a stale export can't silently redirect writes).
|
|
160
162
|
|
|
161
|
-
The conversation (`
|
|
163
|
+
The conversation (`ORCHESTRA_SESSION_ID`, under every provider). The worker sets it on each harness process
|
|
162
164
|
it starts, so a command an agent runs knows which conversation it is in. When it is set, `orchestra` adds
|
|
163
165
|
`sessionId` to every JSON request body that has none: typed commands, `orchestra api`, `apply`, and the
|
|
164
166
|
`login` and refresh token requests. A body that already names a `sessionId` is sent unchanged, so
|
|
165
167
|
`artifacts create --session-id <id>` wins. Query strings, uploads and other non-JSON bodies are never
|
|
166
168
|
changed, and an empty or whitespace-only value counts as unset. The platform checks a supplied session as
|
|
167
169
|
usual. An artifact takes its project from the session, so a command that must publish into another project
|
|
168
|
-
than its conversation's runs without the variable: `env -u
|
|
170
|
+
than its conversation's runs without the variable: `env -u ORCHESTRA_SESSION_ID orchestra artifacts create …`. A
|
|
169
171
|
value you export by hand in your own shell applies the same way.
|
|
170
172
|
|
|
171
173
|
## 4. Author your first factory
|
|
@@ -819,7 +821,7 @@ subscription token rather than an API key:
|
|
|
819
821
|
import { EgressPolicy, Secret, SecretValue } from "@orchestraworks/cli";
|
|
820
822
|
|
|
821
823
|
new Secret(factory, "claude-sign-in", {
|
|
822
|
-
value: SecretValue.fromEnv("
|
|
824
|
+
value: SecretValue.fromEnv("ORCHESTRA_FDK_CLAUDE_CODE_OAUTH_TOKEN"),
|
|
823
825
|
hosts: ["api.anthropic.com"],
|
|
824
826
|
injection: {
|
|
825
827
|
headers: [{ name: "authorization", value: "Bearer ${secret}" }],
|
|
@@ -863,7 +865,7 @@ Agent.fromSlug(factory, "existing-agent");
|
|
|
863
865
|
Environment.fromSlug(factory, "shared-runtime");
|
|
864
866
|
Volume.fromSlug(factory, "cache-vol");
|
|
865
867
|
Volume.fromId(factory, "volume_…");
|
|
866
|
-
Connection.fromEnv(factory, "
|
|
868
|
+
Connection.fromEnv(factory, "ORCHESTRA_FDK_ZENDESK_CONNECTION_ID", { provider: Providers.Zendesk });
|
|
867
869
|
```
|
|
868
870
|
|
|
869
871
|
`Connection.fromEnv` resolves the connection id from `process.env` at apply, so **no tenant id
|
|
@@ -1069,8 +1071,8 @@ const ourSlackApp = new Connector(factory, "our-slack-app", {
|
|
|
1069
1071
|
provider: Providers.Slack,
|
|
1070
1072
|
clientId: "1234.5678",
|
|
1071
1073
|
appId: "A0ACME",
|
|
1072
|
-
clientSecret: new Secret(factory, "slack-client-secret", { value: SecretValue.fromEnv("
|
|
1073
|
-
signingSecret: new Secret(factory, "slack-signing-secret", { value: SecretValue.fromEnv("
|
|
1074
|
+
clientSecret: new Secret(factory, "slack-client-secret", { value: SecretValue.fromEnv("ORCHESTRA_FDK_SLACK_CLIENT_SECRET") }),
|
|
1075
|
+
signingSecret: new Secret(factory, "slack-signing-secret", { value: SecretValue.fromEnv("ORCHESTRA_FDK_SLACK_SIGNING_SECRET") }),
|
|
1074
1076
|
});
|
|
1075
1077
|
|
|
1076
1078
|
const workspace = new Connection(factory, "workspace", {
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
*/
|
|
17
17
|
export interface ApiErrorDetail {
|
|
18
18
|
/**
|
|
19
|
-
* Present only when `code` is CREDENTIAL_UNAVAILABLE, ORGANIZATION_AUTH_POLICY_UNSATISFIED or SSO_CALLER_SESSION_REQUIRED. Published as a plain value rather than a closed enum because the shapes that carry `reason` do not agree on one value set. When `code` is CREDENTIAL_UNAVAILABLE: Closed denial-reason class explaining why the credential chain refused — one of secret_missing, secret_expired, refresh_failed, recipe_field_missing, policy_denied,
|
|
19
|
+
* Present only when `code` is CREDENTIAL_UNAVAILABLE, ORGANIZATION_AUTH_POLICY_UNSATISFIED or SSO_CALLER_SESSION_REQUIRED. Published as a plain value rather than a closed enum because the shapes that carry `reason` do not agree on one value set. When `code` is CREDENTIAL_UNAVAILABLE: Closed denial-reason class explaining why the credential chain refused — one of secret_missing, secret_expired, refresh_failed, recipe_field_missing, policy_denied, connection_needs_attention, user_subject_required, user_grant_unavailable, conversation_not_attested, path_not_permitted, forge_credential_stale, install_declaration_invalid, provider_unavailable, internal_error, credential_not_found, use_denied, host_not_covered, machine_in_setup, credential_needs_https, plan_feature_disabled. When `code` is ORGANIZATION_AUTH_POLICY_UNSATISFIED or SSO_CALLER_SESSION_REQUIRED: Closed reason class naming the first policy check the session failed — one of ORGANIZATION_NOT_ACTIVE, SSO_ENFORCED_WITHOUT_BINDING, WRONG_IDENTITY_PROVIDER, AUTHENTICATION_METHOD_NOT_ALLOWED, MFA_REQUIRED.
|
|
20
20
|
* @type {string}
|
|
21
21
|
* @memberof ApiErrorDetail
|
|
22
22
|
*/
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
* Do not edit the class manually.
|
|
11
11
|
*/
|
|
12
12
|
import type { EnvironmentIngressPolicy } from './EnvironmentIngressPolicy';
|
|
13
|
+
import type { EnvironmentCredential } from './EnvironmentCredential';
|
|
13
14
|
import type { EnvironmentHooks } from './EnvironmentHooks';
|
|
14
15
|
import type { EnvironmentPlatformRequest } from './EnvironmentPlatformRequest';
|
|
15
16
|
import type { EnvironmentEgressPolicy } from './EnvironmentEgressPolicy';
|
|
@@ -50,6 +51,12 @@ export interface CreateEnvironmentRequest {
|
|
|
50
51
|
* @memberof CreateEnvironmentRequest
|
|
51
52
|
*/
|
|
52
53
|
ingressPolicy?: EnvironmentIngressPolicy | null;
|
|
54
|
+
/**
|
|
55
|
+
* The credentials this environment's machines get on a request that names none, in order: the first one covering the request's host is added, whatever the agent. Each entry is a Secret or Connection of this organization by id, and adding one needs the caller's own use of it. A request naming a credential gets that one instead. Absent declares none.
|
|
56
|
+
* @type {Array<EnvironmentCredential>}
|
|
57
|
+
* @memberof CreateEnvironmentRequest
|
|
58
|
+
*/
|
|
59
|
+
credentials?: Array<EnvironmentCredential>;
|
|
53
60
|
/**
|
|
54
61
|
* Whether the platform provisions this environment's machines (provisioned, the default) or a customer's own machine enrols into it (enrolled). Fixed at create.
|
|
55
62
|
* @type {CreateEnvironmentRequestKindEnum}
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
* Do not edit the class manually.
|
|
13
13
|
*/
|
|
14
14
|
import { EnvironmentIngressPolicyFromJSON, EnvironmentIngressPolicyToJSON, } from './EnvironmentIngressPolicy';
|
|
15
|
+
import { EnvironmentCredentialFromJSON, EnvironmentCredentialToJSON, } from './EnvironmentCredential';
|
|
15
16
|
import { EnvironmentHooksFromJSON, EnvironmentHooksToJSON, } from './EnvironmentHooks';
|
|
16
17
|
import { EnvironmentPlatformRequestFromJSON, EnvironmentPlatformRequestToJSON, } from './EnvironmentPlatformRequest';
|
|
17
18
|
import { EnvironmentEgressPolicyFromJSON, EnvironmentEgressPolicyToJSON, } from './EnvironmentEgressPolicy';
|
|
@@ -44,6 +45,7 @@ export function CreateEnvironmentRequestFromJSONTyped(json, ignoreDiscriminator)
|
|
|
44
45
|
'platform': json['platform'] == null ? undefined : EnvironmentPlatformRequestFromJSON(json['platform']),
|
|
45
46
|
'egressPolicy': json['egressPolicy'] == null ? undefined : EnvironmentEgressPolicyFromJSON(json['egressPolicy']),
|
|
46
47
|
'ingressPolicy': json['ingressPolicy'] == null ? undefined : EnvironmentIngressPolicyFromJSON(json['ingressPolicy']),
|
|
48
|
+
'credentials': json['credentials'] == null ? undefined : (json['credentials'].map(EnvironmentCredentialFromJSON)),
|
|
47
49
|
'kind': json['kind'] == null ? undefined : json['kind'],
|
|
48
50
|
'provisionSpec': json['provisionSpec'] == null ? undefined : EnvironmentProvisionSpecRequestFromJSON(json['provisionSpec']),
|
|
49
51
|
'teamId': json['teamId'] == null ? undefined : json['teamId'],
|
|
@@ -65,6 +67,7 @@ export function CreateEnvironmentRequestToJSONTyped(value, ignoreDiscriminator =
|
|
|
65
67
|
'platform': EnvironmentPlatformRequestToJSON(value['platform']),
|
|
66
68
|
'egressPolicy': EnvironmentEgressPolicyToJSON(value['egressPolicy']),
|
|
67
69
|
'ingressPolicy': EnvironmentIngressPolicyToJSON(value['ingressPolicy']),
|
|
70
|
+
'credentials': value['credentials'] == null ? undefined : (value['credentials'].map(EnvironmentCredentialToJSON)),
|
|
68
71
|
'kind': value['kind'],
|
|
69
72
|
'provisionSpec': EnvironmentProvisionSpecRequestToJSON(value['provisionSpec']),
|
|
70
73
|
'teamId': value['teamId'],
|
|
@@ -35,7 +35,7 @@ export interface CreateSecretRequest {
|
|
|
35
35
|
*/
|
|
36
36
|
description?: string;
|
|
37
37
|
/**
|
|
38
|
-
* Secret value. This is write-only and is never returned by management APIs.
|
|
38
|
+
* Secret value. This is write-only and is never returned by management APIs. For git over HTTPS, store base64 of <user>:<token> as the value, such as the output of printf 'x-access-token:%s' "$TOKEN" | base64 | tr -d '\n' for a GitHub token, and present it as Authorization: Basic ${secret}.
|
|
39
39
|
* @type {string}
|
|
40
40
|
* @memberof CreateSecretRequest
|
|
41
41
|
*/
|
|
@@ -53,7 +53,7 @@ export interface CreateSecretRequest {
|
|
|
53
53
|
*/
|
|
54
54
|
teamId?: string;
|
|
55
55
|
/**
|
|
56
|
-
* Optional injection recipe
|
|
56
|
+
* Optional injection recipe: the request mutations the broker applies from this secret, and the hosts it applies them on. A secret without one is stored only: the broker presents it on no request. For git over HTTPS, store base64 of <user>:<token> as the value, such as the output of printf 'x-access-token:%s' "$TOKEN" | base64 | tr -d '\n' for a GitHub token, and present it as Authorization: Basic ${secret}.
|
|
57
57
|
* @type {InjectionRecipe}
|
|
58
58
|
* @memberof CreateSecretRequest
|
|
59
59
|
*/
|
|
@@ -67,9 +67,10 @@ export interface CreateSecretRequest {
|
|
|
67
67
|
[key: string]: string;
|
|
68
68
|
};
|
|
69
69
|
/**
|
|
70
|
-
*
|
|
70
|
+
* Deprecated: write injection.hosts instead. Accepted for one release and moved into the recipe's hosts; a request whose recipe names other hosts is refused.
|
|
71
71
|
* @type {Array<string>}
|
|
72
72
|
* @memberof CreateSecretRequest
|
|
73
|
+
* @deprecated
|
|
73
74
|
*/
|
|
74
75
|
hosts?: Array<string>;
|
|
75
76
|
}
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
*/
|
|
12
12
|
import type { EnvironmentIngressPolicy } from './EnvironmentIngressPolicy';
|
|
13
13
|
import type { EnvironmentPlatformWithRuntime } from './EnvironmentPlatformWithRuntime';
|
|
14
|
+
import type { EnvironmentCredential } from './EnvironmentCredential';
|
|
14
15
|
import type { EnvironmentHooks } from './EnvironmentHooks';
|
|
15
16
|
import type { EnvironmentEgressPolicy } from './EnvironmentEgressPolicy';
|
|
16
17
|
import type { EnvironmentProvisionSpec } from './EnvironmentProvisionSpec';
|
|
@@ -68,6 +69,12 @@ export interface Environment {
|
|
|
68
69
|
* @memberof Environment
|
|
69
70
|
*/
|
|
70
71
|
ingressPolicy?: EnvironmentIngressPolicy;
|
|
72
|
+
/**
|
|
73
|
+
* The credentials this environment's machines get on a request that names none, in order: the first one covering the request's host is added, whatever the agent. Each entry is a Secret or Connection of this organization by id, and adding one needs the caller's own use of it. A request naming a credential gets that one instead.
|
|
74
|
+
* @type {Array<EnvironmentCredential>}
|
|
75
|
+
* @memberof Environment
|
|
76
|
+
*/
|
|
77
|
+
credentials?: Array<EnvironmentCredential>;
|
|
71
78
|
/**
|
|
72
79
|
* Whether the platform provisions this environment's machines (provisioned) or a customer's own machine enrols into it (enrolled). Fixed when the environment is created.
|
|
73
80
|
* @type {EnvironmentKindEnum}
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
*/
|
|
14
14
|
import { EnvironmentIngressPolicyFromJSON, EnvironmentIngressPolicyToJSON, } from './EnvironmentIngressPolicy';
|
|
15
15
|
import { EnvironmentPlatformWithRuntimeFromJSON, EnvironmentPlatformWithRuntimeToJSON, } from './EnvironmentPlatformWithRuntime';
|
|
16
|
+
import { EnvironmentCredentialFromJSON, EnvironmentCredentialToJSON, } from './EnvironmentCredential';
|
|
16
17
|
import { EnvironmentHooksFromJSON, EnvironmentHooksToJSON, } from './EnvironmentHooks';
|
|
17
18
|
import { EnvironmentEgressPolicyFromJSON, EnvironmentEgressPolicyToJSON, } from './EnvironmentEgressPolicy';
|
|
18
19
|
import { EnvironmentProvisionSpecFromJSON, EnvironmentProvisionSpecToJSON, } from './EnvironmentProvisionSpec';
|
|
@@ -65,6 +66,7 @@ export function EnvironmentFromJSONTyped(json, ignoreDiscriminator) {
|
|
|
65
66
|
'platform': EnvironmentPlatformWithRuntimeFromJSON(json['platform']),
|
|
66
67
|
'egressPolicy': EnvironmentEgressPolicyFromJSON(json['egressPolicy']),
|
|
67
68
|
'ingressPolicy': json['ingressPolicy'] == null ? undefined : EnvironmentIngressPolicyFromJSON(json['ingressPolicy']),
|
|
69
|
+
'credentials': json['credentials'] == null ? undefined : (json['credentials'].map(EnvironmentCredentialFromJSON)),
|
|
68
70
|
'kind': json['kind'],
|
|
69
71
|
'provisionSpec': json['provisionSpec'] == null ? undefined : EnvironmentProvisionSpecFromJSON(json['provisionSpec']),
|
|
70
72
|
'workingDirectory': json['workingDirectory'] == null ? undefined : json['workingDirectory'],
|
|
@@ -90,6 +92,7 @@ export function EnvironmentToJSONTyped(value, ignoreDiscriminator = false) {
|
|
|
90
92
|
'platform': EnvironmentPlatformWithRuntimeToJSON(value['platform']),
|
|
91
93
|
'egressPolicy': EnvironmentEgressPolicyToJSON(value['egressPolicy']),
|
|
92
94
|
'ingressPolicy': EnvironmentIngressPolicyToJSON(value['ingressPolicy']),
|
|
95
|
+
'credentials': value['credentials'] == null ? undefined : (value['credentials'].map(EnvironmentCredentialToJSON)),
|
|
93
96
|
'provisionSpec': EnvironmentProvisionSpecToJSON(value['provisionSpec']),
|
|
94
97
|
'workingDirectory': value['workingDirectory'],
|
|
95
98
|
'hooks': EnvironmentHooksToJSON(value['hooks']),
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Orchestra platform API
|
|
3
|
+
* No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
|
|
4
|
+
*
|
|
5
|
+
* The version of the OpenAPI document: 0.1.0
|
|
6
|
+
*
|
|
7
|
+
*
|
|
8
|
+
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
|
|
9
|
+
* https://openapi-generator.tech
|
|
10
|
+
* Do not edit the class manually.
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
*
|
|
14
|
+
* @export
|
|
15
|
+
* @interface EnvironmentCredential
|
|
16
|
+
*/
|
|
17
|
+
export interface EnvironmentCredential {
|
|
18
|
+
/**
|
|
19
|
+
* The credential, as secret/<id> or connection/<id>
|
|
20
|
+
* @type {string}
|
|
21
|
+
* @memberof EnvironmentCredential
|
|
22
|
+
*/
|
|
23
|
+
credential: string;
|
|
24
|
+
/**
|
|
25
|
+
* Whether the credential replaces a value the request already carries in a header the credential sets. False leaves such a request as it was sent. Absent means true.
|
|
26
|
+
* @type {boolean}
|
|
27
|
+
* @memberof EnvironmentCredential
|
|
28
|
+
*/
|
|
29
|
+
replace?: boolean;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Check if a given object implements the EnvironmentCredential interface.
|
|
33
|
+
*/
|
|
34
|
+
export declare function instanceOfEnvironmentCredential(value: object): value is EnvironmentCredential;
|
|
35
|
+
export declare function EnvironmentCredentialFromJSON(json: any): EnvironmentCredential;
|
|
36
|
+
export declare function EnvironmentCredentialFromJSONTyped(json: any, ignoreDiscriminator: boolean): EnvironmentCredential;
|
|
37
|
+
export declare function EnvironmentCredentialToJSON(json: any): EnvironmentCredential;
|
|
38
|
+
export declare function EnvironmentCredentialToJSONTyped(value?: EnvironmentCredential | null, ignoreDiscriminator?: boolean): any;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/* tslint:disable */
|
|
2
|
+
/* eslint-disable */
|
|
3
|
+
/**
|
|
4
|
+
* Orchestra platform API
|
|
5
|
+
* No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
|
|
6
|
+
*
|
|
7
|
+
* The version of the OpenAPI document: 0.1.0
|
|
8
|
+
*
|
|
9
|
+
*
|
|
10
|
+
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
|
|
11
|
+
* https://openapi-generator.tech
|
|
12
|
+
* Do not edit the class manually.
|
|
13
|
+
*/
|
|
14
|
+
/**
|
|
15
|
+
* Check if a given object implements the EnvironmentCredential interface.
|
|
16
|
+
*/
|
|
17
|
+
export function instanceOfEnvironmentCredential(value) {
|
|
18
|
+
if (!('credential' in value) || value['credential'] === undefined)
|
|
19
|
+
return false;
|
|
20
|
+
return true;
|
|
21
|
+
}
|
|
22
|
+
export function EnvironmentCredentialFromJSON(json) {
|
|
23
|
+
return EnvironmentCredentialFromJSONTyped(json, false);
|
|
24
|
+
}
|
|
25
|
+
export function EnvironmentCredentialFromJSONTyped(json, ignoreDiscriminator) {
|
|
26
|
+
if (json == null) {
|
|
27
|
+
return json;
|
|
28
|
+
}
|
|
29
|
+
return {
|
|
30
|
+
'credential': json['credential'],
|
|
31
|
+
'replace': json['replace'] == null ? undefined : json['replace'],
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
export function EnvironmentCredentialToJSON(json) {
|
|
35
|
+
return EnvironmentCredentialToJSONTyped(json, false);
|
|
36
|
+
}
|
|
37
|
+
export function EnvironmentCredentialToJSONTyped(value, ignoreDiscriminator = false) {
|
|
38
|
+
if (value == null) {
|
|
39
|
+
return value;
|
|
40
|
+
}
|
|
41
|
+
return {
|
|
42
|
+
'credential': value['credential'],
|
|
43
|
+
'replace': value['replace'],
|
|
44
|
+
};
|
|
45
|
+
}
|
|
@@ -42,7 +42,7 @@ export interface EnvironmentProvisionSpec {
|
|
|
42
42
|
*/
|
|
43
43
|
volumeMounts: Array<EnvironmentMount>;
|
|
44
44
|
/**
|
|
45
|
-
* Environment variables set on every machine created from this environment, and forwarded into the agent process itself. NOT A SECRET STORE: values are stored unencrypted on the environment row and returned verbatim by every read of it, so anyone who can read the environment can read them. Put credentials in a Secret referenced by an egress allow rule instead - the broker injects those into the outbound request at the egress edge and the agent process never holds them. Names beginning SFDK_ or ORCHESTRA_ are platform-owned and rejected, and the platform writes its own reserved variables last, overriding anything you declare. Names beginning ORCHESTRA_FDK_, the inputs of an agent-as-code kit, are accepted in exactly that spelling as ordinary variables of your own. The other exception is six worker settings, accepted in exactly this spelling:
|
|
45
|
+
* Environment variables set on every machine created from this environment, and forwarded into the agent process itself. NOT A SECRET STORE: values are stored unencrypted on the environment row and returned verbatim by every read of it, so anyone who can read the environment can read them. Put credentials in a Secret referenced by an egress allow rule instead - the broker injects those into the outbound request at the egress edge and the agent process never holds them. Names beginning SFDK_ or ORCHESTRA_ are platform-owned and rejected, and the platform writes its own reserved variables last, overriding anything you declare. Names beginning ORCHESTRA_FDK_, the inputs of an agent-as-code kit, are accepted in exactly that spelling as ordinary variables of your own. The other exception is six worker settings, accepted in exactly this spelling: ORCHESTRA_WORKER_RESTART_AFTER_IDLE, ORCHESTRA_WORKER_RELEASE_FETCH_TIMEOUT and ORCHESTRA_WORKER_RELEASE_CHECK_INTERVAL, each a positive duration such as 30s or 5m; ORCHESTRA_WORKER_RELEASE_REGISTRY_URL, an http or https URL; and ORCHESTRA_WORKER_AUTO_UPGRADE and ORCHESTRA_WORKER_AUTO_RESTART, each exactly true or false, which turn the worker's move to a newer release and its restart into that release on or off. Their former spellings beginning SFDK_WORKER_ are refused. They reach the machine's worker, where each one set wins over the platform's release settings, and never an agent process. HOME and USERPROFILE are not among them: the platform sets neither, the account inside the image decides where the home directory is, and a HOME you declare here is passed to the harness to conform to or complain about. Declare a volume mount at /home if you want that home directory to be durable. On a Windows environment names are matched case-insensitively, the way Windows itself matches them - sfdk_x and orchestra_fdk_x are rejected reserved names there, and Home and HOME are one variable - while a POSIX environment matches names exactly. At most 64 entries; a key matches [A-Za-z_][A-Za-z0-9_]* and is at most 128 characters; a value is at most 4096 characters.
|
|
46
46
|
* @type {{ [key: string]: string; }}
|
|
47
47
|
* @memberof EnvironmentProvisionSpec
|
|
48
48
|
*/
|
package/node_modules/@orchestraworks/client/dist/esm/models/EnvironmentProvisionSpecRequest.d.ts
CHANGED
|
@@ -55,7 +55,7 @@ export interface EnvironmentProvisionSpecRequest {
|
|
|
55
55
|
*/
|
|
56
56
|
setup?: string;
|
|
57
57
|
/**
|
|
58
|
-
* Declared environment variables; a supplied map replaces the stored one entirely, and an absent one leaves it unchanged. Environment variables set on every machine created from this environment, and forwarded into the agent process itself. NOT A SECRET STORE: values are stored unencrypted on the environment row and returned verbatim by every read of it, so anyone who can read the environment can read them. Put credentials in a Secret referenced by an egress allow rule instead - the broker injects those into the outbound request at the egress edge and the agent process never holds them. Names beginning SFDK_ or ORCHESTRA_ are platform-owned and rejected, and the platform writes its own reserved variables last, overriding anything you declare. Names beginning ORCHESTRA_FDK_, the inputs of an agent-as-code kit, are accepted in exactly that spelling as ordinary variables of your own. The other exception is six worker settings, accepted in exactly this spelling:
|
|
58
|
+
* Declared environment variables; a supplied map replaces the stored one entirely, and an absent one leaves it unchanged. Environment variables set on every machine created from this environment, and forwarded into the agent process itself. NOT A SECRET STORE: values are stored unencrypted on the environment row and returned verbatim by every read of it, so anyone who can read the environment can read them. Put credentials in a Secret referenced by an egress allow rule instead - the broker injects those into the outbound request at the egress edge and the agent process never holds them. Names beginning SFDK_ or ORCHESTRA_ are platform-owned and rejected, and the platform writes its own reserved variables last, overriding anything you declare. Names beginning ORCHESTRA_FDK_, the inputs of an agent-as-code kit, are accepted in exactly that spelling as ordinary variables of your own. The other exception is six worker settings, accepted in exactly this spelling: ORCHESTRA_WORKER_RESTART_AFTER_IDLE, ORCHESTRA_WORKER_RELEASE_FETCH_TIMEOUT and ORCHESTRA_WORKER_RELEASE_CHECK_INTERVAL, each a positive duration such as 30s or 5m; ORCHESTRA_WORKER_RELEASE_REGISTRY_URL, an http or https URL; and ORCHESTRA_WORKER_AUTO_UPGRADE and ORCHESTRA_WORKER_AUTO_RESTART, each exactly true or false, which turn the worker's move to a newer release and its restart into that release on or off. Their former spellings beginning SFDK_WORKER_ are refused. They reach the machine's worker, where each one set wins over the platform's release settings, and never an agent process. HOME and USERPROFILE are not among them: the platform sets neither, the account inside the image decides where the home directory is, and a HOME you declare here is passed to the harness to conform to or complain about. Declare a volume mount at /home if you want that home directory to be durable. On a Windows environment names are matched case-insensitively, the way Windows itself matches them - sfdk_x and orchestra_fdk_x are rejected reserved names there, and Home and HOME are one variable - while a POSIX environment matches names exactly. At most 64 entries; a key matches [A-Za-z_][A-Za-z0-9_]* and is at most 128 characters; a value is at most 4096 characters.
|
|
59
59
|
* @type {{ [key: string]: string; }}
|
|
60
60
|
* @memberof EnvironmentProvisionSpecRequest
|
|
61
61
|
*/
|
|
@@ -107,7 +107,7 @@ export interface EnvironmentSnapshot {
|
|
|
107
107
|
*/
|
|
108
108
|
setup?: string;
|
|
109
109
|
/**
|
|
110
|
-
* Environment variables set on every machine created from this environment, and forwarded into the agent process itself. NOT A SECRET STORE: values are stored unencrypted on the environment row and returned verbatim by every read of it, so anyone who can read the environment can read them. Put credentials in a Secret referenced by an egress allow rule instead - the broker injects those into the outbound request at the egress edge and the agent process never holds them. Names beginning SFDK_ or ORCHESTRA_ are platform-owned and rejected, and the platform writes its own reserved variables last, overriding anything you declare. Names beginning ORCHESTRA_FDK_, the inputs of an agent-as-code kit, are accepted in exactly that spelling as ordinary variables of your own. The other exception is six worker settings, accepted in exactly this spelling:
|
|
110
|
+
* Environment variables set on every machine created from this environment, and forwarded into the agent process itself. NOT A SECRET STORE: values are stored unencrypted on the environment row and returned verbatim by every read of it, so anyone who can read the environment can read them. Put credentials in a Secret referenced by an egress allow rule instead - the broker injects those into the outbound request at the egress edge and the agent process never holds them. Names beginning SFDK_ or ORCHESTRA_ are platform-owned and rejected, and the platform writes its own reserved variables last, overriding anything you declare. Names beginning ORCHESTRA_FDK_, the inputs of an agent-as-code kit, are accepted in exactly that spelling as ordinary variables of your own. The other exception is six worker settings, accepted in exactly this spelling: ORCHESTRA_WORKER_RESTART_AFTER_IDLE, ORCHESTRA_WORKER_RELEASE_FETCH_TIMEOUT and ORCHESTRA_WORKER_RELEASE_CHECK_INTERVAL, each a positive duration such as 30s or 5m; ORCHESTRA_WORKER_RELEASE_REGISTRY_URL, an http or https URL; and ORCHESTRA_WORKER_AUTO_UPGRADE and ORCHESTRA_WORKER_AUTO_RESTART, each exactly true or false, which turn the worker's move to a newer release and its restart into that release on or off. Their former spellings beginning SFDK_WORKER_ are refused. They reach the machine's worker, where each one set wins over the platform's release settings, and never an agent process. HOME and USERPROFILE are not among them: the platform sets neither, the account inside the image decides where the home directory is, and a HOME you declare here is passed to the harness to conform to or complain about. Declare a volume mount at /home if you want that home directory to be durable. On a Windows environment names are matched case-insensitively, the way Windows itself matches them - sfdk_x and orchestra_fdk_x are rejected reserved names there, and Home and HOME are one variable - while a POSIX environment matches names exactly. At most 64 entries; a key matches [A-Za-z_][A-Za-z0-9_]* and is at most 128 characters; a value is at most 4096 characters.
|
|
111
111
|
* @type {{ [key: string]: string; }}
|
|
112
112
|
* @memberof EnvironmentSnapshot
|
|
113
113
|
*/
|
|
@@ -28,6 +28,12 @@ export interface InjectionRecipe {
|
|
|
28
28
|
* @memberof InjectionRecipe
|
|
29
29
|
*/
|
|
30
30
|
removeHeaders: Array<string>;
|
|
31
|
+
/**
|
|
32
|
+
* Host patterns this secret is presented on, in egress rule host syntax (exact host, *.suffix, or *); empty or omitted covers no host. A non-empty list needs at least one header, and no pattern may name the platform API host or the object store host.
|
|
33
|
+
* @type {Array<string>}
|
|
34
|
+
* @memberof InjectionRecipe
|
|
35
|
+
*/
|
|
36
|
+
hosts?: Array<string>;
|
|
31
37
|
}
|
|
32
38
|
/**
|
|
33
39
|
* Check if a given object implements the InjectionRecipe interface.
|
|
@@ -30,6 +30,7 @@ export function InjectionRecipeFromJSONTyped(json, ignoreDiscriminator) {
|
|
|
30
30
|
return {
|
|
31
31
|
'headers': json['headers'] == null ? undefined : (json['headers'].map(InjectionHeaderFromJSON)),
|
|
32
32
|
'removeHeaders': json['removeHeaders'],
|
|
33
|
+
'hosts': json['hosts'] == null ? undefined : json['hosts'],
|
|
33
34
|
};
|
|
34
35
|
}
|
|
35
36
|
export function InjectionRecipeToJSON(json) {
|
|
@@ -42,5 +43,6 @@ export function InjectionRecipeToJSONTyped(value, ignoreDiscriminator = false) {
|
|
|
42
43
|
return {
|
|
43
44
|
'headers': value['headers'] == null ? undefined : (value['headers'].map(InjectionHeaderToJSON)),
|
|
44
45
|
'removeHeaders': value['removeHeaders'],
|
|
46
|
+
'hosts': value['hosts'],
|
|
45
47
|
};
|
|
46
48
|
}
|
|
@@ -80,17 +80,11 @@ export interface Secret {
|
|
|
80
80
|
*/
|
|
81
81
|
expiresAt?: Date;
|
|
82
82
|
/**
|
|
83
|
-
* Optional injection recipe
|
|
83
|
+
* Optional injection recipe: the request mutations the broker applies from this secret, and the hosts it applies them on. A secret without one is stored only: the broker presents it on no request. For git over HTTPS, store base64 of <user>:<token> as the value, such as the output of printf 'x-access-token:%s' "$TOKEN" | base64 | tr -d '\n' for a GitHub token, and present it as Authorization: Basic ${secret}.
|
|
84
84
|
* @type {InjectionRecipe}
|
|
85
85
|
* @memberof Secret
|
|
86
86
|
*/
|
|
87
87
|
injection?: InjectionRecipe;
|
|
88
|
-
/**
|
|
89
|
-
* Host patterns this secret is presented on, in egress rule host syntax (exact host, *.suffix, or *); empty covers no host
|
|
90
|
-
* @type {Array<string>}
|
|
91
|
-
* @memberof Secret
|
|
92
|
-
*/
|
|
93
|
-
hosts: Array<string>;
|
|
94
88
|
/**
|
|
95
89
|
* The agents you can see that may use this secret, as IAM decides at this read. Present on the singular read only; a list row leaves it out.
|
|
96
90
|
* @type {Array<Agent>}
|
|
@@ -33,8 +33,6 @@ export function instanceOfSecret(value) {
|
|
|
33
33
|
return false;
|
|
34
34
|
if (!('updatedAt' in value) || value['updatedAt'] === undefined)
|
|
35
35
|
return false;
|
|
36
|
-
if (!('hosts' in value) || value['hosts'] === undefined)
|
|
37
|
-
return false;
|
|
38
36
|
return true;
|
|
39
37
|
}
|
|
40
38
|
export function SecretFromJSON(json) {
|
|
@@ -56,7 +54,6 @@ export function SecretFromJSONTyped(json, ignoreDiscriminator) {
|
|
|
56
54
|
'updatedAt': (new Date(json['updatedAt'])),
|
|
57
55
|
'expiresAt': json['expiresAt'] == null ? undefined : (new Date(json['expiresAt'])),
|
|
58
56
|
'injection': json['injection'] == null ? undefined : InjectionRecipeFromJSON(json['injection']),
|
|
59
|
-
'hosts': json['hosts'],
|
|
60
57
|
'usableBy': json['usableBy'] == null ? undefined : (json['usableBy'].map(AgentFromJSON)),
|
|
61
58
|
};
|
|
62
59
|
}
|
|
@@ -79,6 +76,5 @@ export function SecretToJSONTyped(value, ignoreDiscriminator = false) {
|
|
|
79
76
|
'updatedAt': value['updatedAt'].toISOString(),
|
|
80
77
|
'expiresAt': value['expiresAt'] == null ? value['expiresAt'] : value['expiresAt'].toISOString(),
|
|
81
78
|
'injection': InjectionRecipeToJSON(value['injection']),
|
|
82
|
-
'hosts': value['hosts'],
|
|
83
79
|
};
|
|
84
80
|
}
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
* Do not edit the class manually.
|
|
11
11
|
*/
|
|
12
12
|
import type { EnvironmentIngressPolicy } from './EnvironmentIngressPolicy';
|
|
13
|
+
import type { EnvironmentCredential } from './EnvironmentCredential';
|
|
13
14
|
import type { EnvironmentPlatformRequest } from './EnvironmentPlatformRequest';
|
|
14
15
|
import type { EnvironmentEgressPolicy } from './EnvironmentEgressPolicy';
|
|
15
16
|
import type { EnvironmentProvisionSpecRequest } from './EnvironmentProvisionSpecRequest';
|
|
@@ -44,6 +45,12 @@ export interface UpdateEnvironmentRequest {
|
|
|
44
45
|
* @memberof UpdateEnvironmentRequest
|
|
45
46
|
*/
|
|
46
47
|
ingressPolicy?: EnvironmentIngressPolicy | null;
|
|
48
|
+
/**
|
|
49
|
+
* The credentials this environment's machines get on a request that names none, in order: the first one covering the request's host is added, whatever the agent. Each entry is a Secret or Connection of this organization by id, and adding one needs the caller's own use of it. A request naming a credential gets that one instead. A provided list replaces the stored one, and absent leaves it.
|
|
50
|
+
* @type {Array<EnvironmentCredential>}
|
|
51
|
+
* @memberof UpdateEnvironmentRequest
|
|
52
|
+
*/
|
|
53
|
+
credentials?: Array<EnvironmentCredential>;
|
|
47
54
|
/**
|
|
48
55
|
* The launch spec — every fact that applies only when the platform controls the machine. Rejected on an enrolled environment, whose machine the platform never launches.
|
|
49
56
|
* @type {EnvironmentProvisionSpecRequest}
|
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
* Do not edit the class manually.
|
|
13
13
|
*/
|
|
14
14
|
import { EnvironmentIngressPolicyFromJSON, EnvironmentIngressPolicyToJSON, } from './EnvironmentIngressPolicy';
|
|
15
|
+
import { EnvironmentCredentialFromJSON, EnvironmentCredentialToJSON, } from './EnvironmentCredential';
|
|
15
16
|
import { EnvironmentPlatformRequestFromJSON, EnvironmentPlatformRequestToJSON, } from './EnvironmentPlatformRequest';
|
|
16
17
|
import { EnvironmentEgressPolicyFromJSON, EnvironmentEgressPolicyToJSON, } from './EnvironmentEgressPolicy';
|
|
17
18
|
import { EnvironmentProvisionSpecRequestFromJSON, EnvironmentProvisionSpecRequestToJSON, } from './EnvironmentProvisionSpecRequest';
|
|
@@ -34,6 +35,7 @@ export function UpdateEnvironmentRequestFromJSONTyped(json, ignoreDiscriminator)
|
|
|
34
35
|
'platform': json['platform'] == null ? undefined : EnvironmentPlatformRequestFromJSON(json['platform']),
|
|
35
36
|
'egressPolicy': json['egressPolicy'] == null ? undefined : EnvironmentEgressPolicyFromJSON(json['egressPolicy']),
|
|
36
37
|
'ingressPolicy': json['ingressPolicy'] == null ? undefined : EnvironmentIngressPolicyFromJSON(json['ingressPolicy']),
|
|
38
|
+
'credentials': json['credentials'] == null ? undefined : (json['credentials'].map(EnvironmentCredentialFromJSON)),
|
|
37
39
|
'provisionSpec': json['provisionSpec'] == null ? undefined : EnvironmentProvisionSpecRequestFromJSON(json['provisionSpec']),
|
|
38
40
|
'workingDirectory': json['workingDirectory'] == null ? undefined : json['workingDirectory'],
|
|
39
41
|
'hooks': json['hooks'] == null ? undefined : EnvironmentHooksRequestFromJSON(json['hooks']),
|
|
@@ -52,6 +54,7 @@ export function UpdateEnvironmentRequestToJSONTyped(value, ignoreDiscriminator =
|
|
|
52
54
|
'platform': EnvironmentPlatformRequestToJSON(value['platform']),
|
|
53
55
|
'egressPolicy': EnvironmentEgressPolicyToJSON(value['egressPolicy']),
|
|
54
56
|
'ingressPolicy': EnvironmentIngressPolicyToJSON(value['ingressPolicy']),
|
|
57
|
+
'credentials': value['credentials'] == null ? undefined : (value['credentials'].map(EnvironmentCredentialToJSON)),
|
|
55
58
|
'provisionSpec': EnvironmentProvisionSpecRequestToJSON(value['provisionSpec']),
|
|
56
59
|
'workingDirectory': value['workingDirectory'],
|
|
57
60
|
'hooks': EnvironmentHooksRequestToJSON(value['hooks']),
|
|
@@ -29,7 +29,7 @@ export interface UpdateSecretRequest {
|
|
|
29
29
|
*/
|
|
30
30
|
description?: string;
|
|
31
31
|
/**
|
|
32
|
-
* Secret value. This is write-only and is never returned by management APIs.
|
|
32
|
+
* Secret value. This is write-only and is never returned by management APIs. For git over HTTPS, store base64 of <user>:<token> as the value, such as the output of printf 'x-access-token:%s' "$TOKEN" | base64 | tr -d '\n' for a GitHub token, and present it as Authorization: Basic ${secret}.
|
|
33
33
|
* @type {string}
|
|
34
34
|
* @memberof UpdateSecretRequest
|
|
35
35
|
*/
|
|
@@ -41,7 +41,7 @@ export interface UpdateSecretRequest {
|
|
|
41
41
|
*/
|
|
42
42
|
expiresAt?: Date;
|
|
43
43
|
/**
|
|
44
|
-
* Injection recipe update: absent = unchanged, null = clear the recipe, value = replace it
|
|
44
|
+
* Injection recipe update: absent = unchanged, null = clear the recipe and its hosts, leaving the secret stored only, value = replace the recipe and its hosts. Optional injection recipe: the request mutations the broker applies from this secret, and the hosts it applies them on. A secret without one is stored only: the broker presents it on no request. For git over HTTPS, store base64 of <user>:<token> as the value, such as the output of printf 'x-access-token:%s' "$TOKEN" | base64 | tr -d '\n' for a GitHub token, and present it as Authorization: Basic ${secret}.
|
|
45
45
|
* @type {InjectionRecipe}
|
|
46
46
|
* @memberof UpdateSecretRequest
|
|
47
47
|
*/
|
|
@@ -55,9 +55,10 @@ export interface UpdateSecretRequest {
|
|
|
55
55
|
[key: string]: string | null;
|
|
56
56
|
};
|
|
57
57
|
/**
|
|
58
|
-
*
|
|
58
|
+
* Deprecated: write injection.hosts instead. Accepted for one release and moved into the recipe's hosts; a request whose recipe names other hosts is refused. Absent leaves the recipe's hosts unchanged; a list replaces them.
|
|
59
59
|
* @type {Array<string>}
|
|
60
60
|
* @memberof UpdateSecretRequest
|
|
61
|
+
* @deprecated
|
|
61
62
|
*/
|
|
62
63
|
hosts?: Array<string>;
|
|
63
64
|
}
|