@yiaany/ghostapi 0.1.7 → 0.1.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +42 -2
- package/CONTRIBUTING.md +119 -117
- package/LICENSE +21 -21
- package/README.md +208 -185
- package/SECURITY.md +53 -37
- package/dist/actions/gateway.d.ts +179 -0
- package/dist/actions/gateway.js +514 -0
- package/dist/actions/gateway.js.map +1 -0
- package/dist/actions/index.d.ts +2 -0
- package/dist/actions/index.js +2 -0
- package/dist/actions/index.js.map +1 -0
- package/dist/ai/aiClient.js +4 -4
- package/dist/ai/aiClient.js.map +1 -1
- package/dist/ai/aiGenerator.d.ts +2 -2
- package/dist/ai/aiGenerator.js +21 -72
- package/dist/ai/aiGenerator.js.map +1 -1
- package/dist/ai/prompts.js +51 -51
- package/dist/ai/prompts.js.map +1 -1
- package/dist/approvals/approvalInbox.d.ts +150 -0
- package/dist/approvals/approvalInbox.js +412 -0
- package/dist/approvals/approvalInbox.js.map +1 -0
- package/dist/approvals/index.d.ts +2 -0
- package/dist/approvals/index.js +2 -0
- package/dist/approvals/index.js.map +1 -0
- package/dist/behavior/behaviorStore.d.ts +2 -0
- package/dist/behavior/behaviorStore.js +50 -46
- package/dist/behavior/behaviorStore.js.map +1 -1
- package/dist/cache/index.d.ts +2 -0
- package/dist/cache/index.js +58 -14
- package/dist/cache/index.js.map +1 -1
- package/dist/cli/index.js +438 -58
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/openUrl.d.ts +10 -0
- package/dist/cli/openUrl.js +31 -0
- package/dist/cli/openUrl.js.map +1 -0
- package/dist/cli/parser.d.ts +155 -0
- package/dist/cli/parser.js +504 -2
- package/dist/cli/parser.js.map +1 -1
- package/dist/config/dataPaths.d.ts +31 -0
- package/dist/config/dataPaths.js +45 -0
- package/dist/config/dataPaths.js.map +1 -0
- package/dist/config/localConfig.d.ts +1 -2
- package/dist/config/localConfig.js +27 -21
- package/dist/config/localConfig.js.map +1 -1
- package/dist/config/serverConfig.d.ts +2 -0
- package/dist/config/serverConfig.js +8 -1
- package/dist/config/serverConfig.js.map +1 -1
- package/dist/contracts/contract.d.ts +76 -0
- package/dist/contracts/contract.js +603 -0
- package/dist/contracts/contract.js.map +1 -0
- package/dist/contracts/index.d.ts +2 -0
- package/dist/contracts/index.js +2 -0
- package/dist/contracts/index.js.map +1 -0
- package/dist/credentials/credentialBroker.d.ts +207 -0
- package/dist/credentials/credentialBroker.js +588 -0
- package/dist/credentials/credentialBroker.js.map +1 -0
- package/dist/credentials/index.d.ts +2 -0
- package/dist/credentials/index.js +2 -0
- package/dist/credentials/index.js.map +1 -0
- package/dist/dashboard/app.js +685 -615
- package/dist/dashboard/index.html +13 -7
- package/dist/dashboard/styles.css +349 -349
- package/dist/egress/capabilities.d.ts +32 -0
- package/dist/egress/capabilities.js +165 -0
- package/dist/egress/capabilities.js.map +1 -0
- package/dist/egress/linuxBootstrap.d.ts +1 -0
- package/dist/egress/linuxBootstrap.js +121 -0
- package/dist/egress/linuxBootstrap.js.map +1 -0
- package/dist/egress/run.d.ts +18 -0
- package/dist/egress/run.js +305 -0
- package/dist/egress/run.js.map +1 -0
- package/dist/errors/errorEngine.d.ts +2 -2
- package/dist/errors/errorEngine.js +3 -40
- package/dist/errors/errorEngine.js.map +1 -1
- package/dist/evals/evals.d.ts +126 -0
- package/dist/evals/evals.js +466 -0
- package/dist/evals/evals.js.map +1 -0
- package/dist/evals/index.d.ts +2 -0
- package/dist/evals/index.js +2 -0
- package/dist/evals/index.js.map +1 -0
- package/dist/evidence/index.d.ts +2 -0
- package/dist/evidence/index.js +2 -0
- package/dist/evidence/index.js.map +1 -0
- package/dist/evidence/report.d.ts +143 -0
- package/dist/evidence/report.js +556 -0
- package/dist/evidence/report.js.map +1 -0
- package/dist/fault/faultLab.d.ts +5 -4
- package/dist/fault/faultLab.js +66 -24
- package/dist/fault/faultLab.js.map +1 -1
- package/dist/index.d.ts +46 -0
- package/dist/index.js +23 -0
- package/dist/index.js.map +1 -1
- package/dist/inventory/analysis.d.ts +12 -0
- package/dist/inventory/analysis.js +457 -0
- package/dist/inventory/analysis.js.map +1 -0
- package/dist/inventory/index.d.ts +5 -0
- package/dist/inventory/index.js +4 -0
- package/dist/inventory/index.js.map +1 -0
- package/dist/inventory/inventoryController.d.ts +53 -0
- package/dist/inventory/inventoryController.js +1044 -0
- package/dist/inventory/inventoryController.js.map +1 -0
- package/dist/inventory/types.d.ts +579 -0
- package/dist/inventory/types.js +787 -0
- package/dist/inventory/types.js.map +1 -0
- package/dist/landing/assets/index-CxWsopzP.css +1 -0
- package/dist/landing/assets/index-DZlpyhqd.js +55 -0
- package/dist/landing/assets/index-Dk-Xezs3.js +55 -0
- package/dist/landing/index.html +15 -15
- package/dist/ledger/actionLedger.d.ts +125 -0
- package/dist/ledger/actionLedger.js +594 -0
- package/dist/ledger/actionLedger.js.map +1 -0
- package/dist/ledger/index.d.ts +2 -0
- package/dist/ledger/index.js +2 -0
- package/dist/ledger/index.js.map +1 -0
- package/dist/mcp/server.js +4 -3
- package/dist/mcp/server.js.map +1 -1
- package/dist/policy/index.d.ts +3 -0
- package/dist/policy/index.js +2 -0
- package/dist/policy/index.js.map +1 -0
- package/dist/policy/policy.d.ts +14 -0
- package/dist/policy/policy.js +282 -0
- package/dist/policy/policy.js.map +1 -0
- package/dist/policy/types.d.ts +52 -0
- package/dist/policy/types.js +2 -0
- package/dist/policy/types.js.map +1 -0
- package/dist/productTelemetry/index.d.ts +16 -0
- package/dist/productTelemetry/index.js +142 -0
- package/dist/productTelemetry/index.js.map +1 -0
- package/dist/providers/conformance.d.ts +7 -0
- package/dist/providers/conformance.js +48 -0
- package/dist/providers/conformance.js.map +1 -0
- package/dist/providers/index.d.ts +4 -2
- package/dist/providers/index.js +3 -1
- package/dist/providers/index.js.map +1 -1
- package/dist/providers/packs/resendPack.d.ts +2 -0
- package/dist/providers/packs/resendPack.js +147 -0
- package/dist/providers/packs/resendPack.js.map +1 -0
- package/dist/providers/packs/stripePack.d.ts +2 -0
- package/dist/providers/packs/stripePack.js +852 -0
- package/dist/providers/packs/stripePack.js.map +1 -0
- package/dist/providers/registry.d.ts +7 -3
- package/dist/providers/registry.js +55 -4
- package/dist/providers/registry.js.map +1 -1
- package/dist/providers/resend.js +2 -11
- package/dist/providers/resend.js.map +1 -1
- package/dist/providers/runtime.d.ts +8 -0
- package/dist/providers/runtime.js +48 -0
- package/dist/providers/runtime.js.map +1 -0
- package/dist/providers/stripeWebhook.d.ts +13 -0
- package/dist/providers/stripeWebhook.js +50 -0
- package/dist/providers/stripeWebhook.js.map +1 -0
- package/dist/providers/types.d.ts +153 -0
- package/dist/proxy/cacheKey.js +3 -3
- package/dist/proxy/cacheKey.js.map +1 -1
- package/dist/proxy/providerDetector.d.ts +2 -7
- package/dist/proxy/providerDetector.js +4 -4
- package/dist/proxy/providerDetector.js.map +1 -1
- package/dist/proxy/proxyHandler.js +116 -12
- package/dist/proxy/proxyHandler.js.map +1 -1
- package/dist/proxy/requestNormalizer.d.ts +0 -1
- package/dist/proxy/requestNormalizer.js +2 -5
- package/dist/proxy/requestNormalizer.js.map +1 -1
- package/dist/reliability/costGovernance.d.ts +175 -0
- package/dist/reliability/costGovernance.js +515 -0
- package/dist/reliability/costGovernance.js.map +1 -0
- package/dist/reliability/index.d.ts +8 -0
- package/dist/reliability/index.js +5 -0
- package/dist/reliability/index.js.map +1 -0
- package/dist/reliability/reconciliation.d.ts +157 -0
- package/dist/reliability/reconciliation.js +522 -0
- package/dist/reliability/reconciliation.js.map +1 -0
- package/dist/reliability/runtimeHealth.d.ts +60 -0
- package/dist/reliability/runtimeHealth.js +356 -0
- package/dist/reliability/runtimeHealth.js.map +1 -0
- package/dist/reliability/slo.d.ts +131 -0
- package/dist/reliability/slo.js +375 -0
- package/dist/reliability/slo.js.map +1 -0
- package/dist/report/safetyReport.js +7 -3
- package/dist/report/safetyReport.js.map +1 -1
- package/dist/safety/index.d.ts +2 -0
- package/dist/safety/index.js +2 -0
- package/dist/safety/index.js.map +1 -0
- package/dist/safety/safetyController.d.ts +187 -0
- package/dist/safety/safetyController.js +477 -0
- package/dist/safety/safetyController.js.map +1 -0
- package/dist/scenarios/scenarioBundle.d.ts +75 -0
- package/dist/scenarios/scenarioBundle.js +750 -0
- package/dist/scenarios/scenarioBundle.js.map +1 -0
- package/dist/scenarios/scenarioStore.d.ts +1 -0
- package/dist/scenarios/scenarioStore.js +47 -32
- package/dist/scenarios/scenarioStore.js.map +1 -1
- package/dist/security/headerSanitizer.d.ts +2 -0
- package/dist/security/headerSanitizer.js +36 -1
- package/dist/security/headerSanitizer.js.map +1 -1
- package/dist/security/secrets.js +24 -4
- package/dist/security/secrets.js.map +1 -1
- package/dist/server/accessControl.d.ts +5 -0
- package/dist/server/accessControl.js +100 -0
- package/dist/server/accessControl.js.map +1 -0
- package/dist/server/createServer.d.ts +0 -5
- package/dist/server/createServer.js +9 -29
- package/dist/server/createServer.js.map +1 -1
- package/dist/server/eventsStore.d.ts +6 -1
- package/dist/server/eventsStore.js +83 -15
- package/dist/server/eventsStore.js.map +1 -1
- package/dist/server/routes.js +36 -10
- package/dist/server/routes.js.map +1 -1
- package/dist/server/sse.d.ts +2 -1
- package/dist/server/sse.js +15 -3
- package/dist/server/sse.js.map +1 -1
- package/dist/setup/setupGenerator.js +53 -6
- package/dist/setup/setupGenerator.js.map +1 -1
- package/dist/state/stateStore.d.ts +5 -0
- package/dist/state/stateStore.js +48 -62
- package/dist/state/stateStore.js.map +1 -1
- package/dist/storage/fileStore.d.ts +10 -0
- package/dist/storage/fileStore.js +131 -0
- package/dist/storage/fileStore.js.map +1 -0
- package/dist/teamControl/controlPlane.d.ts +255 -0
- package/dist/teamControl/controlPlane.js +918 -0
- package/dist/teamControl/controlPlane.js.map +1 -0
- package/dist/teamControl/deployment.d.ts +33 -0
- package/dist/teamControl/deployment.js +67 -0
- package/dist/teamControl/deployment.js.map +1 -0
- package/dist/teamControl/index.d.ts +4 -0
- package/dist/teamControl/index.js +3 -0
- package/dist/teamControl/index.js.map +1 -0
- package/dist/tests/testGenerator.js +4 -1
- package/dist/tests/testGenerator.js.map +1 -1
- package/dist/trust/index.d.ts +2 -0
- package/dist/trust/index.js +2 -0
- package/dist/trust/index.js.map +1 -0
- package/dist/trust/trustLadder.d.ts +182 -0
- package/dist/trust/trustLadder.js +560 -0
- package/dist/trust/trustLadder.js.map +1 -0
- package/dist/worlds/index.d.ts +2 -0
- package/dist/worlds/index.js +2 -0
- package/dist/worlds/index.js.map +1 -0
- package/dist/worlds/worlds.d.ts +160 -0
- package/dist/worlds/worlds.js +491 -0
- package/dist/worlds/worlds.js.map +1 -0
- package/docs/assets/dashboard.png +0 -0
- package/docs/ci.md +49 -0
- package/docs/commercial/README.md +29 -0
- package/docs/commercial/data-inventory.md +36 -0
- package/docs/commercial/manual-invoicing.md +44 -0
- package/docs/commercial/metrics.md +51 -0
- package/docs/commercial/pricing.md +103 -0
- package/docs/commercial/privacy-policy-draft.md +41 -0
- package/docs/commercial/terms-topics-for-counsel.md +51 -0
- package/docs/design-partners/README.md +52 -0
- package/docs/design-partners/demo-narratives.md +33 -0
- package/docs/design-partners/design-partner-offer.md +39 -0
- package/docs/design-partners/discovery-questions.md +28 -0
- package/docs/design-partners/feedback-capture-template.md +48 -0
- package/docs/design-partners/icp-one-pager.md +43 -0
- package/docs/design-partners/onboarding-checklist.md +33 -0
- package/docs/design-partners/pilot-success-criteria.md +27 -0
- package/docs/design-partners/pricing-interview-script.md +18 -0
- package/docs/design-partners/telemetry-plan.md +48 -0
- package/docs/development/baseline.md +114 -0
- package/docs/development/onboarding-smoke.md +37 -0
- package/docs/development/verification-0.1.8.md +25 -0
- package/docs/enterprise-product-roadmap-ru.md +1879 -0
- package/docs/fundraising/README.md +87 -0
- package/docs/fundraising/data-room-checklist.md +72 -0
- package/docs/fundraising/demo-script.md +52 -0
- package/docs/fundraising/design-partners-50.md +74 -0
- package/docs/fundraising/launch-posts.md +37 -0
- package/docs/fundraising/metrics-and-evidence.md +30 -0
- package/docs/fundraising/roadmap-12-month.md +25 -0
- package/docs/fundraising/technical-due-diligence-index.md +37 -0
- package/docs/fundraising/yc-application.md +25 -0
- package/docs/github-actions.md +84 -0
- package/docs/hosted-pilot.md +111 -0
- package/docs/mcp.md +52 -50
- package/docs/operations/disaster-recovery-runbook.md +81 -0
- package/docs/operations/kill-switch-runbook.md +32 -0
- package/docs/policy.md +61 -0
- package/docs/providers/authoring-packs.md +175 -0
- package/docs/providers/stripe-core-pack.md +82 -0
- package/docs/release-checklist.md +83 -71
- package/docs/release-migration-and-rollback.md +63 -0
- package/docs/release-readiness.md +39 -0
- package/docs/security/action-gateway-threat-model.md +34 -0
- package/docs/security/action-ledger-incident-replay-threat-model.md +42 -0
- package/docs/security/approval-inbox-threat-model.md +35 -0
- package/docs/security/credential-broker-threat-model.md +52 -0
- package/docs/security/egress-threat-model.md +126 -0
- package/docs/security/inventory-threat-model.md +104 -0
- package/docs/security/kill-switch-budgets-threat-model.md +37 -0
- package/docs/security/reliability-threat-model.md +111 -0
- package/docs/security/trust-ladder-threat-model.md +33 -0
- package/docs/team-control-plane.md +72 -0
- package/docs/usage.md +571 -57
- package/examples/README.md +10 -0
- package/examples/agent-instructions/README.md +39 -39
- package/examples/ci-smoke/README.md +21 -0
- package/examples/ci-smoke/ghostapi.policy.yaml +22 -0
- package/examples/ci-smoke/package.json +9 -0
- package/examples/ci-smoke/production-egress.mjs +2 -0
- package/examples/ci-smoke/safe.mjs +17 -0
- package/examples/evals/README.md +24 -0
- package/examples/evals/retry-after.eval.json +52 -0
- package/examples/generic-rest/README.md +27 -27
- package/examples/github-fetch/README.md +35 -35
- package/examples/openai-streaming/README.md +16 -0
- package/examples/openai-streaming/streaming-tool-call.mjs +31 -0
- package/examples/policy/ghostapi.policy.yaml +27 -0
- package/examples/record-replay/README.md +19 -0
- package/examples/record-replay/replay-requests.json +22 -0
- package/examples/record-replay/stripe-checkout.har.json +30 -0
- package/examples/resend-node/README.md +22 -22
- package/examples/stripe-node/README.md +35 -29
- package/examples/stripe-node/checkout-flow.mjs +61 -0
- package/examples/twilio-node/README.md +21 -21
- package/examples/worlds/README.md +19 -0
- package/examples/worlds/subscription-recovery.mjs +12 -0
- package/package.json +27 -12
- package/dist/providers/stripe.d.ts +0 -2
- package/dist/providers/stripe.js +0 -15
- package/dist/providers/stripe.js.map +0 -1
- package/docs/assets/ghostapi-avatar.png +0 -0
package/dist/cli/parser.js
CHANGED
|
@@ -45,6 +45,36 @@ export function parseCliArgs(args) {
|
|
|
45
45
|
if (command === "doctor") {
|
|
46
46
|
return { name: "doctor", options: parseDoctorOptions(args.slice(1)) };
|
|
47
47
|
}
|
|
48
|
+
if (command === "run") {
|
|
49
|
+
return { name: "run", options: parseRunOptions(args.slice(1)) };
|
|
50
|
+
}
|
|
51
|
+
if (command === "policy") {
|
|
52
|
+
return parsePolicyCommand(args.slice(1));
|
|
53
|
+
}
|
|
54
|
+
if (command === "evidence") {
|
|
55
|
+
return parseEvidenceCommand(args.slice(1));
|
|
56
|
+
}
|
|
57
|
+
if (command === "record") {
|
|
58
|
+
return { name: "record", options: parseRecordOptions(args.slice(1)) };
|
|
59
|
+
}
|
|
60
|
+
if (command === "replay") {
|
|
61
|
+
return { name: "replay", options: parseReplayOptions(args.slice(1)) };
|
|
62
|
+
}
|
|
63
|
+
if (command === "contract") {
|
|
64
|
+
return parseContractCommand(args.slice(1));
|
|
65
|
+
}
|
|
66
|
+
if (command === "eval") {
|
|
67
|
+
return { name: "eval", options: parseEvalOptions(args.slice(1)) };
|
|
68
|
+
}
|
|
69
|
+
if (command === "world") {
|
|
70
|
+
return parseWorldCommand(args.slice(1));
|
|
71
|
+
}
|
|
72
|
+
if (command === "action") {
|
|
73
|
+
return parseActionCommand(args.slice(1));
|
|
74
|
+
}
|
|
75
|
+
if (command === "telemetry") {
|
|
76
|
+
return parseTelemetryCommand(args.slice(1));
|
|
77
|
+
}
|
|
48
78
|
if (command === "init") {
|
|
49
79
|
if (args.length > 1)
|
|
50
80
|
throw new CliError(`Unexpected argument: ${args[1]}`, "Use: ghostapi init");
|
|
@@ -84,6 +114,10 @@ function parseStartOptions(args) {
|
|
|
84
114
|
options.open = true;
|
|
85
115
|
continue;
|
|
86
116
|
}
|
|
117
|
+
if (arg === "--allow-external-llm") {
|
|
118
|
+
options.allowExternalLlm = true;
|
|
119
|
+
continue;
|
|
120
|
+
}
|
|
87
121
|
if (arg === "--host") {
|
|
88
122
|
options.host = readValue(args, index, arg);
|
|
89
123
|
index += 1;
|
|
@@ -99,7 +133,7 @@ function parseStartOptions(args) {
|
|
|
99
133
|
index += 1;
|
|
100
134
|
continue;
|
|
101
135
|
}
|
|
102
|
-
throw new CliError(`Unknown start option: ${arg}`, "Supported options: --host, --port, --model, --offline, --https, --open");
|
|
136
|
+
throw new CliError(`Unknown start option: ${arg}`, "Supported options: --host, --port, --model, --offline, --https, --allow-external-llm, --open");
|
|
103
137
|
}
|
|
104
138
|
return options;
|
|
105
139
|
}
|
|
@@ -140,15 +174,477 @@ function parseDoctorOptions(args) {
|
|
|
140
174
|
const options = {};
|
|
141
175
|
for (let index = 0; index < args.length; index += 1) {
|
|
142
176
|
const arg = args[index];
|
|
177
|
+
if (arg === "--egress") {
|
|
178
|
+
options.egress = true;
|
|
179
|
+
continue;
|
|
180
|
+
}
|
|
181
|
+
if (arg === "--json") {
|
|
182
|
+
options.json = true;
|
|
183
|
+
continue;
|
|
184
|
+
}
|
|
143
185
|
if (arg === "--port") {
|
|
144
186
|
options.port = parsePort(readValue(args, index, arg), "--port");
|
|
145
187
|
index += 1;
|
|
146
188
|
continue;
|
|
147
189
|
}
|
|
148
|
-
throw new CliError(`Unknown doctor option: ${arg}`, "Supported
|
|
190
|
+
throw new CliError(`Unknown doctor option: ${arg}`, "Supported options: --port 8080, --egress, --json");
|
|
191
|
+
}
|
|
192
|
+
return options;
|
|
193
|
+
}
|
|
194
|
+
function parseRunOptions(args) {
|
|
195
|
+
const separatorIndex = args.indexOf("--");
|
|
196
|
+
if (separatorIndex === -1) {
|
|
197
|
+
throw new CliError("Missing command separator for ghostapi run.", "Use: ghostapi run [--port 8080] [--allow-host localhost] -- <command> [args...]");
|
|
198
|
+
}
|
|
199
|
+
const command = args.slice(separatorIndex + 1);
|
|
200
|
+
if (command.length === 0) {
|
|
201
|
+
throw new CliError("Missing command for ghostapi run.", "Use: ghostapi run -- <command> [args...]");
|
|
202
|
+
}
|
|
203
|
+
const options = { allowHosts: [], command };
|
|
204
|
+
const optionArgs = args.slice(0, separatorIndex);
|
|
205
|
+
for (let index = 0; index < optionArgs.length; index += 1) {
|
|
206
|
+
const arg = optionArgs[index];
|
|
207
|
+
if (arg === "--port") {
|
|
208
|
+
options.port = parsePort(readValue(optionArgs, index, arg), "--port");
|
|
209
|
+
index += 1;
|
|
210
|
+
continue;
|
|
211
|
+
}
|
|
212
|
+
if (arg === "--allow-host") {
|
|
213
|
+
options.allowHosts.push(readValue(optionArgs, index, arg));
|
|
214
|
+
index += 1;
|
|
215
|
+
continue;
|
|
216
|
+
}
|
|
217
|
+
if (arg === "--policy") {
|
|
218
|
+
options.policyPath = readValue(optionArgs, index, arg);
|
|
219
|
+
index += 1;
|
|
220
|
+
continue;
|
|
221
|
+
}
|
|
222
|
+
throw new CliError(`Unknown run option: ${arg}`, "Supported options: --port 8080, --allow-host localhost, --policy ghostapi.policy.yaml");
|
|
223
|
+
}
|
|
224
|
+
return options;
|
|
225
|
+
}
|
|
226
|
+
function parsePolicyCommand(args) {
|
|
227
|
+
const [subcommand, ...rest] = args;
|
|
228
|
+
if (subcommand === "validate")
|
|
229
|
+
return { name: "policy-validate", file: parsePolicyFileOption(rest) };
|
|
230
|
+
if (subcommand !== "explain") {
|
|
231
|
+
throw new CliError(`Unknown policy command: ${subcommand ?? "<missing>"}`, "Use: ghostapi policy validate [--file ghostapi.policy.yaml] | ghostapi policy explain <scenario-id>|network <host>|credential <value>|enforcement <mode>|report <production-attempts> <credential-matches>");
|
|
232
|
+
}
|
|
233
|
+
const fileIndex = rest.indexOf("--file");
|
|
234
|
+
let file;
|
|
235
|
+
const eventArgs = [...rest];
|
|
236
|
+
if (fileIndex !== -1) {
|
|
237
|
+
file = readValue(rest, fileIndex, "--file");
|
|
238
|
+
eventArgs.splice(fileIndex, 2);
|
|
239
|
+
}
|
|
240
|
+
if (eventArgs.includes("--file"))
|
|
241
|
+
throw new CliError("Missing value for --file.", "Use --file ghostapi.policy.yaml.");
|
|
242
|
+
if (eventArgs.length === 0)
|
|
243
|
+
throw new CliError("Missing policy event.", "Use: ghostapi policy explain <scenario-id>|network <host>|credential <value>|enforcement <mode>|report <production-attempts> <credential-matches>");
|
|
244
|
+
return { name: "policy-explain", file, event: parsePolicyExplainInput(eventArgs) };
|
|
245
|
+
}
|
|
246
|
+
function parsePolicyFileOption(args) {
|
|
247
|
+
if (args.length === 0)
|
|
248
|
+
return undefined;
|
|
249
|
+
if (args.length === 2 && args[0] === "--file")
|
|
250
|
+
return readValue(args, 0, "--file");
|
|
251
|
+
throw new CliError(`Unexpected policy argument: ${args[0]}`, "Use: ghostapi policy validate [--file ghostapi.policy.yaml]");
|
|
252
|
+
}
|
|
253
|
+
function parseEvidenceCommand(args) {
|
|
254
|
+
const [subcommand, ...rest] = args;
|
|
255
|
+
if (subcommand === "generate")
|
|
256
|
+
return { name: "evidence-generate", options: parseEvidenceGenerateOptions(rest) };
|
|
257
|
+
if (subcommand === "view")
|
|
258
|
+
return { name: "evidence-view", options: parseEvidenceViewOptions(rest) };
|
|
259
|
+
if (subcommand === "compare")
|
|
260
|
+
return { name: "evidence-compare", options: parseEvidenceCompareOptions(rest) };
|
|
261
|
+
throw new CliError(`Unknown evidence command: ${subcommand ?? "<missing>"}`, "Use: ghostapi evidence generate|view|compare");
|
|
262
|
+
}
|
|
263
|
+
function parseEvidenceGenerateOptions(args) {
|
|
264
|
+
const options = {};
|
|
265
|
+
for (let index = 0; index < args.length; index += 1) {
|
|
266
|
+
const arg = args[index];
|
|
267
|
+
if (arg === "--policy") {
|
|
268
|
+
options.policyPath = readValue(args, index, arg);
|
|
269
|
+
index += 1;
|
|
270
|
+
continue;
|
|
271
|
+
}
|
|
272
|
+
if (arg === "--run") {
|
|
273
|
+
options.runPath = readValue(args, index, arg);
|
|
274
|
+
index += 1;
|
|
275
|
+
continue;
|
|
276
|
+
}
|
|
277
|
+
if (arg === "--out") {
|
|
278
|
+
options.outPath = readValue(args, index, arg);
|
|
279
|
+
index += 1;
|
|
280
|
+
continue;
|
|
281
|
+
}
|
|
282
|
+
if (arg === "--contract-baseline") {
|
|
283
|
+
options.contractBaselinePath = readValue(args, index, arg);
|
|
284
|
+
index += 1;
|
|
285
|
+
continue;
|
|
286
|
+
}
|
|
287
|
+
if (arg === "--contract-candidate") {
|
|
288
|
+
options.contractCandidatePath = readValue(args, index, arg);
|
|
289
|
+
index += 1;
|
|
290
|
+
continue;
|
|
291
|
+
}
|
|
292
|
+
if (arg === "--ci") {
|
|
293
|
+
options.ci = true;
|
|
294
|
+
continue;
|
|
295
|
+
}
|
|
296
|
+
if (arg === "--json") {
|
|
297
|
+
options.json = true;
|
|
298
|
+
continue;
|
|
299
|
+
}
|
|
300
|
+
throw new CliError(`Unknown evidence generate option: ${arg}`, "Supported options: --policy ghostapi.policy.yaml, --run .ghostapi/runs/<id>/run.json, --out .ghostapi/reports/report.json, --contract-baseline base.contract.json, --contract-candidate head.contract.json, --ci, --json");
|
|
301
|
+
}
|
|
302
|
+
if ((options.contractBaselinePath === undefined) !== (options.contractCandidatePath === undefined))
|
|
303
|
+
throw new CliError("Contract drift evidence requires both contract paths.", "Use --contract-baseline base.contract.json --contract-candidate head.contract.json.");
|
|
304
|
+
return options;
|
|
305
|
+
}
|
|
306
|
+
function parseEvidenceViewOptions(args) {
|
|
307
|
+
const path = args[0];
|
|
308
|
+
if (!path)
|
|
309
|
+
throw new CliError("Missing evidence report path.", "Use: ghostapi evidence view <report.json> [--json]");
|
|
310
|
+
const rest = args.slice(1);
|
|
311
|
+
if (rest.length === 0)
|
|
312
|
+
return { path };
|
|
313
|
+
if (rest.length === 1 && rest[0] === "--json")
|
|
314
|
+
return { path, json: true };
|
|
315
|
+
throw new CliError(`Unexpected evidence view argument: ${rest[0]}`, "Use: ghostapi evidence view <report.json> [--json]");
|
|
316
|
+
}
|
|
317
|
+
function parseEvidenceCompareOptions(args) {
|
|
318
|
+
const leftPath = args[0];
|
|
319
|
+
const rightPath = args[1];
|
|
320
|
+
if (!leftPath || !rightPath)
|
|
321
|
+
throw new CliError("Missing evidence report paths.", "Use: ghostapi evidence compare <left.json> <right.json> [--json]");
|
|
322
|
+
const rest = args.slice(2);
|
|
323
|
+
if (rest.length === 0)
|
|
324
|
+
return { leftPath, rightPath };
|
|
325
|
+
if (rest.length === 1 && rest[0] === "--json")
|
|
326
|
+
return { leftPath, rightPath, json: true };
|
|
327
|
+
throw new CliError(`Unexpected evidence compare argument: ${rest[0]}`, "Use: ghostapi evidence compare <left.json> <right.json> [--json]");
|
|
328
|
+
}
|
|
329
|
+
function parseRecordOptions(args) {
|
|
330
|
+
const options = { allowedSandboxHosts: [] };
|
|
331
|
+
for (let index = 0; index < args.length; index += 1) {
|
|
332
|
+
const arg = args[index];
|
|
333
|
+
if (arg === "--input") {
|
|
334
|
+
options.inputPath = readValue(args, index, arg);
|
|
335
|
+
index += 1;
|
|
336
|
+
continue;
|
|
337
|
+
}
|
|
338
|
+
if (arg === "--out") {
|
|
339
|
+
options.outPath = readValue(args, index, arg);
|
|
340
|
+
index += 1;
|
|
341
|
+
continue;
|
|
342
|
+
}
|
|
343
|
+
if (arg === "--title") {
|
|
344
|
+
options.title = readValue(args, index, arg);
|
|
345
|
+
index += 1;
|
|
346
|
+
continue;
|
|
347
|
+
}
|
|
348
|
+
if (arg === "--allow-sandbox-host") {
|
|
349
|
+
options.allowedSandboxHosts.push(readValue(args, index, arg));
|
|
350
|
+
index += 1;
|
|
351
|
+
continue;
|
|
352
|
+
}
|
|
353
|
+
if (arg === "--pii") {
|
|
354
|
+
const value = readValue(args, index, arg);
|
|
355
|
+
if (!isPiiRuleSet(value))
|
|
356
|
+
throw new CliError(`Invalid --pii value: ${value}`, "Use: --pii emails,phones,addresses | emails | phones | addresses | none");
|
|
357
|
+
options.pii = value;
|
|
358
|
+
index += 1;
|
|
359
|
+
continue;
|
|
360
|
+
}
|
|
361
|
+
if (arg === "--approve") {
|
|
362
|
+
options.approve = true;
|
|
363
|
+
continue;
|
|
364
|
+
}
|
|
365
|
+
throw new CliError(`Unknown record option: ${arg}`, "Supported options: --input capture.json, --allow-sandbox-host api.sandbox.example, --out bundle.json, --title title, --pii emails,phones,addresses, --approve");
|
|
366
|
+
}
|
|
367
|
+
if (!options.inputPath)
|
|
368
|
+
throw new CliError("Missing recording input.", "Use: ghostapi record --input capture.json --allow-sandbox-host api.sandbox.example");
|
|
369
|
+
if (options.allowedSandboxHosts.length === 0)
|
|
370
|
+
throw new CliError("Recording requires an explicit sandbox host allowlist.", "Use: --allow-sandbox-host api.sandbox.example");
|
|
371
|
+
return options;
|
|
372
|
+
}
|
|
373
|
+
function parseReplayOptions(args) {
|
|
374
|
+
const bundlePath = args[0];
|
|
375
|
+
if (!bundlePath)
|
|
376
|
+
throw new CliError("Missing scenario bundle path.", "Use: ghostapi replay <bundle.json> --requests requests.json [--json]");
|
|
377
|
+
const options = { bundlePath };
|
|
378
|
+
for (let index = 1; index < args.length; index += 1) {
|
|
379
|
+
const arg = args[index];
|
|
380
|
+
if (arg === "--requests") {
|
|
381
|
+
options.requestsPath = readValue(args, index, arg);
|
|
382
|
+
index += 1;
|
|
383
|
+
continue;
|
|
384
|
+
}
|
|
385
|
+
if (arg === "--json") {
|
|
386
|
+
options.json = true;
|
|
387
|
+
continue;
|
|
388
|
+
}
|
|
389
|
+
throw new CliError(`Unknown replay option: ${arg}`, "Supported options: --requests requests.json, --json");
|
|
390
|
+
}
|
|
391
|
+
if (!options.requestsPath)
|
|
392
|
+
throw new CliError("Missing replay requests input.", "Use: ghostapi replay <bundle.json> --requests requests.json [--json]");
|
|
393
|
+
return options;
|
|
394
|
+
}
|
|
395
|
+
function parseContractCommand(args) {
|
|
396
|
+
const [subcommand, ...rest] = args;
|
|
397
|
+
if (subcommand === "import-openapi")
|
|
398
|
+
return { name: "contract-import-openapi", options: parseContractImportOpenApiOptions(rest) };
|
|
399
|
+
if (subcommand === "import-har")
|
|
400
|
+
return { name: "contract-import-har", options: parseContractImportHarOptions(rest) };
|
|
401
|
+
if (subcommand === "diff")
|
|
402
|
+
return { name: "contract-diff", options: parseContractDiffOptions(rest) };
|
|
403
|
+
throw new CliError(`Unknown contract command: ${subcommand ?? "<missing>"}`, "Use: ghostapi contract import-openapi|import-har|diff");
|
|
404
|
+
}
|
|
405
|
+
function parseContractImportOpenApiOptions(args) {
|
|
406
|
+
const options = {};
|
|
407
|
+
for (let index = 0; index < args.length; index += 1) {
|
|
408
|
+
const arg = args[index];
|
|
409
|
+
if (arg === "--input") {
|
|
410
|
+
options.inputPath = readValue(args, index, arg);
|
|
411
|
+
index += 1;
|
|
412
|
+
continue;
|
|
413
|
+
}
|
|
414
|
+
if (arg === "--out") {
|
|
415
|
+
options.outPath = readValue(args, index, arg);
|
|
416
|
+
index += 1;
|
|
417
|
+
continue;
|
|
418
|
+
}
|
|
419
|
+
if (arg === "--title") {
|
|
420
|
+
options.title = readValue(args, index, arg);
|
|
421
|
+
index += 1;
|
|
422
|
+
continue;
|
|
423
|
+
}
|
|
424
|
+
throw new CliError(`Unknown contract import-openapi option: ${arg}`, "Supported options: --input openapi.json, --out contract.json, --title title");
|
|
425
|
+
}
|
|
426
|
+
if (!options.inputPath)
|
|
427
|
+
throw new CliError("Missing OpenAPI input.", "Use: ghostapi contract import-openapi --input openapi.json");
|
|
428
|
+
return options;
|
|
429
|
+
}
|
|
430
|
+
function parseContractImportHarOptions(args) {
|
|
431
|
+
const base = parseRecordOptions(args.filter((arg, index) => arg !== "--contract-out" && args[index - 1] !== "--contract-out"));
|
|
432
|
+
const contractOutIndex = args.indexOf("--contract-out");
|
|
433
|
+
if (contractOutIndex === -1)
|
|
434
|
+
return base;
|
|
435
|
+
return { ...base, contractOutPath: readValue(args, contractOutIndex, "--contract-out") };
|
|
436
|
+
}
|
|
437
|
+
function parseContractDiffOptions(args) {
|
|
438
|
+
const options = {};
|
|
439
|
+
for (let index = 0; index < args.length; index += 1) {
|
|
440
|
+
const arg = args[index];
|
|
441
|
+
if (arg === "--baseline") {
|
|
442
|
+
options.baselinePath = readValue(args, index, arg);
|
|
443
|
+
index += 1;
|
|
444
|
+
continue;
|
|
445
|
+
}
|
|
446
|
+
if (arg === "--candidate") {
|
|
447
|
+
options.candidatePath = readValue(args, index, arg);
|
|
448
|
+
index += 1;
|
|
449
|
+
continue;
|
|
450
|
+
}
|
|
451
|
+
if (arg === "--policy") {
|
|
452
|
+
options.policyPath = readValue(args, index, arg);
|
|
453
|
+
index += 1;
|
|
454
|
+
continue;
|
|
455
|
+
}
|
|
456
|
+
if (arg === "--ci") {
|
|
457
|
+
options.ci = true;
|
|
458
|
+
continue;
|
|
459
|
+
}
|
|
460
|
+
if (arg === "--json") {
|
|
461
|
+
options.json = true;
|
|
462
|
+
continue;
|
|
463
|
+
}
|
|
464
|
+
throw new CliError(`Unknown contract diff option: ${arg}`, "Supported options: --baseline base.contract.json, --candidate head.contract.json, --policy ghostapi.policy.yaml, --ci, --json");
|
|
149
465
|
}
|
|
466
|
+
if (!options.baselinePath || !options.candidatePath)
|
|
467
|
+
throw new CliError("Contract diff requires baseline and candidate paths.", "Use: ghostapi contract diff --baseline base.contract.json --candidate head.contract.json");
|
|
150
468
|
return options;
|
|
151
469
|
}
|
|
470
|
+
function parseEvalOptions(args) {
|
|
471
|
+
const options = {};
|
|
472
|
+
for (let index = 0; index < args.length; index += 1) {
|
|
473
|
+
const arg = args[index];
|
|
474
|
+
if (arg === "--spec") {
|
|
475
|
+
options.specPath = readValue(args, index, arg);
|
|
476
|
+
index += 1;
|
|
477
|
+
continue;
|
|
478
|
+
}
|
|
479
|
+
if (arg === "--template") {
|
|
480
|
+
const value = readValue(args, index, arg);
|
|
481
|
+
if (!isEvalTemplate(value))
|
|
482
|
+
throw new CliError(`Unknown eval template: ${value}`, "Use one of: retry-after, duplicate-payment, webhook-signature, no-secret-logs, timeout-recovery, no-production-bypass");
|
|
483
|
+
options.template = value;
|
|
484
|
+
index += 1;
|
|
485
|
+
continue;
|
|
486
|
+
}
|
|
487
|
+
if (arg === "--evidence") {
|
|
488
|
+
options.evidencePath = readValue(args, index, arg);
|
|
489
|
+
index += 1;
|
|
490
|
+
continue;
|
|
491
|
+
}
|
|
492
|
+
if (arg === "--out") {
|
|
493
|
+
options.outPath = readValue(args, index, arg);
|
|
494
|
+
index += 1;
|
|
495
|
+
continue;
|
|
496
|
+
}
|
|
497
|
+
if (arg === "--ci") {
|
|
498
|
+
options.ci = true;
|
|
499
|
+
continue;
|
|
500
|
+
}
|
|
501
|
+
if (arg === "--json") {
|
|
502
|
+
options.json = true;
|
|
503
|
+
continue;
|
|
504
|
+
}
|
|
505
|
+
throw new CliError(`Unknown eval option: ${arg}`, "Supported options: --spec eval.json | --template retry-after, --evidence report.json, --out report.eval.json, --ci, --json");
|
|
506
|
+
}
|
|
507
|
+
if ((options.specPath === undefined) === (options.template === undefined))
|
|
508
|
+
throw new CliError("Eval requires exactly one of --spec or --template.", "Use: ghostapi eval --spec eval.json or ghostapi eval --template retry-after");
|
|
509
|
+
return options;
|
|
510
|
+
}
|
|
511
|
+
function parseWorldCommand(args) {
|
|
512
|
+
const [subcommand, ...rest] = args;
|
|
513
|
+
if (subcommand === "create")
|
|
514
|
+
return { name: "world-create", options: parseWorldCreateOptions(rest) };
|
|
515
|
+
if (subcommand === "inspect" || subcommand === "reset") {
|
|
516
|
+
const id = rest[0];
|
|
517
|
+
if (!id)
|
|
518
|
+
throw new CliError(`Missing world id for ${subcommand}.`, `Use: ghostapi world ${subcommand} <world-id> [--json]`);
|
|
519
|
+
if (rest.length === 1)
|
|
520
|
+
return { name: subcommand === "inspect" ? "world-inspect" : "world-reset", id };
|
|
521
|
+
if (rest.length === 2 && rest[1] === "--json")
|
|
522
|
+
return { name: subcommand === "inspect" ? "world-inspect" : "world-reset", id, json: true };
|
|
523
|
+
throw new CliError(`Unexpected world ${subcommand} argument: ${rest[1]}`, `Use: ghostapi world ${subcommand} <world-id> [--json]`);
|
|
524
|
+
}
|
|
525
|
+
if (subcommand === "fork") {
|
|
526
|
+
const sourceId = rest[0];
|
|
527
|
+
if (!sourceId)
|
|
528
|
+
throw new CliError("Missing source world id.", "Use: ghostapi world fork <source-world-id> --id <fork-world-id> [--title title] [--json]");
|
|
529
|
+
return { name: "world-fork", sourceId, options: parseWorldForkOptions(rest.slice(1)) };
|
|
530
|
+
}
|
|
531
|
+
throw new CliError(`Unknown world command: ${subcommand ?? "<missing>"}`, "Use: ghostapi world create|inspect|reset|fork");
|
|
532
|
+
}
|
|
533
|
+
function parseActionCommand(args) {
|
|
534
|
+
const [subcommand, ...rest] = args;
|
|
535
|
+
if (subcommand === "inspect") {
|
|
536
|
+
const actionId = rest[0];
|
|
537
|
+
if (!actionId)
|
|
538
|
+
throw new CliError("Missing action id.", "Use: ghostapi action inspect <action-id> [--json]");
|
|
539
|
+
if (rest.length === 1)
|
|
540
|
+
return { name: "action-inspect", actionId };
|
|
541
|
+
if (rest.length === 2 && rest[1] === "--json")
|
|
542
|
+
return { name: "action-inspect", actionId, json: true };
|
|
543
|
+
throw new CliError(`Unexpected action inspect argument: ${rest[1]}`, "Use: ghostapi action inspect <action-id> [--json]");
|
|
544
|
+
}
|
|
545
|
+
throw new CliError(`Unknown action command: ${subcommand ?? "<missing>"}`, "Use: ghostapi action inspect <action-id> [--json]. Submit and execute through the verifier-backed approval inbox API.");
|
|
546
|
+
}
|
|
547
|
+
function parseTelemetryCommand(args) {
|
|
548
|
+
const [action, ...rest] = args;
|
|
549
|
+
if (action !== "status" && action !== "enable" && action !== "disable" && action !== "export") {
|
|
550
|
+
throw new CliError(`Unknown telemetry command: ${action ?? "<missing>"}`, "Use: ghostapi telemetry status|enable|disable|export [--json]");
|
|
551
|
+
}
|
|
552
|
+
if (rest.length === 0)
|
|
553
|
+
return { name: "telemetry", action };
|
|
554
|
+
if (rest.length === 1 && rest[0] === "--json")
|
|
555
|
+
return { name: "telemetry", action, json: true };
|
|
556
|
+
throw new CliError(`Unexpected telemetry argument: ${rest[0]}`, "Use: ghostapi telemetry status|enable|disable|export [--json]");
|
|
557
|
+
}
|
|
558
|
+
function parseWorldCreateOptions(args) {
|
|
559
|
+
const options = {};
|
|
560
|
+
for (let index = 0; index < args.length; index += 1) {
|
|
561
|
+
const arg = args[index];
|
|
562
|
+
if (arg === "--id") {
|
|
563
|
+
options.id = readValue(args, index, arg);
|
|
564
|
+
index += 1;
|
|
565
|
+
continue;
|
|
566
|
+
}
|
|
567
|
+
if (arg === "--seed") {
|
|
568
|
+
options.seed = readValue(args, index, arg);
|
|
569
|
+
index += 1;
|
|
570
|
+
continue;
|
|
571
|
+
}
|
|
572
|
+
if (arg === "--title") {
|
|
573
|
+
options.title = readValue(args, index, arg);
|
|
574
|
+
index += 1;
|
|
575
|
+
continue;
|
|
576
|
+
}
|
|
577
|
+
if (arg === "--json") {
|
|
578
|
+
options.json = true;
|
|
579
|
+
continue;
|
|
580
|
+
}
|
|
581
|
+
throw new CliError(`Unknown world create option: ${arg}`, "Supported options: --id <world-id>, --seed <seed>, --title <title>, --json");
|
|
582
|
+
}
|
|
583
|
+
if (!options.id || !options.seed)
|
|
584
|
+
throw new CliError("World create requires --id and --seed.", "Use: ghostapi world create --id demo --seed stable-seed [--title title]");
|
|
585
|
+
return options;
|
|
586
|
+
}
|
|
587
|
+
function parseWorldForkOptions(args) {
|
|
588
|
+
const options = {};
|
|
589
|
+
for (let index = 0; index < args.length; index += 1) {
|
|
590
|
+
const arg = args[index];
|
|
591
|
+
if (arg === "--id") {
|
|
592
|
+
options.id = readValue(args, index, arg);
|
|
593
|
+
index += 1;
|
|
594
|
+
continue;
|
|
595
|
+
}
|
|
596
|
+
if (arg === "--title") {
|
|
597
|
+
options.title = readValue(args, index, arg);
|
|
598
|
+
index += 1;
|
|
599
|
+
continue;
|
|
600
|
+
}
|
|
601
|
+
if (arg === "--json") {
|
|
602
|
+
options.json = true;
|
|
603
|
+
continue;
|
|
604
|
+
}
|
|
605
|
+
throw new CliError(`Unknown world fork option: ${arg}`, "Supported options: --id <fork-world-id>, --title <title>, --json");
|
|
606
|
+
}
|
|
607
|
+
if (!options.id)
|
|
608
|
+
throw new CliError("World fork requires --id.", "Use: ghostapi world fork <source-world-id> --id <fork-world-id>");
|
|
609
|
+
return options;
|
|
610
|
+
}
|
|
611
|
+
function isEvalTemplate(value) {
|
|
612
|
+
return value === "retry-after" || value === "duplicate-payment" || value === "webhook-signature" || value === "no-secret-logs" || value === "timeout-recovery" || value === "no-production-bypass";
|
|
613
|
+
}
|
|
614
|
+
function parsePolicyExplainInput(args) {
|
|
615
|
+
const [kind, value, ...rest] = args;
|
|
616
|
+
if (kind === "network") {
|
|
617
|
+
if (!value)
|
|
618
|
+
throw new CliError("Missing network host.", "Use: ghostapi policy explain network api.stripe.com [--provider stripe]");
|
|
619
|
+
if (rest.length === 0)
|
|
620
|
+
return { type: "network", host: value };
|
|
621
|
+
if (rest.length === 2 && rest[0] === "--provider" && rest[1])
|
|
622
|
+
return { type: "network", host: value, provider: rest[1] };
|
|
623
|
+
throw new CliError("Invalid network explain options.", "Use: ghostapi policy explain network api.stripe.com [--provider stripe]");
|
|
624
|
+
}
|
|
625
|
+
if (kind === "credential") {
|
|
626
|
+
if (!value || rest.length > 0)
|
|
627
|
+
throw new CliError("Credential explain requires exactly one value.", "Use: ghostapi policy explain credential sk_live_example");
|
|
628
|
+
return { type: "credential", value };
|
|
629
|
+
}
|
|
630
|
+
if (kind === "enforcement") {
|
|
631
|
+
if ((value !== "linux-network-namespace" && value !== "proxy-guidance") || rest.length > 0)
|
|
632
|
+
throw new CliError("Invalid enforcement mode.", "Use: ghostapi policy explain enforcement linux-network-namespace|proxy-guidance");
|
|
633
|
+
return { type: "enforcement", mode: value };
|
|
634
|
+
}
|
|
635
|
+
if (kind === "report") {
|
|
636
|
+
const forbiddenCredentialMatches = Number(rest[0]);
|
|
637
|
+
const productionEgressAttempts = Number(value);
|
|
638
|
+
const breakingContractChanges = rest.length === 2 ? Number(rest[1]) : undefined;
|
|
639
|
+
if ((rest.length !== 1 && rest.length !== 2) || !Number.isInteger(productionEgressAttempts) || productionEgressAttempts < 0 || !Number.isInteger(forbiddenCredentialMatches) || forbiddenCredentialMatches < 0 || (breakingContractChanges !== undefined && (!Number.isInteger(breakingContractChanges) || breakingContractChanges < 0))) {
|
|
640
|
+
throw new CliError("Report explain requires two or three non-negative integer counts.", "Use: ghostapi policy explain report 0 0 [0]");
|
|
641
|
+
}
|
|
642
|
+
return { type: "report", productionEgressAttempts, forbiddenCredentialMatches, ...(breakingContractChanges === undefined ? {} : { breakingContractChanges }) };
|
|
643
|
+
}
|
|
644
|
+
if (args.length !== 1)
|
|
645
|
+
throw new CliError("Scenario explain accepts one scenario id.", "Use: ghostapi policy explain stripe.card_declined");
|
|
646
|
+
return { type: "scenario", scenarioId: kind, completedScenarioIds: [] };
|
|
647
|
+
}
|
|
152
648
|
function readValue(args, index, flag) {
|
|
153
649
|
const value = args[index + 1];
|
|
154
650
|
if (!value || value.startsWith("--")) {
|
|
@@ -156,6 +652,12 @@ function readValue(args, index, flag) {
|
|
|
156
652
|
}
|
|
157
653
|
return value;
|
|
158
654
|
}
|
|
655
|
+
function isPiiRuleSet(value) {
|
|
656
|
+
if (value === "none")
|
|
657
|
+
return true;
|
|
658
|
+
const selected = value.split(",");
|
|
659
|
+
return selected.length > 0 && selected.length === new Set(selected).size && selected.every((entry) => entry === "emails" || entry === "phones" || entry === "addresses");
|
|
660
|
+
}
|
|
159
661
|
export function parsePort(value, label) {
|
|
160
662
|
const port = Number(value);
|
|
161
663
|
if (!Number.isInteger(port) || port < 1 || port > 65535) {
|
package/dist/cli/parser.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/cli/parser.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"parser.js","sourceRoot":"","sources":["../../src/cli/parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAwJvC,MAAM,UAAU,YAAY,CAAC,IAAc;IACzC,MAAM,CAAC,OAAO,GAAG,OAAO,EAAE,UAAU,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IAEtD,IAAI,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QACnE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAC1B,CAAC;IAED,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QACxB,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACtE,CAAC;IAED,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QACxB,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,QAAQ,CAAC,yBAAyB,UAAU,IAAI,WAAW,EAAE,EAAE,yDAAyD,CAAC,CAAC;QACtI,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpB,MAAM,IAAI,QAAQ,CAAC,wBAAwB,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,uBAAuB,UAAU,EAAE,CAAC,CAAC;QAC7F,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;IAC/C,CAAC;IAED,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QACxB,IAAI,UAAU,KAAK,KAAK;YAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;QACvD,IAAI,UAAU,KAAK,KAAK,EAAE,CAAC;YACzB,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACtB,IAAI,CAAC,KAAK;gBAAE,MAAM,IAAI,QAAQ,CAAC,qBAAqB,EAAE,sCAAsC,CAAC,CAAC;YAC9F,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;gBAAE,MAAM,IAAI,QAAQ,CAAC,wBAAwB,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,oCAAoC,CAAC,CAAC;YACjH,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;QACtC,CAAC;QACD,MAAM,IAAI,QAAQ,CAAC,0BAA0B,UAAU,IAAI,WAAW,EAAE,EAAE,sDAAsD,CAAC,CAAC;IACpI,CAAC;IAED,IAAI,OAAO,KAAK,WAAW,EAAE,CAAC;QAC5B,IAAI,UAAU,KAAK,MAAM;YAAE,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,CAAC;QAC7D,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACzB,IAAI,CAAC,QAAQ;gBAAE,MAAM,IAAI,QAAQ,CAAC,wBAAwB,EAAE,wCAAwC,CAAC,CAAC;YACtG,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;gBAAE,MAAM,IAAI,QAAQ,CAAC,wBAAwB,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,mCAAmC,QAAQ,EAAE,CAAC,CAAC;YAC1H,OAAO,EAAE,IAAI,EAAE,mBAAmB,EAAE,QAAQ,EAAE,CAAC;QACjD,CAAC;QACD,MAAM,IAAI,QAAQ,CAAC,8BAA8B,UAAU,IAAI,WAAW,EAAE,EAAE,kEAAkE,CAAC,CAAC;IACpJ,CAAC;IAED,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACxE,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;QACtB,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAClE,CAAC;IAED,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,OAAO,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3C,CAAC;IAED,IAAI,OAAO,KAAK,UAAU,EAAE,CAAC;QAC3B,OAAO,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7C,CAAC;IAED,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACxE,CAAC;IAED,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACxE,CAAC;IAED,IAAI,OAAO,KAAK,UAAU,EAAE,CAAC;QAC3B,OAAO,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7C,CAAC;IAED,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QACvB,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACpE,CAAC;IAED,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QACxB,OAAO,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1C,CAAC;IAED,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,OAAO,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3C,CAAC;IAED,IAAI,OAAO,KAAK,WAAW,EAAE,CAAC;QAC5B,OAAO,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9C,CAAC;IAED,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QACvB,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,IAAI,QAAQ,CAAC,wBAAwB,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,oBAAoB,CAAC,CAAC;QACjG,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IAC1B,CAAC;IAED,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QACxB,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACtE,CAAC;IAED,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QACvB,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACpE,CAAC;IAED,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,IAAI,QAAQ,CAAC,wBAAwB,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,sBAAsB,CAAC,CAAC;QACnG,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IAC5B,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;QACtB,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,IAAI,QAAQ,CAAC,wBAAwB,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,mBAAmB,CAAC,CAAC;QAChG,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IACzB,CAAC;IAED,MAAM,IAAI,QAAQ,CAAC,oBAAoB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,gDAAgD,CAAC,CAAC;AAC7G,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAc;IACvC,MAAM,OAAO,GAAiB,EAAE,CAAC;IACjC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACpD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAE,CAAC;QACzB,IAAI,GAAG,KAAK,WAAW,EAAE,CAAC;YACxB,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;YACvB,SAAS;QACX,CAAC;QACD,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtB,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;YACrB,SAAS;QACX,CAAC;QACD,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;YACrB,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;YACpB,SAAS;QACX,CAAC;QACD,IAAI,GAAG,KAAK,sBAAsB,EAAE,CAAC;YACnC,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;YAChC,SAAS;QACX,CAAC;QACD,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;YACrB,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;YAC3C,KAAK,IAAI,CAAC,CAAC;YACX,SAAS;QACX,CAAC;QACD,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;YACrB,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC;YAChE,KAAK,IAAI,CAAC,CAAC;YACX,SAAS;QACX,CAAC;QACD,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtB,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;YAC5C,KAAK,IAAI,CAAC,CAAC;YACX,SAAS;QACX,CAAC;QACD,MAAM,IAAI,QAAQ,CAAC,yBAAyB,GAAG,EAAE,EAAE,8FAA8F,CAAC,CAAC;IACrJ,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAc;IACvC,MAAM,OAAO,GAAiB,EAAE,CAAC;IACjC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtB,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;YACrB,SAAS;QACX,CAAC;QACD,MAAM,IAAI,QAAQ,CAAC,yBAAyB,GAAG,EAAE,EAAE,2BAA2B,CAAC,CAAC;IAClF,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAc;IACtC,MAAM,OAAO,GAAgB,EAAE,CAAC;IAChC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACpD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAE,CAAC;QACzB,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtB,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;YACrB,SAAS;QACX,CAAC;QACD,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;YACrB,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;YAC3C,KAAK,IAAI,CAAC,CAAC;YACX,SAAS;QACX,CAAC;QACD,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;YACrB,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC;YAChE,KAAK,IAAI,CAAC,CAAC;YACX,SAAS;QACX,CAAC;QACD,MAAM,IAAI,QAAQ,CAAC,wBAAwB,GAAG,EAAE,EAAE,4CAA4C,CAAC,CAAC;IAClG,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAc;IACxC,MAAM,OAAO,GAAkB,EAAE,CAAC;IAClC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACpD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAE,CAAC;QACzB,IAAI,GAAG,KAAK,UAAU,EAAE,CAAC;YACvB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;YACtB,SAAS;QACX,CAAC;QACD,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;YACrB,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;YACpB,SAAS;QACX,CAAC;QACD,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;YACrB,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC;YAChE,KAAK,IAAI,CAAC,CAAC;YACX,SAAS;QACX,CAAC;QACD,MAAM,IAAI,QAAQ,CAAC,0BAA0B,GAAG,EAAE,EAAE,kDAAkD,CAAC,CAAC;IAC1G,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,eAAe,CAAC,IAAc;IACrC,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1C,IAAI,cAAc,KAAK,CAAC,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,QAAQ,CAAC,6CAA6C,EAAE,iFAAiF,CAAC,CAAC;IACvJ,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC;IAC/C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,QAAQ,CAAC,mCAAmC,EAAE,0CAA0C,CAAC,CAAC;IACtG,CAAC;IAED,MAAM,OAAO,GAAe,EAAE,UAAU,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC;IACxD,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC;IACjD,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,UAAU,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QAC1D,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAE,CAAC;QAC/B,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;YACrB,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC,SAAS,CAAC,UAAU,EAAE,KAAK,EAAE,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC;YACtE,KAAK,IAAI,CAAC,CAAC;YACX,SAAS;QACX,CAAC;QACD,IAAI,GAAG,KAAK,cAAc,EAAE,CAAC;YAC3B,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;YAC3D,KAAK,IAAI,CAAC,CAAC;YACX,SAAS;QACX,CAAC;QACD,IAAI,GAAG,KAAK,UAAU,EAAE,CAAC;YACvB,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,UAAU,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;YACvD,KAAK,IAAI,CAAC,CAAC;YACX,SAAS;QACX,CAAC;QACD,MAAM,IAAI,QAAQ,CAAC,uBAAuB,GAAG,EAAE,EAAE,uFAAuF,CAAC,CAAC;IAC5I,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAc;IACxC,MAAM,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IACnC,IAAI,UAAU,KAAK,UAAU;QAAE,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC;IACrG,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,MAAM,IAAI,QAAQ,CAAC,2BAA2B,UAAU,IAAI,WAAW,EAAE,EAAE,4MAA4M,CAAC,CAAC;IAC3R,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACzC,IAAI,IAAwB,CAAC;IAC7B,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC;IAC5B,IAAI,SAAS,KAAK,CAAC,CAAC,EAAE,CAAC;QACrB,IAAI,GAAG,SAAS,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;QAC5C,SAAS,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;IACjC,CAAC;IACD,IAAI,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAAE,MAAM,IAAI,QAAQ,CAAC,2BAA2B,EAAE,kCAAkC,CAAC,CAAC;IACtH,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,QAAQ,CAAC,uBAAuB,EAAE,mJAAmJ,CAAC,CAAC;IAC7N,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,KAAK,EAAE,uBAAuB,CAAC,SAAS,CAAC,EAAE,CAAC;AACrF,CAAC;AAED,SAAS,qBAAqB,CAAC,IAAc;IAC3C,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IACxC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC,IAAI,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;IACnF,MAAM,IAAI,QAAQ,CAAC,+BAA+B,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,6DAA6D,CAAC,CAAC;AAC9H,CAAC;AAED,SAAS,oBAAoB,CAAC,IAAc;IAC1C,MAAM,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IACnC,IAAI,UAAU,KAAK,UAAU;QAAE,OAAO,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,4BAA4B,CAAC,IAAI,CAAC,EAAE,CAAC;IACjH,IAAI,UAAU,KAAK,MAAM;QAAE,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,wBAAwB,CAAC,IAAI,CAAC,EAAE,CAAC;IACrG,IAAI,UAAU,KAAK,SAAS;QAAE,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAE,OAAO,EAAE,2BAA2B,CAAC,IAAI,CAAC,EAAE,CAAC;IAC9G,MAAM,IAAI,QAAQ,CAAC,6BAA6B,UAAU,IAAI,WAAW,EAAE,EAAE,8CAA8C,CAAC,CAAC;AAC/H,CAAC;AAED,SAAS,4BAA4B,CAAC,IAAc;IAClD,MAAM,OAAO,GAA4B,EAAE,CAAC;IAC5C,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACpD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAE,CAAC;QACzB,IAAI,GAAG,KAAK,UAAU,EAAE,CAAC;YACvB,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;YACjD,KAAK,IAAI,CAAC,CAAC;YACX,SAAS;QACX,CAAC;QACD,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;YACpB,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;YAC9C,KAAK,IAAI,CAAC,CAAC;YACX,SAAS;QACX,CAAC;QACD,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;YACpB,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;YAC9C,KAAK,IAAI,CAAC,CAAC;YACX,SAAS;QACX,CAAC;QACD,IAAI,GAAG,KAAK,qBAAqB,EAAE,CAAC;YAClC,OAAO,CAAC,oBAAoB,GAAG,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;YAC3D,KAAK,IAAI,CAAC,CAAC;YACX,SAAS;QACX,CAAC;QACD,IAAI,GAAG,KAAK,sBAAsB,EAAE,CAAC;YACnC,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;YAC5D,KAAK,IAAI,CAAC,CAAC;YACX,SAAS;QACX,CAAC;QACD,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;YACnB,OAAO,CAAC,EAAE,GAAG,IAAI,CAAC;YAClB,SAAS;QACX,CAAC;QACD,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;YACrB,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;YACpB,SAAS;QACX,CAAC;QACD,MAAM,IAAI,QAAQ,CAAC,qCAAqC,GAAG,EAAE,EAAE,0NAA0N,CAAC,CAAC;IAC7R,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,oBAAoB,KAAK,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,qBAAqB,KAAK,SAAS,CAAC;QAAE,MAAM,IAAI,QAAQ,CAAC,uDAAuD,EAAE,qFAAqF,CAAC,CAAC;IACvQ,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,wBAAwB,CAAC,IAAc;IAC9C,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACrB,IAAI,CAAC,IAAI;QAAE,MAAM,IAAI,QAAQ,CAAC,+BAA+B,EAAE,oDAAoD,CAAC,CAAC;IACrH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC3B,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IACvC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ;QAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAC3E,MAAM,IAAI,QAAQ,CAAC,sCAAsC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,oDAAoD,CAAC,CAAC;AAC5H,CAAC;AAED,SAAS,2BAA2B,CAAC,IAAc;IACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACzB,MAAM,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAC1B,IAAI,CAAC,QAAQ,IAAI,CAAC,SAAS;QAAE,MAAM,IAAI,QAAQ,CAAC,gCAAgC,EAAE,kEAAkE,CAAC,CAAC;IACtJ,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC3B,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;IACtD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ;QAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAC1F,MAAM,IAAI,QAAQ,CAAC,yCAAyC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,kEAAkE,CAAC,CAAC;AAC7I,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAc;IACxC,MAAM,OAAO,GAA+D,EAAE,mBAAmB,EAAE,EAAE,EAAE,CAAC;IACxG,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACpD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAE,CAAC;QACzB,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtB,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;YAChD,KAAK,IAAI,CAAC,CAAC;YACX,SAAS;QACX,CAAC;QACD,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;YACpB,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;YAC9C,KAAK,IAAI,CAAC,CAAC;YACX,SAAS;QACX,CAAC;QACD,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtB,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;YAC5C,KAAK,IAAI,CAAC,CAAC;YACX,SAAS;QACX,CAAC;QACD,IAAI,GAAG,KAAK,sBAAsB,EAAE,CAAC;YACnC,OAAO,CAAC,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;YAC9D,KAAK,IAAI,CAAC,CAAC;YACX,SAAS;QACX,CAAC;QACD,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;YACpB,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;YAC1C,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;gBAAE,MAAM,IAAI,QAAQ,CAAC,wBAAwB,KAAK,EAAE,EAAE,yEAAyE,CAAC,CAAC;YACzJ,OAAO,CAAC,GAAG,GAAG,KAAK,CAAC;YACpB,KAAK,IAAI,CAAC,CAAC;YACX,SAAS;QACX,CAAC;QACD,IAAI,GAAG,KAAK,WAAW,EAAE,CAAC;YACxB,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;YACvB,SAAS;QACX,CAAC;QACD,MAAM,IAAI,QAAQ,CAAC,0BAA0B,GAAG,EAAE,EAAE,+JAA+J,CAAC,CAAC;IACvN,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,SAAS;QAAE,MAAM,IAAI,QAAQ,CAAC,0BAA0B,EAAE,oFAAoF,CAAC,CAAC;IAC7J,IAAI,OAAO,CAAC,mBAAmB,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,QAAQ,CAAC,wDAAwD,EAAE,+CAA+C,CAAC,CAAC;IAC5K,OAAO,OAAwB,CAAC;AAClC,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAc;IACxC,MAAM,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAC3B,IAAI,CAAC,UAAU;QAAE,MAAM,IAAI,QAAQ,CAAC,+BAA+B,EAAE,sEAAsE,CAAC,CAAC;IAC7I,MAAM,OAAO,GAA2B,EAAE,UAAU,EAAE,CAAC;IACvD,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACpD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAE,CAAC;QACzB,IAAI,GAAG,KAAK,YAAY,EAAE,CAAC;YACzB,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;YACnD,KAAK,IAAI,CAAC,CAAC;YACX,SAAS;QACX,CAAC;QACD,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;YACrB,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;YACpB,SAAS;QACX,CAAC;QACD,MAAM,IAAI,QAAQ,CAAC,0BAA0B,GAAG,EAAE,EAAE,qDAAqD,CAAC,CAAC;IAC7G,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,YAAY;QAAE,MAAM,IAAI,QAAQ,CAAC,gCAAgC,EAAE,sEAAsE,CAAC,CAAC;IACxJ,OAAO,OAAwB,CAAC;AAClC,CAAC;AAED,SAAS,oBAAoB,CAAC,IAAc;IAC1C,MAAM,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IACnC,IAAI,UAAU,KAAK,gBAAgB;QAAE,OAAO,EAAE,IAAI,EAAE,yBAAyB,EAAE,OAAO,EAAE,iCAAiC,CAAC,IAAI,CAAC,EAAE,CAAC;IAClI,IAAI,UAAU,KAAK,YAAY;QAAE,OAAO,EAAE,IAAI,EAAE,qBAAqB,EAAE,OAAO,EAAE,6BAA6B,CAAC,IAAI,CAAC,EAAE,CAAC;IACtH,IAAI,UAAU,KAAK,MAAM;QAAE,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,wBAAwB,CAAC,IAAI,CAAC,EAAE,CAAC;IACrG,MAAM,IAAI,QAAQ,CAAC,6BAA6B,UAAU,IAAI,WAAW,EAAE,EAAE,uDAAuD,CAAC,CAAC;AACxI,CAAC;AAED,SAAS,iCAAiC,CAAC,IAAc;IACvD,MAAM,OAAO,GAA0C,EAAE,CAAC;IAC1D,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACpD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAE,CAAC;QACzB,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YAAC,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;YAAC,KAAK,IAAI,CAAC,CAAC;YAAC,SAAS;QAAC,CAAC;QACjG,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;YAAC,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;YAAC,KAAK,IAAI,CAAC,CAAC;YAAC,SAAS;QAAC,CAAC;QAC7F,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YAAC,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;YAAC,KAAK,IAAI,CAAC,CAAC;YAAC,SAAS;QAAC,CAAC;QAC7F,MAAM,IAAI,QAAQ,CAAC,2CAA2C,GAAG,EAAE,EAAE,6EAA6E,CAAC,CAAC;IACtJ,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,SAAS;QAAE,MAAM,IAAI,QAAQ,CAAC,wBAAwB,EAAE,4DAA4D,CAAC,CAAC;IACnI,OAAO,OAAuC,CAAC;AACjD,CAAC;AAED,SAAS,6BAA6B,CAAC,IAAc;IACnD,MAAM,IAAI,GAAG,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,gBAAgB,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,gBAAgB,CAAC,CAAC,CAAC;IAC/H,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACxD,IAAI,gBAAgB,KAAK,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACzC,OAAO,EAAE,GAAG,IAAI,EAAE,eAAe,EAAE,SAAS,CAAC,IAAI,EAAE,gBAAgB,EAAE,gBAAgB,CAAC,EAAE,CAAC;AAC3F,CAAC;AAED,SAAS,wBAAwB,CAAC,IAAc;IAC9C,MAAM,OAAO,GAAiC,EAAE,CAAC;IACjD,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACpD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAE,CAAC;QACzB,IAAI,GAAG,KAAK,YAAY,EAAE,CAAC;YAAC,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;YAAC,KAAK,IAAI,CAAC,CAAC;YAAC,SAAS;QAAC,CAAC;QACvG,IAAI,GAAG,KAAK,aAAa,EAAE,CAAC;YAAC,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;YAAC,KAAK,IAAI,CAAC,CAAC;YAAC,SAAS;QAAC,CAAC;QACzG,IAAI,GAAG,KAAK,UAAU,EAAE,CAAC;YAAC,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;YAAC,KAAK,IAAI,CAAC,CAAC;YAAC,SAAS;QAAC,CAAC;QACnG,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;YAAC,OAAO,CAAC,EAAE,GAAG,IAAI,CAAC;YAAC,SAAS;QAAC,CAAC;QACpD,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;YAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;YAAC,SAAS;QAAC,CAAC;QACxD,MAAM,IAAI,QAAQ,CAAC,iCAAiC,GAAG,EAAE,EAAE,+HAA+H,CAAC,CAAC;IAC9L,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,CAAC,OAAO,CAAC,aAAa;QAAE,MAAM,IAAI,QAAQ,CAAC,sDAAsD,EAAE,0FAA0F,CAAC,CAAC;IAC5N,OAAO,OAA8B,CAAC;AACxC,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAc;IACtC,MAAM,OAAO,GAAgB,EAAE,CAAC;IAChC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACpD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAE,CAAC;QACzB,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;YAAC,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;YAAC,KAAK,IAAI,CAAC,CAAC;YAAC,SAAS;QAAC,CAAC;QAC/F,IAAI,GAAG,KAAK,YAAY,EAAE,CAAC;YACzB,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;YAC1C,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;gBAAE,MAAM,IAAI,QAAQ,CAAC,0BAA0B,KAAK,EAAE,EAAE,uHAAuH,CAAC,CAAC;YAC3M,OAAO,CAAC,QAAQ,GAAG,KAAK,CAAC;YACzB,KAAK,IAAI,CAAC,CAAC;YACX,SAAS;QACX,CAAC;QACD,IAAI,GAAG,KAAK,YAAY,EAAE,CAAC;YAAC,OAAO,CAAC,YAAY,GAAG,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;YAAC,KAAK,IAAI,CAAC,CAAC;YAAC,SAAS;QAAC,CAAC;QACvG,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;YAAC,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;YAAC,KAAK,IAAI,CAAC,CAAC;YAAC,SAAS;QAAC,CAAC;QAC7F,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;YAAC,OAAO,CAAC,EAAE,GAAG,IAAI,CAAC;YAAC,SAAS;QAAC,CAAC;QACpD,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;YAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;YAAC,SAAS;QAAC,CAAC;QACxD,MAAM,IAAI,QAAQ,CAAC,wBAAwB,GAAG,EAAE,EAAE,4HAA4H,CAAC,CAAC;IAClL,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,QAAQ,KAAK,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,KAAK,SAAS,CAAC;QAAE,MAAM,IAAI,QAAQ,CAAC,oDAAoD,EAAE,6EAA6E,CAAC,CAAC;IACnO,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,iBAAiB,CAAC,IAAc;IACvC,MAAM,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IACnC,IAAI,UAAU,KAAK,QAAQ;QAAE,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,uBAAuB,CAAC,IAAI,CAAC,EAAE,CAAC;IACrG,IAAI,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,OAAO,EAAE,CAAC;QACvD,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACnB,IAAI,CAAC,EAAE;YAAE,MAAM,IAAI,QAAQ,CAAC,wBAAwB,UAAU,GAAG,EAAE,uBAAuB,UAAU,sBAAsB,CAAC,CAAC;QAC5H,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,IAAI,EAAE,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,aAAa,EAAE,EAAE,EAAE,CAAC;QACvG,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ;YAAE,OAAO,EAAE,IAAI,EAAE,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,aAAa,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QAC3I,MAAM,IAAI,QAAQ,CAAC,oBAAoB,UAAU,cAAc,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,uBAAuB,UAAU,sBAAsB,CAAC,CAAC;IACrI,CAAC;IACD,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;QAC1B,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACzB,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,QAAQ,CAAC,0BAA0B,EAAE,0FAA0F,CAAC,CAAC;QAC1J,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,OAAO,EAAE,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACzF,CAAC;IACD,MAAM,IAAI,QAAQ,CAAC,0BAA0B,UAAU,IAAI,WAAW,EAAE,EAAE,+CAA+C,CAAC,CAAC;AAC7H,CAAC;AAED,SAAS,kBAAkB,CAAC,IAAc;IACxC,MAAM,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IACnC,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;QAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACzB,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,QAAQ,CAAC,oBAAoB,EAAE,mDAAmD,CAAC,CAAC;QAC7G,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,QAAQ,EAAE,CAAC;QACnE,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ;YAAE,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QACvG,MAAM,IAAI,QAAQ,CAAC,uCAAuC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,mDAAmD,CAAC,CAAC;IAC5H,CAAC;IACD,MAAM,IAAI,QAAQ,CAAC,2BAA2B,UAAU,IAAI,WAAW,EAAE,EAAE,uHAAuH,CAAC,CAAC;AACtM,CAAC;AAED,SAAS,qBAAqB,CAAC,IAAc;IAC3C,MAAM,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IAC/B,IAAI,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC9F,MAAM,IAAI,QAAQ,CAAC,8BAA8B,MAAM,IAAI,WAAW,EAAE,EAAE,+DAA+D,CAAC,CAAC;IAC7I,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC;IAC5D,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ;QAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAChG,MAAM,IAAI,QAAQ,CAAC,kCAAkC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,+DAA+D,CAAC,CAAC;AACnI,CAAC;AAED,SAAS,uBAAuB,CAAC,IAAc;IAC7C,MAAM,OAAO,GAAgC,EAAE,CAAC;IAChD,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACpD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAE,CAAC;QACzB,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;YAAC,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;YAAC,KAAK,IAAI,CAAC,CAAC;YAAC,SAAS;QAAC,CAAC;QACvF,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;YAAC,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;YAAC,KAAK,IAAI,CAAC,CAAC;YAAC,SAAS;QAAC,CAAC;QAC3F,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YAAC,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;YAAC,KAAK,IAAI,CAAC,CAAC;YAAC,SAAS;QAAC,CAAC;QAC7F,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;YAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;YAAC,SAAS;QAAC,CAAC;QACxD,MAAM,IAAI,QAAQ,CAAC,gCAAgC,GAAG,EAAE,EAAE,4EAA4E,CAAC,CAAC;IAC1I,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI;QAAE,MAAM,IAAI,QAAQ,CAAC,wCAAwC,EAAE,yEAAyE,CAAC,CAAC;IAC1K,OAAO,OAA6B,CAAC;AACvC,CAAC;AAED,SAAS,qBAAqB,CAAC,IAAc;IAC3C,MAAM,OAAO,GAA8B,EAAE,CAAC;IAC9C,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACpD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAE,CAAC;QACzB,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;YAAC,OAAO,CAAC,EAAE,GAAG,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;YAAC,KAAK,IAAI,CAAC,CAAC;YAAC,SAAS;QAAC,CAAC;QACvF,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YAAC,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;YAAC,KAAK,IAAI,CAAC,CAAC;YAAC,SAAS;QAAC,CAAC;QAC7F,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;YAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;YAAC,SAAS;QAAC,CAAC;QACxD,MAAM,IAAI,QAAQ,CAAC,8BAA8B,GAAG,EAAE,EAAE,kEAAkE,CAAC,CAAC;IAC9H,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,EAAE;QAAE,MAAM,IAAI,QAAQ,CAAC,2BAA2B,EAAE,iEAAiE,CAAC,CAAC;IACpI,OAAO,OAA2B,CAAC;AACrC,CAAC;AAED,SAAS,cAAc,CAAC,KAAa;IACnC,OAAO,KAAK,KAAK,aAAa,IAAI,KAAK,KAAK,mBAAmB,IAAI,KAAK,KAAK,mBAAmB,IAAI,KAAK,KAAK,gBAAgB,IAAI,KAAK,KAAK,kBAAkB,IAAI,KAAK,KAAK,sBAAsB,CAAC;AACrM,CAAC;AAED,SAAS,uBAAuB,CAAC,IAAc;IAC7C,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IACpC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,QAAQ,CAAC,uBAAuB,EAAE,yEAAyE,CAAC,CAAC;QACnI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;QAC/D,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,YAAY,IAAI,IAAI,CAAC,CAAC,CAAC;YAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QACzH,MAAM,IAAI,QAAQ,CAAC,kCAAkC,EAAE,yEAAyE,CAAC,CAAC;IACpI,CAAC;IACD,IAAI,IAAI,KAAK,YAAY,EAAE,CAAC;QAC1B,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,IAAI,QAAQ,CAAC,gDAAgD,EAAE,yDAAyD,CAAC,CAAC;QAC/J,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;IACvC,CAAC;IACD,IAAI,IAAI,KAAK,aAAa,EAAE,CAAC;QAC3B,IAAI,CAAC,KAAK,KAAK,yBAAyB,IAAI,KAAK,KAAK,gBAAgB,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,IAAI,QAAQ,CAAC,2BAA2B,EAAE,iFAAiF,CAAC,CAAC;QAC/N,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IAC9C,CAAC;IACD,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtB,MAAM,0BAA0B,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACnD,MAAM,wBAAwB,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAC/C,MAAM,uBAAuB,GAAG,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAChF,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,wBAAwB,CAAC,IAAI,wBAAwB,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,0BAA0B,CAAC,IAAI,0BAA0B,GAAG,CAAC,IAAI,CAAC,uBAAuB,KAAK,SAAS,IAAI,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,uBAAuB,CAAC,IAAI,uBAAuB,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YACzU,MAAM,IAAI,QAAQ,CAAC,mEAAmE,EAAE,6CAA6C,CAAC,CAAC;QACzI,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,wBAAwB,EAAE,0BAA0B,EAAE,GAAG,CAAC,uBAAuB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,uBAAuB,EAAE,CAAC,EAAE,CAAC;IACjK,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,QAAQ,CAAC,2CAA2C,EAAE,mDAAmD,CAAC,CAAC;IAC5I,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,IAAK,EAAE,oBAAoB,EAAE,EAAE,EAAE,CAAC;AAC3E,CAAC;AAED,SAAS,SAAS,CAAC,IAAc,EAAE,KAAa,EAAE,IAAY;IAC5D,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IAC9B,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACrC,MAAM,IAAI,QAAQ,CAAC,qBAAqB,IAAI,GAAG,EAAE,OAAO,IAAI,WAAW,CAAC,CAAC;IAC3E,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,YAAY,CAAC,KAAa;IACjC,IAAI,KAAK,KAAK,MAAM;QAAE,OAAO,IAAI,CAAC;IAClC,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAClC,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,MAAM,KAAK,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,WAAW,CAAC,CAAC;AAC3K,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,KAAa,EAAE,KAAa;IACpD,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC3B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,KAAK,EAAE,CAAC;QACxD,MAAM,IAAI,QAAQ,CAAC,WAAW,KAAK,KAAK,KAAK,EAAE,EAAE,8CAA8C,CAAC,CAAC;IACnG,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,aAAa,CAAC,KAAyB;IAC9C,OAAO,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,KAAK,CAAC;AACzF,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
export type DataPaths = {
|
|
2
|
+
root: string;
|
|
3
|
+
config: string;
|
|
4
|
+
state: string;
|
|
5
|
+
behaviors: string;
|
|
6
|
+
cache: string;
|
|
7
|
+
events: string;
|
|
8
|
+
reports: string;
|
|
9
|
+
scenarios: string;
|
|
10
|
+
contracts: string;
|
|
11
|
+
worlds: string;
|
|
12
|
+
actions: string;
|
|
13
|
+
approvals: string;
|
|
14
|
+
credentialBroker: string;
|
|
15
|
+
trustLadder: string;
|
|
16
|
+
safetyController: string;
|
|
17
|
+
actionLedger: string;
|
|
18
|
+
incidents: string;
|
|
19
|
+
teamControlPlane: string;
|
|
20
|
+
faultLab: string;
|
|
21
|
+
productTelemetry: string;
|
|
22
|
+
reliability: string;
|
|
23
|
+
sloStore: string;
|
|
24
|
+
reconciliationStore: string;
|
|
25
|
+
costStore: string;
|
|
26
|
+
backups: string;
|
|
27
|
+
inventoryStore: string;
|
|
28
|
+
};
|
|
29
|
+
export declare function getDataDir(env?: NodeJS.ProcessEnv): string;
|
|
30
|
+
export declare function resolveDataPath(...segments: string[]): string;
|
|
31
|
+
export declare function getDataPaths(): DataPaths;
|