opena2a-cli 0.3.2 → 0.3.3

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 (67) hide show
  1. package/README.md +22 -21
  2. package/dist/adapters/python.d.ts.map +1 -1
  3. package/dist/adapters/python.js +7 -3
  4. package/dist/adapters/python.js.map +1 -1
  5. package/dist/adapters/registry.d.ts.map +1 -1
  6. package/dist/adapters/registry.js +1 -7
  7. package/dist/adapters/registry.js.map +1 -1
  8. package/dist/commands/guard.d.ts +8 -0
  9. package/dist/commands/guard.d.ts.map +1 -1
  10. package/dist/commands/guard.js +30 -0
  11. package/dist/commands/guard.js.map +1 -1
  12. package/dist/commands/init.d.ts +8 -2
  13. package/dist/commands/init.d.ts.map +1 -1
  14. package/dist/commands/init.js +612 -162
  15. package/dist/commands/init.js.map +1 -1
  16. package/dist/commands/onepassword-migration.d.ts.map +1 -1
  17. package/dist/commands/onepassword-migration.js +6 -0
  18. package/dist/commands/onepassword-migration.js.map +1 -1
  19. package/dist/commands/protect.d.ts +4 -0
  20. package/dist/commands/protect.d.ts.map +1 -1
  21. package/dist/commands/protect.js +250 -12
  22. package/dist/commands/protect.js.map +1 -1
  23. package/dist/commands/review.d.ts +2 -2
  24. package/dist/commands/review.d.ts.map +1 -1
  25. package/dist/commands/review.js +7 -7
  26. package/dist/commands/review.js.map +1 -1
  27. package/dist/commands/shield.d.ts +1 -1
  28. package/dist/commands/shield.js +1 -1
  29. package/dist/index.js +10 -1
  30. package/dist/index.js.map +1 -1
  31. package/dist/natural/llm-fallback.d.ts.map +1 -1
  32. package/dist/natural/llm-fallback.js +24 -4
  33. package/dist/natural/llm-fallback.js.map +1 -1
  34. package/dist/report/review-html.js +2 -2
  35. package/dist/router.js +1 -1
  36. package/dist/router.js.map +1 -1
  37. package/dist/semantic/command-index.json +1 -1
  38. package/dist/shield/status.d.ts.map +1 -1
  39. package/dist/shield/status.js +16 -16
  40. package/dist/shield/status.js.map +1 -1
  41. package/dist/shield/types.d.ts +3 -3
  42. package/dist/shield/types.d.ts.map +1 -1
  43. package/dist/util/ai-config.d.ts +40 -0
  44. package/dist/util/ai-config.d.ts.map +1 -0
  45. package/dist/util/ai-config.js +389 -0
  46. package/dist/util/ai-config.js.map +1 -0
  47. package/dist/util/detect.d.ts +2 -1
  48. package/dist/util/detect.d.ts.map +1 -1
  49. package/dist/util/detect.js +31 -1
  50. package/dist/util/detect.js.map +1 -1
  51. package/dist/util/format.d.ts +1 -0
  52. package/dist/util/format.d.ts.map +1 -1
  53. package/dist/util/format.js +20 -0
  54. package/dist/util/format.js.map +1 -1
  55. package/dist/util/hygiene.d.ts +16 -0
  56. package/dist/util/hygiene.d.ts.map +1 -0
  57. package/dist/util/hygiene.js +119 -0
  58. package/dist/util/hygiene.js.map +1 -0
  59. package/dist/util/scoring.d.ts +34 -0
  60. package/dist/util/scoring.d.ts.map +1 -0
  61. package/dist/util/scoring.js +144 -0
  62. package/dist/util/scoring.js.map +1 -0
  63. package/dist/util/secretless-config.d.ts +39 -0
  64. package/dist/util/secretless-config.d.ts.map +1 -0
  65. package/dist/util/secretless-config.js +265 -0
  66. package/dist/util/secretless-config.js.map +1 -0
  67. package/package.json +1 -1
