secretless-ai 0.17.0 → 0.17.1
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 +122 -74
- package/dist/cli.js +24 -1
- package/dist/cli.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,20 +1,23 @@
|
|
|
1
|
-
> **[OpenA2A](https://github.com/opena2a-org/opena2a)**: [CLI](https://github.com/opena2a-org/opena2a) · [HackMyAgent](https://github.com/opena2a-org/hackmyagent) · [Secretless](https://github.com/opena2a-org/secretless-ai) · [AIM](https://github.com/opena2a-org/agent-identity-management) · [Browser Guard](https://github.com/opena2a-org/AI-BrowserGuard) · [DVAA](https://github.com/opena2a-org/damn-vulnerable-ai-agent)
|
|
2
1
|
# secretless-ai
|
|
3
2
|
|
|
3
|
+
> **[OpenA2A](https://github.com/opena2a-org/opena2a)**: [CLI](https://github.com/opena2a-org/opena2a) · [HackMyAgent](https://github.com/opena2a-org/hackmyagent) · [Secretless](https://github.com/opena2a-org/secretless-ai) · [AIM](https://github.com/opena2a-org/agent-identity-management) · [Browser Guard](https://github.com/opena2a-org/AI-BrowserGuard) · [DVAA](https://github.com/opena2a-org/damn-vulnerable-ai-agent)
|
|
4
|
+
|
|
5
|
+
Keep API keys and other secrets invisible to AI coding tools. Works with Claude Code, Cursor, GitHub Copilot, Windsurf, Cline, and Aider. Apache 2.0.
|
|
6
|
+
|
|
4
7
|
[](https://www.npmjs.com/package/secretless-ai)
|
|
5
|
-
[](
|
|
6
|
-
[](https://github.com/opena2a-org/secretless-ai)
|
|
8
|
+
[](LICENSE)
|
|
9
|
+
[](https://github.com/opena2a-org/secretless-ai)
|
|
7
10
|
|
|
8
|
-
|
|
11
|
+
[Website](https://opena2a.org/secretless) · [Demos](https://opena2a.org/demos) · [Discord](https://discord.gg/uRZa3KXgEn)
|
|
9
12
|
|
|
10
|
-
## Quick
|
|
13
|
+
## Quick start
|
|
11
14
|
|
|
12
15
|
```bash
|
|
13
16
|
npx secretless-ai init
|
|
14
17
|
```
|
|
15
18
|
|
|
16
19
|
```
|
|
17
|
-
Secretless v0.17.
|
|
20
|
+
Secretless v0.17.1
|
|
18
21
|
Keeping secrets out of AI
|
|
19
22
|
|
|
20
23
|
Configured: Claude Code (1 of 1 detected)
|
|
@@ -34,13 +37,52 @@ npx secretless-ai init
|
|
|
34
37
|
|
|
35
38
|

|
|
36
39
|
|
|
37
|
-
|
|
40
|
+
## Install
|
|
41
|
+
|
|
42
|
+
### npm
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
npx secretless-ai init # run once, no install
|
|
46
|
+
npm install -g secretless-ai # install globally
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
Requires Node.js 18 or later.
|
|
50
|
+
|
|
51
|
+
### Homebrew
|
|
38
52
|
|
|
39
53
|
```bash
|
|
40
|
-
|
|
54
|
+
brew install opena2a-org/tap/secretless-ai
|
|
41
55
|
```
|
|
42
56
|
|
|
43
|
-
|
|
57
|
+
### From source
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
git clone https://github.com/opena2a-org/secretless-ai.git
|
|
61
|
+
cd secretless-ai
|
|
62
|
+
npm install
|
|
63
|
+
npm run build && npm test
|
|
64
|
+
node dist/cli.js verify
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
### Verifying what was installed
|
|
68
|
+
|
|
69
|
+
Every release publishes via npm Trusted Publishing with SLSA v1 provenance. No long-lived `NPM_TOKEN`. GitHub Actions exchanges its OIDC token with npm at publish time.
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
npm view secretless-ai dist.attestations --json
|
|
73
|
+
# Expects non-empty result with predicateType "https://slsa.dev/provenance/v1"
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
Secretless never reads or transmits credential values it manages. Backends (OS keychain, 1Password, HashiCorp Vault, GCP Secret Manager, AES-256-GCM encrypted file) decrypt on demand at subprocess spawn time. `secretless-ai verify` runs an integrity check of your local install.
|
|
77
|
+
|
|
78
|
+
## How it works
|
|
79
|
+
|
|
80
|
+
1. **Scans** your project for hardcoded credentials in config files and source code. 56 credential patterns from [`@opena2a/credential-patterns@0.1.1`](https://www.npmjs.com/package/@opena2a/credential-patterns), lockstep-asserted, across `.js`, `.ts`, `.py`, `.go`, `.java`, `.rb`, and more. Suppresses fixture-path false positives via `.secretlessignore` defaults (`test/`, `__tests__/`, `examples/`, `e2e/`, `docs/vhs/`, `node_modules/`, etc.).
|
|
81
|
+
2. **Migrates** them to secure storage: OS keychain, 1Password, HashiCorp Vault, GCP Secret Manager, or AES-256-GCM encrypted file.
|
|
82
|
+
3. **Blocks** AI tools from reading credential files. 21 file patterns enforced at the AI-tool hook layer.
|
|
83
|
+
4. **Brokers** access through environment variables. Secrets never enter AI context.
|
|
84
|
+
|
|
85
|
+
## MCP server protection
|
|
44
86
|
|
|
45
87
|
Every MCP server config has plaintext API keys in JSON files on your machine. The LLM sees them. Secretless encrypts them.
|
|
46
88
|
|
|
@@ -59,50 +101,43 @@ npx secretless-ai protect-mcp
|
|
|
59
101
|
STRIPE_SECRET_KEY (encrypted)
|
|
60
102
|
|
|
61
103
|
3 secret(s) encrypted across 3 server(s).
|
|
62
|
-
MCP servers start normally
|
|
104
|
+
MCP servers start normally. No workflow changes needed.
|
|
63
105
|
```
|
|
64
106
|
|
|
65
107
|
Scans configs across Claude Desktop, Cursor, Claude Code, VS Code, and Windsurf. Secrets move to your configured backend. Non-secret env vars (URLs, regions) stay untouched.
|
|
66
108
|
|
|
67
109
|
```bash
|
|
68
|
-
npx secretless-ai protect-mcp --backend 1password
|
|
69
|
-
npx secretless-ai mcp-status
|
|
70
|
-
npx secretless-ai mcp-unprotect
|
|
110
|
+
npx secretless-ai protect-mcp --backend 1password # store MCP secrets in 1Password
|
|
111
|
+
npx secretless-ai mcp-status # show which servers are protected
|
|
112
|
+
npx secretless-ai mcp-unprotect # restore original configs from backup
|
|
71
113
|
```
|
|
72
114
|
|
|
73
|
-
## Triage
|
|
115
|
+
## Triage helpers
|
|
74
116
|
|
|
75
117
|
```bash
|
|
76
|
-
npx secretless-ai scan --min-confidence 0.85 #
|
|
77
|
-
npx secretless-ai ignore docs/migration.md #
|
|
118
|
+
npx secretless-ai scan --min-confidence 0.85 # high-confidence findings only
|
|
119
|
+
npx secretless-ai ignore docs/migration.md # append a path to .secretlessignore
|
|
78
120
|
npx secretless-ai ignore --pattern '*.golden.txt'
|
|
79
|
-
npx secretless-ai diff main #
|
|
121
|
+
npx secretless-ai diff main # audit secretless-managed file changes vs a git ref
|
|
80
122
|
```
|
|
81
123
|
|
|
82
|
-
`scan`
|
|
83
|
-
|
|
84
|
-
## How It Works
|
|
85
|
-
|
|
86
|
-
1. **Scans** your project for hardcoded credentials in config files *and* source code (56 patterns from `@opena2a/credential-patterns@0.1.1`, lockstep-asserted, across .js, .ts, .py, .go, .java, .rb, and more). Suppresses fixture-path false positives via `.secretlessignore` defaults (`test/`, `__tests__/`, `examples/`, `e2e/`, `docs/vhs/`, `node_modules/` ...)
|
|
87
|
-
2. **Migrates** them to secure storage (OS keychain, 1Password, Vault, GCP Secret Manager)
|
|
88
|
-
3. **Blocks** AI tools from reading credential files (21 file patterns)
|
|
89
|
-
4. **Brokers** access through environment variables -- secrets never enter AI context
|
|
124
|
+
`scan` renders a `Confidence: high (0.92)` line under every finding. The score combines pattern specificity, value entropy, value length, and path tier. With `--no-ignore`, findings whose path matches the default-ignore list are tagged `(looks like a test fixture)` so they stay visible without being re-suppressed.
|
|
90
125
|
|
|
91
126
|
## Architecture
|
|
92
127
|
|
|
93
|
-
|
|
128
|
+
Three layers. Use one, two, or all three. Each works against any supported backend.
|
|
94
129
|
|
|
95
|
-
**Tier 1
|
|
130
|
+
**Tier 1: In-process SDK.** Credentials resolved in the call stack and zeroized after use. Available in the Python and TypeScript AIM SDKs. Sub-millisecond overhead.
|
|
96
131
|
|
|
97
|
-
**Tier 2
|
|
132
|
+
**Tier 2: Vault Exec.** A subprocess primitive that injects a credential into a child process's environment without exposing it to the parent. The agent running under an AI assistant never sees the secret.
|
|
98
133
|
|
|
99
134
|
```bash
|
|
100
135
|
npx secretless-ai vault exec github -- curl https://api.github.com/user
|
|
101
136
|
```
|
|
102
137
|
|
|
103
|
-
The child process receives `$GITHUB`. The parent shell, the AI tool's context, and any process listing see nothing. Language-agnostic
|
|
138
|
+
The child process receives `$GITHUB`. The parent shell, the AI tool's context, and any process listing see nothing. Language-agnostic. Wraps any command.
|
|
104
139
|
|
|
105
|
-
**Tier 3
|
|
140
|
+
**Tier 3: Broker with identity policy.** A local daemon that mediates credential access across multiple agents. Policy rules allow or deny access by agent ID, credential name, time window, and rate limit. Optional AIM integration adds trust-score and capability constraints.
|
|
106
141
|
|
|
107
142
|
```bash
|
|
108
143
|
npx secretless-ai broker start
|
|
@@ -110,23 +145,12 @@ npx secretless-ai broker start
|
|
|
110
145
|
|
|
111
146
|
See [Run the Broker](docs/use-cases/run-broker.md) for when to use the daemon and how to configure it.
|
|
112
147
|
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
## Use Cases
|
|
148
|
+
AIM is optional. Tier 1 and Tier 2 work against any of the five [storage backends](#storage-backends) with no AIM involvement. Tier 3 adds identity-bound policy when an AIM server is reachable. Default-deny still enforces locally without one.
|
|
116
149
|
|
|
117
|
-
|
|
150
|
+
## Supported tools
|
|
118
151
|
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
- [Bring Your Own Vault](docs/use-cases/bring-your-own-vault.md) -- Point Secretless at HashiCorp Vault, GCP SM, or 1Password (3 min)
|
|
122
|
-
- [Run the Broker](docs/use-cases/run-broker.md) -- Policy-gated credential daemon for multi-agent runtimes (3 min)
|
|
123
|
-
- [Team Setup](docs/use-cases/team-setup.md) -- Shared backend, CI/CD, onboarding (5 min)
|
|
124
|
-
- [Migrate from .env](docs/use-cases/migrate-from-dotenv.md) -- Move .env files to encrypted storage (3 min)
|
|
125
|
-
|
|
126
|
-
## Supported Tools
|
|
127
|
-
|
|
128
|
-
| Tool | Protection Method |
|
|
129
|
-
|------|------------------|
|
|
152
|
+
| Tool | Protection method |
|
|
153
|
+
|---|---|
|
|
130
154
|
| Claude Code | PreToolUse hook (blocks reads before they happen) + deny rules + CLAUDE.md |
|
|
131
155
|
| Cursor | `.cursorrules` instructions |
|
|
132
156
|
| GitHub Copilot | `.github/copilot-instructions.md` instructions |
|
|
@@ -134,68 +158,92 @@ Step-by-step guides for common workflows: [docs/USE-CASES.md](docs/USE-CASES.md)
|
|
|
134
158
|
| Cline | `.clinerules` instructions |
|
|
135
159
|
| Aider | `.aiderignore` file patterns |
|
|
136
160
|
|
|
137
|
-
Claude Code gets the strongest protection because it supports [hooks](https://docs.anthropic.com/en/docs/claude-code/hooks)
|
|
161
|
+
Claude Code gets the strongest protection because it supports [hooks](https://docs.anthropic.com/en/docs/claude-code/hooks). A shell script runs before every file read and blocks access at the tool level.
|
|
138
162
|
|
|
139
|
-
## Storage
|
|
163
|
+
## Storage backends
|
|
140
164
|
|
|
141
|
-
| Backend | Storage | Best
|
|
142
|
-
|
|
165
|
+
| Backend | Storage | Best for |
|
|
166
|
+
|---|---|---|
|
|
143
167
|
| `local` | AES-256-GCM encrypted file | Quick start, single machine |
|
|
144
|
-
| `keychain` | macOS Keychain
|
|
168
|
+
| `keychain` | macOS Keychain or Linux Secret Service | Native OS integration |
|
|
145
169
|
| `1password` | 1Password vault | Teams, CI/CD, multi-device |
|
|
146
170
|
| `vault` | HashiCorp Vault KV v2 | Enterprise, self-hosted |
|
|
147
171
|
| `gcp-sm` | GCP Secret Manager | GCP-native workloads |
|
|
148
172
|
|
|
149
173
|
```bash
|
|
150
|
-
npx secretless-ai backend set 1password
|
|
151
|
-
npx secretless-ai migrate --from local --to 1password #
|
|
174
|
+
npx secretless-ai backend set 1password # switch backend
|
|
175
|
+
npx secretless-ai migrate --from local --to 1password # migrate existing secrets
|
|
152
176
|
```
|
|
153
177
|
|
|
154
|
-
## NanoMind
|
|
178
|
+
## NanoMind integration
|
|
155
179
|
|
|
156
180
|
Optional integration with [NanoMind](https://github.com/opena2a-org/nanomind) for enhanced security analysis:
|
|
157
181
|
|
|
158
182
|
```bash
|
|
159
|
-
npm install @nanomind/guard @nanomind/engine #
|
|
183
|
+
npm install @nanomind/guard @nanomind/engine # optional
|
|
160
184
|
```
|
|
161
185
|
|
|
162
|
-
- **MCP injection screening
|
|
163
|
-
- **Rich scan explanations
|
|
186
|
+
- **MCP injection screening.** `protect-mcp` screens env-var values for prompt-injection patterns and warns when suspicious content is detected.
|
|
187
|
+
- **Rich scan explanations.** `scan --explain` generates context-aware security explanations for each finding using NanoMind's local inference engine.
|
|
164
188
|
|
|
165
189
|
Both features gracefully degrade when NanoMind packages are not installed.
|
|
166
190
|
|
|
167
191
|
## Using with opena2a-cli
|
|
168
192
|
|
|
169
|
-
[opena2a-cli](https://github.com/opena2a-org/opena2a)
|
|
193
|
+
[`opena2a-cli`](https://github.com/opena2a-org/opena2a) is the unified CLI for the OpenA2A security toolchain. Secretless powers `opena2a secrets`.
|
|
170
194
|
|
|
171
195
|
```bash
|
|
172
196
|
npm install -g opena2a-cli
|
|
173
|
-
opena2a review #
|
|
174
|
-
opena2a secrets init #
|
|
197
|
+
opena2a review # full security dashboard
|
|
198
|
+
opena2a secrets init # initialize secretless protection
|
|
175
199
|
```
|
|
176
200
|
|
|
177
|
-
##
|
|
201
|
+
## Telemetry
|
|
202
|
+
|
|
203
|
+
Secretless sends anonymous tier-1 usage data to the OpenA2A Registry: tool name (`secretless-ai`), version, command name (`scan`, `protect`, etc.), success, duration, platform, Node major version, and a stable per-machine `install_id`. No content is collected. No scanned secrets, no file paths, no env-var values, no rule contents, no IPs.
|
|
204
|
+
|
|
205
|
+
- Policy: [opena2a.org/telemetry](https://opena2a.org/telemetry).
|
|
206
|
+
- Status: `secretless-ai telemetry status`.
|
|
207
|
+
- Disable per-invocation: `OPENA2A_TELEMETRY=off secretless-ai <anything>`.
|
|
208
|
+
- Disable persistently: `secretless-ai telemetry off`.
|
|
209
|
+
- Audit every payload: `OPENA2A_TELEMETRY_DEBUG=print secretless-ai <anything>` echoes each event to stderr as JSON.
|
|
210
|
+
|
|
211
|
+
Fire-and-forget with a 2-second timeout. Telemetry never blocks Secretless.
|
|
212
|
+
|
|
213
|
+
## Use cases
|
|
214
|
+
|
|
215
|
+
| Guide | Time |
|
|
216
|
+
|---|---|
|
|
217
|
+
| [Protect My Credentials](docs/use-cases/protect-my-credentials.md) | 2 min |
|
|
218
|
+
| [Secure MCP Configs](docs/use-cases/secure-mcp-configs.md) | 3 min |
|
|
219
|
+
| [Bring Your Own Vault](docs/use-cases/bring-your-own-vault.md) | 3 min |
|
|
220
|
+
| [Run the Broker](docs/use-cases/run-broker.md) | 3 min |
|
|
221
|
+
| [Team Setup](docs/use-cases/team-setup.md) | 5 min |
|
|
222
|
+
| [Migrate from .env](docs/use-cases/migrate-from-dotenv.md) | 3 min |
|
|
223
|
+
|
|
224
|
+
Full index: [docs/USE-CASES.md](docs/USE-CASES.md).
|
|
225
|
+
|
|
226
|
+
## Contributing
|
|
227
|
+
|
|
228
|
+
Apache 2.0. PRs from outside the org welcome.
|
|
178
229
|
|
|
179
230
|
```bash
|
|
180
|
-
|
|
231
|
+
git clone https://github.com/opena2a-org/secretless-ai.git
|
|
232
|
+
cd secretless-ai && npm install && npm run build && npm test
|
|
181
233
|
```
|
|
182
234
|
|
|
183
|
-
|
|
235
|
+
Security issues: `security@opena2a.org` (coordinated disclosure, response within 24 hours).
|
|
184
236
|
|
|
185
|
-
|
|
237
|
+
## Links
|
|
186
238
|
|
|
187
|
-
-
|
|
188
|
-
-
|
|
189
|
-
-
|
|
190
|
-
-
|
|
191
|
-
-
|
|
239
|
+
- [Website](https://opena2a.org/secretless)
|
|
240
|
+
- [Documentation](https://opena2a.org/docs/secretless)
|
|
241
|
+
- [Demos](https://opena2a.org/demos)
|
|
242
|
+
- [OpenA2A CLI](https://github.com/opena2a-org/opena2a)
|
|
243
|
+
- [Credential patterns library](https://www.npmjs.com/package/@opena2a/credential-patterns)
|
|
192
244
|
|
|
193
|
-
|
|
245
|
+
Part of the [OpenA2A](https://opena2a.org) security platform.
|
|
194
246
|
|
|
195
247
|
## License
|
|
196
248
|
|
|
197
|
-
Apache-2.0
|
|
198
|
-
|
|
199
|
-
---
|
|
200
|
-
|
|
201
|
-
Part of the [OpenA2A](https://opena2a.org) ecosystem. Full reference: [opena2a.org/docs/secretless](https://opena2a.org/docs/secretless)
|
|
249
|
+
Apache-2.0. See [LICENSE](LICENSE).
|
package/dist/cli.js
CHANGED
|
@@ -108,16 +108,37 @@ async function main() {
|
|
|
108
108
|
}
|
|
109
109
|
finally {
|
|
110
110
|
if (command && !NON_TRACKED.has(command)) {
|
|
111
|
-
|
|
111
|
+
// Exit 1 = scanner found credentials (the tool's job); >=2 = real error.
|
|
112
|
+
// npm audit / eslint convention. Matches @opena2a/telemetry.successFromExitCode.
|
|
113
|
+
await tele.track(command, { success: exitCode <= 1, durationMs: Date.now() - startedAt });
|
|
112
114
|
}
|
|
113
115
|
await tele.flush();
|
|
114
116
|
}
|
|
115
117
|
return exitCode;
|
|
116
118
|
}
|
|
119
|
+
/**
|
|
120
|
+
* Reject unknown `--flag` / `-flag` args that would otherwise be silently
|
|
121
|
+
* treated as a directory path by commands whose only positional is `[dir]`.
|
|
122
|
+
* Pre-fix: `secretless-ai init --ci` created a literal `--ci/` directory and
|
|
123
|
+
* scaffolded files into it (release-test 2026-05-12 P1).
|
|
124
|
+
*
|
|
125
|
+
* Returns `false` if the caller should bail with exit 2; `true` to proceed.
|
|
126
|
+
*/
|
|
127
|
+
function rejectUnknownFlagAsDirArg(command, dirArg) {
|
|
128
|
+
if (dirArg && dirArg.startsWith('-')) {
|
|
129
|
+
console.error(` Unknown option: ${dirArg}`);
|
|
130
|
+
console.error(` \`${command}\` takes an optional directory path, not flags.`);
|
|
131
|
+
console.error(` Run \`secretless-ai ${command} --help\` for usage.`);
|
|
132
|
+
return false;
|
|
133
|
+
}
|
|
134
|
+
return true;
|
|
135
|
+
}
|
|
117
136
|
async function dispatch(args, command) {
|
|
118
137
|
switch (command) {
|
|
119
138
|
case 'init': {
|
|
120
139
|
const dirArg = args[1];
|
|
140
|
+
if (!rejectUnknownFlagAsDirArg('init', dirArg))
|
|
141
|
+
return 2;
|
|
121
142
|
const projectDir = dirArg ? path.resolve(dirArg) : process.cwd();
|
|
122
143
|
return (0, core_1.runInit)(projectDir);
|
|
123
144
|
}
|
|
@@ -163,6 +184,8 @@ async function dispatch(args, command) {
|
|
|
163
184
|
}
|
|
164
185
|
case 'status': {
|
|
165
186
|
const dirArg = args[1];
|
|
187
|
+
if (!rejectUnknownFlagAsDirArg('status', dirArg))
|
|
188
|
+
return 2;
|
|
166
189
|
const projectDir = dirArg ? path.resolve(dirArg) : process.cwd();
|
|
167
190
|
return (0, core_1.runStatus)(projectDir);
|
|
168
191
|
}
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;AAEA;;;GAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,2CAA6B;AAE7B,4CAA2C;AAC3C,6EAA6E;AAC7E,kEAAkE;AAClE,0CAAoF;AACpF,sDAA4F;AAC5F,gDAA+C;AAC/C,gDAAgF;AAChF,4CAA4C;AAC5C,wCAAwD;AACxD,wCAA8E;AAC9E,gDAAsE;AACtE,8CAA8C;AAC9C,4CAA4C;AAC5C,4CAA4C;AAC5C,gDAAyD;AACzD,kDAAkD;AAClD,8CAA8C;AAC9C,0CAA0C;AAC1C,0CAA4C;AAE5C,MAAM,IAAI,GAAG,eAAe,CAAC;AAC7B,4EAA4E;AAC5E,4EAA4E;AAC5E,qCAAqC;AACrC,MAAM,WAAW,GAAG,IAAI,GAAG,CAAS,CAAC,WAAW,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;AAEtF,KAAK,UAAU,IAAI;IACjB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnC,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAExB,mFAAmF;IACnF,gFAAgF;IAChF,uEAAuE;IACvE,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;IAChD,MAAM,EAAE,WAAW,EAAE,mBAAmB,EAAE,GAAG,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;IAC7E,MAAM,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,eAAO,EAAE,CAAC,CAAC;IAElD,gFAAgF;IAChF,gFAAgF;IAChF,iFAAiF;IACjF,gFAAgF;IAChF,oEAAoE;IACpE,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAChE,IAAA,gBAAS,GAAE,CAAC;QACZ,OAAO,CAAC,CAAC;IACX,CAAC;IAED,4EAA4E;IAC5E,IAAI,OAAO,KAAK,WAAW,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QAChD,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,eAAO,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;QACrF,OAAO,CAAC,CAAC;IACX,CAAC;IAED,uBAAuB;IACvB,IAAI,OAAO,KAAK,WAAW,EAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAoB,EAAE;YAC1D,IAAI,EAAE,IAAI;YACV,SAAS,EAAE,IAAI,CAAC,MAAM;YACtB,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B,CAAC,CAAC,CAAC;QACJ,OAAO,CAAC,CAAC;IACX,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC3C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,QAAQ,GAAG,CAAC,CAAC;QACb,IAAI,OAAO;YAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EAAG,GAAwC,EAAE,IAAI,IAAK,GAAyB,EAAE,IAAI,IAAI,SAAS,CAAC,CAAC;QACnI,MAAM,GAAG,CAAC;IACZ,CAAC;YAAS,CAAC;QACT,IAAI,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YACzC,yEAAyE;YACzE,iFAAiF;YACjF,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,QAAQ,IAAI,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,EAAE,CAAC,CAAC;QAC5F,CAAC;QACD,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,yBAAyB,CAAC,OAAe,EAAE,MAA0B;IAC5E,IAAI,MAAM,IAAI,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACrC,OAAO,CAAC,KAAK,CAAC,qBAAqB,MAAM,EAAE,CAAC,CAAC;QAC7C,OAAO,CAAC,KAAK,CAAC,OAAO,OAAO,iDAAiD,CAAC,CAAC;QAC/E,OAAO,CAAC,KAAK,CAAC,yBAAyB,OAAO,sBAAsB,CAAC,CAAC;QACtE,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,KAAK,UAAU,QAAQ,CAAC,IAAc,EAAE,OAA2B;IACjE,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACvB,IAAI,CAAC,yBAAyB,CAAC,MAAM,EAAE,MAAM,CAAC;gBAAE,OAAO,CAAC,CAAC;YACzD,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;YACjE,OAAO,IAAA,cAAO,EAAC,UAAU,CAAC,CAAC;QAC7B,CAAC;QACD,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC/B,OAAO,IAAA,2BAAc,GAAE,CAAC;YAC1B,CAAC;YACD,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;YACtD,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;YAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;YAC9C,sEAAsE;YACtE,oEAAoE;YACpE,wEAAwE;YACxE,oDAAoD;YACpD,IAAI,aAAa,GAAG,CAAC,CAAC;YACtB,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;YAC/C,IAAI,KAAK,KAAK,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;gBAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;gBAC5B,MAAM,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;gBACtC,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;oBAC1D,aAAa,GAAG,MAAM,CAAC;gBACzB,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,KAAK,CAAC,uDAAuD,GAAG,wBAAwB,CAAC,CAAC;gBACpG,CAAC;YACH,CAAC;YACD,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC,iBAAiB,EAAE,WAAW,EAAE,aAAa,EAAE,kBAAkB,CAAC,CAAC,CAAC;YAC9F,MAAM,cAAc,GAAa,EAAE,CAAC;YACpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACrC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;gBAClB,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;oBACpB,IAAI,CAAC,KAAK,kBAAkB;wBAAE,CAAC,EAAE,CAAC;oBAClC,SAAS;gBACX,CAAC;gBACD,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC;oBAAE,SAAS;gBACjC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YACzB,CAAC;YACD,MAAM,MAAM,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;YACjC,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;YACjE,OAAO,IAAA,cAAO,EAAC,UAAU,EAAE,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,CAAC,CAAC;QACjF,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACvB,IAAI,CAAC,yBAAyB,CAAC,QAAQ,EAAE,MAAM,CAAC;gBAAE,OAAO,CAAC,CAAC;YAC3D,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;YACjE,OAAO,IAAA,gBAAS,EAAC,UAAU,CAAC,CAAC;QAC/B,CAAC;QACD,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YACvC,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC;YAC5D,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;YAC7B,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;YACjE,OAAO,IAAA,gBAAS,EAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QACxC,CAAC;QACD,KAAK,QAAQ;YACX,OAAO,IAAA,gBAAS,EAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;QAC3C,KAAK,OAAO;YACV,OAAO,IAAA,qBAAQ,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACjC,KAAK,OAAO;YACV,OAAO,IAAA,qBAAQ,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACjC,KAAK,OAAO;YACV,OAAO,IAAA,gBAAQ,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACjC,KAAK,aAAa;YAChB,OAAO,IAAA,mBAAa,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACtC,KAAK,YAAY;YACf,OAAO,IAAA,kBAAY,GAAE,CAAC;QACxB,KAAK,eAAe;YAClB,OAAO,IAAA,qBAAe,GAAE,CAAC;QAC3B,KAAK,SAAS;YACZ,OAAO,IAAA,oBAAU,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACnC,KAAK,SAAS;YACZ,OAAO,IAAA,oBAAU,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACnC,KAAK,QAAQ;YACX,OAAO,IAAA,mBAAS,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAClC,KAAK,KAAK;YACR,OAAO,IAAA,gBAAM,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/B,KAAK,KAAK;YACR,OAAO,IAAA,gBAAM,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/B,KAAK,QAAQ;YACX,OAAO,IAAA,mBAAS,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAClC,KAAK,OAAO;YACV,OAAO,IAAA,yBAAe,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACxC,KAAK,MAAM;YACT,OAAO,IAAA,aAAO,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAChC,KAAK,aAAa;YAChB,OAAO,IAAA,mBAAa,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACtC,KAAK,OAAO;YACV,OAAO,IAAA,kBAAQ,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACjC,KAAK,QAAQ;YACX,OAAO,IAAA,kBAAS,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAClC,KAAK,OAAO;YACV,OAAO,IAAA,gBAAQ,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACjC,KAAK,OAAO;YACV,OAAO,IAAA,gBAAQ,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACjC,KAAK,cAAc;YACjB,OAAO,IAAA,2BAAc,GAAE,CAAC;QAC1B,KAAK,eAAe;YAClB,OAAO,IAAA,4BAAe,EAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;QACrD,KAAK,MAAM;YACT,OAAO,IAAA,iBAAO,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAChC,KAAK,SAAS;YACZ,OAAO,IAAA,oBAAU,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACnC,KAAK,UAAU;YACb,OAAO,IAAA,sBAAW,GAAE,CAAC;QACvB,KAAK,QAAQ;YACX,OAAO,IAAA,kBAAS,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAClC,KAAK,MAAM;YACT,OAAO,IAAA,cAAO,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAChC,KAAK,QAAQ,CAAC;QACd,KAAK,IAAI,CAAC;QACV,KAAK,SAAS;YACZ,IAAA,gBAAS,GAAE,CAAC;YACZ,OAAO,CAAC,CAAC;QACX;YACE,OAAO,CAAC,KAAK,CAAC,oBAAoB,OAAO,EAAE,CAAC,CAAC;YAC7C,IAAA,gBAAS,GAAE,CAAC;YACZ,OAAO,CAAC,CAAC;IACb,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,IAAI,CACT,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAC5B,CAAC,GAAG,EAAE,EAAE;IACN,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACnB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CACF,CAAC"}
|
package/package.json
CHANGED