opena2a-cli 0.1.0 → 0.1.2

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.
Files changed (76) hide show
  1. package/README.md +280 -0
  2. package/dist/adapters/registry.js +1 -1
  3. package/dist/adapters/registry.js.map +1 -1
  4. package/dist/commands/init.d.ts.map +1 -1
  5. package/dist/commands/init.js +78 -3
  6. package/dist/commands/init.js.map +1 -1
  7. package/dist/commands/protect.d.ts +2 -0
  8. package/dist/commands/protect.d.ts.map +1 -1
  9. package/dist/commands/protect.js +56 -10
  10. package/dist/commands/protect.js.map +1 -1
  11. package/dist/commands/runtime.d.ts +1 -1
  12. package/dist/commands/runtime.js +5 -5
  13. package/dist/commands/runtime.js.map +1 -1
  14. package/dist/commands/self-register.js +6 -6
  15. package/dist/commands/self-register.js.map +1 -1
  16. package/dist/commands/shield.d.ts +36 -0
  17. package/dist/commands/shield.d.ts.map +1 -0
  18. package/dist/commands/shield.js +834 -0
  19. package/dist/commands/shield.js.map +1 -0
  20. package/dist/commands/verify.js +1 -1
  21. package/dist/commands/verify.js.map +1 -1
  22. package/dist/index.js +29 -0
  23. package/dist/index.js.map +1 -1
  24. package/dist/shield/detect.d.ts +18 -0
  25. package/dist/shield/detect.d.ts.map +1 -0
  26. package/dist/shield/detect.js +402 -0
  27. package/dist/shield/detect.js.map +1 -0
  28. package/dist/shield/events.d.ts +65 -0
  29. package/dist/shield/events.d.ts.map +1 -0
  30. package/dist/shield/events.js +342 -0
  31. package/dist/shield/events.js.map +1 -0
  32. package/dist/shield/init.d.ts +22 -0
  33. package/dist/shield/init.d.ts.map +1 -0
  34. package/dist/shield/init.js +290 -0
  35. package/dist/shield/init.js.map +1 -0
  36. package/dist/shield/integrity.d.ts +75 -0
  37. package/dist/shield/integrity.d.ts.map +1 -0
  38. package/dist/shield/integrity.js +435 -0
  39. package/dist/shield/integrity.js.map +1 -0
  40. package/dist/shield/llm-backend.d.ts +36 -0
  41. package/dist/shield/llm-backend.d.ts.map +1 -0
  42. package/dist/shield/llm-backend.js +145 -0
  43. package/dist/shield/llm-backend.js.map +1 -0
  44. package/dist/shield/llm.d.ts +116 -0
  45. package/dist/shield/llm.d.ts.map +1 -0
  46. package/dist/shield/llm.js +536 -0
  47. package/dist/shield/llm.js.map +1 -0
  48. package/dist/shield/policy.d.ts +70 -0
  49. package/dist/shield/policy.d.ts.map +1 -0
  50. package/dist/shield/policy.js +399 -0
  51. package/dist/shield/policy.js.map +1 -0
  52. package/dist/shield/session.d.ts +63 -0
  53. package/dist/shield/session.d.ts.map +1 -0
  54. package/dist/shield/session.js +242 -0
  55. package/dist/shield/session.js.map +1 -0
  56. package/dist/shield/signing.d.ts +41 -0
  57. package/dist/shield/signing.d.ts.map +1 -0
  58. package/dist/shield/signing.js +161 -0
  59. package/dist/shield/signing.js.map +1 -0
  60. package/dist/shield/status.d.ts +4 -0
  61. package/dist/shield/status.d.ts.map +1 -0
  62. package/dist/shield/status.js +241 -0
  63. package/dist/shield/status.js.map +1 -0
  64. package/dist/shield/types.d.ts +398 -0
  65. package/dist/shield/types.d.ts.map +1 -0
  66. package/dist/shield/types.js +31 -0
  67. package/dist/shield/types.js.map +1 -0
  68. package/dist/util/drift-liveness.d.ts +37 -0
  69. package/dist/util/drift-liveness.d.ts.map +1 -0
  70. package/dist/util/drift-liveness.js +114 -0
  71. package/dist/util/drift-liveness.js.map +1 -0
  72. package/dist/util/drift-verification.d.ts +60 -0
  73. package/dist/util/drift-verification.d.ts.map +1 -0
  74. package/dist/util/drift-verification.js +457 -0
  75. package/dist/util/drift-verification.js.map +1 -0
  76. package/package.json +4 -2
