harness-mcp-v2 3.2.19 → 3.2.21
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 +146 -75
- package/build/client/harness-client.d.ts.map +1 -1
- package/build/client/harness-client.js +32 -6
- package/build/client/harness-client.js.map +1 -1
- package/build/config.d.ts +10 -0
- package/build/config.d.ts.map +1 -1
- package/build/config.js +15 -0
- package/build/config.js.map +1 -1
- package/build/data/schemas/v0/pipeline.d.ts.map +1 -1
- package/build/data/schemas/v0/pipeline.js +1388 -580
- package/build/data/schemas/v0/pipeline.js.map +1 -1
- package/build/data/schemas/v0/template.d.ts.map +1 -1
- package/build/data/schemas/v0/template.js +1142 -166
- package/build/data/schemas/v0/template.js.map +1 -1
- package/build/data/schemas/v1/pipeline.d.ts.map +1 -1
- package/build/data/schemas/v1/pipeline.js +302 -90
- package/build/data/schemas/v1/pipeline.js.map +1 -1
- package/build/data/schemas/v1/template.d.ts.map +1 -1
- package/build/data/schemas/v1/template.js +708 -488
- package/build/data/schemas/v1/template.js.map +1 -1
- package/build/prompts/deploy-ai-agent.d.ts +3 -0
- package/build/prompts/deploy-ai-agent.d.ts.map +1 -0
- package/build/prompts/deploy-ai-agent.js +300 -0
- package/build/prompts/deploy-ai-agent.js.map +1 -0
- package/build/prompts/feature-flag-rollout.d.ts.map +1 -1
- package/build/prompts/feature-flag-rollout.js +19 -8
- package/build/prompts/feature-flag-rollout.js.map +1 -1
- package/build/prompts/index.d.ts.map +1 -1
- package/build/prompts/index.js +2 -0
- package/build/prompts/index.js.map +1 -1
- package/build/registry/extractors.d.ts +87 -10
- package/build/registry/extractors.d.ts.map +1 -1
- package/build/registry/extractors.js +426 -26
- package/build/registry/extractors.js.map +1 -1
- package/build/registry/index.d.ts.map +1 -1
- package/build/registry/index.js +34 -15
- package/build/registry/index.js.map +1 -1
- package/build/registry/scope-utils.d.ts +45 -0
- package/build/registry/scope-utils.d.ts.map +1 -1
- package/build/registry/scope-utils.js +78 -0
- package/build/registry/scope-utils.js.map +1 -1
- package/build/registry/toolsets/chaos-descriptions.d.ts +72 -20
- package/build/registry/toolsets/chaos-descriptions.d.ts.map +1 -1
- package/build/registry/toolsets/chaos-descriptions.js +435 -140
- package/build/registry/toolsets/chaos-descriptions.js.map +1 -1
- package/build/registry/toolsets/chaos.d.ts.map +1 -1
- package/build/registry/toolsets/chaos.js +967 -193
- package/build/registry/toolsets/chaos.js.map +1 -1
- package/build/registry/toolsets/feature-flags.d.ts.map +1 -1
- package/build/registry/toolsets/feature-flags.js +888 -85
- package/build/registry/toolsets/feature-flags.js.map +1 -1
- package/build/registry/toolsets/governance.d.ts.map +1 -1
- package/build/registry/toolsets/governance.js +4 -0
- package/build/registry/toolsets/governance.js.map +1 -1
- package/build/registry/toolsets/iacm.d.ts.map +1 -1
- package/build/registry/toolsets/iacm.js +787 -11
- package/build/registry/toolsets/iacm.js.map +1 -1
- package/build/registry/toolsets/infrastructure.d.ts.map +1 -1
- package/build/registry/toolsets/infrastructure.js +30 -5
- package/build/registry/toolsets/infrastructure.js.map +1 -1
- package/build/registry/toolsets/pipelines.d.ts.map +1 -1
- package/build/registry/toolsets/pipelines.js +208 -5
- package/build/registry/toolsets/pipelines.js.map +1 -1
- package/build/registry/toolsets/release-management.d.ts +8 -0
- package/build/registry/toolsets/release-management.d.ts.map +1 -0
- package/build/registry/toolsets/release-management.js +783 -0
- package/build/registry/toolsets/release-management.js.map +1 -0
- package/build/registry/toolsets/sto.d.ts.map +1 -1
- package/build/registry/toolsets/sto.js +93 -17
- package/build/registry/toolsets/sto.js.map +1 -1
- package/build/registry/types.d.ts +52 -4
- package/build/registry/types.d.ts.map +1 -1
- package/build/resources/harness-schema.d.ts.map +1 -1
- package/build/resources/harness-schema.js +2 -1
- package/build/resources/harness-schema.js.map +1 -1
- package/build/tools/entity-schema/live.d.ts +6 -5
- package/build/tools/entity-schema/live.d.ts.map +1 -1
- package/build/tools/entity-schema/live.js +114 -10
- package/build/tools/entity-schema/live.js.map +1 -1
- package/build/tools/entity-schema/types.d.ts +7 -1
- package/build/tools/entity-schema/types.d.ts.map +1 -1
- package/build/tools/harness-create.d.ts.map +1 -1
- package/build/tools/harness-create.js +5 -1
- package/build/tools/harness-create.js.map +1 -1
- package/build/tools/harness-delete.d.ts.map +1 -1
- package/build/tools/harness-delete.js +5 -1
- package/build/tools/harness-delete.js.map +1 -1
- package/build/tools/harness-execute.d.ts.map +1 -1
- package/build/tools/harness-execute.js +15 -9
- package/build/tools/harness-execute.js.map +1 -1
- package/build/tools/harness-get.d.ts.map +1 -1
- package/build/tools/harness-get.js +5 -1
- package/build/tools/harness-get.js.map +1 -1
- package/build/tools/harness-list.d.ts.map +1 -1
- package/build/tools/harness-list.js +18 -2
- package/build/tools/harness-list.js.map +1 -1
- package/build/tools/harness-schema.d.ts +2 -1
- package/build/tools/harness-schema.d.ts.map +1 -1
- package/build/tools/harness-schema.js +10 -8
- package/build/tools/harness-schema.js.map +1 -1
- package/build/tools/harness-update.d.ts.map +1 -1
- package/build/tools/harness-update.js +5 -1
- package/build/tools/harness-update.js.map +1 -1
- package/build/tools/index.js +1 -1
- package/build/tools/index.js.map +1 -1
- package/build/utils/url-parser.d.ts +2 -0
- package/build/utils/url-parser.d.ts.map +1 -1
- package/build/utils/url-parser.js +55 -0
- package/build/utils/url-parser.js.map +1 -1
- package/npm-shrinkwrap.json +2 -2
- package/package.json +1 -1
|
@@ -36,4 +36,82 @@ export function templateV1BasePathFromScope(input, config) {
|
|
|
36
36
|
}
|
|
37
37
|
return "/v1/templates";
|
|
38
38
|
}
|
|
39
|
+
/**
|
|
40
|
+
* Detects whether FME call uses deprecated `workspace_id` contract or
|
|
41
|
+
* new Harness-native `org_id`+`project_id` contract. Shared by every
|
|
42
|
+
* `fme_*` resource's `routeResolver` in `feature-flags.ts`.
|
|
43
|
+
*/
|
|
44
|
+
export function resolveFmeDualMode(input, resourceType) {
|
|
45
|
+
const workspaceId = input.workspace_id;
|
|
46
|
+
const orgId = input.org_id;
|
|
47
|
+
const projectId = input.project_id;
|
|
48
|
+
// Check for mixing deprecated and new approaches
|
|
49
|
+
if (workspaceId && (orgId || projectId)) {
|
|
50
|
+
throw new Error(`${resourceType}: pass either workspace_id (deprecated) OR org_id+project_id, not both.`);
|
|
51
|
+
}
|
|
52
|
+
// Handle legacy workspace_id mode
|
|
53
|
+
if (workspaceId) {
|
|
54
|
+
console.error(`[DEPRECATION] ${resourceType}: workspace_id-based FME calls are deprecated — pass org_id+project_id instead.`);
|
|
55
|
+
return { mode: "legacy", workspaceId };
|
|
56
|
+
}
|
|
57
|
+
// Handle Harness-native mode
|
|
58
|
+
if (orgId && projectId) {
|
|
59
|
+
return { mode: "harness_native", orgId, projectId };
|
|
60
|
+
}
|
|
61
|
+
// If neither mode is satisfied, throw
|
|
62
|
+
throw new Error(`${resourceType}: org_id and project_id are required (account is taken from config), or pass the deprecated workspace_id instead.`);
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Validates that an FME identifier the caller must supply is actually present.
|
|
66
|
+
*
|
|
67
|
+
* FME `routeResolver`s build their own paths, which bypasses the registry's
|
|
68
|
+
* `pathParams` presence check — without this guard a missing identifier would
|
|
69
|
+
* silently produce a malformed URL (e.g. a trailing-slash DELETE) instead of a
|
|
70
|
+
* clear error. Returns the raw value; callers still encode it.
|
|
71
|
+
*/
|
|
72
|
+
export function requireFmeIdentifier(input, field, resourceType) {
|
|
73
|
+
const value = input[field];
|
|
74
|
+
if (value === undefined || value === null || value === "") {
|
|
75
|
+
throw new Error(`${resourceType}: "${field}" is required.`);
|
|
76
|
+
}
|
|
77
|
+
return String(value);
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Mode selector for FME operations that have no Harness-native implementation yet
|
|
81
|
+
* and therefore cannot use `resolveFmeDualMode`. Returns true when the caller
|
|
82
|
+
* selected the Harness-native contract (org_id+project_id), false for the legacy
|
|
83
|
+
* contract. A partial pair is rejected: half a scope would otherwise leak a stray
|
|
84
|
+
* orgIdentifier/projectIdentifier query param onto a legacy Split.io API call.
|
|
85
|
+
*/
|
|
86
|
+
export function isFmeHarnessNativeSelected(input, resourceType) {
|
|
87
|
+
const orgId = input.org_id;
|
|
88
|
+
const projectId = input.project_id;
|
|
89
|
+
if (orgId && !projectId) {
|
|
90
|
+
throw new Error(`${resourceType}: project_id is required when org_id is provided.`);
|
|
91
|
+
}
|
|
92
|
+
if (projectId && !orgId) {
|
|
93
|
+
throw new Error(`${resourceType}: org_id is required when project_id is provided.`);
|
|
94
|
+
}
|
|
95
|
+
return Boolean(orgId && projectId);
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Guards Harness-native-only resources (e.g. fme_segment) that have no legacy
|
|
99
|
+
* Split.io fallback. Unlike `resolveFmeDualMode`, missing org_id/project_id here
|
|
100
|
+
* must throw rather than silently falling back to config.HARNESS_ORG/HARNESS_PROJECT —
|
|
101
|
+
* a stray global default must never leak into an FME-adjacent call.
|
|
102
|
+
*/
|
|
103
|
+
export function requireHarnessNativeSegmentScope(input, resourceType) {
|
|
104
|
+
if (!input.org_id || !input.project_id) {
|
|
105
|
+
throw new Error(`${resourceType}: org_id and project_id are required (account is taken from config).`);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Toolset files may not call `console.*` directly (see architecture.test.ts —
|
|
110
|
+
* logging belongs in handlers/registry, not toolsets). Route deprecation
|
|
111
|
+
* logging that doesn't go through `resolveFmeDualMode` (e.g. permissive
|
|
112
|
+
* mode-selector resolvers) through here instead.
|
|
113
|
+
*/
|
|
114
|
+
export function logFmeDeprecation(message) {
|
|
115
|
+
console.error(message);
|
|
116
|
+
}
|
|
39
117
|
//# sourceMappingURL=scope-utils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scope-utils.js","sourceRoot":"","sources":["../../src/registry/scope-utils.ts"],"names":[],"mappings":"AAEA,+EAA+E;AAC/E,MAAM,CAAC,MAAM,kBAAkB,GAC7B,sDAAsD;IACtD,qDAAqD;IACrD,iDAAiD;IACjD,kDAAkD,CAAC;AAErD;;;GAGG;AACH,MAAM,UAAU,2BAA2B,CACzC,KAA8B,EAC9B,MAAyB;IAEzB,MAAM,cAAc,GAAG,KAAK,CAAC,cAA2C,CAAC;IACzE,MAAM,GAAG,GAAI,KAAK,CAAC,MAA6B,IAAI,MAAM,CAAC,WAAW,CAAC;IACvE,MAAM,OAAO,GAAI,KAAK,CAAC,UAAiC,IAAI,MAAM,CAAC,eAAe,CAAC;IAEnF,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;QACjC,OAAO,eAAe,CAAC;IACzB,CAAC;IACD,IAAI,cAAc,KAAK,KAAK,EAAE,CAAC;QAC7B,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAC;QACpF,OAAO,YAAY,kBAAkB,CAAC,GAAG,CAAC,YAAY,CAAC;IACzD,CAAC;IACD,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;QACjC,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC;QACxF,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC,CAAC;QACpG,OAAO,YAAY,kBAAkB,CAAC,GAAG,CAAC,aAAa,kBAAkB,CAAC,OAAO,CAAC,YAAY,CAAC;IACjG,CAAC;IAED,MAAM,QAAQ,GAAG,KAAK,CAAC,MAA4B,CAAC;IACpD,MAAM,YAAY,GAAG,KAAK,CAAC,UAAgC,CAAC;IAC5D,IAAI,QAAQ,IAAI,YAAY,EAAE,CAAC;QAC7B,OAAO,YAAY,kBAAkB,CAAC,QAAQ,CAAC,aAAa,kBAAkB,CAAC,YAAY,CAAC,YAAY,CAAC;IAC3G,CAAC;IACD,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,YAAY,kBAAkB,CAAC,QAAQ,CAAC,YAAY,CAAC;IAC9D,CAAC;IACD,OAAO,eAAe,CAAC;AACzB,CAAC"}
|
|
1
|
+
{"version":3,"file":"scope-utils.js","sourceRoot":"","sources":["../../src/registry/scope-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,8 +5,49 @@ export declare const descChaosProbe = "Chaos resilience probe \u2014 declarative
|
|
|
5
5
|
export declare const descChaosExperimentTemplate = "Reusable, versioned chaos experiment template stored in a ChaosHub (Git-backed repository).\nTemplates are pre-configured experiment blueprints that standardize chaos practices across teams \u2014 they support version control, revision history, typed input variables, and rendered YAML.\nScopes: templates can be account-level (shared across all orgs/projects), org-level, or project-level.\nUse harness_list with resource_type=chaos_hub to discover available hubs and their identities before filtering templates by hub_identity.\nWorkflow: list templates \u2192 get_variables to discover required inputs \u2192 create_from_template to launch an experiment.\nSupports list, get, delete, plus execute actions: list_revisions, get_variables, get_yaml, compare_revisions, and create_from_template.";
|
|
6
6
|
export declare const descChaosExperimentVariable = "Variables for a chaos experiment. List variables to discover required runtime inputs before running an experiment.";
|
|
7
7
|
export declare const descChaosInfrastructure = "Linux/machine infrastructure registered for chaos experiments and load testing. For Kubernetes infrastructure, use chaos_k8s_infrastructure. Supports list.";
|
|
8
|
-
export declare const
|
|
9
|
-
export declare const
|
|
8
|
+
export declare const descChaosService = "Chaos Service (Service Management) \u2014 a logical service onboarded into Harness Chaos Engineering with an associated Service Discovery agent, environment, infrastructure, and probe associations. Distinct from harness_service (CD service) and from chaos_loadtest. Supports list, get, create, update, and delete.";
|
|
9
|
+
export declare const descChaosServiceEnvironmentIds = "Filter by one or more environment identifiers. Comma-separated string for multiple values (e.g. \"prodEnv,stagingEnv\"). Matches the chaos service's environmentId exactly.";
|
|
10
|
+
export declare const descChaosServiceInfrastructureIds = "Filter by one or more chaos infrastructure identifiers, each in \"<environment_id>/<infrastructure_id>\" form. Comma-separated string for multiple values (e.g. \"env1/infra1,env2/infra2\"). IMPORTANT: the 'infrastructureId' field returned by chaos_service list/get is the BARE infra ID only (the environment prefix is stripped server-side before it is returned) \u2014 do NOT pass that value alone. Build the filter value by combining that same response's 'environmentId' + \"/\" + 'infrastructureId'.";
|
|
11
|
+
export declare const descChaosServiceTags = "Filter by tags. Comma-separated string; matches services that carry ALL of the listed tags.";
|
|
12
|
+
export declare const descChaosServiceIncludeAllScope = "When true, include chaos services from all descendant scopes (org + all projects when scoped at org, or account + all orgs/projects when scoped at account). Defaults to false (strict scope match).";
|
|
13
|
+
export declare const descChaosServiceProbeIds = "Filter by one or more probe identities associated with the chaos service. Comma-separated string for multiple values.";
|
|
14
|
+
export declare const descChaosServiceOnboardingIdFilter = "Filter by the onboarding batch identifier the chaos service was created under (set during bulk/discovery onboarding).";
|
|
15
|
+
export declare const descChaosServiceIdentity = "Chaos service identity (slug). Use the 'identity' field returned by chaos_service list.";
|
|
16
|
+
export declare const descChaosServiceSearch = "Search chaos services by name or identity (case-insensitive regex).";
|
|
17
|
+
export declare const descListChaosServices = "List chaos services in the given account/org/project scope. Supports pagination (page, limit; default limit 15, max 100), search, sort (sortField: name|lastUpdated|experimentName|lastExecuted with sortAscending), tag filter, and filters by environmentIds / infrastructureIds. Set include_all_scope=true to include descendant scopes.";
|
|
18
|
+
export declare const descGetChaosService = "Get a single chaos service by its identity slug within the given account/org/project scope.";
|
|
19
|
+
export declare const descDeleteChaosService = "Delete a chaos service by its identity slug within the given account/org/project scope. Soft-deletes the service record and purges its probe mapping associations in a single transaction. Destructive and not reversible via API. Returns { success, correlationID } on 200; does not return the deleted resource.";
|
|
20
|
+
export declare const descListChaosServiceExperimentRuns = "List the experiment runs in which this chaos service was executed (service\u2192run linkage resolved via execution nodes). Supports pagination (page, limit), search, sort (sortField: name|lastUpdated with sortAscending), and filters by infra_ids / statuses / step_types. Set include_all_scope=true to include descendant scopes.";
|
|
21
|
+
export declare const descListChaosServiceLoadTests = "List the load tests whose serviceReferences include this chaos service. Supports pagination (page, limit), search, sort, and filters by tool_type / environment_ids / infra_ids / tags. Set include_all_scope=true to include descendant scopes.";
|
|
22
|
+
export declare const descCreateChaosService = "Onboard (create) a chaos service. This is a GUIDED, ORDERED workflow \u2014 do NOT skip ahead or invent identifiers; each step depends on the selection made in the previous one. Do NOT advance to the next step until the current step's selection is made, and NEVER call harness_create(chaos_service) until every step below is resolved and the user has confirmed.\n\nSTEP 1 \u2014 Select a Discovery Agent (REQUIRED FIRST; gate: do not continue without a chosen agent).\n Call harness_list(resource_type='discovered_agent', org_id, project_id). Show each agent's name, identity, serviceCount, and installationType. Ask the user to pick one.\n From the chosen agent capture: agent_id = agent.identity; environment_id = agent.environmentIdentifier. For SD Kubernetes agents set infrastructure_id = agent.identity (BARE, not env-prefixed) and infrastructure_type = \"KubernetesV2\".\n\nSTEP 2 \u2014 Select the Service to onboard (REQUIRED, only after STEP 1; gate: do not continue without a chosen service).\n 2a. (Optional namespace narrowing) harness_list(resource_type='discovered_namespace', agent_identity=<agent.identity>, environment_id=<environment_id>, all=true). Ask the user to pick a namespace, or skip to list all services.\n 2b. harness_list(resource_type='discovered_service', agent_identity=<agent.identity>, environment_id=<environment_id>, compact=false[, namespace=<picked namespace>]). For each service show: name; namespace = spec.kubernetes.namespace; IP = spec.kubernetes.service.clusterIP (fallback spec.ip[0]); port = spec.kubernetes.service.ports[0].port (fallback spec.port[0]). Ask the user to pick a service.\n Capture external_service_id = <selected discovered service>.id.\n\nSTEP 3 \u2014 Configure Metadata (REQUIRED, only after STEP 2).\n Ask the user for name (REQUIRED), description (optional), and tags (optional). Derive identity as a slug of name unless the user supplies one. identity must be unique in scope \u2014 create fails on a duplicate identity or a duplicate external_service_id.\n\nSTEP 4 \u2014 Associate Probes (REQUIRED DECISION, only after STEP 3).\n Explicitly ask the user: attach one or more health-check probes now, or create the service with no probes? Do not assume.\n - If none: probes = [].\n - If attaching: harness_list(resource_type='chaos_probe', infra_type='KubernetesV2'[, entity_type='httpProbe'|'cmdProbe'|'datadogProbe'|... to filter by probe type]). For EACH probe the user selects, read its inputs[] array (from the list item, or harness_get chaos_probe). For every input, prompt the user for a value \u2014 MANDATORY when required=true \u2014 and REPLACE the placeholder value \"<+input>\" with the user's value while keeping the rest of the input object (name, path, category, type, reference, ...) unchanged. Build probes = [{ probeId: <probe.identity>, inputs: [<full input objects with the user's values>] }, ...].\n\nSTEP 5 \u2014 Create. Only now call harness_create(resource_type='chaos_service', org_id, project_id, body={ identity, name, description?, tags?, external_service_id, agent_id, environment_id, infrastructure_id, infrastructure_type, probes }). The server re-resolves serviceType and namespace from external_service_id and stores infrastructureId as \"<environment_id>/<infrastructure_id>\". Returns the full ChaosServiceResponse on 200.\n\nNever fabricate external_service_id, agent_id, or probe inputs \u2014 always source them from the discovered_agent / discovered_service / chaos_probe responses above.";
|
|
23
|
+
export declare const descBodyChaosServiceCreate = "Chaos service create body. Required: identity, name, external_service_id, agent_id, environment_id, infrastructure_id. Optional: description, tags, infrastructure_type, onboarding_id, probes.";
|
|
24
|
+
export declare const descChaosServiceName = "Human-readable name for the chaos service. Required.";
|
|
25
|
+
export declare const descChaosServiceDescription = "Optional free-form description for the chaos service.";
|
|
26
|
+
export declare const descChaosServiceTagsBody = "Optional tags for the chaos service. Accepts a JSON array of strings or a comma-separated string; normalised to string[] before sending.";
|
|
27
|
+
export declare const descChaosServiceExternalServiceId = "External service ID (maps to externalServiceId). Required. This is the 'id' field of the chosen record from discovered_service list (STEP 2 of create) \u2014 NOT the service name. The server treats it as authoritative and re-resolves the service type and namespace from it, so it must reference a real discovered service under the same agent + environment.";
|
|
28
|
+
export declare const descChaosServiceAgentId = "Service Discovery agent identity (maps to agentId). Required. Use the 'identity' field of the agent chosen from discovered_agent list (STEP 1 of create). The agent's environmentIdentifier becomes environment_id, and for SD Kubernetes agents its identity is also the bare infrastructure_id.";
|
|
29
|
+
export declare const descChaosServiceEnvironmentId = "Harness environment identifier the service lives in (maps to environmentId). Required.";
|
|
30
|
+
export declare const descChaosServiceInfrastructureId = "Chaos infrastructure identifier (maps to infrastructureId). Required. Pass the BARE infra id (NOT env-prefixed) \u2014 for SD-onboarded Kubernetes this equals the Discovery agent's identity. The server stores it as \"<environment_id>/<infrastructure_id>\", so do not pre-prefix it yourself.";
|
|
31
|
+
export declare const descChaosServiceInfrastructureType = "Infrastructure type of the underlying chaos infra. Enum: Kubernetes | KubernetesV2 | Windows | Linux | CloudFoundry | Container. Use KubernetesV2 for Service Discovery agents (the modern SD-based Kubernetes chaos infrastructure) \u2014 this is the value for services onboarded via the discovered_agent/discovered_service flow. Optional; values are the canonical PascalCase forms.";
|
|
32
|
+
export declare const descChaosServiceOnboardingId = "Optional onboarding batch identifier \u2014 set when this service is created as part of a multi-service onboarding flow so downstream tools can correlate the batch.";
|
|
33
|
+
export declare const descChaosServiceProbes = "Optional probe associations. Array of { probeId, inputs? }. probeId is the identity of an existing chaos probe (from chaos_probe list, filter infra_type='KubernetesV2'). inputs is the probe's own inputs[] array (read it from the chaos_probe list item or harness_get chaos_probe): pass each input object back intact (name, path, category, type, reference, required, ...) but REPLACE its placeholder value \"<+input>\" with the user-supplied value. Values for inputs marked required=true are mandatory. Do not fabricate or drop input objects \u2014 the backend uses each input's path/category to place the value.";
|
|
34
|
+
export declare const descChaosServiceProbesUpdate = "Required \u2014 full replacement of every probe association (desired-state reconcile; any existing probe omitted here is removed). Array of { probeId, inputs? }, same shape as create's 'probes'. To keep current probes, call harness_get first and resupply its 'probes' array unchanged; pass [] to explicitly detach all probes.";
|
|
35
|
+
export declare const descUpdateChaosService = "Update an existing chaos service, identified by the path 'identity' (identity is not renameable \u2014 do not put it in the body). This is a FULL REPLACE of the mutable fields (name, description, tags, external_service_id, agent_id, environment_id, infrastructure_id), not a partial patch: description and tags are overwritten with exactly what you send, including being cleared to empty if you omit them \u2014 there is no \"leave unchanged\" behavior for these two fields. To preserve the current description/tags, fetch the service first (harness_get) and re-supply its current values. Probes is a REQUIRED desired-state array: it is reconciled atomically with the field update, and any probe present on the service but not in the array is removed. To keep the current probes, harness_get first and resupply the 'probes' array unchanged; pass [] to intentionally detach every probe. Returns the full ChaosServiceResponse on 200.";
|
|
36
|
+
export declare const descBodyChaosServiceUpdate = "Chaos service update body. Required: name, external_service_id, agent_id, environment_id, infrastructure_id (the last four are re-validated server-side via a Service Discovery lookup), and probes (a full desired-state array \u2014 see below). Optional (schema-wise): description, tags \u2014 but \"optional\" only means the request validates without them. Omitting description or tags CLEARS them server-side (full replace, no partial patch); re-supply the current value from a prior harness_get if you want it preserved. probes is required precisely because it is a full replace: supply the complete desired set (harness_get first to keep existing ones), or [] to detach all probes. Do NOT include 'identity' \u2014 pass it at the top level so it goes on the URL.";
|
|
37
|
+
export declare const descChaosLoadtest = "Load test (Resilience Testing) instance. Supports list, get, create, delete; run/stop via execute actions.\nLocust is supported on Linux VM and Kubernetes (script + image modes). K6 is genuinely Kubernetes-only at the backend. JMeter is restricted to Kubernetes by MCP for parity with the Harness UI (the backend itself does not enforce this for JMeter) \u2014 Linux VM supports Locust only; MCP rejects K6/JMeter with a Linux target_type at create time. JMeter accepts script/script_image scalars like Locust/K6 (plus properties/env_vars/thresholds/worker_count); 'tool_config' remains available as an advanced escape hatch (e.g. .zip bundles).\nTo create one, follow the prerequisite chain declared in relatedResources: (1) pick a load-runner infra via chaos_infrastructure (Linux VM) or chaos_enabled_infrastructure (Kubernetes), then (2) list chaos_service with infrastructure_ids='<environment_id>/<infra_id>' and pick one \u2014 or create a chaos_service if the list is empty \u2014 feeding its identity into service_references. When picking a Kubernetes infra, remember to set target_type='kubernetes' explicitly; it is not derived from the infra you chose.\n\nResponse / read schema (what list/get returns \u2014 agents NEVER need to construct these on create; MCP builds them automatically):\n- toolConfig.<tool> (canonical, per loadTestManager LocustSpec / K6Spec / JMeterSpec):\n mode: \"script\" | \"image\"\n script: { content? (base64), image?, entrypoint?, loadArgs?, imagePullSecret? }\n tunables: { targetUrl?, targetUsers?, spawnRate? (Locust), rampUpTimeSec? (Locust), durationSeconds? (Locust/K6), workerCount?, hostUrl? (K6), iterations? (K6), rpsLimit? (K6) }\n envVars?: [{key, value, secret?}] (K6/JMeter)\n variables?: template.VariableList (currently always empty; custom variables are a deferred feature)\n properties?: [{key, value, sendToEngines?}] (JMeter)\n thresholds?: [{metric, stat?, operator, value, abortOnFail?}] (JMeter)\n- yaml: base64-encoded LoadTest manifest. Decoded shape:\n kind: LoadTest\n apiVersion: v1alpha1\n metadata:\n name: <name>\n description?: <string>\n tags?: [<string>]\n serviceReferences?: [<chaosService identity>]\n spec:\n identity: <slug>\n toolType: Locust | K6 | JMeter\n infraType: kubernetes | linux # derived from targetType\n targetType: kubernetes | machine-chaos-linux | linux-chaos\n cleanupPolicy: delete | retain\n infraId: <id>\n envId: <id>\n toolConfig: { <tool>: { mode, script, tunables, ... } }\n- Derived convenience scalars (read-side projection of toolConfig.<tool> by MCP, matching the create-side scalars):\n target_url, users, duration_sec, ramp_up_sec, worker_count, spawn_rate, host_url, iterations, rps_limit,\n script_image, script_entrypoint, load_args, image_pull_secret.";
|
|
38
|
+
export declare const descChaosK8sInfrastructure = "Kubernetes chaos infrastructure (chaos server) available for running experiments.\nUse chaos_environment list first to get an environmentId, then pass it here to filter infrastructures for that environment.\nReturns infrastructure details including identity, infraID, name, environmentID, status, infraType, infraScope, and isChaosEnabled.\nThe infraID is used as the infra_ref parameter in create_from_template.\nIMPORTANT: Only infrastructures with status=ACTIVE AND isChaosEnabled=true can be used to create chaos experiments. Always check both fields before selecting an infrastructure.\nSupports list, get, create, plus check_health execute action.\nSupports filtering by status (ACTIVE, INACTIVE, PENDING), search, and optional inclusion of legacy V1 infrastructures.\nTo list ONLY infrastructures that are ready to run experiments (chaos-enabled AND ACTIVE) with correct totals/pagination, use chaos_enabled_infrastructure instead.";
|
|
39
|
+
export declare const descCreateK8sInfra = "Register a new Kubernetes chaos infrastructure (chaos server) in the given Harness project.\n\nThis registers the chaos agent/delegate metadata in Harness and returns an access token plus Helm/manifest instructions for installing the chaos server in your cluster.\n\nGUIDED workflow \u2014 resolve each step before calling harness_create:\n\nSTEP 1 \u2014 Select environment (REQUIRED):\n harness_list resource_type=chaos_environment (or resource_type=environment). Ask the user to pick one.\n Capture environment_id = chosen environment identifier.\n\nSTEP 2 \u2014 Select backing CD infrastructure (REQUIRED for standard onboarding):\n harness_list resource_type=infrastructure with environment_id=<env from Step 1>.\n Ask the user which Kubernetes infrastructure definition to attach. Capture infra_id = infrastructure identifier.\n The backend validates this Harness CD infra exists in the selected environment.\n\nSTEP 3 \u2014 Configure chaos server metadata (REQUIRED):\n Ask for name and identity (slug). identity must be unique in scope; infra_id defaults to identity when omitted.\n Defaults (override only if user asks): infra_namespace=hce, service_account=litmus, infra_scope=CLUSTER, infra_type=KUBERNETES.\n\nSTEP 4 \u2014 Create:\n harness_create(resource_type='chaos_k8s_infrastructure', org_id, project_id, body={ identity, name, environment_id, infra_id?, k8s_connector_id?, infra_namespace?, service_account?, infra_scope?, infra_type?, description?, tags?, ai_enabled? })\n\nReturns identity, name, token (for agent install), and uniqueId. After create, apply the returned manifest/Helm chart in the target cluster and wait for status=ACTIVE + isChaosEnabled=true before running experiments.";
|
|
40
|
+
export declare const descBodyK8sInfraCreate = "Chaos K8s infrastructure (chaos server) registration body. Required: identity, name, environment_id. infra_id defaults to identity when omitted.";
|
|
41
|
+
export declare const descK8sInfraIdentityCreate = "Unique slug for the chaos infrastructure. Also used as infraID when infra_id is omitted. Must be unique within the project scope.";
|
|
42
|
+
export declare const descK8sInfraNameCreate = "Human-readable display name for the chaos server.";
|
|
43
|
+
export declare const descK8sInfraEnvironmentIdCreate = "Harness environment identifier where the chaos server will run. Use chaos_environment or environment list to find valid IDs.";
|
|
44
|
+
export declare const descK8sInfraInfraIdCreate = "Harness CD infrastructure definition identifier in the selected environment. Defaults to identity when omitted. The backend verifies this infra exists.";
|
|
45
|
+
export declare const descK8sInfraConnectorIdCreate = "Optional Kubernetes connector identifier when required by your onboarding flow.";
|
|
46
|
+
export declare const descK8sInfraNamespaceCreate = "Kubernetes namespace where chaos components are installed. Default: hce.";
|
|
47
|
+
export declare const descK8sInfraServiceAccountCreate = "Kubernetes service account for the chaos server. Default: litmus.";
|
|
48
|
+
export declare const descK8sInfraScopeCreate = "Installation scope. CLUSTER (default) or NAMESPACE.";
|
|
49
|
+
export declare const descK8sInfraTypeCreate = "Infrastructure type. KUBERNETES (default) or KUBERNETESV2.";
|
|
50
|
+
export declare const descK8sInfraAiEnabledCreate = "Enable AI recommendations for this infrastructure. Default: false.";
|
|
10
51
|
export declare const descChaosHub = "ChaosHub \u2014 a Git-backed repository that provides version-controlled chaos fault, experiment, probe, and action templates.\nEvery project includes a default Enterprise ChaosHub with pre-built templates; custom hubs can be created to bring in organization-specific chaos artifacts.\nSupports list, get, create, update, and delete.\nReturns hub details including repository URL, branch, connector configuration, template counts, sync status, and metadata.\nTemplates stored in a hub are accessible via four resource types \u2014 filter any of them by hub_identity (the identity field from this hub) to scope results to a specific hub:\n- chaos_experiment_template: reusable, versioned experiment blueprints\n- chaos_fault_template: versioned fault definitions (e.g. pod-delete, network-loss, CPU stress)\n- chaos_probe_template: reusable resilience probe configurations (HTTP, CMD, Prometheus, K8s, SLO, etc.)\n- chaos_action_template: reusable workflow action steps (delay, customScript, container)\nTypical workflow: harness_list resource_type=chaos_hub \u2192 pick a hub \u2192 harness_list resource_type=<template_type> with hub_identity to browse its templates.";
|
|
11
52
|
export declare const descChaosFault = "Chaos fault definition (e.g. pod-delete, network-loss, CPU stress). Supports list, get, delete, plus get_variables, get_yaml, and list_experiment_runs execute actions.";
|
|
12
53
|
export declare const descChaosApplicationMap = "Chaos application map \u2014 a project-scoped, chaos-augmented view of a service-discovery network map, scoped to one (environment, infrastructure) pair.\n\nEnd-to-end lifecycle (an LLM should reason about this when answering \"how do I run a chaos experiment against my services?\"):\n 1. Customer installs a Service Discovery (SD) agent into a Kubernetes cluster (one agent per chaos_k8s_infrastructure).\n 2. SD agent uses eBPF to discover namespaces, services, workloads (Deployment/StatefulSet/DaemonSet \u2014 NOT pods), and inter-service connections. List these via discovered_namespace and discovered_service.\n 3. Customer (or an automated rule) selects a subset of discovered services + connections into an SD network map. Inspect via discovered_network_map.\n 4. The SD network map is \"promoted\" into a chaos application map (this resource), tied to one (environment, infrastructure). One application map per (env, infra, identity).\n 5. Chaos experiments can then be created against this application map. The presence of an application map on an experiment unlocks workload=<name> AND service=<name> system tags \u2014 see chaos_experiment.\n\nReturns name, identity, environmentRef, infrastructureId, status, agentIdentity, averageResiliencyScore, resiliencyCoverage, recentExperimentRunsDetails, totalExperimentCount; get adds eBPF-derived connections and per-service resiliency. Supports list and get.";
|
|
@@ -38,10 +79,12 @@ export declare const descGetExperimentTemplate = "Get detailed info about a chao
|
|
|
38
79
|
export declare const descDeleteExperimentTemplate = "Delete a chaos experiment template by identity.\nRequires hub_identity to identify which chaos hub owns the template.\nReturns a success confirmation on completion.";
|
|
39
80
|
export declare const descListExperimentVariables = "List variables for a chaos experiment (experiment-level and task-level). By default treats experiment_id as a human-readable identity slug (e.g. \"exp-without-runtime\"); pass is_identity=false to use the internal UUID instead.";
|
|
40
81
|
export declare const descListLinuxInfra = "List chaos Linux infrastructures (load runners)";
|
|
41
|
-
export declare const descListLoadtests = "List load test instances";
|
|
82
|
+
export declare const descListLoadtests = "List load test instances.\n\nPagination: use the top-level harness_list 'page' / 'size' arguments (0-indexed page, size 1-100) -- NOT 'limit'; a top-level 'limit' argument is silently dropped and the default size (20) applies instead.\nFilters (tool_type, environment_id, tags, sort_field, sort_ascending, search) must be passed inside harness_list's 'filters' object, e.g. filters: { tool_type: \"Locust\" }.\nKNOWN LIMITATION: 'search' matches only the load test's display name (case-insensitive substring) -- it does NOT match identity/slug, and is not fuzzy or prefix-tolerant. Use an exact or partial name substring, not an identity-style term.\ncompact:true (the harness_list default) strips toolType/targetType/scriptSource/toolConfig/recentRuns from each item to keep responses lean -- pass compact:false, or call harness_get on a specific loadtest_id, for full tool config and run history.";
|
|
42
83
|
export declare const descGetLoadtest = "Get load test instance details";
|
|
43
|
-
export declare const descCreateLoadtest = "Creates a Locust load test (Resilience Testing) on a Linux VM or Kubernetes load-runner infrastructure.\n\nIMPORTANT: You MUST NOT auto-select, assume, or pre-fill any value on behalf of the user.\nAt every step below, present the options / ask for the value and wait for explicit user confirmation before proceeding.\nDo NOT assume org/project/infrastructure/script/URL based on previous activity \u2014 the user may choose differently each time.\nLocust (Python) and K6 (JavaScript) are supported. JMeter is coming soon. K6 requires Kubernetes (LinuxVM K6 is not supported). For K6, \"Upload K6 script\" and \"Custom Image\" modes are supported via MCP; \"Define test via UI\" is deferred.\n\nRequired workflow \u2014 follow in order, pausing for user input after each step:\n\nStep 1 \u2014 Select the execution environment target type:\n Ask whether the load test runs on \"Linux VM\" (target_type=machine-chaos-linux) or \"Kubernetes\" (target_type=kubernetes). Wait for the user to choose.\n\nStep 1b \u2014 Select the tool type:\n Linux VM only supports Locust. Kubernetes supports Locust or K6 \u2014 ask which. Pass tool_type='Locust' (default) or 'K6'.\n K6 is JavaScript; Locust is Python. K6 currently supports script-mode only (Custom Image and UI are deferred).\n\nStep 2 \u2014 Select a load-runner infrastructure:\n Linux VM: call harness_list resource_type=chaos_infrastructure, show the list, wait for the user to pick one. Only infras with loadEnabled=true and status ACTIVE can run load tests.\n Kubernetes: call harness_list resource_type=chaos_enabled_infrastructure, show the list, wait for the user to pick one (results are always ACTIVE and chaos-enabled).\n From the chosen row take environmentID -> environment_id and infraID -> infra_id. Do NOT choose an infrastructure yourself.\n\nStep 3 \u2014 Collect the target (host) URL:\n Ask for the base URL of the application under test (e.g. https://www.google.com) -> target_url. Do NOT assume it.\n\nStep 4 \u2014 Test configuration (branch on tool_type from Step 1b):\n Locust (Linux VM or Kubernetes):\n (a) Upload Python script (script_source=inline): ask for the raw Python locust script -> script (verbatim; do NOT generate or pre-encode). MCP base64-encodes it into top-level scriptContent.\n (b) Custom Image (script_source=image, Kubernetes only): ask for script_image (+ optional script_entrypoint, load_args).\n K6 (Kubernetes only):\n (a) Upload K6 script (script_source=inline): ask the user to paste the raw K6 JavaScript source. Pass it verbatim in 'script'. MANDATORY rule: the script MUST contain 'export default function ...'. If it does not, REJECT before calling MCP \u2014 MCP will throw and no load test will be created. MCP base64-encodes the script into toolConfig.scriptContent; do NOT pre-encode.\n (b) Custom Image (script_source=image): ask for the container image -> script_image (e.g. my-registry/my-load-test:latest); optionally an entrypoint inside the image -> script_entrypoint (e.g. /script.js); optional container args -> load_args. MCP routes script_image and script_entrypoint into BOTH toolConfig.customImage (image, entrypoint) AND inputs[] (scriptImage required:true, scriptEntrypoint required:true); load_args rides ONLY in inputs[name=loadArgs]. No script is needed.\n (c) Define test via UI: NOT YET SUPPORTED via MCP. Inform the user it is deferred and stop.\n Optional K6-only knobs to ask the user about (skip if user says no):\n - host_url: origin of the target system (protocol+host, no path). Defaults to the origin of target_url.\n - rps_limit: requests-per-second cap (toolConfig.options.rpsLimit). Optional.\n - iterations: total iteration cap (toolConfig.iterations). Optional.\n - env_vars: see Step 4c.\n\nStep 4c \u2014 Optional K6 environment variables (env_vars):\n The env_vars param is a structured array. Each entry sets EITHER a literal value OR a secret reference:\n - Literal: {key: \"FOO\", value: \"bar\"}\n - Secret reference: {key: \"TOKEN\", secret_id: \"<harness-secret-identifier>\", secret_scope: \"account\"|\"org\"|\"project\"}\n To discover available secrets, call harness_list resource_type=secret type=SecretText. Each list item has\n a nested secret.{identifier, orgIdentifier?, projectIdentifier?}. Derive secret_scope from the response:\n - no orgIdentifier AND no projectIdentifier \u2192 secret_scope: \"account\"\n - orgIdentifier only \u2192 secret_scope: \"org\"\n - both orgIdentifier AND projectIdentifier \u2192 secret_scope: \"project\"\n MCP builds the wire string 'secrets.getValue(\"<prefix><id>\")' (account.<id> / org.<id> / <id>) and sets\n secret: true automatically \u2014 do NOT construct the secrets.getValue(...) string yourself.\n Disallowed keys (reserved, case-insensitive): RUN_ID, LOAD_TEST_ID, TARGET_USERS, SPAWN_RATE,\n SCRIPT_CONTENT_BASE64, TARGET_URL, ACCOUNT_ID, ORG_ID, PROJECT_ID, ENV_ID, DURATION_SECONDS,\n CONTROL_PLANE_URL, CONTROL_PLANE_TOKEN, HARNESS_CUSTOM_VAR_NAMES, METRICS_PUSH_INTERVAL, INFRA_ID,\n ACCESS_KEY, TENANT_ID, PYTHONPATH, PATH, HOME, USER, SHELL, LANG, TERM, HOSTNAME, PWD,\n LD_LIBRARY_PATH, LD_PRELOAD, TMPDIR, TMP, TEMP.\n Key pattern: /^[A-Za-z_][A-Za-z0-9_]*$/.\n\nStep 5 \u2014 Load configuration:\n Ask users, duration_sec, ramp_up_sec (defaults 100 / 600 / 120 only if user accepts).\n K8s: also ask worker_count \u2014 do NOT skip (default 0). VM: skip worker_count.\n\nStep 6 \u2014 Collect name and optional metadata:\n Ask for a name (any non-empty string). identity is auto-derived from name by stripping non-alphanumerics unless the user provides one (must be letters/numbers/underscores). description and tags are optional \u2014 ask, but do not require them.\n\nOnly after the user confirms all of the above should you call harness_create resource_type=chaos_loadtest.\n\nHOW THE BODY IS BUILT (you do NOT construct any of this \u2014 MCP handles it):\n- Your scalars (users / duration_sec / ramp_up_sec / worker_count / target_url / script_image / script_entrypoint / load_args)\n are translated into a canonical inputs[] array with backend-wire names\n (targetUsers / durationSeconds / rampUpTimeSec / workerCount / targetUrl / scriptImage / scriptEntrypoint / loadArgs).\n- Inline mode (Locust): your raw 'script' is base64-encoded into top-level scriptContent.\n- Image mode (Locust): scriptContent is omitted; script_image / script_entrypoint / load_args ride in inputs[].\n- K6 script mode: top-level scriptContent is OMITTED. The base64 script lives in toolConfig.scriptContent only.\n toolConfig also carries hostUrl, optional options.rpsLimit, optional iterations, and optional envVars.\n- env_vars (K6): structured only. {key, value} for literals; {key, secret_id, secret_scope?} for secrets \u2014\n MCP builds the wire 'secrets.getValue(\"<prefix><id>\")' string and sets secret: true automatically.\n- A canonical LoadTest YAML manifest is synthesized and base64-encoded into the 'yaml' request field.\n- description defaults to \"\", tags defaults to []. tool_type is fixed to \"Locust\" server-side (K6/JMeter coming).\n\nINPUT FIELDS:\n name (string, required): Display name for the load test. Any non-empty string (e.g. \"My Load Test\", \"locust-1\").\n environment_id (string, required): environmentID of the chosen infrastructure (Step 2).\n infra_id (string, required): infraID of the chosen infrastructure (Step 2).\n target_url (string, required): Base URL of the application under test (Step 3). Goes into inputs[name=targetUrl].\n script (string): Raw Python locust script. VM always requires this; K8s when inline. MCP base64-encodes it into the top-level scriptContent field \u2014 do NOT pre-encode.\n script_source (string): \"inline\" (default) or \"image\". \"image\" is K8s-only; VM is always \"inline\". Inferred as \"image\" when script_image is set.\n script_image (string): K8s + image mode only \u2014 prebuilt container image. Required when script_source=image. Goes into inputs[name=scriptImage, required:true].\n script_entrypoint (string): Custom Image mode \u2014 entrypoint file inside the image. Goes into inputs[name=scriptEntrypoint, required:true] when provided.\n load_args (string): Custom Image mode \u2014 container args as \"k=v,v2;k2=v\" pairs. Goes into inputs[name=loadArgs] when provided.\n target_type (string): machine-chaos-linux (Linux VM, default), linux-chaos, or kubernetes.\n users (number, default 100): Number of simulated users. Goes into inputs[name=targetUsers, required:true].\n duration_sec (number, default 600): Total test duration in seconds. Goes into inputs[name=durationSeconds].\n ramp_up_sec (number, default 120): Ramp-up duration in seconds. Goes into inputs[name=rampUpTimeSec].\n worker_count (number, default 0): K8s \u2014 agent must ask; default 0. VM: N/A. Goes into inputs[name=workerCount].\n tool_type (string, default \"Locust\"): \"Locust\" or \"K6\". K6 requires target_type=kubernetes.\n host_url (string, K6 only): K6 host origin (protocol://host, no path). Defaults to origin of target_url. Goes into toolConfig.hostUrl.\n rps_limit (number, K6 only): requests-per-second cap. Goes into toolConfig.options.rpsLimit when > 0.\n iterations (number, K6 only): total iteration cap. Goes into toolConfig.iterations when > 0.\n env_vars (array, K6 only): environment variables. Array of {key, value} (literal) or {key, secret_id, secret_scope?} (secret reference). See Step 4c.\n identity (string): Stable slug-safe identifier (letters / numbers / underscores). Auto-derived from name by stripping non-alphanumerics when omitted.\n description (string): Optional human-readable description. Defaults to \"\".\n tags (string[]): Optional tags. Defaults to [].\n\nReturns the created load test (identity, name, environment/infra, targetType, toolType, scriptSource, inputs[], plus derived target_url/users/duration_sec/ramp_up_sec/worker_count convenience scalars) and an openInHarness deep link.";
|
|
84
|
+
export declare const descLoadtestFieldTaxonomy = " (a) Script file / Custom image -> script | script_image (+script_entrypoint, load_args, image_pull_secret) -> toolConfig.<tool>.script.{content|image|entrypoint|loadArgs|imagePullSecret}. ALL tools; script_image is the only mandatory field in Custom Image mode; script_entrypoint, load_args and image_pull_secret are optional (image_pull_secret only for Private registries; the backend falls back to a tool-specific default entrypoint when omitted).\n (b) Host / Target URL -> target_url (fixed|<+input>) -> toolConfig.<tool>.tunables.targetUrl. LOCUST + K6 ONLY (not exposed for JMeter -- see JMeter step notes), optional. K6 additionally derives tunables.hostUrl from the URL's origin (feeds the script as __ENV.HOST_URL); leave blank if the script/locustfile declares its own host.\n (c) Users -> users (fixed|<+input>) -> toolConfig.<tool>.tunables.targetUsers. LOCUST + K6 ONLY (not exposed for JMeter -- see JMeter step notes).\n (d) Duration (seconds) -> duration_sec (fixed|<+input>) -> toolConfig.<tool>.tunables.durationSeconds. LOCUST + K6 ONLY (not exposed for JMeter -- see JMeter step notes).\n (e) Ramp Up Duration (seconds) -> ramp_up_sec (fixed|<+input>) -> toolConfig.<tool>.tunables.rampUpTimeSec. LOCUST ONLY (no Ramp Up field in the K6 UI form or for JMeter). Must not exceed Duration when both are fixed values.\n (f) Iterations (cap) -> iterations (fixed|<+input>) -> toolConfig.k6.tunables.iterations. K6 ONLY. Duration takes precedence when both are set.\n (g) RPS Limit -> rps_limit (fixed|<+input>) -> toolConfig.k6.tunables.rpsLimit. K6 ONLY. Global cap, split evenly across replicas; always applies (unlike (c)/(d)/(f), which k6 ignores once the script declares its own scenarios/stages).\n (h) Worker Count / Replicas -> worker_count (fixed|<+input>) -> toolConfig.<tool>.tunables.workerCount. LOCUST + K6 + JMETER, Kubernetes only (VM always runs a single worker/pod -- skip entirely for target_type='machine-chaos-linux'). Locust: Users are DISTRIBUTED across workers, not multiplied. K6: <=1 = single pod; higher values fan out to multiple runner pods via --execution-segment. JMeter: workers MULTIPLY load -- each injector runs the FULL uploaded plan unchanged; thread counts inside the file are NOT sliced across workers.\n (i) Environment Variables -> env_vars -> toolConfig.<tool>.envVars[]. K6 + JMETER. Structured array; each entry is a literal {key, value}, a runtime {key, value: \"<+input>\"}, or a secret reference {key, secret_id, secret_scope?}. See the env_vars field's own description (descLoadtestEnvVars) for the full validator, reserved-name list, and secret_scope discovery flow (harness_list resource_type=secret type=SecretText) -- not repeated here. K6 additionally rejects HOST_URL/K6_VUS/K6_DURATION/K6_ITERATIONS/K6_STAGES/K6_RPS (tool-specific reserved names on top of the shared list).\n (j) Property Overrides -> properties -> toolConfig.jmeter.properties[]. JMETER ONLY. Array of {key, value, send_to_engines?}; injects/overrides JMeter properties at run time without editing the uploaded plan -- reference as ${__P(NAME)} inside the plan. send_to_engines (-G) controls whether the property also reaches remote workers in Distributed Execution; omit for controller-only properties.\n (k) Thresholds -> thresholds -> toolConfig.jmeter.thresholds[]. JMETER ONLY. Array of {metric, stat?, operator, value, abort_on_fail?}; pass/fail criteria evaluated against the run's .jtl results AFTER the test (the uploaded plan's own Assertions still apply per-request during the run). metric one of response_time_ms|error_rate_pct|throughput_rps|latency_ms; operator one of < <= > >= == !=; stat (e.g. p95/p99/avg/median/max) is REQUIRED when metric is response_time_ms or latency_ms.";
|
|
85
|
+
export declare const descCreateLoadtest = "Creates a Locust load test (Resilience Testing) on a Linux VM or Kubernetes load-runner infrastructure.\nIMPORTANT: You MUST NOT auto-select, assume, or pre-fill any value on behalf of the user.\nAt every step below, present the options / ask for the value and wait for explicit user confirmation before proceeding.\nDo NOT assume org/project/infrastructure/script/URL based on previous activity \u2014 the user may choose differently each time.\nLocust (Python), K6 (JavaScript), and JMeter (Java) are supported. K6 and JMeter are Kubernetes-only; Linux VM supports Locust only. All three tools support \"Upload script\" and \"Using Custom Image\" via scalar inputs (script, script_image, script_entrypoint, load_args, image_pull_secret) plus tool-specific extras (properties/thresholds for JMeter; env_vars for K6/JMeter). The 'tool_config' body field remains available as an advanced escape hatch (e.g. JMeter .zip bundles pre-base64'd into tool_config.jmeter.script.content). For K6, \"Define test via UI\" is deferred.\nRequired workflow -- follow in order, pausing for user input after each step.\nCOMMON STEPS (identical for Locust, K6, and JMeter):\nEach step below shows the slice of the canonical stored LoadTest YAML that its inputs populate (what the user sees in the Harness UI YAML view). You NEVER hand-write this YAML -- MCP synthesizes it from the scalars/objects you pass to harness_create; the slices exist only so you can reason about which of your inputs affects which YAML path and echo an accurate preview back to the user.\nTwo paths of the stored YAML are set from top-level body fields rather than the MCP-built manifest itself and are merged by the backend: metadata.serviceReferences (from body.service_references) and spec.cleanupPolicy (from body.cleanup_policy). All other YAML paths below correspond 1:1 to what MCP writes into body.yaml.\n\nStep 1 -- Name / description / tags:\n Ask for a name (any non-empty string) -> name. identity is auto-derived from name by stripping non-alphanumerics unless the user supplies one (letters / numbers / underscores).\n description and tags are optional -- ask, but do not require them.\n YAML populated after this step:\n kind: LoadTest\n apiVersion: v1alpha1\n metadata:\n name: <name>\n description: <description> # omitted when empty\n tags: # omitted when empty\n - <tag>\n spec:\n identity: <identity> # auto-derived slug from name unless user supplies one\n\nStep 2 -- Execution environment target type:\n Ask \"Linux VM\" (target_type=machine-chaos-linux) or \"Kubernetes\" (target_type=kubernetes). Wait for the user to choose.\n Linux VM supports Locust only. Kubernetes supports Locust, K6, or JMeter.\n YAML populated after this step (delta only):\n spec:\n targetType: kubernetes | machine-chaos-linux\n infraType: kubernetes | linux # derived from targetType, not user-supplied\n\nStep 3 -- Load-runner infrastructure (see chaos_loadtest.relatedResources for canonical guidance):\n Linux VM -> harness_list resource_type=chaos_infrastructure (loadEnabled + ACTIVE only).\n Kubernetes -> harness_list resource_type=chaos_enabled_infrastructure (already ACTIVE + chaos-enabled).\n From the chosen row: environmentID -> environment_id, infraID -> infra_id. Do NOT choose an infra yourself.\n If NO eligible infra is returned (empty list, or every row fails the eligibility filter above), STOP and tell the user no eligible load-runner infra exists in the current scope. Ask them to (a) switch org/project scope, (b) pick a different target type at Step 2 (Linux VM <-> Kubernetes), or (c) exit/stop. Do NOT fall back to an ineligible infra and do NOT proceed to Step 4 -- a load test cannot be created without an eligible infra.\n YAML populated after this step (delta only):\n spec:\n infraId: <infraID from the chosen infra row>\n envId: <environmentID from the chosen infra row>\n\nStep 4 -- Resilience Testing Services (chaos_service):\n Call harness_list resource_type=chaos_service with infrastructure_ids='<environment_id>/<infra_id>'. Show the list to the user.\n The user may (a) pick one or more identities from the list, OR (b) onboard a brand-new service via chaos_service's create flow -- offer BOTH options regardless of whether the list is empty. Pass the chosen identity/identities as service_references.\n YAML populated after this step (delta only):\n metadata:\n serviceReferences: # merged in by backend from the top-level service_references body field\n - <chaos_service identity>\n - ...\n Passed on the wire as body.service_references (snake_case scalar), NOT as part of the yaml manifest MCP builds -- the backend writes it into the stored YAML at metadata.serviceReferences.\n\nStep 5 -- Tool type:\n Linux VM: Locust only. Kubernetes: ask Locust / K6 / JMeter.\n Pass tool_type='Locust' | 'K6' | 'JMeter'. K6 and JMeter with a non-Kubernetes target_type will be rejected by MCP.\n YAML populated after this step (delta only):\n spec:\n toolType: Locust | K6 | JMeter\n cleanupPolicy: delete # default; see Step 7a to override or add spec.resources (Step 7b)\n toolConfig:\n <lowercase(toolType)>: # e.g. locust / k6 / jmeter\n mode: script | image # tool_config detail filled in Step 6\n script:\n content: \"\" # base64 on the wire, decoded plain-text in the YAML view; filled in Step 6\n tunables: # filled in Step 8 (load configuration)\n targetUsers: <int>\n durationSeconds: <int>\n rampUpTimeSec: <int>\n workerCount: <int> # Kubernetes only\n Notes:\n - All three tools (Locust / K6 / JMeter) populate toolConfig.<tool> from Step-6 scalars -- no hand-built tool_config needed for standard flows. JMeter's tool_config remains available only as an advanced escape hatch (e.g. pre-base64'd .zip bundles).\n - JMeter has no target_url / users / duration / ramp_up scalar surface -- load shape is baked into the uploaded plan (script mode) or the container image (custom image mode). Server defaults 100/600/30 for missing tunables on save.\n\nStep 6 -- Tool-specific configuration (branch on tool_type from Step 5):\nEvery tool type supports two authoring modes:\n (a) Upload script (script_source='inline', mode='script') -- paste the raw script; MCP base64-encodes it into toolConfig.<tool>.script.content.\n (b) Using Custom Image (script_source='image', mode='image') -- point at a prebuilt container image; no script is uploaded.\nMode lives at toolConfig.<tool>.mode; script_source on the wire body mirrors it ('inline' <-> 'script', 'image' <-> 'image').\nFields marked (*) in a branch below are MANDATORY for that branch -- the UI (and MCP validation) reject creation with any '*' field empty. Unmarked fields are OPTIONAL.\nFixed vs runtime input: fields noted \"(fixed|<+input>)\" below accept EITHER a concrete value NOW, OR the literal string '<+input>' meaning \"prompt for this value at run time\". Pass the placeholder verbatim -- MCP forwards it as-is into the tunables and into the base64 YAML manifest.\nShared field taxonomy -- each branch below references these by letter instead of restating them:\n (a) Script file / Custom image -> script | script_image (+script_entrypoint, load_args, image_pull_secret) -> toolConfig.<tool>.script.{content|image|entrypoint|loadArgs|imagePullSecret}. ALL tools; script_image is the only mandatory field in Custom Image mode; script_entrypoint, load_args and image_pull_secret are optional (image_pull_secret only for Private registries; the backend falls back to a tool-specific default entrypoint when omitted).\n (b) Host / Target URL -> target_url (fixed|<+input>) -> toolConfig.<tool>.tunables.targetUrl. LOCUST + K6 ONLY (not exposed for JMeter -- see JMeter step notes), optional. K6 additionally derives tunables.hostUrl from the URL's origin (feeds the script as __ENV.HOST_URL); leave blank if the script/locustfile declares its own host.\n (c) Users -> users (fixed|<+input>) -> toolConfig.<tool>.tunables.targetUsers. LOCUST + K6 ONLY (not exposed for JMeter -- see JMeter step notes).\n (d) Duration (seconds) -> duration_sec (fixed|<+input>) -> toolConfig.<tool>.tunables.durationSeconds. LOCUST + K6 ONLY (not exposed for JMeter -- see JMeter step notes).\n (e) Ramp Up Duration (seconds) -> ramp_up_sec (fixed|<+input>) -> toolConfig.<tool>.tunables.rampUpTimeSec. LOCUST ONLY (no Ramp Up field in the K6 UI form or for JMeter). Must not exceed Duration when both are fixed values.\n (f) Iterations (cap) -> iterations (fixed|<+input>) -> toolConfig.k6.tunables.iterations. K6 ONLY. Duration takes precedence when both are set.\n (g) RPS Limit -> rps_limit (fixed|<+input>) -> toolConfig.k6.tunables.rpsLimit. K6 ONLY. Global cap, split evenly across replicas; always applies (unlike (c)/(d)/(f), which k6 ignores once the script declares its own scenarios/stages).\n (h) Worker Count / Replicas -> worker_count (fixed|<+input>) -> toolConfig.<tool>.tunables.workerCount. LOCUST + K6 + JMETER, Kubernetes only (VM always runs a single worker/pod -- skip entirely for target_type='machine-chaos-linux'). Locust: Users are DISTRIBUTED across workers, not multiplied. K6: <=1 = single pod; higher values fan out to multiple runner pods via --execution-segment. JMeter: workers MULTIPLY load -- each injector runs the FULL uploaded plan unchanged; thread counts inside the file are NOT sliced across workers.\n (i) Environment Variables -> env_vars -> toolConfig.<tool>.envVars[]. K6 + JMETER. Structured array; each entry is a literal {key, value}, a runtime {key, value: \"<+input>\"}, or a secret reference {key, secret_id, secret_scope?}. See the env_vars field's own description (descLoadtestEnvVars) for the full validator, reserved-name list, and secret_scope discovery flow (harness_list resource_type=secret type=SecretText) -- not repeated here. K6 additionally rejects HOST_URL/K6_VUS/K6_DURATION/K6_ITERATIONS/K6_STAGES/K6_RPS (tool-specific reserved names on top of the shared list).\n (j) Property Overrides -> properties -> toolConfig.jmeter.properties[]. JMETER ONLY. Array of {key, value, send_to_engines?}; injects/overrides JMeter properties at run time without editing the uploaded plan -- reference as ${__P(NAME)} inside the plan. send_to_engines (-G) controls whether the property also reaches remote workers in Distributed Execution; omit for controller-only properties.\n (k) Thresholds -> thresholds -> toolConfig.jmeter.thresholds[]. JMETER ONLY. Array of {metric, stat?, operator, value, abort_on_fail?}; pass/fail criteria evaluated against the run's .jtl results AFTER the test (the uploaded plan's own Assertions still apply per-request during the run). metric one of response_time_ms|error_rate_pct|throughput_rps|latency_ms; operator one of < <= > >= == !=; stat (e.g. p95/p99/avg/median/max) is REQUIRED when metric is response_time_ms or latency_ms.\n\nStep 6.LocustScript -- Locust + Upload Python script (mode='script'):\n\n Ask, in order: (*)(a) Script file, (b) Host URL, (*)(c) Users, (*)(d) Duration, (*)(e) Ramp Up, (h) Worker Count [Kubernetes only].\n YAML populated after this step (delta only):\n spec:\n toolConfig:\n locust:\n mode: script\n script:\n content: | # plain text in YAML view; base64 on wire\n <the Python locust script>\n tunables: # omit keys the user left blank\n targetUrl: http://www.example.com\n targetUsers: 100\n durationSeconds: 600\n rampUpTimeSec: 120\n workerCount: 1 # Kubernetes only\n\nStep 6.LocustImage -- Locust + Using Custom Image (mode='image'):\n Kubernetes only (script_source=image, or inferred when script_image is set). VM is always inline.\n Ask, in order:\n (b) Host URL -> target_url (optional; Locust --host; leave blank if the locustfile sets host in code)\n (a) Load Test Image* -> script_image (required; container image, e.g. my-registry/my-load-test:latest)\n (a) Entrypoint -> script_entrypoint (optional; path inside the image, e.g. /scripts/locustfile.py; passed to locust -f; backend falls back to a default when omitted)\n (a) Load args -> load_args (optional; semicolon-separated k=v pairs, e.g. \"tags=smoke,fast;headless=true\" -- NOT bare CLI flags)\n (a) Image Registry Type -> Public: omit image_pull_secret\n Private: image_pull_secret (name of the Kubernetes image-pull secret)\n (c) Users* -> users\n (d) Duration* -> duration_sec\n (e) Ramp Up* -> ramp_up_sec\n (h) Worker Count -> worker_count (K8s; 0/omit = standalone)\n YAML populated after this step (delta only):\n spec:\n toolConfig:\n locust:\n mode: image\n script:\n image: my-registry/my-load-test:latest\n entrypoint: /scripts/locustfile.py\n loadArgs: tags=smoke # omit when blank\n imagePullSecret: my-pull-secret # omit when Public\n tunables: # omit keys the user left blank\n targetUrl: https://www.google.com\n targetUsers: 100\n durationSeconds: 600\n rampUpTimeSec: 120\n workerCount: 1\n\nStep 6.K6Script -- K6 + Upload K6 script (mode='script'):\n Kubernetes-only: MCP rejects K6 with target_type='machine-chaos-linux' at create time.\n Ask, in order: (*)(a) Script file [MANDATORY: script MUST contain 'export default function ...' -- reject before calling MCP if missing, matching Harness UI validateScriptContent], (b) Host URL, (c) Users, (d) Duration, (f) Iterations, (g) RPS Limit, (i) Environment Variables, (h) Replicas.\n Load-profile semantics reminder: (c)/(d)/(f) are ignored by k6 once the script declares its own scenarios/stages -- leave them blank for scripted scenarios. (g) RPS Limit always applies.\n YAML populated after this step (delta only):\n spec:\n toolConfig:\n k6:\n mode: script\n script:\n content: | # plain text in YAML view; base64 on wire\n <the K6 JavaScript source>\n tunables: # omit keys the user left blank\n targetUrl: https://www.examplek6.com\n targetUsers: <+input>\n durationSeconds: <+input>\n iterations: <+input>\n workerCount: 1\n rpsLimit: 100\n envVars: # omit entirely when no env vars are set\n - { key: env_var_1, value: some_val_1, secret: false }\n - { key: env_var_2, value: <+input>, secret: false }\n - { key: somekey, value: secrets.getValue(\"account.gcp-ca-cert\"), secret: true } # scope prefix per env_vars docs: account./org./none for project\n\nStep 6.K6Image -- K6 + Using Custom Image (mode='image'):\n Kubernetes only (script_source=image, or inferred when script_image is set).\n Ask, in order:\n (b) Host URL -> target_url (optional; MCP derives toolConfig.k6.tunables.hostUrl from its origin)\n (a) Load Test Image* -> script_image (required; container image, e.g. my-registry/my-load-test:latest)\n (a) Entrypoint -> script_entrypoint (optional; path inside the image, e.g. /script.js; backend falls back to a default when omitted)\n (a) Load args -> load_args (optional; semicolon-separated k=v pairs, e.g. \"tags=smoke,fast;headless=true\" -- NOT bare CLI flags)\n (a) Image Registry Type -> Public: omit image_pull_secret\n Private: image_pull_secret (name of the Kubernetes image-pull secret)\n (h) Worker Count -> worker_count (K8s; 0/omit = standalone)\n (g) RPS Limit -> rps_limit (optional; toolConfig.k6.tunables.rpsLimit when > 0)\n (i) Environment Variables -> env_vars (see Step 4c)\n Note: Users/Duration/Iterations tunables are meaningless for image mode -- the bundled script controls its own scenarios/stages. Do not ask for them here.\n YAML populated after this step (delta only):\n spec:\n toolConfig:\n k6:\n mode: image\n script:\n image: my-registry/my-load-test:latest # or <+input>\n entrypoint: /script.js # or <+input>\n loadArgs: tags=smoke # omit when blank\n imagePullSecret: my-pull-secret # omit when Public\n tunables:\n workerCount: 1\n rpsLimit: 100 # omit when rps_limit is unset\n envVars: # omit entirely when no env vars are set\n - { key: someKey, value: someValue, secret: false }\n\nStep 6.JMeterScript -- JMeter + Upload JMX / XML / ZIP (mode='script'):\n Kubernetes-only: MCP rejects JMeter with target_type='machine-chaos-linux' at create time.\n Ask, in order: (*)(a) Test Plan file [.jmx/.xml -- raw plan text, verbatim; do NOT parse, modify, or pre-encode. A .zip bundle (plan + CSV data/dependencies) is also accepted but must be supplied pre-base64'd via tool_config.jmeter.script.content instead of the scalar 'script' field], (j) Property Overrides, (i) Environment Variables, (k) Thresholds, (h) Workers.\n Notes: (b)/(c)/(d)/(e)/(f)/(g) do not apply to JMeter -- thread count, ramp-up, and duration live inside the uploaded plan's ThreadGroup elements, not as separate MCP inputs. If the user wants to change load shape, tell them to edit the .jmx and re-upload (or use tool_config.jmeter.tunables.{targetUsers,durationSeconds,rampUpTimeSec} as an advanced override -- backend-accepted but not exposed as a scalar here since the Harness UI does not expose it either).\n YAML populated after this step (delta only):\n spec:\n toolConfig:\n jmeter:\n mode: script\n script:\n content: | # plain text in YAML view; base64 on wire\n <the .jmx/.xml plan>\n tunables:\n workerCount: 1 # Kubernetes only\n properties: # omit entirely when no property overrides are set\n - { key: someProperty, value: someValue, sendToEngines: true }\n envVars: # omit entirely when no env vars are set\n - { key: secretKeyAtProject, value: secrets.getValue(\"datat-api\"), secret: true }\n - { key: fixedKey, value: fixedValue }\n - { key: RuntimeKey, value: <+input> }\n thresholds: # omit entirely when no thresholds are set\n - { metric: response_time_ms, stat: p95, operator: <, value: 5000, abortOnFail: false }\n\nStep 6.JMeterImage -- JMeter + Using Custom Image (mode='image'):\n Kubernetes-only (script_source=image, or inferred when script_image is set). Custom Image does NOT slice load -- each worker runs the full command independently, so total load ~= plan threads * injectors. Users/Duration/Ramp-up are baked into the image's plan and are NOT asked here (server defaults 100/600/30 when omitted; do not surface them).\n Ask, in order:\n (a) Load Test Image* -> script_image (required; cluster-reachable container image, e.g. my-registry/jmeter:5.6; may be '<+input>')\n (a) Entrypoint -> script_entrypoint (optional; path to the .jmx/.xml test plan inside the image, e.g. /test/plan.jmx; may be '<+input>'; backend falls back to a default plan-file name when omitted)\n (a) Load args -> load_args (optional; JMeter GNU-style long options as semicolon-separated key=value pairs OR bare flags, e.g. \"proxyHost=10.0.0.1;forceDeleteResultFile\". Each becomes --key=value. Do NOT put JMeter properties (jmeter.save.saveservice.* or ${__P(...)} vars) here -- those go in Property Overrides / -J / -G. Keys must be non-empty, contain no whitespace, and must NOT start with '-')\n (a) Image Registry Type -> Public: omit image_pull_secret\n Private: image_pull_secret (name of the Kubernetes image-pull secret)\n (j) Property Overrides -> properties (optional; array of {key, value, send_to_engines?}. send_to_engines=true adds -G so the property reaches remote workers in Distributed Execution)\n (i) Environment Variables -> env_vars (optional; fixed / '<+input>' runtime / secret via {secret_id, secret_scope?}. See descLoadtestEnvVars for the full reserved-name list and secret discovery flow)\n (k) Thresholds -> thresholds (optional; array of {metric, stat?, operator, value, abort_on_fail?}. metric one of response_time_ms|error_rate_pct|throughput_rps|latency_ms; operator one of < <= > >= == !=; stat REQUIRED for response_time_ms / latency_ms. value is a number -- runtime '<+input>' is NOT supported for thresholds)\n (h) Workers -> worker_count (optional; number of load injectors. Each injector runs the FULL plan unchanged -- workers MULTIPLY load. 0/omit = single standalone injector)\n YAML populated after this step (delta only):\n spec:\n toolConfig:\n jmeter:\n mode: image\n script:\n image: my-registry/jmeter:5.6 # or <+input>\n entrypoint: /test/plan.jmx # or <+input>\n loadArgs: proxyHost=10.0.0.1 # omit when blank\n imagePullSecret: my-pull-secret # omit when Public\n tunables:\n workerCount: 1 # omit when 0/unset\n properties: # omit entirely when no property overrides are set\n - { key: threads1, value: \"100\", sendToEngines: true }\n - { key: someProperty, value: \"200\", sendToEngines: false }\n envVars: # omit entirely when no env vars are set\n - { key: somekey, value: secrets.getValue(\"datat-api\"), secret: true }\n - { key: runtime, value: <+input> }\n - { key: fixed, value: somefixed }\n thresholds: # omit entirely when no thresholds are set\n - { metric: response_time_ms, stat: p95, operator: <, value: 5000, abortOnFail: false }\n - { metric: error_rate_pct, stat: avg, operator: <=, value: 50, abortOnFail: true }\n - { metric: throughput_rps, stat: p99, operator: '>', value: 5000, abortOnFail: false }\n\nStep 7 -- Advanced Options (all tool types; identical for Locust/K6/JMeter):\n\nStep 7a -- Cleanup Policy:\n Ask whether to keep the default -> cleanup_policy='delete' (removes run pods/configmaps/secrets after each execution), or retain them for debugging -> cleanup_policy='retain'. Maps to spec.cleanupPolicy. Mirrors the UI's Advanced Options \"Clean-up Load Resources\" toggle (ON = delete, OFF = retain).\n\nStep 7b -- Resource Requirements (Kubernetes only; OFF by default -- skip unless the user opts in):\n If the user wants to set CPU/memory limits and requests, ask for any of: limits.cpu, limits.memory, requests.cpu, requests.memory (all optional individually). Pass resources={ limits?: {cpu?, memory?}, requests?: {cpu?, memory?} }. cpu is cores/millicores (e.g. \"100m\", \"0.5\", \"2\"); memory is a whole-byte quantity (e.g. \"128Mi\", \"1Gi\", \"134217728\"). Per resource, requests must not exceed limits. Maps to spec.resources. If the user declines, omit 'resources' entirely.\n YAML populated after Step 7 (delta only):\n spec:\n cleanupPolicy: retain # 'delete' when omitted/unset\n resources: # omitted entirely when the user declines Step 7b\n limits:\n cpu: \"0.5\"\n memory: 1Gi\n requests:\n cpu: 100m\n memory: 128Mi\nOnly after the user confirms all of the above (across Steps 1-7) should you call harness_create resource_type=chaos_loadtest. The full input-field reference lives on each field's own description (bodySchema.fields) -- do NOT restate it here.\nReturns the created load test, including the full toolConfig echo (script/tunables/options/envVars as stored), serviceReferences, cleanupPolicy, resources, the base64 canonical yaml, createdAt/updatedAt, and an openInHarness deep link.";
|
|
44
86
|
export declare const descDeleteLoadtest = "Delete a load test instance";
|
|
87
|
+
export declare const descUpdateLoadtest = "Update fields on an existing load test (PUT -- partial by field, full-replace within a field). Omit a field entirely to leave it unchanged.\n\n- name / description / tags / environment_id / infra_id / target_type / max_duration_sec: simple scalar replace when supplied.\n- service_references / variables: replace the ENTIRE list when non-null (a non-null service_references must still be non-empty); there is no per-item merge.\n- cleanup_policy / resources: identical top-level spec fields to create -- see their own field descriptions (descLoadtestCleanupPolicy / descLoadtestResources). Not repeated here.\n- Editing the script, image, tunables, properties, thresholds, or env vars (toolConfig.<tool>) requires resupplying the FULL desired sub-object -- the backend overwrites toolConfig.<tool> wholesale on any non-null write (no per-field merge server-side, except variables and JMeter's masked-.zip workspace preservation). You have two ways to do this:\n 1. Scalar fields (recommended, mirrors create): supply 'tool_type' (Locust/K6/JMeter -- required, NOT itself sent to the API since tool_type is immutable after creation; used only so MCP picks the right builder) plus any of the same scalar fields create accepts (target_url, script_source, script, script_image, script_entrypoint, load_args, image_pull_secret, users, spawn_rate, duration_sec, ramp_up_sec, worker_count, host_url, rps_limit, iterations, env_vars, properties, thresholds). MCP rebuilds the complete toolConfig.<tool> object from these exactly as it does on create -- you must resupply every scalar that should remain set, not just the ones changing. Field-to-path mapping:\n\n (a) Script file / Custom image -> script | script_image (+script_entrypoint, load_args, image_pull_secret) -> toolConfig.<tool>.script.{content|image|entrypoint|loadArgs|imagePullSecret}. ALL tools; script_image is the only mandatory field in Custom Image mode; script_entrypoint, load_args and image_pull_secret are optional (image_pull_secret only for Private registries; the backend falls back to a tool-specific default entrypoint when omitted).\n (b) Host / Target URL -> target_url (fixed|<+input>) -> toolConfig.<tool>.tunables.targetUrl. LOCUST + K6 ONLY (not exposed for JMeter -- see JMeter step notes), optional. K6 additionally derives tunables.hostUrl from the URL's origin (feeds the script as __ENV.HOST_URL); leave blank if the script/locustfile declares its own host.\n (c) Users -> users (fixed|<+input>) -> toolConfig.<tool>.tunables.targetUsers. LOCUST + K6 ONLY (not exposed for JMeter -- see JMeter step notes).\n (d) Duration (seconds) -> duration_sec (fixed|<+input>) -> toolConfig.<tool>.tunables.durationSeconds. LOCUST + K6 ONLY (not exposed for JMeter -- see JMeter step notes).\n (e) Ramp Up Duration (seconds) -> ramp_up_sec (fixed|<+input>) -> toolConfig.<tool>.tunables.rampUpTimeSec. LOCUST ONLY (no Ramp Up field in the K6 UI form or for JMeter). Must not exceed Duration when both are fixed values.\n (f) Iterations (cap) -> iterations (fixed|<+input>) -> toolConfig.k6.tunables.iterations. K6 ONLY. Duration takes precedence when both are set.\n (g) RPS Limit -> rps_limit (fixed|<+input>) -> toolConfig.k6.tunables.rpsLimit. K6 ONLY. Global cap, split evenly across replicas; always applies (unlike (c)/(d)/(f), which k6 ignores once the script declares its own scenarios/stages).\n (h) Worker Count / Replicas -> worker_count (fixed|<+input>) -> toolConfig.<tool>.tunables.workerCount. LOCUST + K6 + JMETER, Kubernetes only (VM always runs a single worker/pod -- skip entirely for target_type='machine-chaos-linux'). Locust: Users are DISTRIBUTED across workers, not multiplied. K6: <=1 = single pod; higher values fan out to multiple runner pods via --execution-segment. JMeter: workers MULTIPLY load -- each injector runs the FULL uploaded plan unchanged; thread counts inside the file are NOT sliced across workers.\n (i) Environment Variables -> env_vars -> toolConfig.<tool>.envVars[]. K6 + JMETER. Structured array; each entry is a literal {key, value}, a runtime {key, value: \"<+input>\"}, or a secret reference {key, secret_id, secret_scope?}. See the env_vars field's own description (descLoadtestEnvVars) for the full validator, reserved-name list, and secret_scope discovery flow (harness_list resource_type=secret type=SecretText) -- not repeated here. K6 additionally rejects HOST_URL/K6_VUS/K6_DURATION/K6_ITERATIONS/K6_STAGES/K6_RPS (tool-specific reserved names on top of the shared list).\n (j) Property Overrides -> properties -> toolConfig.jmeter.properties[]. JMETER ONLY. Array of {key, value, send_to_engines?}; injects/overrides JMeter properties at run time without editing the uploaded plan -- reference as ${__P(NAME)} inside the plan. send_to_engines (-G) controls whether the property also reaches remote workers in Distributed Execution; omit for controller-only properties.\n (k) Thresholds -> thresholds -> toolConfig.jmeter.thresholds[]. JMETER ONLY. Array of {metric, stat?, operator, value, abort_on_fail?}; pass/fail criteria evaluated against the run's .jtl results AFTER the test (the uploaded plan's own Assertions still apply per-request during the run). metric one of response_time_ms|error_rate_pct|throughput_rps|latency_ms; operator one of < <= > >= == !=; stat (e.g. p95/p99/avg/median/max) is REQUIRED when metric is response_time_ms or latency_ms.\n 2. 'tool_config' escape hatch: hand-construct the object yourself (e.g. to preserve a JMeter .zip workspace or other advanced shape not covered by scalars). Pass 'tool_type' alongside it so MCP wraps/unwraps consistently with create; omitting 'tool_type' falls back to legacy behavior where 'tool_config' is sent to the API completely as-is (must already be the full `{ <tool>: {...} }` wire shape).\n- No 'yaml' manifest is sent on update (unlike create) -- the typed JSON fields above (cleanupPolicy, resources, toolConfig) are authoritative since the backend falls back to them whenever no yaml body is supplied.\n\nReturns the updated load test (same shape as harness_get resource_type=chaos_loadtest).";
|
|
45
88
|
export declare const descListK8sInfra = "List Kubernetes chaos infrastructures available for running experiments.\nUse chaos_environment list first to get an environmentId, then pass it here to filter infrastructures for that environment.\nReturns infrastructure details including identity, infraID, name, environmentID, status, infraType, infraScope, and isChaosEnabled.\nIMPORTANT: Only infrastructures with status=ACTIVE AND isChaosEnabled=true can be used to create chaos experiments.\nSupports filtering by status (ACTIVE, INACTIVE, PENDING) and optional inclusion of legacy V1 infrastructures.";
|
|
46
89
|
export declare const descGetK8sInfra = "Get Kubernetes chaos infrastructure details";
|
|
47
90
|
export declare const descChaosEnabledInfrastructure = "Kubernetes chaos infrastructures that are READY to run experiments \u2014 i.e. chaos-enabled AND status=ACTIVE. Every result has isChaosEnabled=true and status=ACTIVE, so no post-filtering is needed.\nBacked by a dedicated endpoint (POST /rest/v2/infrastructures/chaos-enabled) that queries the chaos infrastructure store directly, so pagination and total counts reflect ONLY ready-to-use infra (correct totals).\nReturns infrastructure details including identity, infraID, name, environmentID, status, infraType, infraScope, and isChaosEnabled. The infraID/identity is what you pass as infra_ref in chaos_experiment create_from_template, or as the infra selector when creating/running an experiment.\nUse chaos_environment list first to get an environmentId, then pass it here to scope to that environment.\nWHEN TO USE THIS vs chaos_k8s_infrastructure:\n- Use chaos_enabled_infrastructure when the goal is to PICK an infrastructure to run a chaos experiment, or to count/list ONLY infra that can actually run experiments (correct totals).\n- Use chaos_k8s_infrastructure for the FULL inventory (including not-yet-chaos-enabled and INACTIVE/PENDING infra), single-infra detail (get), health checks (check_health), or filtering by a specific non-ACTIVE status. Its pagination/totals span all platform infra, not just chaos-ready ones, so client-side isChaosEnabled filtering there gives wrong page sizes/counts.\nSupports list only. Filter by environment_id, infra_type (KubernetesV2/All query the V2 chaos store; Kubernetes returns legacy V1), infra_scope, is_ai_enabled, and search. There is no status filter because results are always ACTIVE.";
|
|
@@ -149,7 +192,7 @@ export declare const descCompareActionTemplateRevisions = "Compare two revisions
|
|
|
149
192
|
export declare const descBodyExperimentRun = "Optional runtime inputs for the chaos experiment. Use chaos_experiment_variable list to discover required variables first.";
|
|
150
193
|
export declare const descBodyNoBody = "No body required. Resource identified by path parameter.";
|
|
151
194
|
export declare const descBodyCreateFromTemplate = "Chaos experiment from template";
|
|
152
|
-
export declare const descBodyLoadtestDefinition = "Locust
|
|
195
|
+
export declare const descBodyLoadtestDefinition = "Load test definition (Locust / K6 / JMeter). Required: name, environment_id, infra_id, target_url. Mode: 'inline' (upload raw script, default) or 'image' (Custom Image via script_image; Kubernetes only).\nMCP translates your scalars into the canonical toolConfig.<tool> wire shape automatically:\n - users / duration_sec / ramp_up_sec / worker_count / target_url\n \u2192 toolConfig.<tool>.tunables.{targetUsers, durationSeconds, rampUpTimeSec, workerCount, targetUrl}\n - script (raw Python/JS/JMX) \u2192 toolConfig.<tool>.script.content (base64)\n - script_image / script_entrypoint / load_args / image_pull_secret (image mode)\n \u2192 toolConfig.<tool>.script.{image, entrypoint, loadArgs, imagePullSecret}\n - K6 host_url / iterations \u2192 toolConfig.k6.tunables.{hostUrl, iterations}\n - K6 rps_limit \u2192 toolConfig.k6.tunables.rpsLimit\n - env_vars (K6/JMeter) \u2192 toolConfig.<tool>.envVars\n - A canonical LoadTest YAML manifest is built and base64-encoded into a 'yaml' field.\nYou never construct toolConfig, script.content base64, or the yaml field \u2014 pass scalars only.";
|
|
153
196
|
export declare const descInputsetIdentity = "Optional inputset identity to use for the experiment run";
|
|
154
197
|
export declare const descRuntimeInputs = "Runtime input variables: { experiment: [{name, value}], tasks: { taskName: [{name, value}] } }";
|
|
155
198
|
export declare const descInfraType = "Filter by infrastructure type (e.g. Kubernetes, KubernetesV2, Linux, Windows, CloudFoundry, Container)";
|
|
@@ -159,27 +202,32 @@ export declare const descInfraRef = "Infrastructure reference in format: environ
|
|
|
159
202
|
export declare const descExperimentId = "Chaos experiment identifier. Accepts either the internal UUID (default, with is_identity=false) or the human-readable identity slug (set is_identity=true). Use harness_list with resource_type=chaos_experiment to find experiment IDs.";
|
|
160
203
|
export declare const descInfraStatus = "Filter by infra status: Active (default) or All";
|
|
161
204
|
export declare const descLoadtestName = "Display name for the load test. Any non-empty string (e.g. \"My Load Test\", \"locust-1\"). The slug-safe identifier rule applies to 'identity' (auto-derived from name) \u2014 not to name.";
|
|
162
|
-
export declare const descLoadtestType = "Load test tool type: \"Locust\" (default; Python on Linux VM or Kubernetes)
|
|
205
|
+
export declare const descLoadtestType = "Load test tool type: \"Locust\" (default; Python on Linux VM or Kubernetes), \"K6\" (JavaScript, Kubernetes only), or \"JMeter\" (Java, Kubernetes only in MCP/UI; not a backend restriction). All three support \"Upload script\" (script mode) and \"Using Custom Image\" (image mode) as first-class scalar flows; \"Define test via UI\" is deferred for K6/Locust and does not apply to JMeter.";
|
|
163
206
|
export declare const descLoadtestIdentity = "Stable identifier (letters, numbers and underscores). Auto-derived from name by stripping non-alphanumerics when omitted.";
|
|
164
207
|
export declare const descLoadtestDescription = "Optional human-readable description. Defaults to \"\".";
|
|
165
208
|
export declare const descLoadtestTags = "Optional tags (array of strings, or comma-separated string). Defaults to [].";
|
|
166
209
|
export declare const descLoadtestEnvId = "Environment identifier of the load-runner infrastructure. Use the 'environmentID' from chaos_infrastructure (Linux VM) or chaos_enabled_infrastructure (Kubernetes).";
|
|
167
210
|
export declare const descLoadtestInfraId = "Load-runner infrastructure identifier. Use the 'infraID' from chaos_infrastructure (Linux VM) or chaos_enabled_infrastructure (Kubernetes).";
|
|
168
|
-
export declare const descLoadtestTargetType = "Execution environment target type: \"machine-chaos-linux\" (Linux VM, default), \"linux-chaos\", or \"kubernetes\". \"workerCount\" is only
|
|
169
|
-
export declare const descLoadtestTargetUrl = "Base URL of the application under test (e.g. https://www.google.com).
|
|
170
|
-
export declare const descLoadtestScript = "Raw script contents for inline mode (script_source=inline). Locust expects Python (locustfile.py); K6 expects JavaScript and MUST contain 'export default function ...' (mandatory \u2014 MCP rejects scripts without it). MCP base64-encodes onto the wire \u2014 do NOT pre-encode.
|
|
171
|
-
export declare const descLoadtestScriptSource = "Test definition source: \"inline\" (default \u2014 upload a raw
|
|
172
|
-
export declare const descLoadtestScriptImage = "Custom Image mode (
|
|
173
|
-
export declare const descLoadtestScriptEntrypoint = "Custom Image mode
|
|
174
|
-
export declare const descLoadtestLoadArgs = "Custom Image mode (optional
|
|
175
|
-
export declare const
|
|
176
|
-
export declare const
|
|
177
|
-
export declare const
|
|
178
|
-
export declare const
|
|
211
|
+
export declare const descLoadtestTargetType = "Execution environment target type: \"machine-chaos-linux\" (Linux VM, default), \"linux-chaos\", or \"kubernetes\". \"workerCount\" is only honoured for \"kubernetes\".";
|
|
212
|
+
export declare const descLoadtestTargetUrl = "Base URL of the application under test (e.g. https://www.google.com). Maps to toolConfig.<tool>.tunables.targetUrl. For Locust it is passed as --host; leave blank if the locustfile sets host in code.";
|
|
213
|
+
export declare const descLoadtestScript = "Raw script contents for inline mode (script_source=inline). Locust expects Python (locustfile.py); K6 expects JavaScript and MUST contain 'export default function ...' (mandatory \u2014 MCP rejects scripts without it); JMeter expects the raw .jmx/.xml test plan text (verbatim; for a .zip bundle use tool_config.jmeter.script.content with a pre-computed base64 string instead). MCP base64-encodes onto the wire \u2014 do NOT pre-encode. Lands at toolConfig.<tool>.script.content for all three tools. Required for inline mode; omit for Custom Image mode.";
|
|
214
|
+
export declare const descLoadtestScriptSource = "Test definition source: \"inline\" (default \u2014 upload a raw script via 'script') or \"image\" (use a prebuilt container image via 'script_image'). \"image\" is K8s-only; VM is always \"inline\". Inferred as \"image\" when script_image is set, otherwise \"inline\".";
|
|
215
|
+
export declare const descLoadtestScriptImage = "Custom Image mode (Locust/K6/JMeter, Kubernetes only): prebuilt container image used as the load test source, e.g. \"my-registry/my-load-test:latest\". Required when script_source=image. Maps to toolConfig.<tool>.script.image.";
|
|
216
|
+
export declare const descLoadtestScriptEntrypoint = "Custom Image mode: entrypoint file inside the image. Locust: locustfile path (optional; passed to locust -f), e.g. \"locustfile.py\". K6: script path (optional; passed to k6 run), e.g. \"/script.js\". JMeter: path to the .jmx/.xml test plan (optional; backend uses a default plan-file name when omitted), e.g. \"/test/plan.jmx\". Runtime placeholder '<+input>' is accepted verbatim. Maps to toolConfig.<tool>.script.entrypoint.";
|
|
217
|
+
export declare const descLoadtestLoadArgs = "Custom Image mode (optional): container args as semicolon-separated key=value pairs (commas allowed inside a value). Keys must be non-empty, contain no whitespace, and must NOT start with '-' (bare CLI flags like \"--headless\" are rejected -- mirrors loadTestManager ValidateLoadArgs). Locust/K6: passed to the tool as CLI args (e.g. \"tags=smoke,fast;headless=true\"). JMeter: GNU-style long options -- each pair becomes --key=value (e.g. \"proxyHost=10.0.0.1;forceDeleteResultFile\"). Do NOT put JMeter properties (jmeter.save.saveservice.* or ${__P(...)} plan variables) here -- use 'properties' (which become -J/-G). Maps to toolConfig.<tool>.script.loadArgs.";
|
|
218
|
+
export declare const descLoadtestImagePullSecret = "Custom Image mode (Kubernetes, private registry only): name of the Kubernetes image-pull secret used to pull script_image. Maps to toolConfig.<tool>.script.imagePullSecret. Omit for public images (UI \"Image Registry Type = Public\"); there is no separate Public/Private field on the wire \u2014 presence of this scalar is the private signal.";
|
|
219
|
+
export declare const descLoadtestUsers = "Number of simulated users. Default: 100. Maps to toolConfig.<tool>.tunables.targetUsers.";
|
|
220
|
+
export declare const descLoadtestDurationSec = "Total test duration in seconds. Default: 600. Maps to toolConfig.<tool>.tunables.durationSeconds.";
|
|
221
|
+
export declare const descLoadtestRampUpSec = "Ramp-up duration in seconds. Default: 120. Maps to toolConfig.<tool>.tunables.rampUpTimeSec.";
|
|
222
|
+
export declare const descLoadtestWorkerCount = "K8s: agent must ask; default 0 (0 = standalone). VM: N/A (ignored for Linux target types). Goes to toolConfig.<tool>.tunables.workerCount. Semantics differ per tool: Locust DISTRIBUTES users across workers (load not multiplied); K6 <=1 is a single pod and higher values fan out via --execution-segment; JMeter MULTIPLIES load -- each worker runs the full uploaded plan unchanged.";
|
|
179
223
|
export declare const descLoadtestHostUrl = "K6 only: host origin (protocol+host with no path, e.g. https://api.example.com). Defaults to the origin parsed from target_url when omitted. Goes into toolConfig.hostUrl.";
|
|
180
|
-
export declare const descLoadtestRpsLimit = "K6 only: requests-per-second cap. Goes into toolConfig.
|
|
224
|
+
export declare const descLoadtestRpsLimit = "K6 only: requests-per-second cap. Goes into toolConfig.k6.tunables.rpsLimit when > 0. Omitted from the wire when unset or 0.";
|
|
181
225
|
export declare const descLoadtestIterations = "K6 only: total iteration cap. Goes into toolConfig.iterations when > 0. Omitted from the wire when unset or 0.";
|
|
182
|
-
export declare const descLoadtestEnvVars = "K6 only: environment variables for the
|
|
226
|
+
export declare const descLoadtestEnvVars = "K6 and JMeter only: environment variables for the runner. Array of entries \u2014 each sets EITHER {key, value} for a literal OR {key, secret_id, secret_scope?: \"account\"|\"org\"|\"project\"} for a Harness secret (default secret_scope = \"project\"). MCP builds the wire 'secrets.getValue(\"<prefix><id>\")' string and sets secret: true automatically \u2014 do NOT construct that string yourself. Discover secrets via harness_list resource_type=secret type=SecretText and read each item's secret.{identifier, orgIdentifier?, projectIdentifier?} to derive scope. Key pattern: /^[A-Za-z_][A-Za-z0-9_]*$/. Reserved names (case-insensitive), rejected for BOTH tools: RUN_ID, LOAD_TEST_ID, TARGET_USERS, SPAWN_RATE, SCRIPT_CONTENT_BASE64, TARGET_URL, ACCOUNT_ID, ORG_ID, PROJECT_ID, ENV_ID, DURATION_SECONDS, CONTROL_PLANE_URL, CONTROL_PLANE_TOKEN, HARNESS_CUSTOM_VAR_NAMES, METRICS_PUSH_INTERVAL, INFRA_ID, ACCESS_KEY, TENANT_ID, PYTHONPATH, PATH, HOME, USER, SHELL, LANG, TERM, HOSTNAME, PWD, LD_LIBRARY_PATH, LD_PRELOAD, TMPDIR, TMP, TEMP. K6 ALSO rejects: HOST_URL, K6_VUS, K6_DURATION, K6_ITERATIONS, K6_STAGES, K6_RPS.";
|
|
227
|
+
export declare const descLoadtestCleanupPolicy = "'delete' (default) or 'retain' -- controls whether run resources (pods, configmaps, secrets) are removed after each execution. Choose 'retain' to keep them around for debugging. Maps to spec.cleanupPolicy. Identical field for Locust/K6/JMeter. Mirrors the UI's Advanced Options \"Clean-up Load Resources\" toggle (ON = delete, OFF = retain).";
|
|
228
|
+
export declare const descLoadtestResources = "Kubernetes-only per-pod resource limits and requests (UI: Advanced Options > Resource Requirements; OFF by default -- omit entirely unless the user opts in). Object shape: { limits?: { cpu?, memory? }, requests?: { cpu?, memory? } }. cpu is cores/millicores (e.g. \"100m\", \"0.5\", \"2\"); memory is a whole-byte quantity (e.g. \"128Mi\", \"1Gi\", \"134217728\"). Only 'cpu' and 'memory' keys are allowed in each section. Per resource, requests must not exceed limits. Maps to spec.resources. Identical field for Locust/K6/JMeter.";
|
|
229
|
+
export declare const descLoadtestProperties = "JMeter only: runtime property overrides injected into the plan without editing the uploaded file -- reference as ${__P(NAME)} in the .jmx. Array of {key, value, send_to_engines?}. send_to_engines (maps to sendToEngines / the JMeter -G flag) controls whether the property also reaches remote Distributed Execution workers; omit (false) for controller-only properties.";
|
|
230
|
+
export declare const descLoadtestThresholds = "JMeter only: pass/fail criteria evaluated against the run's .jtl results after the test completes (the uploaded plan's own Assertions still apply per-request during the run). Array of {metric, stat?, operator, value, abort_on_fail?}. metric: one of response_time_ms | error_rate_pct | throughput_rps | latency_ms. operator: one of < | <= | > | >= | == | !=. stat (e.g. p95, p99, avg, median, max) is REQUIRED when metric is response_time_ms or latency_ms. abort_on_fail (maps to abortOnFail) marks the threshold as run-aborting on failure.";
|
|
183
231
|
export declare const descHubIdentityExact = "The unique identity of the ChaosHub. Use harness_list with resource_type=chaos_hub to find hub identities.";
|
|
184
232
|
export declare const descHubName = "Display name for the ChaosHub.";
|
|
185
233
|
export declare const descHubNameUpdate = "Updated display name for the ChaosHub.";
|
|
@@ -334,8 +382,12 @@ export declare const descExperimentInfraIdCreate = "Target infrastructure refere
|
|
|
334
382
|
export declare const descExperimentCronSyntax = "Optional cron expression for scheduling recurring experiment runs (e.g. '0 0 * * *' for daily). When provided, the experiment type is automatically set to CronExperimentV2. NOT validated at save time \u2014 invalid cron will fail when the schedule is actually enabled. Omit for one-time experiments.";
|
|
335
383
|
export declare const descSDAgentIdentity = "Service Discovery agent identity \u2014 the path segment shown in the SD UI URL (e.g. 'chaosinfra'). Each agent is bound to one Harness environment and one Kubernetes cluster.";
|
|
336
384
|
export declare const descSDEnvironmentId = "Harness environment identifier the SD agent is bound to (e.g. 'dev'). Required by SD's AgentAccessCheck middleware to resolve the agent \u2014 the same agent identity may exist in multiple environments.";
|
|
385
|
+
export declare const descSDAgentListEnvironmentId = "Optional narrowing filter \u2014 the LIST agents endpoint does not require it (unlike discovered_namespace/discovered_service/discovered_network_map, which use AgentAccessCheck and require both agent_identity + environment_id). Omit to list agents across every environment in scope.";
|
|
337
386
|
export declare const descSDFetchAll = "When true, fetch every result and ignore page/limit (the API returns the full unpaginated list). Useful for small/medium clusters; avoid on very large clusters.";
|
|
338
|
-
export declare const descSDAgentDiagnostic = "404 from SD endpoints almost always means agent_identity or environment_id is wrong \u2014 both are required for AgentAccessCheck to resolve the agent. Both can be confirmed from the SD UI URL or
|
|
387
|
+
export declare const descSDAgentDiagnostic = "404 from SD endpoints almost always means agent_identity or environment_id is wrong \u2014 both are required for AgentAccessCheck to resolve the agent. Both can be confirmed from the SD UI URL or via discovered_agent list.";
|
|
388
|
+
export declare const descDiscoveredAgent = "Service Discovery agent \u2014 one SD deployment running inside a customer's Kubernetes cluster, bound to a single Harness environment. Its 'identity' field is the value other resources take as 'agent_identity' (discovered_namespace / discovered_service / discovered_network_map) and as 'agent_id' (chaos_service create/update). Soft-deleted agents are hidden from list results. The token field is never returned.";
|
|
389
|
+
export declare const descListDiscoveredAgents = "List Service Discovery agents in the given account/org/project scope. Use this to look up the 'identity' value required by other Service Discovery resources and by chaos_service create/update. Optional environment_id narrows to one environment; omit to list agents across all environments in scope. Optional search does a case-insensitive regex match on the agent name. Supports page/limit pagination or all=true to fetch everything (all=true also skips per-agent installation/service/network-map count enrichment, so responses are lighter).";
|
|
390
|
+
export declare const descDiscoveredAgentSearch = "Case-insensitive substring match against the SD agent name field.";
|
|
339
391
|
export declare const descDiscoveredNamespace = "Read-only snapshot of a Kubernetes Namespace recorded by a Service Discovery agent \u2014 includes the namespace name, UID, resource version, labels, annotations, owner references, and the full corev1.NamespaceSpec/Status from the cluster's last sync. Use namespaces as the scope boundary when listing discovered_service or future discovered_workload/discovered_connection resources for the same agent.";
|
|
340
392
|
export declare const descListDiscoveredNamespaces = "List Kubernetes namespaces snapshotted by a Service Discovery agent. Requires agent_identity (path) and environment_id (query). Returns soft-deleted-aware results (only live namespaces). Optional name filter (exact match, NOT substring \u2014 see name field doc). Supports page/limit pagination or all=true to fetch everything.";
|
|
341
393
|
export declare const descSDNamespaceNameFilter = "Filter namespaces by name \u2014 EXACT case-sensitive equality match against the Kubernetes namespace name (the SD backend wraps this in a Mongo equality filter, not a regex). For partial/fuzzy lookup, list all namespaces (use 'all=true') and filter client-side. Note: this differs from discovered_service's 'search' param, which IS case-insensitive substring.";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chaos-descriptions.d.ts","sourceRoot":"","sources":["../../../src/registry/toolsets/chaos-descriptions.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"chaos-descriptions.d.ts","sourceRoot":"","sources":["../../../src/registry/toolsets/chaos-descriptions.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,gBAAgB,wyNAyDkC,CAAC;AAIhE,eAAO,MAAM,mBAAmB,y6EAgB8H,CAAC;AAE/J,eAAO,MAAM,sBAAsB,gkBAKrB,CAAC;AAEf,eAAO,MAAM,cAAc,sgBAI8C,CAAC;AAE1E,eAAO,MAAM,2BAA2B,+xBAKgG,CAAC;AAEzI,eAAO,MAAM,2BAA2B,uHAAuH,CAAC;AAEhK,eAAO,MAAM,uBAAuB,gKAAgK,CAAC;AAErM,eAAO,MAAM,gBAAgB,8TAAyT,CAAC;AAEvV,eAAO,MAAM,8BAA8B,gLAA8K,CAAC;AAC1N,eAAO,MAAM,iCAAiC,0fAA+e,CAAC;AAC9hB,eAAO,MAAM,oBAAoB,gGAAgG,CAAC;AAClI,eAAO,MAAM,+BAA+B,yMAAyM,CAAC;AACtP,eAAO,MAAM,wBAAwB,0HAA0H,CAAC;AAChK,eAAO,MAAM,kCAAkC,0HAA0H,CAAC;AAC1K,eAAO,MAAM,wBAAwB,4FAA4F,CAAC;AAClI,eAAO,MAAM,sBAAsB,wEAAwE,CAAC;AAE5G,eAAO,MAAM,qBAAqB,iVAAiV,CAAC;AACpX,eAAO,MAAM,mBAAmB,gGAAgG,CAAC;AACjI,eAAO,MAAM,sBAAsB,wTAAwT,CAAC;AAC5V,eAAO,MAAM,kCAAkC,4UAAuU,CAAC;AACvX,eAAO,MAAM,6BAA6B,qPAAqP,CAAC;AAChS,eAAO,MAAM,sBAAsB,w7GAqB+H,CAAC;AAEnK,eAAO,MAAM,0BAA0B,oMAAoM,CAAC;AAC5O,eAAO,MAAM,oBAAoB,yDAAyD,CAAC;AAC3F,eAAO,MAAM,2BAA2B,0DAA0D,CAAC;AACnG,eAAO,MAAM,wBAAwB,6IAA6I,CAAC;AACnL,eAAO,MAAM,iCAAiC,yWAAoW,CAAC;AACnZ,eAAO,MAAM,uBAAuB,sSAAsS,CAAC;AAC3U,eAAO,MAAM,6BAA6B,2FAA2F,CAAC;AACtI,eAAO,MAAM,gCAAgC,uSAAgS,CAAC;AAC9U,eAAO,MAAM,kCAAkC,gYAA2X,CAAC;AAC3a,eAAO,MAAM,4BAA4B,yKAAoK,CAAC;AAC9M,eAAO,MAAM,sBAAsB,umBAAgmB,CAAC;AAEpoB,eAAO,MAAM,4BAA4B,0UAAqU,CAAC;AAE/W,eAAO,MAAM,sBAAsB,w6BAA45B,CAAC;AACh8B,eAAO,MAAM,0BAA0B,iwBAAgvB,CAAC;AAExxB,eAAO,MAAM,iBAAiB,g0FAgCqC,CAAC;AAEpE,eAAO,MAAM,0BAA0B,+6BAO6H,CAAC;AAErK,eAAO,MAAM,kBAAkB,6rDAsB0L,CAAC;AAE1N,eAAO,MAAM,sBAAsB,qJAAqJ,CAAC;AAEzL,eAAO,MAAM,0BAA0B,sIAAsI,CAAC;AAE9K,eAAO,MAAM,sBAAsB,sDAAsD,CAAC;AAE1F,eAAO,MAAM,+BAA+B,iIAAiI,CAAC;AAE9K,eAAO,MAAM,yBAAyB,4JAA4J,CAAC;AAEnM,eAAO,MAAM,6BAA6B,oFAAoF,CAAC;AAE/H,eAAO,MAAM,2BAA2B,6EAA6E,CAAC;AAEtH,eAAO,MAAM,gCAAgC,sEAAsE,CAAC;AAEpH,eAAO,MAAM,uBAAuB,wDAAwD,CAAC;AAE7F,eAAO,MAAM,sBAAsB,+DAA+D,CAAC;AAEnG,eAAO,MAAM,2BAA2B,uEAAuE,CAAC;AAEhH,eAAO,MAAM,YAAY,qpCASmI,CAAC;AAE7J,eAAO,MAAM,cAAc,4KAA4K,CAAC;AAExM,eAAO,MAAM,uBAAuB,o5CASiO,CAAC;AAEtQ,eAAO,MAAM,uBAAuB,+VAEuE,CAAC;AAE5G,eAAO,MAAM,kBAAkB,wZAEmG,CAAC;AAEnI,eAAO,MAAM,uBAAuB,wFAAwF,CAAC;AAE7H,eAAO,MAAM,aAAa,kFAAkF,CAAC;AAE7G,eAAO,MAAM,sBAAsB,8cAGqE,CAAC;AAEzG,eAAO,MAAM,sBAAsB,ifAIyE,CAAC;AAE7G,eAAO,MAAM,uBAAuB,ugBAIyE,CAAC;AAE9G,eAAO,MAAM,iBAAiB,gaAI6D,CAAC;AAE5F,eAAO,MAAM,oBAAoB,+TAG2B,CAAC;AAI7D,eAAO,MAAM,mBAAmB,uOAEC,CAAC;AAClC,eAAO,MAAM,iBAAiB,4ZAAqZ,CAAC;AAEpb,eAAO,MAAM,oBAAoB,syBAI+S,CAAC;AAEjV,eAAO,MAAM,cAAc,gMAEM,CAAC;AAElC,eAAO,MAAM,YAAY,gLACmH,CAAC;AAE7I,eAAO,MAAM,gBAAgB,8CAA8C,CAAC;AAC5E,eAAO,MAAM,YAAY,sEAAoE,CAAC;AAC9F,eAAO,MAAM,kBAAkB,wGAAwG,CAAC;AAExI,eAAO,MAAM,eAAe,ytZA0FkJ,CAAC;AAE/K,eAAO,MAAM,mBAAmB,iqUA+C+d,CAAC;AAEhgB,eAAO,MAAM,gBAAgB,oHAAoH,CAAC;AAClJ,eAAO,MAAM,kBAAkB,kEAAkE,CAAC;AAClG,eAAO,MAAM,wBAAwB,gtBAAosB,CAAC;AAC1uB,eAAO,MAAM,sBAAsB,gQAAwP,CAAC;AAE5R,eAAO,MAAM,2BAA2B,kRAEkD,CAAC;AAE3F,eAAO,MAAM,yBAAyB,mcAI4B,CAAC;AAEnE,eAAO,MAAM,4BAA4B,yKAEK,CAAC;AAE/C,eAAO,MAAM,2BAA2B,wOAAsO,CAAC;AAE/Q,eAAO,MAAM,kBAAkB,oDAAoD,CAAC;AAEpF,eAAO,MAAM,iBAAiB,u4BAK0N,CAAC;AACzP,eAAO,MAAM,eAAe,mCAAmC,CAAC;AAQhE,eAAO,MAAM,yBAAyB,qqHAUoc,CAAC;AAE3e,eAAO,MAAM,kBAAkB,u9wBAqQ6M,CAAC;AAC7O,eAAO,MAAM,kBAAkB,gCAAgC,CAAC;AAEhE,eAAO,MAAM,kBAAkB,k+LAYyD,CAAC;AAEzF,eAAO,MAAM,gBAAgB,mjBAIiF,CAAC;AAC/G,eAAO,MAAM,eAAe,gDAAgD,CAAC;AAE7E,eAAO,MAAM,8BAA8B,knDAO8L,CAAC;AAE1O,eAAO,MAAM,yBAAyB,8hBAGwC,CAAC;AAE/E,eAAO,MAAM,yBAAyB,8MAA8M,CAAC;AAErP,eAAO,MAAM,cAAc,yHAAyH,CAAC;AAErJ,eAAO,MAAM,kBAAkB,mGAAmG,CAAC;AAEnI,eAAO,MAAM,YAAY,+QAE+B,CAAC;AAEzD,eAAO,MAAM,UAAU,4JACgG,CAAC;AAExH,eAAO,MAAM,aAAa,2qBAK+F,CAAC;AAE1H,eAAO,MAAM,aAAa,6fAIsE,CAAC;AAEjG,eAAO,MAAM,aAAa,kSAGe,CAAC;AAE1C,eAAO,MAAM,cAAc,sBAAsB,CAAC;AAClD,eAAO,MAAM,YAAY,4BAA4B,CAAC;AAEtD,eAAO,MAAM,sBAAsB,+TAEwF,CAAC;AAE5H,eAAO,MAAM,oBAAoB,uTAEiF,CAAC;AAEnH,eAAO,MAAM,uBAAuB,oKAEU,CAAC;AAE/C,eAAO,MAAM,uBAAuB,mWAE0H,CAAC;AAE/J,eAAO,MAAM,qBAAqB,ieAE8G,CAAC;AAEjJ,eAAO,MAAM,gBAAgB,0EAAiF,CAAC;AAC/G,eAAO,MAAM,uBAAuB,2GAA2G,CAAC;AAChJ,eAAO,MAAM,iBAAiB,gJAAsJ,CAAC;AACrL,eAAO,MAAM,aAAa,+EAAyF,CAAC;AACpH,eAAO,MAAM,iBAAiB,yHAA+H,CAAC;AAE9J,eAAO,MAAM,uBAAuB,qXAG8C,CAAC;AACnF,eAAO,MAAM,qBAAqB,0LACqG,CAAC;AACxI,eAAO,MAAM,wBAAwB,+NAEkB,CAAC;AAExD,eAAO,MAAM,kBAAkB,wZAGmD,CAAC;AACnF,eAAO,MAAM,gBAAgB,gLACqG,CAAC;AACnI,eAAO,MAAM,mBAAmB,2MAEuB,CAAC;AAExD,eAAO,MAAM,sBAAsB,4QAEwD,CAAC;AAC5F,eAAO,MAAM,oBAAoB,kyBAGyH,CAAC;AAE3J,eAAO,MAAM,uBAAuB,uTAGsB,CAAC;AAE3D,eAAO,MAAM,uBAAuB,+QAEwD,CAAC;AAC7F,eAAO,MAAM,qBAAqB,oyBAGwH,CAAC;AAC3J,eAAO,MAAM,wBAAwB,mVAGqB,CAAC;AAE3D,eAAO,MAAM,iBAAiB,gTAGqD,CAAC;AAEpF,eAAO,MAAM,yBAAyB,iXAGsB,CAAC;AAE7D,eAAO,MAAM,uBAAuB,+BAA+B,CAAC;AACpE,eAAO,MAAM,qBAAqB,qCAAqC,CAAC;AAExE,eAAO,MAAM,aAAa,qBAAqB,CAAC;AAChD,eAAO,MAAM,WAAW,2BAA2B,CAAC;AAIpD,eAAO,MAAM,eAAe,kwBAI2H,CAAC;AAExJ,eAAO,MAAM,iBAAiB,ocAGmE,CAAC;AAElG,eAAO,MAAM,iBAAiB,2iBAEuG,CAAC;AAGtI,eAAO,MAAM,oBAAoB,4LAA4L,CAAC;AAC9N,eAAO,MAAM,kBAAkB,uDAAuD,CAAC;AACvF,eAAO,MAAM,8BAA8B,+NAA+N,CAAC;AAC3Q,eAAO,MAAM,kCAAkC,+PAA0P,CAAC;AAG1S,eAAO,MAAM,iBAAiB,oGAAoG,CAAC;AACnI,eAAO,MAAM,eAAe,kDAAkD,CAAC;AAG/E,eAAO,MAAM,iBAAiB,iJAAiJ,CAAC;AAChL,eAAO,MAAM,eAAe,kDAAkD,CAAC;AAC/E,eAAO,MAAM,kBAAkB,uIAAuI,CAAC;AACvK,eAAO,MAAM,kBAAkB,2DAA2D,CAAC;AAC3F,eAAO,MAAM,kBAAkB,8CAA8C,CAAC;AAC9E,eAAO,MAAM,iBAAiB,sDAAsD,CAAC;AACrF,eAAO,MAAM,iBAAiB,qDAAqD,CAAC;AACpF,eAAO,MAAM,qBAAqB,qJAAqJ,CAAC;AACxL,eAAO,MAAM,6BAA6B,mFAAmF,CAAC;AAC9H,eAAO,MAAM,sBAAsB,gNAAgN,CAAC;AAGpP,eAAO,MAAM,sBAAsB,+GAA+G,CAAC;AACnJ,eAAO,MAAM,sBAAsB,qFAAqF,CAAC;AACzH,eAAO,MAAM,oBAAoB,gDAAgD,CAAC;AAClF,eAAO,MAAM,gBAAgB,0CAA0C,CAAC;AACxE,eAAO,MAAM,uBAAuB,2CAA2C,CAAC;AAChF,eAAO,MAAM,gBAAgB,6CAA6C,CAAC;AAC3E,eAAO,MAAM,gBAAgB,mEAAmE,CAAC;AACjG,eAAO,MAAM,kBAAkB,4NAA4N,CAAC;AAG5P,eAAO,MAAM,uBAAuB,8EAA8E,CAAC;AACnH,eAAO,MAAM,qBAAqB,+DAA+D,CAAC;AAClG,eAAO,MAAM,6BAA6B,2DAA2D,CAAC;AACtG,eAAO,MAAM,8BAA8B,wDAAwD,CAAC;AACpG,eAAO,MAAM,uBAAuB,+CAA+C,CAAC;AACpF,eAAO,MAAM,2BAA2B,oCAAoC,CAAC;AAC7E,eAAO,MAAM,qBAAqB,gDAAgD,CAAC;AACnF,eAAO,MAAM,wBAAwB,iCAAiC,CAAC;AACvE,eAAO,MAAM,kBAAkB,2GAA2G,CAAC;AAC3I,eAAO,MAAM,cAAc,8BAA8B,CAAC;AAC1D,eAAO,MAAM,iBAAiB,sBAAsB,CAAC;AACrD,eAAO,MAAM,qBAAqB,qDAAqD,CAAC;AACxF,eAAO,MAAM,YAAY,qCAAqC,CAAC;AAC/D,eAAO,MAAM,uBAAuB,qFAAqF,CAAC;AAC1H,eAAO,MAAM,iBAAiB,qDAAqD,CAAC;AACpF,eAAO,MAAM,eAAe,mDAAmD,CAAC;AAChF,eAAO,MAAM,sBAAsB,iEAAiE,CAAC;AACrG,eAAO,MAAM,oBAAoB,yDAAyD,CAAC;AAC3F,eAAO,MAAM,iBAAiB,8DAA8D,CAAC;AAI7F,eAAO,MAAM,iBAAiB,kvGAgDyD,CAAC;AACxF,eAAO,MAAM,eAAe,4OAE2B,CAAC;AACxD,eAAO,MAAM,eAAe,8NAC6E,CAAC;AAE1G,eAAO,MAAM,sBAAsB,8iJAmEhC,CAAC;AAEJ,eAAO,MAAM,iBAAiB,iWAE8G,CAAC;AAE7I,eAAO,MAAM,gBAAgB,4aAEuL,CAAC;AAErN,eAAO,MAAM,WAAW,6UAE4L,CAAC;AAErN,eAAO,MAAM,oBAAoB,gYAEuK,CAAC;AAEzM,eAAO,MAAM,eAAe,6BAA6B,CAAC;AAC1D,eAAO,MAAM,gBAAgB,6BAA6B,CAAC;AAC3D,eAAO,MAAM,kBAAkB,sDAAsD,CAAC;AAEtF,eAAO,MAAM,mBAAmB,4PAGS,CAAC;AAE1C,eAAO,MAAM,6BAA6B,g3BAIgH,CAAC;AAE3J,eAAO,MAAM,+BAA+B,2MAEZ,CAAC;AAEjC,eAAO,MAAM,8BAA8B,m3BAI+G,CAAC;AAE3J,eAAO,MAAM,kCAAkC,kOAEyB,CAAC;AAIzE,eAAO,MAAM,qBAAqB,+HAA+H,CAAC;AAClK,eAAO,MAAM,cAAc,6DAA6D,CAAC;AACzF,eAAO,MAAM,0BAA0B,mCAAmC,CAAC;AAC3E,eAAO,MAAM,0BAA0B,spCAWuD,CAAC;AAI/F,eAAO,MAAM,oBAAoB,6DAA6D,CAAC;AAC/F,eAAO,MAAM,iBAAiB,mGAAmG,CAAC;AAClI,eAAO,MAAM,aAAa,2GAA2G,CAAC;AACtI,eAAO,MAAM,kBAAkB,oBAAoB,CAAC;AACpD,eAAO,MAAM,sBAAsB,8DAA8D,CAAC;AAClG,eAAO,MAAM,YAAY,qKAAqK,CAAC;AAC/L,eAAO,MAAM,gBAAgB,6OAA6O,CAAC;AAC3Q,eAAO,MAAM,eAAe,oDAAoD,CAAC;AACjF,eAAO,MAAM,gBAAgB,iMAAwL,CAAC;AACtN,eAAO,MAAM,gBAAgB,yYAA6X,CAAC;AAC3Z,eAAO,MAAM,oBAAoB,8HAA8H,CAAC;AAChK,eAAO,MAAM,uBAAuB,2DAAyD,CAAC;AAC9F,eAAO,MAAM,gBAAgB,iFAAiF,CAAC;AAC/G,eAAO,MAAM,iBAAiB,yKAAyK,CAAC;AACxM,eAAO,MAAM,mBAAmB,gJAAgJ,CAAC;AACjL,eAAO,MAAM,sBAAsB,6KAAmK,CAAC;AACvM,eAAO,MAAM,qBAAqB,4MAA4M,CAAC;AAC/O,eAAO,MAAM,kBAAkB,8iBAAoiB,CAAC;AACpkB,eAAO,MAAM,wBAAwB,iRAAgQ,CAAC;AACtS,eAAO,MAAM,uBAAuB,uOAAqO,CAAC;AAC1Q,eAAO,MAAM,4BAA4B,gbAA0a,CAAC;AACpd,eAAO,MAAM,oBAAoB,6pBAAwpB,CAAC;AAC1rB,eAAO,MAAM,2BAA2B,2VAAoV,CAAC;AAC7X,eAAO,MAAM,iBAAiB,6FAA6F,CAAC;AAC5H,eAAO,MAAM,uBAAuB,sGAAsG,CAAC;AAC3I,eAAO,MAAM,qBAAqB,iGAAiG,CAAC;AACpI,eAAO,MAAM,uBAAuB,gYAAgY,CAAC;AACra,eAAO,MAAM,mBAAmB,+KAA+K,CAAC;AAChN,eAAO,MAAM,oBAAoB,iIAAiI,CAAC;AACnK,eAAO,MAAM,sBAAsB,mHAAmH,CAAC;AACvJ,eAAO,MAAM,mBAAmB,smCAAklC,CAAC;AAEnnC,eAAO,MAAM,yBAAyB,0VAAwV,CAAC;AAC/X,eAAO,MAAM,qBAAqB,whBAA4gB,CAAC;AAE/iB,eAAO,MAAM,sBAAsB,mXAAmX,CAAC;AACvZ,eAAO,MAAM,sBAAsB,giBAAgiB,CAAC;AAEpkB,eAAO,MAAM,oBAAoB,+GAA+G,CAAC;AACjJ,eAAO,MAAM,WAAW,mCAAmC,CAAC;AAC5D,eAAO,MAAM,iBAAiB,2CAA2C,CAAC;AAC1E,eAAO,MAAM,kBAAkB,iCAAiC,CAAC;AACjE,eAAO,MAAM,wBAAwB,6HAA6H,CAAC;AACnK,eAAO,MAAM,WAAW,mDAAmD,CAAC;AAC5E,eAAO,MAAM,kBAAkB,oIAAoI,CAAC;AACpK,eAAO,MAAM,gBAAgB,oNAAoN,CAAC;AAClP,eAAO,MAAM,YAAY,2FAA2F,CAAC;AACrH,eAAO,MAAM,cAAc,4FAA4F,CAAC;AACxH,eAAO,MAAM,aAAa,4CAA4C,CAAC;AAIvE,eAAO,MAAM,eAAe,sIAAsI,CAAC;AACnK,eAAO,MAAM,kBAAkB,0CAA0C,CAAC;AAC1E,eAAO,MAAM,oBAAoB,sFAAsF,CAAC;AACxH,eAAO,MAAM,YAAY,oFAAoF,CAAC;AAC9G,eAAO,MAAM,aAAa,8CAA8C,CAAC;AACzE,eAAO,MAAM,aAAa,+CAA+C,CAAC;AAC1E,eAAO,MAAM,qBAAqB,sFAAsF,CAAC;AACzH,eAAO,MAAM,aAAa,8BAA8B,CAAC;AACzD,eAAO,MAAM,WAAW,wEAAwE,CAAC;AACjG,eAAO,MAAM,QAAQ,otBAMyF,CAAC;AAC/G,eAAO,MAAM,mBAAmB,qhBAAqhB,CAAC;AACtjB,eAAO,MAAM,kBAAkB,+CAA+C,CAAC;AAI/E,eAAO,MAAM,aAAa,uBAAuB,CAAC;AAClD,eAAO,MAAM,iBAAiB,iFAAiF,CAAC;AAChH,eAAO,MAAM,oBAAoB,0CAA0C,CAAC;AAC5E,eAAO,MAAM,qBAAqB,kDAAkD,CAAC;AAIrF,eAAO,MAAM,cAAc,yIAAyI,CAAC;AACrK,eAAO,MAAM,yBAAyB,6CAA6C,CAAC;AACpF,eAAO,MAAM,kBAAkB,6DAA6D,CAAC;AAI7F,eAAO,MAAM,mBAAmB,uNAAqN,CAAC;AACtP,eAAO,MAAM,oBAAoB,qEAAqE,CAAC;AAIvG,eAAO,MAAM,mBAAmB,8BAA8B,CAAC;AAC/D,eAAO,MAAM,2BAA2B,2DAA2D,CAAC;AACpG,eAAO,MAAM,yBAAyB,qFAAqF,CAAC;AAI5H,eAAO,MAAM,qBAAqB,mDAAmD,CAAC;AAEtF,eAAO,MAAM,qBAAqB,kLAA6K,CAAC;AAEhN,eAAO,MAAM,iBAAiB,2EAAyE,CAAC;AACxG,eAAO,MAAM,uBAAuB,2GAAyG,CAAC;AAC9I,eAAO,MAAM,qBAAqB,2GAAyG,CAAC;AAE5I,eAAO,MAAM,iCAAiC,8QAA8Q,CAAC;AAE7T,eAAO,MAAM,2BAA2B,+FAA+F,CAAC;AAExI,eAAO,MAAM,+BAA+B,4HAA4H,CAAC;AAIzK,eAAO,MAAM,iBAAiB,0FAA0F,CAAC;AACzH,eAAO,MAAM,2BAA2B,yPAAoP,CAAC;AAC7R,eAAO,MAAM,kBAAkB,4GAA4G,CAAC;AAC5I,eAAO,MAAM,sBAAsB,0GAA0G,CAAC;AAC9I,eAAO,MAAM,kBAAkB,uDAAuD,CAAC;AAIvF,eAAO,MAAM,iBAAiB,oDAAoD,CAAC;AACnF,eAAO,MAAM,WAAW,mIAA+H,CAAC;AACxJ,eAAO,MAAM,mBAAmB,mGAAmG,CAAC;AAIpI,eAAO,MAAM,eAAe,wDAAwD,CAAC;AACrF,eAAO,MAAM,kBAAkB,mFAAmF,CAAC;AACnH,eAAO,MAAM,aAAa,gEAAgE,CAAC;AAC3F,eAAO,MAAM,gBAAgB,mEAAmE,CAAC;AAIjG,eAAO,MAAM,eAAe,oSAEmE,CAAC;AAEhG,eAAO,MAAM,mBAAmB,qgBAGL,CAAC;AAI5B,eAAO,MAAM,oBAAoB,6yBAUqJ,CAAC;AAEvL,eAAO,MAAM,kBAAkB,imBAKmI,CAAC;AAEnK,eAAO,MAAM,oBAAoB,+QAEwE,CAAC;AAE1G,eAAO,MAAM,eAAe,gnCAgBW,CAAC;AAExC,eAAO,MAAM,mBAAmB,gcAI8E,CAAC;AAE/G,eAAO,MAAM,qBAAqB,oPACgI,CAAC;AAEnK,eAAO,MAAM,gBAAgB,8OAE8D,CAAC;AAE5F,eAAO,MAAM,2BAA2B,gNAC4G,CAAC;AAErJ,eAAO,MAAM,2BAA2B,+OAC0I,CAAC;AAEnL,eAAO,MAAM,eAAe,qLAEQ,CAAC;AAErC,eAAO,MAAM,eAAe,yUAEwG,CAAC;AAErI,eAAO,MAAM,aAAa,kSAE4D,CAAC;AAEvF,eAAO,MAAM,qBAAqB,yOAEyD,CAAC;AAE5F,eAAO,MAAM,gBAAgB,2LAES,CAAC;AAIvC,eAAO,MAAM,mBAAmB,uCAAuC,CAAC;AACxE,eAAO,MAAM,mBAAmB,wCAAwC,CAAC;AACzE,eAAO,MAAM,mBAAmB,yLAC0D,CAAC;AAI3F,eAAO,MAAM,uBAAuB,8JAA8J,CAAC;AACnM,eAAO,MAAM,YAAY,6HAA6H,CAAC;AACvJ,eAAO,MAAM,SAAS,kIAAkI,CAAC;AACzJ,eAAO,MAAM,iBAAiB,gDAAgD,CAAC;AAC/E,eAAO,MAAM,gBAAgB,+FAA+F,CAAC;AAC7H,eAAO,MAAM,cAAc,kGAAkG,CAAC;AAC9H,eAAO,MAAM,oBAAoB,uGAAuG,CAAC;AACzI,eAAO,MAAM,aAAa,uIAAuI,CAAC;AAClK,eAAO,MAAM,sBAAsB,iFAAiF,CAAC;AACrH,eAAO,MAAM,sBAAsB,qEAAqE,CAAC;AACzG,eAAO,MAAM,eAAe,8DAA8D,CAAC;AAC3F,eAAO,MAAM,iBAAiB,mEAAmE,CAAC;AAClG,eAAO,MAAM,sBAAsB,qFAAmF,CAAC;AACvH,eAAO,MAAM,2BAA2B,6HAA2H,CAAC;AACpK,eAAO,MAAM,iBAAiB,gGAAgG,CAAC;AAC/H,eAAO,MAAM,qBAAqB,uHAAuH,CAAC;AAC1J,eAAO,MAAM,sBAAsB,4HAAwH,CAAC;AAC5J,eAAO,MAAM,0BAA0B,+DAA+D,CAAC;AACvG,eAAO,MAAM,mBAAmB,2DAA2D,CAAC;AAC5F,eAAO,MAAM,oBAAoB,oEAAoE,CAAC;AACtG,eAAO,MAAM,oBAAoB,yEAAyE,CAAC;AAC3G,eAAO,MAAM,oBAAoB,qEAAqE,CAAC;AACvG,eAAO,MAAM,uBAAuB,oFAAoF,CAAC;AACzH,eAAO,MAAM,sBAAsB,4BAA4B,CAAC;AAChE,eAAO,MAAM,sBAAsB,0CAA0C,CAAC;AAC9E,eAAO,MAAM,gBAAgB,8oDASsJ,CAAC;AACpL,eAAO,MAAM,oBAAoB,kMAAkM,CAAC;AACpO,eAAO,MAAM,cAAc,uGAAuG,CAAC;AACnI,eAAO,MAAM,wBAAwB,uLAAgL,CAAC;AACtN,eAAO,MAAM,0BAA0B,kIAAkI,CAAC;AAC1K,eAAO,MAAM,yBAAyB,+RAA0R,CAAC;AACjU,eAAO,MAAM,wBAAwB,oeAA8d,CAAC;AACpgB,eAAO,MAAM,2BAA2B,+KAA2K,CAAC;AACpN,eAAO,MAAM,2BAA2B,yCAAyC,CAAC;AAClF,eAAO,MAAM,oBAAoB,gIAA4H,CAAC;AAC9J,eAAO,MAAM,uBAAuB,iHAA6G,CAAC;AAClJ,eAAO,MAAM,2BAA2B,2NAAyN,CAAC;AAClQ,eAAO,MAAM,oBAAoB,0EAA0E,CAAC;AAC5G,eAAO,MAAM,4BAA4B,iGAAiG,CAAC;AAC3I,eAAO,MAAM,cAAc,wIAAwI,CAAC;AACpK,eAAO,MAAM,uBAAuB,8FAA8F,CAAC;AACnI,eAAO,MAAM,iBAAiB,0HAA0H,CAAC;AAEzJ,eAAO,MAAM,iBAAiB,sFAAiF,CAAC;AAChH,eAAO,MAAM,aAAa,mGAAmG,CAAC;AAC9H,eAAO,MAAM,iBAAiB,8FAA8F,CAAC;AAI7H,eAAO,MAAM,eAAe,qwGAiB2O,CAAC;AAExQ,eAAO,MAAM,eAAe,u9BASgH,CAAC;AAE7I,eAAO,MAAM,cAAc,wcAIgB,CAAC;AAE5C,eAAO,MAAM,gBAAgB,6wBAWsE,CAAC;AAEpG,eAAO,MAAM,cAAc,qGAAqG,CAAC;AAEjI,eAAO,MAAM,oBAAoB,qaAG0D,CAAC;AAE5F,eAAO,MAAM,qBAAqB,iEAAiE,CAAC;AAEpG,eAAO,MAAM,mBAAmB,gFAAgF,CAAC;AAEjH,eAAO,MAAM,cAAc,6FAA6F,CAAC;AAEzH,eAAO,MAAM,oBAAoB,gfAa/B,CAAC;AAIH,eAAO,MAAM,iBAAiB,8iBAAyiB,CAAC;AAExkB,eAAO,MAAM,iBAAiB,yOAAyO,CAAC;AAExQ,eAAO,MAAM,eAAe,4IAA4I,CAAC;AAEzK,eAAO,MAAM,kBAAkB,sMAAsM,CAAC;AAEtO,eAAO,MAAM,kBAAkB,+HAA+H,CAAC;AAE/J,eAAO,MAAM,kBAAkB,gFAAgF,CAAC;AAEhH,eAAO,MAAM,yBAAyB,yHAAyH,CAAC;AAEhK,eAAO,MAAM,gBAAgB,8CAA8C,CAAC;AAE5E,eAAO,MAAM,uBAAuB,4CAA4C,CAAC;AAEjF,eAAO,MAAM,gBAAgB,2NAA2N,CAAC;AAEzP,eAAO,MAAM,cAAc,6FAA6F,CAAC;AAEzH,eAAO,MAAM,cAAc,8xBAAmxB,CAAC;AAI/yB,eAAO,MAAM,0BAA0B,sqBAAsqB,CAAC;AAE9sB,eAAO,MAAM,wBAAwB,4TAA4T,CAAC;AAElW,eAAO,MAAM,iBAAiB,4EAA4E,CAAC;AAE3G,eAAO,MAAM,uBAAuB,wHAAwH,CAAC;AAE7J,eAAO,MAAM,yBAAyB,iGAAiG,CAAC;AAIxI,eAAO,MAAM,oBAAoB,ypCAUhC,CAAC;AAEF,eAAO,MAAM,wBAAwB,inNA0G+D,CAAC;AAErG,eAAO,MAAM,sBAAsB,4SAAuS,CAAC;AAE3U,eAAO,MAAM,uBAAuB,4rBASyB,CAAC;AAE9D,eAAO,MAAM,2BAA2B,y+BAMgG,CAAC;AAEzI,eAAO,MAAM,wBAAwB,gTAA2S,CAAC;AAajV,eAAO,MAAM,mBAAmB,oLAA+K,CAAC;AAEhN,eAAO,MAAM,mBAAmB,+MAA0M,CAAC;AAE3O,eAAO,MAAM,4BAA4B,+RAA0R,CAAC;AAEpU,eAAO,MAAM,cAAc,qKAAqK,CAAC;AAEjM,eAAO,MAAM,qBAAqB,mOAA8N,CAAC;AAGjQ,eAAO,MAAM,mBAAmB,kaAA6Z,CAAC;AAE9b,eAAO,MAAM,wBAAwB,kiBAAkiB,CAAC;AAExkB,eAAO,MAAM,yBAAyB,sEAAsE,CAAC;AAG7G,eAAO,MAAM,uBAAuB,uZAAkZ,CAAC;AAEvb,eAAO,MAAM,4BAA4B,4UAAuU,CAAC;AAEjX,eAAO,MAAM,yBAAyB,6WAAwW,CAAC;AAG/Y,eAAO,MAAM,qBAAqB,qpBAAgpB,CAAC;AAEnrB,eAAO,MAAM,0BAA0B,q5BAE+U,CAAC;AAEvX,eAAO,MAAM,qBAAqB,6MAA6M,CAAC;AAEhP,eAAO,MAAM,kBAAkB,8EAA8E,CAAC;AAG9G,eAAO,MAAM,wBAAwB,65BAOiM,CAAC;AAEvO,eAAO,MAAM,6BAA6B,2YAEqI,CAAC;AAEhL,eAAO,MAAM,sBAAsB,oEAAoE,CAAC;AAExG,eAAO,MAAM,oBAAoB,wOAAmO,CAAC"}
|