@@ -0,0 +1,265 @@
1
+ "use strict";
2
+ /**
3
+ * Secretless config injection for AI tool config files.
4
+ *
5
+ * After `opena2a protect` migrates credentials to env vars, this module
6
+ * injects a managed section into CLAUDE.md, .cursorrules, etc. so AI
7
+ * coding tools know which env vars to use and which files to avoid.
8
+ */
9
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ var desc = Object.getOwnPropertyDescriptor(m, k);
12
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
13
+ desc = { enumerable: true, get: function() { return m[k]; } };
14
+ }
15
+ Object.defineProperty(o, k2, desc);
16
+ }) : (function(o, m, k, k2) {
17
+ if (k2 === undefined) k2 = k;
18
+ o[k2] = m[k];
19
+ }));
20
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
21
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
22
+ }) : function(o, v) {
23
+ o["default"] = v;
24
+ });
25
+ var __importStar = (this && this.__importStar) || (function () {
26
+ var ownKeys = function(o) {
27
+ ownKeys = Object.getOwnPropertyNames || function (o) {
28
+ var ar = [];
29
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
30
+ return ar;
31
+ };
32
+ return ownKeys(o);
33
+ };
34
+ return function (mod) {
35
+ if (mod && mod.__esModule) return mod;
36
+ var result = {};
37
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
38
+ __setModuleDefault(result, mod);
39
+ return result;
40
+ };
41
+ })();
42
+ Object.defineProperty(exports, "__esModule", { value: true });
43
+ exports.buildConfigItem = buildConfigItem;
44
+ exports.configureSecretlessForAiTools = configureSecretlessForAiTools;
45
+ exports.generateSecretlessSection = generateSecretlessSection;
46
+ exports.upsertSecretlessSection = upsertSecretlessSection;
47
+ exports.parseExistingCredentials = parseExistingCredentials;
48
+ const fs = __importStar(require("node:fs"));
49
+ const path = __importStar(require("node:path"));
50
+ // --- Service metadata lookup ---
51
+ const SERVICE_METADATA = {
52
+ ANTHROPIC_API_KEY: { service: 'Anthropic Messages API', authHeader: 'x-api-key: $ANTHROPIC_API_KEY' },
53
+ OPENAI_API_KEY: { service: 'OpenAI API', authHeader: 'Authorization: Bearer $OPENAI_API_KEY' },
54
+ GOOGLE_API_KEY: { service: 'Google API', authHeader: 'X-Goog-Api-Key: $GOOGLE_API_KEY' },
55
+ AWS_ACCESS_KEY_ID: { service: 'AWS', authHeader: '(AWS Signature V4)' },
56
+ GITHUB_TOKEN: { service: 'GitHub API', authHeader: 'Authorization: Bearer $GITHUB_TOKEN' },
57
+ API_KEY: { service: 'API Service', authHeader: '(check service docs)' },
58
+ };
59
+ const START_MARKER = '<!-- secretless:managed -->';
60
+ const END_MARKER = '<!-- /secretless:managed -->';
61
+ /** AI tool config files: [relative path, createIfMissing] */
62
+ const AI_TOOL_CONFIGS = [
63
+ ['CLAUDE.md', true],
64
+ ['.cursorrules', false],
65
+ ['.windsurfrules', false],
66
+ ['.clinerules', false],
67
+ ['.github/copilot-instructions.md', false],
68
+ ];
69
+ // --- Public API ---
70
+ /**
71
+ * Map an env var name to service metadata.
72
+ * Strips numeric suffixes (API_KEY_2 -> API_KEY) for lookup.
73
+ */
74
+ function buildConfigItem(envVar) {
75
+ // Strip trailing _N suffix for lookup
76
+ const baseVar = envVar.replace(/_\d+$/, '');
77
+ const meta = SERVICE_METADATA[baseVar];
78
+ if (meta) {
79
+ return {
80
+ envVar,
81
+ service: meta.service,
82
+ // Replace the base var in the auth header template with the actual var
83
+ authHeader: meta.authHeader.replace(`$${baseVar}`, `$${envVar}`),
84
+ };
85
+ }
86
+ return {
87
+ envVar,
88
+ service: 'API Service',
89
+ authHeader: '(check service docs)',
90
+ };
91
+ }
92
+ /**
93
+ * Upsert the secretless section into all detected AI tool config files.
94
+ */
95
+ function configureSecretlessForAiTools(targetDir, items) {
96
+ const result = {
97
+ toolsUpdated: [],
98
+ toolsSkipped: [],
99
+ };
100
+ if (items.length === 0)
101
+ return result;
102
+ for (const [relPath, createIfMissing] of AI_TOOL_CONFIGS) {
103
+ const filePath = path.join(targetDir, relPath);
104
+ // Merge with any existing credentials in the file
105
+ const existing = parseExistingCredentials(filePath);
106
+ const merged = mergeCredentials(existing, items);
107
+ const section = generateSecretlessSection(merged);
108
+ const updated = upsertSecretlessSection(filePath, section, createIfMissing);
109
+ if (updated) {
110
+ result.toolsUpdated.push(relPath);
111
+ }
112
+ else {
113
+ result.toolsSkipped.push(relPath);
114
+ }
115
+ }
116
+ return result;
117
+ }
118
+ // --- Internal functions ---
119
+ /**
120
+ * Build the full markdown section with start/end markers.
121
+ */
122
+ function generateSecretlessSection(items) {
123
+ const rows = items
124
+ .map(i => `| \`$${i.envVar}\` | ${i.service} | ${i.authHeader} |`)
125
+ .join('\n');
126
+ return `${START_MARKER}
127
+ ## Secretless Mode
128
+
129
+ This project uses Secretless to protect credentials from AI context.
130
+
131
+ **Available API keys** (set as env vars -- use \`$VAR_NAME\` in commands, never ask for values):
132
+
133
+ | Env Var | Service | Auth Header |
134
+ |---------|---------|-------------|
135
+ ${rows}
136
+
137
+ **Blocked file patterns** (never read, write, or reference):
138
+ - \`.env\`, \`.env.*\` -- environment variable files
139
+ - \`*.key\`, \`*.pem\`, \`*.p12\`, \`*.pfx\` -- private key files
140
+ - \`.aws/credentials\`, \`.ssh/*\` -- cloud/SSH credentials
141
+ - \`*.tfstate\`, \`*.tfvars\` -- Terraform state with secrets
142
+ - \`secrets/\`, \`credentials/\` -- secret directories
143
+
144
+ **If you need a credential:**
145
+ 1. Reference it via \`$VAR_NAME\` in shell commands or \`process.env.VAR_NAME\` in code
146
+ 2. Never hardcode credentials in source files
147
+ 3. Never print or echo key values -- only reference them as variables
148
+
149
+ **If you find a hardcoded credential:**
150
+ 1. Replace it with an environment variable reference
151
+ 2. Add the variable name to \`.env.example\`
152
+ 3. Warn the user to rotate the exposed credential
153
+
154
+ Verify setup: \`npx secretless-ai verify\`
155
+
156
+ ## Transcript Protection
157
+ - NEVER ask users to paste API keys, tokens, or passwords into the conversation
158
+ - If a user pastes a credential, immediately warn them and suggest using environment variables
159
+ - Credentials in this conversation are automatically redacted by Secretless AI
160
+ ${END_MARKER}`;
161
+ }
162
+ /**
163
+ * Upsert the secretless section into a file.
164
+ * Returns true if the file was modified, false if skipped or unchanged.
165
+ */
166
+ function upsertSecretlessSection(filePath, section, createIfMissing) {
167
+ if (!fs.existsSync(filePath)) {
168
+ if (!createIfMissing)
169
+ return false;
170
+ // Ensure parent directory exists
171
+ const dir = path.dirname(filePath);
172
+ if (!fs.existsSync(dir)) {
173
+ fs.mkdirSync(dir, { recursive: true });
174
+ }
175
+ const fd = fs.openSync(filePath, 'w', 0o600);
176
+ fs.writeSync(fd, '\n' + section + '\n');
177
+ fs.closeSync(fd);
178
+ return true;
179
+ }
180
+ const content = fs.readFileSync(filePath, 'utf-8');
181
+ // Check if section already exists
182
+ const startIdx = content.indexOf(START_MARKER);
183
+ if (startIdx === -1) {
184
+ // No existing section -- append with separator
185
+ const separator = content.length > 0 && !content.endsWith('\n') ? '\n' : '';
186
+ const prefix = content.length > 0 ? '\n' : '';
187
+ fs.writeFileSync(filePath, content + separator + prefix + section + '\n', 'utf-8');
188
+ return true;
189
+ }
190
+ // Find end of existing section
191
+ let endIdx = content.indexOf(END_MARKER, startIdx);
192
+ if (endIdx !== -1) {
193
+ // Has proper end marker -- replace from start to end (inclusive)
194
+ endIdx += END_MARKER.length;
195
+ }
196
+ else {
197
+ // Backward compat: old secretless-ai sections without end marker.
198
+ // Look for next <!-- marker or use EOF.
199
+ const nextMarker = content.indexOf('<!--', startIdx + START_MARKER.length);
200
+ endIdx = nextMarker !== -1 ? nextMarker : content.length;
201
+ // Trim trailing whitespace before the next marker
202
+ while (endIdx > startIdx && content[endIdx - 1] === '\n') {
203
+ endIdx--;
204
+ }
205
+ // Keep one newline
206
+ if (endIdx < content.length)
207
+ endIdx++;
208
+ }
209
+ const before = content.slice(0, startIdx);
210
+ const after = content.slice(endIdx);
211
+ const newContent = before + section + after;
212
+ // Check if content actually changed
213
+ if (newContent === content)
214
+ return false;
215
+ fs.writeFileSync(filePath, newContent, 'utf-8');
216
+ return true;
217
+ }
218
+ /**
219
+ * Extract credential items from an existing secretless section's markdown table.
220
+ */
221
+ function parseExistingCredentials(filePath) {
222
+ if (!fs.existsSync(filePath))
223
+ return [];
224
+ const content = fs.readFileSync(filePath, 'utf-8');
225
+ const startIdx = content.indexOf(START_MARKER);
226
+ if (startIdx === -1)
227
+ return [];
228
+ // Find the table rows between start and end markers
229
+ let endIdx = content.indexOf(END_MARKER, startIdx);
230
+ if (endIdx === -1) {
231
+ const nextMarker = content.indexOf('<!--', startIdx + START_MARKER.length);
232
+ endIdx = nextMarker !== -1 ? nextMarker : content.length;
233
+ }
234
+ const sectionContent = content.slice(startIdx, endIdx);
235
+ const items = [];
236
+ // Match table rows: | `$VAR` | Service | Header |
237
+ const rowPattern = /\|\s*`\$([^`]+)`\s*\|\s*([^|]+)\s*\|\s*([^|]+)\s*\|/g;
238
+ let match;
239
+ while ((match = rowPattern.exec(sectionContent)) !== null) {
240
+ const envVar = match[1].trim();
241
+ const service = match[2].trim();
242
+ const authHeader = match[3].trim();
243
+ // Skip the header row
244
+ if (envVar === 'Env Var' || envVar === 'Service')
245
+ continue;
246
+ items.push({ envVar, service, authHeader });
247
+ }
248
+ return items;
249
+ }
250
+ /**
251
+ * Merge new credentials with existing ones. Deduplicates by envVar (new takes precedence).
252
+ */
253
+ function mergeCredentials(existing, incoming) {
254
+ const map = new Map();
255
+ // Add existing first
256
+ for (const item of existing) {
257
+ map.set(item.envVar, item);
258
+ }
259
+ // Incoming overwrites
260
+ for (const item of incoming) {
261
+ map.set(item.envVar, item);
262
+ }
263
+ return Array.from(map.values());
264
+ }
265
+ //# sourceMappingURL=secretless-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secretless-config.js","sourceRoot":"","sources":["../../src/util/secretless-config.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "opena2a-cli",
3
- "version": "0.3.2",
3
+ "version": "0.3.3",
4
4
  "description": "Unified CLI for the OpenA2A security platform",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",