package/README.md ADDED
@@ -0,0 +1,280 @@
1
+ <div align="center">
2
+
3
+ # opena2a-cli
4
+
5
+ **Open-source security platform for AI agents**
6
+
7
+ Credential detection, scope drift analysis, config integrity, runtime monitoring, and supply chain verification -- one CLI.
8
+
9
+ [![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://github.com/opena2a-org/opena2a/blob/main/LICENSE)
10
+ [![Node](https://img.shields.io/badge/node-%3E%3D18-brightgreen.svg)]()
11
+ [![npm](https://img.shields.io/npm/v/opena2a-cli.svg)](https://www.npmjs.com/package/opena2a-cli)
12
+
13
+ [Website](https://opena2a.org) | [Docs](https://opena2a.org/docs) | [Registry](https://registry.opena2a.org) | [Discord](https://discord.gg/uRZa3KXgEn) | [GitHub](https://github.com/opena2a-org/opena2a)
14
+
15
+ </div>
16
+
17
+ ---
18
+
19
+ ## Install
20
+
21
+ ```bash
22
+ # Try without installing
23
+ npx opena2a-cli init
24
+
25
+ # Install globally
26
+ npm install -g opena2a-cli
27
+
28
+ # Homebrew (macOS/Linux)
29
+ brew tap opena2a-org/tap && brew install opena2a
30
+ ```
31
+
32
+ No configuration required. Works with Node.js, Python, Go, and MCP server projects.
33
+
34
+ ## What It Does
35
+
36
+ Run `opena2a init` in any project directory to get an instant security assessment:
37
+
38
+ ```
39
+ OpenA2A Security Initialization v0.1.0
40
+
41
+ Project myapp v2.1.0
42
+ Type Node.js + MCP server
43
+ Directory /home/user/myapp
44
+
45
+ Security Posture
46
+ -----------------------------------------------
47
+ Credential scan 3 findings
48
+ .gitignore present
49
+ .env protection NOT in .gitignore
50
+ Lock file package-lock.json
51
+ Security config none
52
+ MCP config found
53
+ -----------------------------------------------
54
+ Trust Score 30 / 100 [Grade: F]
55
+
56
+ Next Steps
57
+ -----------------------------------------------
58
+ [CRITICAL] Migrate 3 hardcoded credentials
59
+ opena2a protect
60
+
61
+ [HIGH] Add .env to .gitignore
62
+ echo '.env' >> .gitignore
63
+
64
+ [MEDIUM] Sign config files for integrity
65
+ opena2a guard sign
66
+ -----------------------------------------------
67
+
68
+ Scope Drift Detected
69
+ -----------------------------------------------
70
+ DRIFT-001 Google Maps key may access Gemini AI
71
+ src/config.js:5
72
+
73
+ Scope drift: keys provisioned for one service silently
74
+ gain access to AI services, expanding attack surface.
75
+ Run: opena2a protect
76
+ ```
77
+
78
+ Then fix what it finds:
79
+
80
+ ```bash
81
+ opena2a protect # Migrate credentials to env vars + vault
82
+ opena2a guard sign # Sign config files for tamper detection
83
+ opena2a init # Re-assess -- watch your score improve
84
+ ```
85
+
86
+ ## Scope Drift Detection
87
+
88
+ API keys provisioned for one service often silently grant access to others. A Google Maps key can call Gemini. An AWS S3 key may reach Bedrock.
89
+
90
+ OpenA2A detects these cross-service privilege escalations:
91
+
92
+ | Finding | What It Means |
93
+ |---------|---------------|
94
+ | **DRIFT-001** | Google API key can access Gemini AI models beyond intended Maps/Places scope |
95
+ | **DRIFT-002** | AWS access key can invoke Bedrock LLM models beyond intended S3/EC2 scope |
96
+
97
+ When drift is detected, `opena2a protect` migrates the key to environment variables and creates a deny-all broker policy so you can explicitly control which services each key is allowed to reach.
98
+
99
+ ## Core Commands
100
+
101
+ ### `opena2a init`
102
+
103
+ Assess your project's security posture. Detects project type, scans for credentials, checks hygiene (`.gitignore`, `.env` protection, lock file, security config), calculates a trust score (0-100), and provides prioritized next steps.
104
+
105
+ ```bash
106
+ opena2a init # Assess current directory
107
+ opena2a init --dir ./my-agent # Assess specific directory
108
+ opena2a init --verbose # Show individual credential details
109
+ opena2a init --format json # Machine-readable output for CI
110
+ ```
111
+
112
+ ### `opena2a protect`
113
+
114
+ Detect hardcoded credentials and migrate them to environment variables. Supports Anthropic, OpenAI, Google, AWS, GitHub, and generic API key patterns. Language-aware replacements for JS/TS, Python, Go, Ruby, Java, and Rust.
115
+
116
+ ```bash
117
+ opena2a protect # Scan and migrate credentials
118
+ opena2a protect --dry-run # Preview changes without modifying files
119
+ opena2a protect --report out.html # Generate interactive HTML report
120
+ opena2a protect --format json # JSON output for CI pipelines
121
+ ```
122
+
123
+ Migration flow:
124
+ 1. **Detect** -- Regex-based pattern matching across all source files
125
+ 2. **Store** -- Save credential values in Secretless vault (or `.env` fallback with 0600 permissions)
126
+ 3. **Replace** -- Swap hardcoded values with language-appropriate env var references
127
+ 4. **Verify** -- Re-scan to confirm all credentials are removed from source
128
+
129
+ ### `opena2a guard`
130
+
131
+ Config file integrity protection. Sign your config files and detect unauthorized modifications.
132
+
133
+ ```bash
134
+ opena2a guard sign # Sign all detected config files (SHA-256)
135
+ opena2a guard verify # Check for tampering or unsigned files
136
+ opena2a guard status # Show signature summary
137
+ ```
138
+
139
+ Default files: `mcp.json`, `package.json`, `tsconfig.json`, `arp.yaml`, `go.mod`, `Dockerfile`, and more.
140
+
141
+ ### `opena2a runtime`
142
+
143
+ Agent Runtime Protection (ARP) wrapper. Monitor process, network, and filesystem activity.
144
+
145
+ ```bash
146
+ opena2a runtime init # Generate arp.yaml for your project
147
+ opena2a runtime start # Start monitoring
148
+ opena2a runtime status # Show monitor/interceptor status
149
+ opena2a runtime tail # View recent security events
150
+ ```
151
+
152
+ ### `opena2a verify`
153
+
154
+ Binary integrity verification. Compares installed package hashes against the OpenA2A Trust Registry to detect supply chain tampering.
155
+
156
+ ```bash
157
+ opena2a verify # Check all OpenA2A packages
158
+ opena2a verify --package hackmyagent # Check specific package
159
+ ```
160
+
161
+ ### `opena2a self-register`
162
+
163
+ Register OpenA2A tools in the public Trust Registry with security scan results.
164
+
165
+ ```bash
166
+ opena2a self-register --dry-run # Preview what would be registered
167
+ opena2a self-register # Register all 13 tools
168
+ ```
169
+
170
+ ### `opena2a config`
171
+
172
+ Manage user preferences and feature toggles.
173
+
174
+ ```bash
175
+ opena2a config show # Display current configuration
176
+ opena2a config contribute on # Enable community data sharing
177
+ opena2a config llm on # Enable LLM-powered command matching
178
+ ```
179
+
180
+ ## Smart Input Modes
181
+
182
+ The CLI includes built-in intelligence for command discovery:
183
+
184
+ ```bash
185
+ opena2a # Interactive guided wizard
186
+ opena2a ~drift # Semantic search (finds protect, init)
187
+ opena2a ~api keys # Semantic search with domain expansion
188
+ opena2a ? # Context-aware recommendations
189
+ opena2a "find leaked credentials" # Natural language matching
190
+ ```
191
+
192
+ Semantic search uses a weighted index of tags, synonyms, and domains -- no API calls required. Natural language mode falls back to Claude Haiku when static matching is insufficient (opt-in, costs ~$0.0002 per query).
193
+
194
+ ## Adapter Commands
195
+
196
+ The CLI orchestrates these specialized tools through a unified interface:
197
+
198
+ | Command | Tool | Description |
199
+ |---------|------|-------------|
200
+ | `opena2a scan` | [HackMyAgent](https://github.com/opena2a-org/hackmyagent) | 150+ security checks, attack simulation, auto-fix |
201
+ | `opena2a secrets` | [Secretless AI](https://github.com/opena2a-org/secretless-ai) | Credential management for AI coding tools |
202
+ | `opena2a benchmark` | [OASB](https://github.com/opena2a-org/oasb) | 222 attack scenarios, compliance scoring |
203
+ | `opena2a registry` | [AI Trust](https://github.com/opena2a-org/ai-trust) | Trust Registry queries, package verification |
204
+ | `opena2a train` | [DVAA](https://github.com/opena2a-org/damn-vulnerable-ai-agent) | Vulnerable AI agent for training |
205
+ | `opena2a crypto` | [CryptoServe](https://github.com/ecolibria/crypto-serve) | Cryptographic inventory, PQC readiness |
206
+ | `opena2a identity` | [AIM](https://github.com/opena2a-org/agent-identity-management) | Agent identity management |
207
+ | `opena2a broker` | [Secretless AI](https://github.com/opena2a-org/secretless-ai) | Identity-aware credential broker daemon |
208
+ | `opena2a dlp` | [Secretless AI](https://github.com/opena2a-org/secretless-ai) | Data loss prevention for AI tool transcripts |
209
+
210
+ Adapters install tools on first use. Each tool works standalone or through the CLI.
211
+
212
+ ## CI/CD Integration
213
+
214
+ All commands support `--format json` and `--ci` flags for pipeline integration:
215
+
216
+ ```yaml
217
+ # GitHub Actions example
218
+ - name: Security assessment
219
+ run: npx opena2a-cli init --ci --format json > security-report.json
220
+
221
+ - name: Credential check
222
+ run: |
223
+ npx opena2a-cli protect --dry-run --ci --format json > cred-report.json
224
+ # Fail if credentials found
225
+ jq -e '.totalFound == 0' cred-report.json
226
+
227
+ - name: Config integrity
228
+ run: npx opena2a-cli guard verify --ci
229
+ ```
230
+
231
+ ## Output Formats
232
+
233
+ | Format | Flag | Use Case |
234
+ |--------|------|----------|
235
+ | Text | `--format text` (default) | Human-readable terminal output |
236
+ | JSON | `--format json` | CI pipelines, programmatic consumption |
237
+ | HTML | `--report <path>` | Interactive report with filtering (protect command) |
238
+
239
+ ## Credential Patterns
240
+
241
+ Detected credential types and their finding IDs:
242
+
243
+ | ID | Pattern | Severity |
244
+ |----|---------|----------|
245
+ | CRED-001 | Anthropic API Key (`sk-ant-api*`) | Critical |
246
+ | CRED-002 | OpenAI API Key (`sk-*`, `sk-proj-*`, `sk-test-*`) | Critical |
247
+ | CRED-003 | GitHub Token (`ghp_*`, `ghs_*`) | High |
248
+ | CRED-004 | Generic API Key in assignment | Medium |
249
+ | DRIFT-001 | Google API Key with Gemini drift (`AIza*`) | High |
250
+ | DRIFT-002 | AWS Access Key with Bedrock drift (`AKIA*`) | High |
251
+
252
+ Language-aware replacements:
253
+
254
+ | Language | Replacement |
255
+ |----------|-------------|
256
+ | JavaScript/TypeScript | `process.env.VAR_NAME` |
257
+ | Python | `os.environ.get('VAR_NAME')` |
258
+ | Go | `os.Getenv("VAR_NAME")` |
259
+ | Ruby | `ENV['VAR_NAME']` |
260
+ | Java/Kotlin | `System.getenv("VAR_NAME")` |
261
+ | Rust | `std::env::var("VAR_NAME").unwrap_or_default()` |
262
+ | YAML/TOML/JSON | `${VAR_NAME}` |
263
+
264
+ ## Requirements
265
+
266
+ - Node.js >= 18
267
+ - Optional: Docker (for `opena2a train`)
268
+ - Optional: Python 3.9+ (for `opena2a crypto`)
269
+
270
+ ## License
271
+
272
+ Apache-2.0
273
+
274
+ ---
275
+
276
+ <div align="center">
277
+
278
+ [Report an Issue](https://github.com/opena2a-org/opena2a/issues) | [Contribute](https://github.com/opena2a-org/opena2a/blob/main/CONTRIBUTING.md)
279
+
280
+ </div>
@@ -21,7 +21,7 @@ exports.ADAPTER_REGISTRY = {
21
21
  benchmark: {
22
22
  name: 'benchmark',
23
23
  method: 'import',
24
- packageName: '@opena2a/oasb',
24
+ packageName: 'hackmyagent',
25
25
  description: 'Run security benchmark against AI agent (OASB)',
26
26
  },
27
27
  registry: {
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/adapters/registry.ts"],"names":[],"mappings":";;;AAyEA,gCAEC;AAED,oCAEC;AAED,kDAEC;AAjFY,QAAA,gBAAgB,GAAkC;IAC7D,IAAI,EAAE;QACJ,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,QAAQ;QAChB,WAAW,EAAE,aAAa;QAC1B,WAAW,EAAE,0DAA0D;KACxE;IACD,OAAO,EAAE;QACP,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,QAAQ;QAChB,WAAW,EAAE,eAAe;QAC5B,WAAW,EAAE,qDAAqD;KACnE;IACD,0EAA0E;IAC1E,SAAS,EAAE;QACT,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,QAAQ;QAChB,WAAW,EAAE,eAAe;QAC5B,WAAW,EAAE,gDAAgD;KAC9D;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,UAAU;QAChB,MAAM,EAAE,QAAQ;QAChB,WAAW,EAAE,UAAU;QACvB,WAAW,EAAE,wDAAwD;KACtE;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,UAAU;QAChB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,gBAAgB;QACzB,WAAW,EAAE,qDAAqD;KACnE;IACD,IAAI,EAAE;QACJ,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,YAAY;QACrB,WAAW,EAAE,8CAA8C;KAC5D;IACD,KAAK,EAAE;QACL,IAAI,EAAE,OAAO;QACb,MAAM,EAAE,QAAQ;QAChB,KAAK,EAAE,cAAc;QACrB,WAAW,EAAE,gDAAgD;KAC9D;IACD,MAAM,EAAE;QACN,IAAI,EAAE,QAAQ;QACd,MAAM,EAAE,QAAQ;QAChB,YAAY,EAAE,aAAa;QAC3B,WAAW,EAAE,yDAAyD;KACvE;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,UAAU;QAChB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,KAAK;QACd,WAAW,EAAE,qCAAqC;KACnD;IACD,oFAAoF;IACpF,MAAM,EAAE;QACN,IAAI,EAAE,QAAQ;QACd,MAAM,EAAE,QAAQ;QAChB,WAAW,EAAE,eAAe;QAC5B,WAAW,EAAE,yCAAyC;KACvD;IACD,GAAG,EAAE;QACH,IAAI,EAAE,KAAK;QACX,MAAM,EAAE,QAAQ;QAChB,WAAW,EAAE,eAAe;QAC5B,WAAW,EAAE,8CAA8C;KAC5D;CACF,CAAC;AAEF,SAAgB,UAAU,CAAC,IAAY;IACrC,OAAO,wBAAgB,CAAC,IAAI,CAAC,CAAC;AAChC,CAAC;AAED,SAAgB,YAAY;IAC1B,OAAO,MAAM,CAAC,MAAM,CAAC,wBAAgB,CAAC,CAAC;AACzC,CAAC;AAED,SAAgB,mBAAmB,CAAC,MAAqB;IACvD,OAAO,MAAM,CAAC,MAAM,CAAC,wBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;AAC1E,CAAC"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/adapters/registry.ts"],"names":[],"mappings":";;;AAyEA,gCAEC;AAED,oCAEC;AAED,kDAEC;AAjFY,QAAA,gBAAgB,GAAkC;IAC7D,IAAI,EAAE;QACJ,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,QAAQ;QAChB,WAAW,EAAE,aAAa;QAC1B,WAAW,EAAE,0DAA0D;KACxE;IACD,OAAO,EAAE;QACP,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,QAAQ;QAChB,WAAW,EAAE,eAAe;QAC5B,WAAW,EAAE,qDAAqD;KACnE;IACD,0EAA0E;IAC1E,SAAS,EAAE;QACT,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,QAAQ;QAChB,WAAW,EAAE,aAAa;QAC1B,WAAW,EAAE,gDAAgD;KAC9D;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,UAAU;QAChB,MAAM,EAAE,QAAQ;QAChB,WAAW,EAAE,UAAU;QACvB,WAAW,EAAE,wDAAwD;KACtE;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,UAAU;QAChB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,gBAAgB;QACzB,WAAW,EAAE,qDAAqD;KACnE;IACD,IAAI,EAAE;QACJ,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,YAAY;QACrB,WAAW,EAAE,8CAA8C;KAC5D;IACD,KAAK,EAAE;QACL,IAAI,EAAE,OAAO;QACb,MAAM,EAAE,QAAQ;QAChB,KAAK,EAAE,cAAc;QACrB,WAAW,EAAE,gDAAgD;KAC9D;IACD,MAAM,EAAE;QACN,IAAI,EAAE,QAAQ;QACd,MAAM,EAAE,QAAQ;QAChB,YAAY,EAAE,aAAa;QAC3B,WAAW,EAAE,yDAAyD;KACvE;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,UAAU;QAChB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,KAAK;QACd,WAAW,EAAE,qCAAqC;KACnD;IACD,oFAAoF;IACpF,MAAM,EAAE;QACN,IAAI,EAAE,QAAQ;QACd,MAAM,EAAE,QAAQ;QAChB,WAAW,EAAE,eAAe;QAC5B,WAAW,EAAE,yCAAyC;KACvD;IACD,GAAG,EAAE;QACH,IAAI,EAAE,KAAK;QACX,MAAM,EAAE,QAAQ;QAChB,WAAW,EAAE,eAAe;QAC5B,WAAW,EAAE,8CAA8C;KAC5D;CACF,CAAC;AAEF,SAAgB,UAAU,CAAC,IAAY;IACrC,OAAO,wBAAgB,CAAC,IAAI,CAAC,CAAC;AAChC,CAAC;AAED,SAAgB,YAAY;IAC1B,OAAO,MAAM,CAAC,MAAM,CAAC,wBAAgB,CAAC,CAAC;AACzC,CAAC;AAED,SAAgB,mBAAmB,CAAC,MAAqB;IACvD,OAAO,MAAM,CAAC,MAAM,CAAC,wBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;AAC1E,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAYH,MAAM,WAAW,WAAW;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AA8BD,wBAAsB,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAuGhE"}
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAeH,MAAM,WAAW,WAAW;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAkCD,wBAAsB,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAkKhE"}
@@ -47,6 +47,8 @@ const detect_js_1 = require("../util/detect.js");
47
47
  const credential_patterns_js_1 = require("../util/credential-patterns.js");
48
48
  const advisories_js_1 = require("../util/advisories.js");
49
49
  const version_js_1 = require("../util/version.js");
50
+ const events_js_1 = require("../shield/events.js");
51
+ const status_js_1 = require("../shield/status.js");
50
52
  // --- Core ---
51
53
  async function init(options) {
52
54
  const targetDir = path.resolve(options.targetDir ?? process.cwd());
@@ -76,6 +78,64 @@ async function init(options) {
76
78
  const { score, grade } = calculateTrustScore(credsBySeverity, checks, targetDir);
77
79
  // 6. Generate next steps
78
80
  const nextSteps = generateNextSteps(credentialMatches.length, credsBySeverity, checks);
81
+ // 6.5. Compute posture score from Shield product detection
82
+ const shieldStatus = (0, status_js_1.getShieldStatus)(targetDir);
83
+ const activeProducts = shieldStatus.products.filter(p => p.active).length;
84
+ const totalProducts = shieldStatus.products.length;
85
+ let postureScore = 0;
86
+ postureScore += Math.min(activeProducts * 10, 60);
87
+ if (shieldStatus.policyLoaded)
88
+ postureScore += 10;
89
+ if (shieldStatus.shellIntegration)
90
+ postureScore += 5;
91
+ if (credentialMatches.length === 0)
92
+ postureScore += 15;
93
+ const sigDir = path.join(targetDir, '.opena2a', 'signatures');
94
+ if (fs.existsSync(sigDir))
95
+ postureScore += 10;
96
+ postureScore = Math.max(0, Math.min(100, postureScore));
97
+ const riskLevel = postureScore < 30 ? 'CRITICAL'
98
+ : postureScore < 50 ? 'HIGH'
99
+ : postureScore < 70 ? 'MEDIUM'
100
+ : postureScore < 90 ? 'LOW'
101
+ : 'SECURE';
102
+ // 6.6. Write shield events for posture and credential findings
103
+ try {
104
+ (0, events_js_1.getShieldDir)();
105
+ (0, events_js_1.writeEvent)({
106
+ source: 'shield',
107
+ category: 'shield.posture',
108
+ severity: (riskLevel === 'CRITICAL' ? 'critical' : riskLevel === 'HIGH' ? 'high' : riskLevel === 'MEDIUM' ? 'medium' : 'info'),
109
+ agent: null,
110
+ sessionId: null,
111
+ action: 'posture-assessment',
112
+ target: targetDir,
113
+ outcome: 'monitored',
114
+ detail: { score: postureScore, riskLevel, activeProducts, totalProducts, trustScore: score, grade },
115
+ orgId: null,
116
+ managed: false,
117
+ agentId: null,
118
+ });
119
+ for (const cred of credentialMatches) {
120
+ (0, events_js_1.writeEvent)({
121
+ source: 'shield',
122
+ category: 'shield.credential',
123
+ severity: (cred.severity === 'critical' ? 'critical' : cred.severity === 'high' ? 'high' : 'medium'),
124
+ agent: null,
125
+ sessionId: null,
126
+ action: 'credential-finding',
127
+ target: cred.filePath,
128
+ outcome: 'monitored',
129
+ detail: { findingId: cred.findingId, title: cred.title, line: cred.line },
130
+ orgId: null,
131
+ managed: false,
132
+ agentId: null,
133
+ });
134
+ }
135
+ }
136
+ catch {
137
+ // Shield event writing is best-effort
138
+ }
79
139
  // 7. Build report
80
140
  const report = {
81
141
  projectName: project.name,
@@ -92,6 +152,10 @@ async function init(options) {
92
152
  count: advisoryCheck.advisories.length,
93
153
  matchedPackages: advisoryCheck.matchedPackages,
94
154
  },
155
+ postureScore,
156
+ riskLevel,
157
+ activeProducts,
158
+ totalProducts,
95
159
  };
96
160
  // 8. Output
97
161
  if (options.format === 'json') {
@@ -330,6 +394,16 @@ function printReport(report, _verbose) {
330
394
  : report.trustScore >= 60 ? colors_js_1.yellow
331
395
  : colors_js_1.red;
332
396
  process.stdout.write(` ${(0, colors_js_1.dim)('Trust Score')} ${scoreColor(`${report.trustScore} / 100`)} ${(0, colors_js_1.dim)('[Grade:')} ${scoreColor(report.grade)}${(0, colors_js_1.dim)(']')}\n`);
397
+ // Shield posture
398
+ const postureColor = report.postureScore >= 70 ? colors_js_1.green
399
+ : report.postureScore >= 40 ? colors_js_1.yellow
400
+ : colors_js_1.red;
401
+ const riskColor = report.riskLevel === 'SECURE' ? colors_js_1.green
402
+ : report.riskLevel === 'LOW' ? colors_js_1.green
403
+ : report.riskLevel === 'MEDIUM' ? colors_js_1.yellow
404
+ : colors_js_1.red;
405
+ process.stdout.write(` ${(0, colors_js_1.dim)('Shield Posture')} ${postureColor(`${report.postureScore} / 100`)} ${(0, colors_js_1.dim)('[Risk:')} ${riskColor(report.riskLevel)}${(0, colors_js_1.dim)(']')}\n`);
406
+ process.stdout.write(` ${(0, colors_js_1.dim)('Products')} ${report.activeProducts} / ${report.totalProducts} active\n`);
333
407
  process.stdout.write('\n');
334
408
  // Next steps
335
409
  if (report.nextSteps.length > 0) {
@@ -348,9 +422,10 @@ function printReport(report, _verbose) {
348
422
  process.stdout.write('\n');
349
423
  // Quick start hints for new users
350
424
  process.stdout.write((0, colors_js_1.dim)(' Tip: Try these commands to explore further:') + '\n');
351
- process.stdout.write((0, colors_js_1.dim)(' opena2a ~<query> Search commands (e.g. opena2a ~drift)') + '\n');
352
- process.stdout.write((0, colors_js_1.dim)(' opena2a ? Get smart recommendations') + '\n');
353
- process.stdout.write((0, colors_js_1.dim)(' opena2a --help See all available commands') + '\n');
425
+ process.stdout.write((0, colors_js_1.dim)(' opena2a shield status View Shield product status') + '\n');
426
+ process.stdout.write((0, colors_js_1.dim)(' opena2a shield report Generate security posture report') + '\n');
427
+ process.stdout.write((0, colors_js_1.dim)(' opena2a shield monitor Start ARP runtime monitoring') + '\n');
428
+ process.stdout.write((0, colors_js_1.dim)(' opena2a ~<query> Search commands (e.g. opena2a ~drift)') + '\n');
354
429
  process.stdout.write('\n');
355
430
  }
356
431
  //# sourceMappingURL=init.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+CH,oBAuGC;AApJD,4CAA8B;AAC9B,gDAAkC;AAClC,iDAA8E;AAC9E,iDAAkD;AAClD,2EAAqE;AACrE,yDAAmG;AACnG,mDAAgD;AAqChD,eAAe;AAER,KAAK,UAAU,IAAI,CAAC,OAAoB;IAC7C,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAEnE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAA,eAAG,EAAC,wBAAwB,SAAS,IAAI,CAAC,CAAC,CAAC;QACjE,OAAO,CAAC,CAAC;IACX,CAAC;IAED,yBAAyB;IACzB,MAAM,OAAO,GAAG,IAAA,yBAAa,EAAC,SAAS,CAAC,CAAC;IAEzC,2BAA2B;IAC3B,MAAM,iBAAiB,GAAG,IAAA,4CAAmB,EAAC,SAAS,CAAC,CAAC;IACzD,MAAM,eAAe,GAA2B,EAAE,CAAC;IACnD,KAAK,MAAM,CAAC,IAAI,iBAAiB,EAAE,CAAC;QAClC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IACvE,CAAC;IAED,6BAA6B;IAC7B,MAAM,MAAM,GAAG,gBAAgB,CAAC,SAAS,EAAE,OAAO,EAAE,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAE9E,qCAAqC;IACrC,IAAI,aAAa,GAAkB,EAAE,UAAU,EAAE,EAAE,EAAE,eAAe,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;IACvG,IAAI,CAAC;QACH,aAAa,GAAG,MAAM,IAAA,+BAAe,EAAC,SAAS,CAAC,CAAC;IACnD,CAAC;IAAC,MAAM,CAAC;QACP,iDAAiD;IACnD,CAAC;IAED,2BAA2B;IAC3B,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,mBAAmB,CAAC,eAAe,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;IAEjF,yBAAyB;IACzB,MAAM,SAAS,GAAG,iBAAiB,CAAC,iBAAiB,CAAC,MAAM,EAAE,eAAe,EAAE,MAAM,CAAC,CAAC;IAEvF,kBAAkB;IAClB,MAAM,MAAM,GAAe;QACzB,WAAW,EAAE,OAAO,CAAC,IAAI;QACzB,cAAc,EAAE,OAAO,CAAC,OAAO;QAC/B,WAAW,EAAE,iBAAiB,CAAC,OAAO,CAAC;QACvC,SAAS,EAAE,SAAS;QACpB,kBAAkB,EAAE,iBAAiB,CAAC,MAAM;QAC5C,qBAAqB,EAAE,eAAe;QACtC,aAAa,EAAE,MAAM;QACrB,UAAU,EAAE,KAAK;QACjB,KAAK;QACL,SAAS;QACT,UAAU,EAAE;YACV,KAAK,EAAE,aAAa,CAAC,UAAU,CAAC,MAAM;YACtC,eAAe,EAAE,aAAa,CAAC,eAAe;SAC/C;KACF,CAAC;IAEF,YAAY;IACZ,IAAI,OAAO,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;QAC9B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAC/D,CAAC;SAAM,CAAC;QACN,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QAErC,+CAA+C;QAC/C,IAAI,OAAO,CAAC,OAAO,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAA,gBAAI,EAAC,sBAAsB,CAAC,GAAG,IAAI,CAAC,CAAC;YAC1D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAA,gBAAI,EAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;YACzD,KAAK,MAAM,CAAC,IAAI,iBAAiB,EAAE,CAAC;gBAClC,MAAM,GAAG,GAAG,CAAC,CAAC,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAC,IAAA,eAAG,EAAC,YAAY,CAAC;oBACvD,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,IAAA,kBAAM,EAAC,QAAQ,CAAC;wBAC1C,CAAC,CAAC,IAAA,gBAAI,EAAC,UAAU,CAAC,CAAC;gBACrB,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;gBACrD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,IAAA,gBAAI,EAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;gBACpE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,IAAA,eAAG,EAAC,SAAS,CAAC,IAAI,OAAO,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;gBACnE,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC;oBAClB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,IAAA,eAAG,EAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC;gBAChE,CAAC;gBACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC;QAED,mEAAmE;QACnE,MAAM,aAAa,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;QACrF,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAA,kBAAM,EAAC,IAAA,gBAAI,EAAC,wBAAwB,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;YACpE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAA,gBAAI,EAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;YACzD,KAAK,MAAM,CAAC,IAAI,aAAa,EAAE,CAAC;gBAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;gBACrD,MAAM,SAAS,GAAG,CAAC,CAAC,SAAS,KAAK,WAAW,CAAC,CAAC,CAAC,sCAAsC,CAAC,CAAC,CAAC,+BAA+B,CAAC;gBACzH,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,IAAA,kBAAM,EAAC,CAAC,CAAC,SAAS,CAAC,IAAI,SAAS,IAAI,CAAC,CAAC;gBAChE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,IAAA,eAAG,EAAC,IAAI,GAAG,OAAO,GAAG,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpE,CAAC;YACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC3B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAA,eAAG,EAAC,0DAA0D,CAAC,GAAG,IAAI,CAAC,CAAC;YAC7F,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAA,eAAG,EAAC,yDAAyD,CAAC,GAAG,IAAI,CAAC,CAAC;YAC5F,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAA,eAAG,EAAC,wBAAwB,CAAC,GAAG,IAAI,CAAC,CAAC;YAC3D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC;QAED,2CAA2C;QAC3C,IAAI,aAAa,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxC,IAAA,qCAAqB,EAAC,aAAa,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAED,MAAM,WAAW,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,UAAU,CAAC,CAAC;IACnE,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7B,CAAC;AAED,yBAAyB;AAEzB,SAAS,gBAAgB,CACvB,GAAW,EACX,OAAyC,EACzC,SAAiB;IAEjB,MAAM,MAAM,GAAmB,EAAE,CAAC;IAElC,yBAAyB;IACzB,IAAI,SAAS,KAAK,CAAC,EAAE,CAAC;QACpB,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;IACnF,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,IAAI,CAAC;YACV,KAAK,EAAE,iBAAiB;YACxB,MAAM,EAAE,MAAM;YACd,MAAM,EAAE,GAAG,SAAS,WAAW,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE;SAC5D,CAAC,CAAC;IACL,CAAC;IAED,aAAa;IACb,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;IACnD,IAAI,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QACjC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;QAExE,kBAAkB;QAClB,MAAM,gBAAgB,GAAG,EAAE,CAAC,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;QACjE,IAAI,gBAAgB,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACtC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC,CAAC;QACrF,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,mBAAmB,EAAE,CAAC,CAAC;QACzF,CAAC;IACH,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;QACxE,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC,CAAC;IACrF,CAAC;IAED,YAAY;IACZ,MAAM,SAAS,GAAG;QAChB,EAAE,IAAI,EAAE,mBAAmB,EAAE,KAAK,EAAE,mBAAmB,EAAE;QACzD,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE;QACzC,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,gBAAgB,EAAE;QACnD,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE;QACzC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;QACnC,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE;QAC7C,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,cAAc,EAAE;KAChD,CAAC;IACF,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC/E,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC;IAC/E,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;IAC5E,CAAC;IAED,kBAAkB;IAClB,MAAM,eAAe,GAAG,CAAC,eAAe,EAAE,eAAe,EAAE,gCAAgC,CAAC,CAAC;IAC7F,MAAM,WAAW,GAAG,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IAClF,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;IACjF,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAC5E,CAAC;IAED,aAAa;IACb,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;IACxE,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,sBAAsB;AAEtB,SAAS,mBAAmB,CAC1B,eAAuC,EACvC,MAAsB,EACtB,GAAW;IAEX,IAAI,KAAK,GAAG,GAAG,CAAC;IAEhB,uBAAuB;IACvB,KAAK,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC;IACjD,KAAK,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC;IAC7C,KAAK,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IAC9C,KAAK,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IAE3C,oBAAoB;IACpB,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,YAAY,CAAC,CAAC;IAClE,IAAI,cAAc,EAAE,MAAM,KAAK,MAAM;QAAE,KAAK,IAAI,EAAE,CAAC;IAEnD,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,iBAAiB,CAAC,CAAC;IACjE,IAAI,QAAQ,EAAE,MAAM,KAAK,MAAM;QAAE,KAAK,IAAI,EAAE,CAAC;IAE7C,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,WAAW,CAAC,CAAC;IAC5D,IAAI,SAAS,EAAE,MAAM,KAAK,MAAM;QAAE,KAAK,IAAI,CAAC,CAAC;IAE7C,4BAA4B;IAC5B,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,iBAAiB,CAAC,CAAC;IAClE,IAAI,SAAS,EAAE,MAAM,KAAK,MAAM;QAAE,KAAK,IAAI,CAAC,CAAC;IAE7C,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;IAE1C,IAAI,KAAa,CAAC;IAClB,IAAI,KAAK,IAAI,EAAE;QAAE,KAAK,GAAG,GAAG,CAAC;SACxB,IAAI,KAAK,IAAI,EAAE;QAAE,KAAK,GAAG,GAAG,CAAC;SAC7B,IAAI,KAAK,IAAI,EAAE;QAAE,KAAK,GAAG,GAAG,CAAC;SAC7B,IAAI,KAAK,IAAI,EAAE;QAAE,KAAK,GAAG,GAAG,CAAC;;QAC7B,KAAK,GAAG,GAAG,CAAC;IAEjB,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AAC1B,CAAC;AAED,qBAAqB;AAErB,SAAS,iBAAiB,CACxB,SAAiB,EACjB,eAAuC,EACvC,MAAsB;IAEtB,MAAM,KAAK,GAAe,EAAE,CAAC;IAE7B,yBAAyB;IACzB,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;QAClB,KAAK,CAAC,IAAI,CAAC;YACT,QAAQ,EAAE,UAAU;YACpB,WAAW,EAAE,WAAW,SAAS,wBAAwB,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE;YACrF,OAAO,EAAE,iBAAiB;SAC3B,CAAC,CAAC;IACL,CAAC;IAED,kBAAkB;IAClB,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,iBAAiB,CAAC,CAAC;IACjE,IAAI,QAAQ,EAAE,MAAM,KAAK,MAAM,EAAE,CAAC;QAChC,KAAK,CAAC,IAAI,CAAC;YACT,QAAQ,EAAE,MAAM;YAChB,WAAW,EAAE,wBAAwB;YACrC,OAAO,EAAE,2BAA2B;SACrC,CAAC,CAAC;IACL,CAAC;IAED,gBAAgB;IAChB,MAAM,cAAc,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,YAAY,CAAC,CAAC;IAClE,IAAI,cAAc,EAAE,MAAM,KAAK,MAAM,EAAE,CAAC;QACtC,KAAK,CAAC,IAAI,CAAC;YACT,QAAQ,EAAE,MAAM;YAChB,WAAW,EAAE,mBAAmB;YAChC,OAAO,EAAE,oBAAoB;SAC9B,CAAC,CAAC;IACL,CAAC;IAED,oBAAoB;IACpB,KAAK,CAAC,IAAI,CAAC;QACT,QAAQ,EAAE,QAAQ;QAClB,WAAW,EAAE,iCAAiC;QAC9C,OAAO,EAAE,oBAAoB;KAC9B,CAAC,CAAC;IAEH,qBAAqB;IACrB,KAAK,CAAC,IAAI,CAAC;QACT,QAAQ,EAAE,KAAK;QACf,WAAW,EAAE,0BAA0B;QACvC,OAAO,EAAE,uBAAuB;KACjC,CAAC,CAAC;IAEH,OAAO,KAAK,CAAC;AACf,CAAC;AAED,iBAAiB;AAEjB,SAAS,iBAAiB,CAAC,OAAyC;IAClE,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;QACrB,KAAK,MAAM;YAAE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAAC,MAAM;QAC1C,KAAK,IAAI;YAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAAC,MAAM;QACnC,KAAK,QAAQ;YAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAAC,MAAM;QAC3C,OAAO,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACjC,CAAC;IACD,IAAI,OAAO,CAAC,MAAM;QAAE,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC/C,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC;AAED,SAAS,WAAW,CAAC,MAAkB,EAAE,QAAkB;IACzD,MAAM,OAAO,GAAG,IAAA,uBAAU,GAAE,CAAC;IAE7B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC3B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAA,gBAAI,EAAC,mCAAmC,CAAC,GAAG,IAAA,eAAG,EAAC,MAAM,OAAO,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC;IAEhG,eAAe;IACf,MAAM,cAAc,GAAG,MAAM,CAAC,WAAW;QACvC,CAAC,CAAC,GAAG,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,GAAG,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,EAAE;QACrF,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAEpC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,IAAA,eAAG,EAAC,SAAS,CAAC,SAAS,cAAc,IAAI,CAAC,CAAC;IACrE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,IAAA,eAAG,EAAC,MAAM,CAAC,YAAY,MAAM,CAAC,WAAW,IAAI,CAAC,CAAC;IACzE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,IAAA,eAAG,EAAC,WAAW,CAAC,OAAO,MAAM,CAAC,SAAS,IAAI,CAAC,CAAC;IACvE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAE3B,mBAAmB;IACnB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAA,gBAAI,EAAC,oBAAoB,CAAC,GAAG,IAAI,CAAC,CAAC;IACxD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAA,gBAAI,EAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAEzD,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;QACzC,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,IAAA,iBAAK,EAAC,KAAK,CAAC,MAAM,CAAC;YACjE,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,IAAA,eAAG,EAAC,KAAK,CAAC,MAAM,CAAC;gBAC7C,CAAC,CAAC,KAAK,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,IAAA,kBAAM,EAAC,KAAK,CAAC,MAAM,CAAC;oBAChD,CAAC,CAAC,IAAA,eAAG,EAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAEtB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,IAAA,eAAG,EAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,aAAa,IAAI,CAAC,CAAC;IAC9E,CAAC;IAED,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAA,gBAAI,EAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAEzD,cAAc;IACd,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,CAAC,iBAAK;QAChD,CAAC,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,CAAC,kBAAM;YAClC,CAAC,CAAC,eAAG,CAAC;IAER,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,IAAA,eAAG,EAAC,aAAa,CAAC,SAAS,UAAU,CAAC,GAAG,MAAM,CAAC,UAAU,QAAQ,CAAC,KAAK,IAAA,eAAG,EAAC,SAAS,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAA,eAAG,EAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC7J,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAE3B,aAAa;IACb,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAA,gBAAI,EAAC,cAAc,CAAC,GAAG,IAAI,CAAC,CAAC;QAClD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAA,gBAAI,EAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QAEzD,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;YACpC,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAC,IAAA,eAAG,EAAC,YAAY,CAAC;gBAClE,CAAC,CAAC,IAAI,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,IAAA,kBAAM,EAAC,QAAQ,CAAC;oBAC7C,CAAC,CAAC,IAAI,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAA,gBAAI,EAAC,UAAU,CAAC;wBAC/C,CAAC,CAAC,IAAA,eAAG,EAAC,OAAO,CAAC,CAAC;YAEjB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC;YAC1E,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,IAAA,eAAG,EAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACvE,CAAC;QAED,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAA,gBAAI,EAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAC3D,CAAC;IAED,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAE3B,kCAAkC;IAClC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAA,eAAG,EAAC,+CAA+C,CAAC,GAAG,IAAI,CAAC,CAAC;IAClF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAA,eAAG,EAAC,gEAAgE,CAAC,GAAG,IAAI,CAAC,CAAC;IACnG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAA,eAAG,EAAC,qDAAqD,CAAC,GAAG,IAAI,CAAC,CAAC;IACxF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAA,eAAG,EAAC,sDAAsD,CAAC,GAAG,IAAI,CAAC,CAAC;IACzF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC"}
1
+ {"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
@@ -24,6 +24,8 @@ export interface ProtectOptions {
24
24
  format?: 'text' | 'json';
25
25
  /** Skip verification re-scan */
26
26
  skipVerify?: boolean;
27
+ /** Skip liveness verification for DRIFT findings (offline/CI) */
28
+ skipLiveness?: boolean;
27
29
  /** Path to write interactive HTML report */
28
30
  report?: string;
29
31
  }
@@ -1 +1 @@
1
- {"version":3,"file":"protect.d.ts","sourceRoot":"","sources":["../../src/commands/protect.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AA0CH,MAAM,WAAW,cAAc;IAC7B,2CAA2C;IAC3C,SAAS,EAAE,MAAM,CAAC;IAClB,0DAA0D;IAC1D,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,qBAAqB;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,uCAAuC;IACvC,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,oBAAoB;IACpB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,gCAAgC;IAChC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,4CAA4C;IAC5C,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAeD;;GAEG;AACH,wBAAsB,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAsKtE"}
1
+ {"version":3,"file":"protect.d.ts","sourceRoot":"","sources":["../../src/commands/protect.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AA4CH,MAAM,WAAW,cAAc;IAC7B,2CAA2C;IAC3C,SAAS,EAAE,MAAM,CAAC;IAClB,0DAA0D;IAC1D,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,qBAAqB;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,uCAAuC;IACvC,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,oBAAoB;IACpB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,gCAAgC;IAChC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,iEAAiE;IACjE,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,4CAA4C;IAC5C,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAoBD;;GAEG;AACH,wBAAsB,OAAO,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAuNtE"}
@@ -54,6 +54,7 @@ const spinner_js_1 = require("../util/spinner.js");
54
54
  const format_js_1 = require("../util/format.js");
55
55
  // --- Credential patterns (shared module) ---
56
56
  const credential_patterns_js_1 = require("../util/credential-patterns.js");
57
+ const drift_verification_js_1 = require("../util/drift-verification.js");
57
58
  // --- Core logic ---
58
59
  /**
59
60
  * Main protect command. Scans for credentials, migrates to vault, verifies clean.
@@ -71,7 +72,7 @@ async function protect(options) {
71
72
  // Phase 1: Scan for credentials
72
73
  const spinner = new spinner_js_1.Spinner('Scanning for credentials...');
73
74
  spinner.start();
74
- const matches = scanForCredentials(targetDir);
75
+ let matches = scanForCredentials(targetDir);
75
76
  spinner.stop();
76
77
  const isJson = options.format === 'json';
77
78
  if (matches.length === 0) {
@@ -93,6 +94,36 @@ async function protect(options) {
93
94
  }
94
95
  return 0;
95
96
  }
97
+ // Phase 1.5: Liveness verification for DRIFT findings
98
+ let livenessResults;
99
+ const hasDriftFindings = matches.some(m => m.findingId.startsWith('DRIFT-'));
100
+ if (hasDriftFindings && !options.skipLiveness) {
101
+ if (!isJson) {
102
+ spinner.update('Verifying credential drift (liveness check)...');
103
+ spinner.start();
104
+ }
105
+ livenessResults = await (0, drift_verification_js_1.verifyDriftFindings)(matches);
106
+ matches = (0, drift_verification_js_1.applyLivenessResults)(matches, livenessResults);
107
+ if (!isJson) {
108
+ spinner.stop();
109
+ for (const [_key, result] of livenessResults) {
110
+ if (result.live) {
111
+ process.stdout.write((0, colors_js_1.red)(`${result.findingId}: DRIFT CONFIRMED`) +
112
+ ' -- ' + result.detail + '\n');
113
+ process.stdout.write(' Severity escalated: ' + (0, colors_js_1.yellow)('high') + ' -> ' + (0, colors_js_1.red)('critical') + '\n\n');
114
+ }
115
+ else if (result.checked && !result.error) {
116
+ process.stdout.write((0, colors_js_1.dim)(`${result.findingId}: ${result.detail}`) + '\n\n');
117
+ }
118
+ else if (result.error) {
119
+ process.stdout.write((0, colors_js_1.dim)(`${result.findingId}: ${result.detail}`) + '\n\n');
120
+ }
121
+ }
122
+ }
123
+ }
124
+ else if (hasDriftFindings && options.skipLiveness && !isJson) {
125
+ process.stdout.write((0, colors_js_1.dim)('Liveness verification skipped (--skip-liveness)\n\n'));
126
+ }
96
127
  if (!isJson) {
97
128
  process.stdout.write((0, colors_js_1.bold)(`Found ${matches.length} credential(s) in ${targetDir}\n\n`));
98
129
  // Show findings table
@@ -169,6 +200,14 @@ async function protect(options) {
169
200
  }
170
201
  // Phase 5: Report
171
202
  const durationMs = Date.now() - startTime;
203
+ // Convert liveness results map to plain object for JSON serialization
204
+ let livenessRecord;
205
+ if (livenessResults && livenessResults.size > 0) {
206
+ livenessRecord = {};
207
+ for (const [key, val] of livenessResults) {
208
+ livenessRecord[key] = val;
209
+ }
210
+ }
172
211
  const report = {
173
212
  targetDir,
174
213
  totalFound: matches.length,
@@ -178,6 +217,7 @@ async function protect(options) {
178
217
  results,
179
218
  verificationPassed,
180
219
  durationMs,
220
+ livenessResults: livenessRecord,
181
221
  };
182
222
  if (options.format === 'json') {
183
223
  process.stdout.write(JSON.stringify(report, null, 2) + '\n');
@@ -368,17 +408,23 @@ function replaceInSource(credential) {
368
408
  let newContent;
369
409
  if (shouldStripQuotes(ext)) {
370
410
  // For programming languages, replace the entire quoted expression
371
- // (including surrounding quotes) with the bare env var reference
372
- const quotedDouble = `"${credential.value}"`;
373
- const quotedSingle = `'${credential.value}'`;
374
- if (content.includes(quotedDouble)) {
375
- newContent = content.replace(quotedDouble, replacement);
411
+ // (including surrounding quotes) with the bare env var reference.
412
+ // Use regex to find the enclosing quoted string so we handle cases
413
+ // where the matched credential is a substring of the quoted content
414
+ // (e.g., regex matches 20-char AWS key but string has trailing chars).
415
+ const escVal = credential.value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
416
+ const dblQuoteRegex = new RegExp(`"[^"]*${escVal}[^"]*"`);
417
+ const sglQuoteRegex = new RegExp(`'[^']*${escVal}[^']*'`);
418
+ const dblMatch = content.match(dblQuoteRegex);
419
+ const sglMatch = content.match(sglQuoteRegex);
420
+ if (dblMatch) {
421
+ newContent = content.replace(dblMatch[0], replacement);
376
422
  }
377
- else if (content.includes(quotedSingle)) {
378
- newContent = content.replace(quotedSingle, replacement);
423
+ else if (sglMatch) {
424
+ newContent = content.replace(sglMatch[0], replacement);
379
425
  }
380
426
  else {
381
- // No quotes found (e.g., template literal or unquoted), replace value directly
427
+ // No enclosing quotes found (e.g., template literal or unquoted)
382
428
  newContent = content.replace(credential.value, replacement);
383
429
  }
384
430
  }
@@ -486,7 +532,7 @@ function createBrokerPolicy(credential, targetDir) {
486
532
  effect: 'deny',
487
533
  comment: `Auto-generated by opena2a protect from ${projectName}. Add allow rules for authorized agents.`,
488
534
  });
489
- fs.writeFileSync(policyFile, JSON.stringify(policies, null, 2) + '\n', { encoding: 'utf-8', mode: 0o600 });
535
+ fs.writeFileSync(policyFile, JSON.stringify({ rules: policies }, null, 2) + '\n', { encoding: 'utf-8', mode: 0o600 });
490
536
  return true;
491
537
  }
492
538
  catch {