opena2a-cli 0.1.0

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 (150) hide show
  1. package/dist/adapters/docker.d.ts +8 -0
  2. package/dist/adapters/docker.d.ts.map +1 -0
  3. package/dist/adapters/docker.js +60 -0
  4. package/dist/adapters/docker.js.map +1 -0
  5. package/dist/adapters/import.d.ts +12 -0
  6. package/dist/adapters/import.d.ts.map +1 -0
  7. package/dist/adapters/import.js +76 -0
  8. package/dist/adapters/import.js.map +1 -0
  9. package/dist/adapters/index.d.ts +9 -0
  10. package/dist/adapters/index.d.ts.map +1 -0
  11. package/dist/adapters/index.js +40 -0
  12. package/dist/adapters/index.js.map +1 -0
  13. package/dist/adapters/python.d.ts +9 -0
  14. package/dist/adapters/python.d.ts.map +1 -0
  15. package/dist/adapters/python.js +73 -0
  16. package/dist/adapters/python.js.map +1 -0
  17. package/dist/adapters/registry.d.ts +6 -0
  18. package/dist/adapters/registry.d.ts.map +1 -0
  19. package/dist/adapters/registry.js +86 -0
  20. package/dist/adapters/registry.js.map +1 -0
  21. package/dist/adapters/spawn.d.ts +9 -0
  22. package/dist/adapters/spawn.d.ts.map +1 -0
  23. package/dist/adapters/spawn.js +63 -0
  24. package/dist/adapters/spawn.js.map +1 -0
  25. package/dist/adapters/types.d.ts +35 -0
  26. package/dist/adapters/types.d.ts.map +1 -0
  27. package/dist/adapters/types.js +3 -0
  28. package/dist/adapters/types.js.map +1 -0
  29. package/dist/branding.d.ts +3 -0
  30. package/dist/branding.d.ts.map +1 -0
  31. package/dist/branding.js +21 -0
  32. package/dist/branding.js.map +1 -0
  33. package/dist/commands/baselines.d.ts +14 -0
  34. package/dist/commands/baselines.d.ts.map +1 -0
  35. package/dist/commands/baselines.js +269 -0
  36. package/dist/commands/baselines.js.map +1 -0
  37. package/dist/commands/guard.d.ts +38 -0
  38. package/dist/commands/guard.d.ts.map +1 -0
  39. package/dist/commands/guard.js +307 -0
  40. package/dist/commands/guard.js.map +1 -0
  41. package/dist/commands/init.d.ts +14 -0
  42. package/dist/commands/init.d.ts.map +1 -0
  43. package/dist/commands/init.js +356 -0
  44. package/dist/commands/init.js.map +1 -0
  45. package/dist/commands/onepassword-migration.d.ts +23 -0
  46. package/dist/commands/onepassword-migration.d.ts.map +1 -0
  47. package/dist/commands/onepassword-migration.js +179 -0
  48. package/dist/commands/onepassword-migration.js.map +1 -0
  49. package/dist/commands/protect.d.ts +34 -0
  50. package/dist/commands/protect.d.ts.map +1 -0
  51. package/dist/commands/protect.js +642 -0
  52. package/dist/commands/protect.js.map +1 -0
  53. package/dist/commands/runtime.d.ts +28 -0
  54. package/dist/commands/runtime.d.ts.map +1 -0
  55. package/dist/commands/runtime.js +309 -0
  56. package/dist/commands/runtime.js.map +1 -0
  57. package/dist/commands/self-register.d.ts +39 -0
  58. package/dist/commands/self-register.d.ts.map +1 -0
  59. package/dist/commands/self-register.js +528 -0
  60. package/dist/commands/self-register.js.map +1 -0
  61. package/dist/commands/verify.d.ts +25 -0
  62. package/dist/commands/verify.d.ts.map +1 -0
  63. package/dist/commands/verify.js +300 -0
  64. package/dist/commands/verify.js.map +1 -0
  65. package/dist/contextual/advisor.d.ts +12 -0
  66. package/dist/contextual/advisor.d.ts.map +1 -0
  67. package/dist/contextual/advisor.js +94 -0
  68. package/dist/contextual/advisor.js.map +1 -0
  69. package/dist/contextual/index.d.ts +3 -0
  70. package/dist/contextual/index.d.ts.map +1 -0
  71. package/dist/contextual/index.js +7 -0
  72. package/dist/contextual/index.js.map +1 -0
  73. package/dist/guided/attack-walkthrough.d.ts +13 -0
  74. package/dist/guided/attack-walkthrough.d.ts.map +1 -0
  75. package/dist/guided/attack-walkthrough.js +113 -0
  76. package/dist/guided/attack-walkthrough.js.map +1 -0
  77. package/dist/guided/wizard.d.ts +2 -0
  78. package/dist/guided/wizard.d.ts.map +1 -0
  79. package/dist/guided/wizard.js +108 -0
  80. package/dist/guided/wizard.js.map +1 -0
  81. package/dist/index.d.ts +3 -0
  82. package/dist/index.d.ts.map +1 -0
  83. package/dist/index.js +326 -0
  84. package/dist/index.js.map +1 -0
  85. package/dist/natural/index.d.ts +4 -0
  86. package/dist/natural/index.d.ts.map +1 -0
  87. package/dist/natural/index.js +9 -0
  88. package/dist/natural/index.js.map +1 -0
  89. package/dist/natural/intent-map.d.ts +7 -0
  90. package/dist/natural/intent-map.d.ts.map +1 -0
  91. package/dist/natural/intent-map.js +145 -0
  92. package/dist/natural/intent-map.js.map +1 -0
  93. package/dist/natural/llm-fallback.d.ts +8 -0
  94. package/dist/natural/llm-fallback.d.ts.map +1 -0
  95. package/dist/natural/llm-fallback.js +143 -0
  96. package/dist/natural/llm-fallback.js.map +1 -0
  97. package/dist/report/interactive-html.d.ts +51 -0
  98. package/dist/report/interactive-html.d.ts.map +1 -0
  99. package/dist/report/interactive-html.js +508 -0
  100. package/dist/report/interactive-html.js.map +1 -0
  101. package/dist/router.d.ts +23 -0
  102. package/dist/router.d.ts.map +1 -0
  103. package/dist/router.js +132 -0
  104. package/dist/router.js.map +1 -0
  105. package/dist/semantic/command-index.json +182 -0
  106. package/dist/semantic/index.d.ts +3 -0
  107. package/dist/semantic/index.d.ts.map +1 -0
  108. package/dist/semantic/index.js +28 -0
  109. package/dist/semantic/index.js.map +1 -0
  110. package/dist/semantic/search.d.ts +17 -0
  111. package/dist/semantic/search.d.ts.map +1 -0
  112. package/dist/semantic/search.js +123 -0
  113. package/dist/semantic/search.js.map +1 -0
  114. package/dist/util/action-prompt.d.ts +29 -0
  115. package/dist/util/action-prompt.d.ts.map +1 -0
  116. package/dist/util/action-prompt.js +126 -0
  117. package/dist/util/action-prompt.js.map +1 -0
  118. package/dist/util/advisories.d.ts +43 -0
  119. package/dist/util/advisories.d.ts.map +1 -0
  120. package/dist/util/advisories.js +229 -0
  121. package/dist/util/advisories.js.map +1 -0
  122. package/dist/util/colors.d.ts +9 -0
  123. package/dist/util/colors.d.ts.map +1 -0
  124. package/dist/util/colors.js +18 -0
  125. package/dist/util/colors.js.map +1 -0
  126. package/dist/util/credential-patterns.d.ts +38 -0
  127. package/dist/util/credential-patterns.d.ts.map +1 -0
  128. package/dist/util/credential-patterns.js +203 -0
  129. package/dist/util/credential-patterns.js.map +1 -0
  130. package/dist/util/detect.d.ts +11 -0
  131. package/dist/util/detect.d.ts.map +1 -0
  132. package/dist/util/detect.js +49 -0
  133. package/dist/util/detect.js.map +1 -0
  134. package/dist/util/format.d.ts +6 -0
  135. package/dist/util/format.d.ts.map +1 -0
  136. package/dist/util/format.js +49 -0
  137. package/dist/util/format.js.map +1 -0
  138. package/dist/util/report-submission.d.ts +64 -0
  139. package/dist/util/report-submission.d.ts.map +1 -0
  140. package/dist/util/report-submission.js +109 -0
  141. package/dist/util/report-submission.js.map +1 -0
  142. package/dist/util/spinner.d.ts +10 -0
  143. package/dist/util/spinner.d.ts.map +1 -0
  144. package/dist/util/spinner.js +38 -0
  145. package/dist/util/spinner.js.map +1 -0
  146. package/dist/util/version.d.ts +5 -0
  147. package/dist/util/version.d.ts.map +1 -0
  148. package/dist/util/version.js +24 -0
  149. package/dist/util/version.js.map +1 -0
  150. package/package.json +47 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"router.js","sourceRoot":"","sources":["../src/router.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,182 @@
1
+ [
2
+ {
3
+ "id": "scan",
4
+ "path": "opena2a scan",
5
+ "description": "Scan AI agent for security vulnerabilities using 150+ checks",
6
+ "tags": ["security", "scan", "vulnerability", "hardening", "audit"],
7
+ "synonyms": ["check", "test", "analyze", "inspect", "review"],
8
+ "domains": ["mcp", "agent", "llm", "ai"],
9
+ "examples": ["scan my MCP server", "find vulnerabilities", "security audit"]
10
+ },
11
+ {
12
+ "id": "scan-secure",
13
+ "path": "opena2a scan secure",
14
+ "description": "Run full security scan with auto-fix suggestions",
15
+ "tags": ["security", "scan", "harden", "fix", "remediate"],
16
+ "synonyms": ["harden", "secure", "fix"],
17
+ "domains": ["mcp", "agent"],
18
+ "examples": ["harden my agent", "secure my MCP server", "fix vulnerabilities"]
19
+ },
20
+ {
21
+ "id": "scan-attack",
22
+ "path": "opena2a scan attack",
23
+ "description": "Run attack mode to test agent resilience against adversarial inputs",
24
+ "tags": ["attack", "pentest", "adversarial", "red-team", "offensive"],
25
+ "synonyms": ["pentest", "red-team", "exploit", "break"],
26
+ "domains": ["agent", "mcp", "llm"],
27
+ "examples": ["attack test my agent", "red team my MCP server", "pentest"]
28
+ },
29
+ {
30
+ "id": "secrets-init",
31
+ "path": "opena2a secrets init",
32
+ "description": "Set up credential protection for AI coding tools",
33
+ "tags": ["secrets", "credentials", "protection", "encrypt", "vault"],
34
+ "synonyms": ["protect-secrets", "encrypt", "hide-keys"],
35
+ "domains": ["cursor", "claude-code", "windsurf", "vscode"],
36
+ "examples": ["protect my API keys", "hide credentials from AI", "encrypt secrets"]
37
+ },
38
+ {
39
+ "id": "secrets-scan",
40
+ "path": "opena2a secrets scan",
41
+ "description": "Find hardcoded credentials in project files",
42
+ "tags": ["secrets", "scan", "credentials", "leak", "exposure"],
43
+ "synonyms": ["find-secrets", "detect-keys", "credential-scan"],
44
+ "domains": ["git", "env", "config"],
45
+ "examples": ["find leaked API keys", "scan for hardcoded secrets", "detect credentials"]
46
+ },
47
+ {
48
+ "id": "protect",
49
+ "path": "opena2a protect",
50
+ "description": "Detect credentials and migrate them to encrypted vault. Detects Google API key drift to Gemini and AWS key drift to Bedrock.",
51
+ "tags": ["protect", "migrate", "vault", "remediate", "fix", "drift", "google", "aws", "gemini", "bedrock"],
52
+ "synonyms": ["migrate-secrets", "vault", "fix-credentials", "scope-drift", "key-detection"],
53
+ "domains": ["credentials", "security", "google", "aws", "drift"],
54
+ "examples": ["move secrets to vault", "fix hardcoded credentials", "migrate API keys", "detect google key drift", "find AWS bedrock drift"]
55
+ },
56
+ {
57
+ "id": "runtime",
58
+ "path": "opena2a runtime",
59
+ "description": "Monitor agent runtime behavior -- process, network, filesystem",
60
+ "tags": ["runtime", "monitor", "process", "network", "filesystem", "edr"],
61
+ "synonyms": ["monitor", "watch", "observe", "guard"],
62
+ "domains": ["agent", "process", "network"],
63
+ "examples": ["monitor my agent", "watch network calls", "runtime protection"]
64
+ },
65
+ {
66
+ "id": "benchmark",
67
+ "path": "opena2a benchmark",
68
+ "description": "Run OASB security benchmark with 222 attack scenarios",
69
+ "tags": ["benchmark", "oasb", "compliance", "score", "assessment"],
70
+ "synonyms": ["assess", "grade", "score", "evaluate"],
71
+ "domains": ["compliance", "owasp", "mitre"],
72
+ "examples": ["benchmark my agent", "security score", "compliance check"]
73
+ },
74
+ {
75
+ "id": "registry",
76
+ "path": "opena2a registry",
77
+ "description": "Query OpenA2A Trust Registry for package security data",
78
+ "tags": ["registry", "trust", "package", "supply-chain", "verify"],
79
+ "synonyms": ["trust", "verify", "lookup", "check-package"],
80
+ "domains": ["npm", "pypi", "supply-chain"],
81
+ "examples": ["check if package is safe", "trust score lookup", "verify dependency"]
82
+ },
83
+ {
84
+ "id": "research",
85
+ "path": "opena2a research",
86
+ "description": "Launch autonomous security research agent",
87
+ "tags": ["research", "autonomous", "bounty", "discover", "investigate"],
88
+ "synonyms": ["investigate", "discover", "analyze-deep"],
89
+ "domains": ["vulnerability", "security-research"],
90
+ "examples": ["research this target", "find zero-days", "autonomous security scan"]
91
+ },
92
+ {
93
+ "id": "hunt",
94
+ "path": "opena2a hunt",
95
+ "description": "Launch autonomous vulnerability hunter with multi-turn attack decomposition",
96
+ "tags": ["hunt", "attack", "autonomous", "decompose", "exploit"],
97
+ "synonyms": ["exploit", "break", "multi-turn-attack"],
98
+ "domains": ["agent", "api", "llm"],
99
+ "examples": ["hunt for vulnerabilities", "multi-turn attack", "autonomous exploit"]
100
+ },
101
+ {
102
+ "id": "train",
103
+ "path": "opena2a train",
104
+ "description": "Launch Damn Vulnerable AI Agent for security training",
105
+ "tags": ["train", "practice", "dvaa", "vulnerable", "learn"],
106
+ "synonyms": ["practice", "learn", "ctf", "lab"],
107
+ "domains": ["training", "education"],
108
+ "examples": ["start training lab", "practice on vulnerable agent", "CTF environment"]
109
+ },
110
+ {
111
+ "id": "crypto",
112
+ "path": "opena2a crypto",
113
+ "description": "Cryptographic inventory scan and post-quantum readiness assessment",
114
+ "tags": ["crypto", "pqc", "quantum", "tls", "certificate", "encryption"],
115
+ "synonyms": ["quantum", "post-quantum", "pqc", "tls-scan"],
116
+ "domains": ["cryptography", "tls", "certificate"],
117
+ "examples": ["scan for weak crypto", "quantum readiness", "TLS configuration check"]
118
+ },
119
+ {
120
+ "id": "identity",
121
+ "path": "opena2a identity",
122
+ "description": "Manage cryptographic agent identities (AIM)",
123
+ "tags": ["identity", "aim", "agent-id", "certificate", "governance"],
124
+ "synonyms": ["agent-id", "register-agent", "identity-management"],
125
+ "domains": ["agent", "governance", "access-control"],
126
+ "examples": ["create agent identity", "register my agent", "manage agent certificates"]
127
+ },
128
+ {
129
+ "id": "broker",
130
+ "path": "opena2a broker",
131
+ "description": "Start identity-aware credential broker daemon",
132
+ "tags": ["broker", "daemon", "credential-resolution", "policy", "identity-aware"],
133
+ "synonyms": ["credential-broker", "secret-proxy", "vault-daemon"],
134
+ "domains": ["credentials", "identity", "policy"],
135
+ "examples": ["start credential broker", "run secret proxy", "identity-aware secrets"]
136
+ },
137
+ {
138
+ "id": "guard",
139
+ "path": "opena2a guard",
140
+ "description": "Config file integrity signing and verification (ConfigGuard)",
141
+ "tags": ["guard", "integrity", "config", "sign", "verify", "tamper", "hash"],
142
+ "synonyms": ["configguard", "sign-config", "verify-config", "integrity-check"],
143
+ "domains": ["config", "security", "supply-chain"],
144
+ "examples": ["sign config files", "verify config integrity", "detect config tampering"]
145
+ },
146
+ {
147
+ "id": "dlp",
148
+ "path": "opena2a dlp",
149
+ "description": "Data loss prevention -- scan and clean AI tool transcripts",
150
+ "tags": ["dlp", "transcript", "clean", "redact", "data-loss"],
151
+ "synonyms": ["clean-transcripts", "redact", "data-protection"],
152
+ "domains": ["transcript", "claude", "cursor"],
153
+ "examples": ["clean AI transcripts", "redact secrets from logs", "data loss prevention"]
154
+ },
155
+ {
156
+ "id": "init",
157
+ "path": "opena2a init",
158
+ "description": "Initialize OpenA2A security in a project -- scan for credentials, detect scope drift, check hygiene, calculate trust score",
159
+ "tags": ["init", "setup", "initialize", "onboard", "start", "drift", "trust-score"],
160
+ "synonyms": ["setup", "start", "onboard", "configure", "assess"],
161
+ "domains": ["project", "config", "credentials"],
162
+ "examples": ["set up security", "initialize project", "get started", "check my project"]
163
+ },
164
+ {
165
+ "id": "status",
166
+ "path": "opena2a status",
167
+ "description": "Show security status of current project",
168
+ "tags": ["status", "dashboard", "overview", "summary", "report"],
169
+ "synonyms": ["overview", "dashboard", "summary"],
170
+ "domains": ["project"],
171
+ "examples": ["show security status", "project overview", "what's the status"]
172
+ },
173
+ {
174
+ "id": "config",
175
+ "path": "opena2a config",
176
+ "description": "Manage OpenA2A configuration and preferences",
177
+ "tags": ["config", "settings", "preferences", "configure"],
178
+ "synonyms": ["settings", "preferences"],
179
+ "domains": ["config"],
180
+ "examples": ["change settings", "configure contribute", "set registry URL"]
181
+ }
182
+ ]
@@ -0,0 +1,3 @@
1
+ export { search } from './search.js';
2
+ export declare function handleSearch(query: string): void;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/semantic/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAqBhD"}
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.search = void 0;
4
+ exports.handleSearch = handleSearch;
5
+ const search_js_1 = require("./search.js");
6
+ const colors_js_1 = require("../util/colors.js");
7
+ var search_js_2 = require("./search.js");
8
+ Object.defineProperty(exports, "search", { enumerable: true, get: function () { return search_js_2.search; } });
9
+ function handleSearch(query) {
10
+ const results = (0, search_js_1.search)(query);
11
+ if (results.length === 0) {
12
+ process.stdout.write(`No commands found matching "${query}".\n`);
13
+ process.stdout.write(`Try: opena2a --help\n`);
14
+ return;
15
+ }
16
+ process.stdout.write(`\nCommands matching "${query}":\n\n`);
17
+ for (let i = 0; i < results.length; i++) {
18
+ const { entry, score } = results[i];
19
+ const rank = `${i + 1}.`;
20
+ process.stdout.write(` ${(0, colors_js_1.bold)(rank)} ${(0, colors_js_1.cyan)(entry.path)}\n`);
21
+ process.stdout.write(` ${entry.description}\n`);
22
+ if (entry.examples.length > 0) {
23
+ process.stdout.write(` ${(0, colors_js_1.dim)('e.g.')} ${(0, colors_js_1.gray)(entry.examples[0])}\n`);
24
+ }
25
+ process.stdout.write('\n');
26
+ }
27
+ }
28
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/semantic/index.ts"],"names":[],"mappings":";;;AAKA,oCAqBC;AA1BD,2CAAqC;AACrC,iDAA0D;AAE1D,yCAAqC;AAA5B,mGAAA,MAAM,OAAA;AAEf,SAAgB,YAAY,CAAC,KAAa;IACxC,MAAM,OAAO,GAAG,IAAA,kBAAM,EAAC,KAAK,CAAC,CAAC;IAE9B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,+BAA+B,KAAK,MAAM,CAAC,CAAC;QACjE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAC9C,OAAO;IACT,CAAC;IAED,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,wBAAwB,KAAK,QAAQ,CAAC,CAAC;IAE5D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;QACpC,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;QACzB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,IAAA,gBAAI,EAAC,IAAI,CAAC,IAAI,IAAA,gBAAI,EAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,KAAK,CAAC,WAAW,IAAI,CAAC,CAAC;QACpD,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,IAAA,eAAG,EAAC,MAAM,CAAC,IAAI,IAAA,gBAAI,EAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC3E,CAAC;QACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;AACH,CAAC"}
@@ -0,0 +1,17 @@
1
+ interface CommandEntry {
2
+ id: string;
3
+ path: string;
4
+ description: string;
5
+ tags: string[];
6
+ synonyms: string[];
7
+ domains: string[];
8
+ examples: string[];
9
+ }
10
+ interface SearchResult {
11
+ entry: CommandEntry;
12
+ score: number;
13
+ matchedOn: string[];
14
+ }
15
+ export declare function search(query: string, limit?: number): SearchResult[];
16
+ export {};
17
+ //# sourceMappingURL=search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/semantic/search.ts"],"names":[],"mappings":"AAGA,UAAU,YAAY;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAiFD,UAAU,YAAY;IACpB,KAAK,EAAE,YAAY,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,GAAE,MAAU,GAAG,YAAY,EAAE,CAoDvE"}
@@ -0,0 +1,123 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.search = search;
4
+ const node_fs_1 = require("node:fs");
5
+ const node_path_1 = require("node:path");
6
+ const WEIGHTS = {
7
+ tag: 10,
8
+ synonym: 8,
9
+ domain: 5,
10
+ example: 3,
11
+ description: 2,
12
+ };
13
+ // Domain expansion map: query terms -> related domains
14
+ const DOMAIN_MAP = {
15
+ api: ['agent', 'mcp', 'credentials'],
16
+ key: ['credentials', 'secrets', 'config'],
17
+ token: ['credentials', 'secrets'],
18
+ password: ['credentials', 'secrets'],
19
+ secret: ['credentials', 'secrets', 'vault'],
20
+ vulnerable: ['scan', 'attack', 'training'],
21
+ safe: ['scan', 'security', 'hardening'],
22
+ llm: ['agent', 'ai', 'mcp'],
23
+ openai: ['credentials', 'ai', 'llm'],
24
+ anthropic: ['credentials', 'ai', 'llm'],
25
+ claude: ['credentials', 'ai', 'cursor', 'claude-code'],
26
+ cursor: ['credentials', 'ai', 'claude-code'],
27
+ mcp: ['agent', 'mcp', 'security'],
28
+ docker: ['training', 'dvaa'],
29
+ npm: ['supply-chain', 'npm'],
30
+ pip: ['supply-chain', 'pypi'],
31
+ owasp: ['compliance', 'owasp', 'benchmark'],
32
+ mitre: ['compliance', 'mitre', 'benchmark'],
33
+ quantum: ['cryptography', 'pqc', 'tls'],
34
+ tls: ['cryptography', 'tls', 'certificate'],
35
+ stripe: ['credentials', 'config'],
36
+ aws: ['credentials', 'config'],
37
+ github: ['credentials', 'git', 'supply-chain'],
38
+ };
39
+ let cachedIndex = null;
40
+ function loadIndex() {
41
+ if (cachedIndex)
42
+ return cachedIndex;
43
+ // Try multiple locations to find the command index
44
+ const candidates = [
45
+ (0, node_path_1.resolve)(__dirname, 'command-index.json'),
46
+ (0, node_path_1.resolve)(__dirname, '..', 'semantic', 'command-index.json'),
47
+ (0, node_path_1.resolve)(__dirname, '..', 'src', 'semantic', 'command-index.json'),
48
+ ];
49
+ for (const indexPath of candidates) {
50
+ try {
51
+ const raw = (0, node_fs_1.readFileSync)(indexPath, 'utf-8');
52
+ cachedIndex = JSON.parse(raw);
53
+ return cachedIndex;
54
+ }
55
+ catch {
56
+ // Try next candidate
57
+ }
58
+ }
59
+ return [];
60
+ }
61
+ function tokenize(query) {
62
+ return query
63
+ .toLowerCase()
64
+ .replace(/[^a-z0-9\s-]/g, '')
65
+ .split(/\s+/)
66
+ .filter(t => t.length > 1);
67
+ }
68
+ function expandTokens(tokens) {
69
+ const expanded = new Set(tokens);
70
+ for (const token of tokens) {
71
+ const related = DOMAIN_MAP[token];
72
+ if (related) {
73
+ for (const r of related)
74
+ expanded.add(r);
75
+ }
76
+ }
77
+ return [...expanded];
78
+ }
79
+ function search(query, limit = 5) {
80
+ const index = loadIndex();
81
+ if (index.length === 0)
82
+ return [];
83
+ const tokens = tokenize(query);
84
+ const expanded = expandTokens(tokens);
85
+ const results = [];
86
+ for (const entry of index) {
87
+ let score = 0;
88
+ const matchedOn = [];
89
+ for (const token of expanded) {
90
+ // Tag match
91
+ if (entry.tags.some(t => t.includes(token) || token.includes(t))) {
92
+ score += WEIGHTS.tag;
93
+ matchedOn.push(`tag:${token}`);
94
+ }
95
+ // Synonym match
96
+ if (entry.synonyms.some(s => s.includes(token) || token.includes(s))) {
97
+ score += WEIGHTS.synonym;
98
+ matchedOn.push(`synonym:${token}`);
99
+ }
100
+ // Domain match
101
+ if (entry.domains.some(d => d.includes(token) || token.includes(d))) {
102
+ score += WEIGHTS.domain;
103
+ matchedOn.push(`domain:${token}`);
104
+ }
105
+ // Description match
106
+ if (entry.description.toLowerCase().includes(token)) {
107
+ score += WEIGHTS.description;
108
+ matchedOn.push(`description:${token}`);
109
+ }
110
+ // Example match
111
+ if (entry.examples.some(e => e.toLowerCase().includes(token))) {
112
+ score += WEIGHTS.example;
113
+ matchedOn.push(`example:${token}`);
114
+ }
115
+ }
116
+ if (score > 0) {
117
+ results.push({ entry, score, matchedOn });
118
+ }
119
+ }
120
+ results.sort((a, b) => b.score - a.score);
121
+ return results.slice(0, limit);
122
+ }
123
+ //# sourceMappingURL=search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/semantic/search.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ export interface ActionPromptOptions {
2
+ /** Unique ID for remembering user's choice */
3
+ actionId: string;
4
+ /** Title displayed to user */
5
+ title: string;
6
+ /** Steps that will be executed (shown as numbered list) */
7
+ steps: string[];
8
+ /** Rollback instructions if something fails */
9
+ rollback: string[];
10
+ /** The function to execute */
11
+ execute: () => Promise<{
12
+ success: boolean;
13
+ message: string;
14
+ }>;
15
+ /** CI mode (skip all prompts) */
16
+ ci?: boolean;
17
+ }
18
+ /**
19
+ * Offer an action to the user with full transparency: show what will happen,
20
+ * how to undo it, and let them choose.
21
+ *
22
+ * Behavior:
23
+ * - CI or non-TTY: skip silently (returns false)
24
+ * - Remembered choice = false: skip silently
25
+ * - Remembered choice = true: auto-execute
26
+ * - Otherwise: show plan + rollback, ask for confirmation
27
+ */
28
+ export declare function offerAction(options: ActionPromptOptions): Promise<boolean>;
29
+ //# sourceMappingURL=action-prompt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"action-prompt.d.ts","sourceRoot":"","sources":["../../src/util/action-prompt.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,mBAAmB;IAClC,8CAA8C;IAC9C,QAAQ,EAAE,MAAM,CAAC;IACjB,8BAA8B;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,2DAA2D;IAC3D,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,+CAA+C;IAC/C,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,8BAA8B;IAC9B,OAAO,EAAE,MAAM,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC9D,iCAAiC;IACjC,EAAE,CAAC,EAAE,OAAO,CAAC;CACd;AAED;;;;;;;;;GASG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC,CAiHhF"}
@@ -0,0 +1,126 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.offerAction = offerAction;
4
+ const colors_js_1 = require("./colors.js");
5
+ /**
6
+ * Offer an action to the user with full transparency: show what will happen,
7
+ * how to undo it, and let them choose.
8
+ *
9
+ * Behavior:
10
+ * - CI or non-TTY: skip silently (returns false)
11
+ * - Remembered choice = false: skip silently
12
+ * - Remembered choice = true: auto-execute
13
+ * - Otherwise: show plan + rollback, ask for confirmation
14
+ */
15
+ async function offerAction(options) {
16
+ // CI or non-TTY: skip silently
17
+ if (options.ci || !process.stdin.isTTY) {
18
+ return false;
19
+ }
20
+ // Check remembered choice
21
+ let rememberedChoice;
22
+ try {
23
+ const shared = await import('@opena2a/shared');
24
+ const mod = 'default' in shared ? shared.default : shared;
25
+ rememberedChoice = mod.getRememberedChoice(options.actionId);
26
+ }
27
+ catch {
28
+ // shared not available, proceed without memory
29
+ }
30
+ if (rememberedChoice === false) {
31
+ return false;
32
+ }
33
+ if (rememberedChoice === true) {
34
+ // Auto-execute
35
+ const result = await options.execute();
36
+ if (result.success) {
37
+ process.stdout.write((0, colors_js_1.green)(result.message) + '\n');
38
+ }
39
+ else {
40
+ process.stderr.write((0, colors_js_1.red)(result.message) + '\n');
41
+ }
42
+ return result.success;
43
+ }
44
+ // Show plan to user
45
+ process.stdout.write('\n' + (0, colors_js_1.bold)(options.title) + '\n\n');
46
+ process.stdout.write((0, colors_js_1.cyan)('What will happen:') + '\n');
47
+ for (let i = 0; i < options.steps.length; i++) {
48
+ process.stdout.write(` ${i + 1}. ${options.steps[i]}\n`);
49
+ }
50
+ process.stdout.write('\n' + (0, colors_js_1.dim)('If anything goes wrong:') + '\n');
51
+ for (const step of options.rollback) {
52
+ process.stdout.write(` - ${step}\n`);
53
+ }
54
+ process.stdout.write('\n');
55
+ // Ask for confirmation
56
+ let confirmed = false;
57
+ try {
58
+ const { confirm } = await import('@inquirer/prompts');
59
+ confirmed = await confirm({
60
+ message: 'Proceed?',
61
+ default: false,
62
+ });
63
+ }
64
+ catch (err) {
65
+ if (err instanceof Error && err.message.includes('User force closed')) {
66
+ return false;
67
+ }
68
+ // Fallback: decline
69
+ return false;
70
+ }
71
+ if (!confirmed) {
72
+ // Offer to remember the decline
73
+ try {
74
+ const { confirm: confirmRemember } = await import('@inquirer/prompts');
75
+ const remember = await confirmRemember({
76
+ message: 'Remember this choice and skip next time?',
77
+ default: false,
78
+ });
79
+ if (remember) {
80
+ try {
81
+ const shared = await import('@opena2a/shared');
82
+ const mod = 'default' in shared ? shared.default : shared;
83
+ mod.setRememberedChoice(options.actionId, false);
84
+ }
85
+ catch {
86
+ // ignore
87
+ }
88
+ }
89
+ }
90
+ catch {
91
+ // ignore
92
+ }
93
+ return false;
94
+ }
95
+ // Execute
96
+ const result = await options.execute();
97
+ if (result.success) {
98
+ process.stdout.write((0, colors_js_1.green)(result.message) + '\n');
99
+ }
100
+ else {
101
+ process.stderr.write((0, colors_js_1.red)(result.message) + '\n');
102
+ }
103
+ // Offer to remember the acceptance (only on first successful run)
104
+ try {
105
+ const { confirm: confirmRemember } = await import('@inquirer/prompts');
106
+ const remember = await confirmRemember({
107
+ message: 'Always do this automatically next time?',
108
+ default: false,
109
+ });
110
+ if (remember) {
111
+ try {
112
+ const shared = await import('@opena2a/shared');
113
+ const mod = 'default' in shared ? shared.default : shared;
114
+ mod.setRememberedChoice(options.actionId, true);
115
+ }
116
+ catch {
117
+ // ignore
118
+ }
119
+ }
120
+ }
121
+ catch {
122
+ // ignore
123
+ }
124
+ return result.success;
125
+ }
126
+ //# sourceMappingURL=action-prompt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"action-prompt.js","sourceRoot":"","sources":["../../src/util/action-prompt.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Advisory check utility -- fetches security advisories from the OpenA2A Registry
3
+ * and warns users about flagged tools in their project.
4
+ *
5
+ * Called during `opena2a init` and `opena2a scan` to surface intelligence from
6
+ * community scan reports.
7
+ */
8
+ interface OSVSeverity {
9
+ type: string;
10
+ score: string;
11
+ }
12
+ interface OSVAffected {
13
+ package: {
14
+ name: string;
15
+ ecosystem: string;
16
+ };
17
+ ranges?: {
18
+ type: string;
19
+ events: {
20
+ introduced?: string;
21
+ fixed?: string;
22
+ }[];
23
+ }[];
24
+ }
25
+ export interface Advisory {
26
+ id: string;
27
+ summary: string;
28
+ severity: OSVSeverity[];
29
+ affected: OSVAffected[];
30
+ published: string;
31
+ details?: string;
32
+ databaseSpecific?: Record<string, any>;
33
+ }
34
+ export interface AdvisoryCheck {
35
+ advisories: Advisory[];
36
+ matchedPackages: string[];
37
+ total: number;
38
+ fromCache: boolean;
39
+ }
40
+ export declare function checkAdvisories(dir: string, registryUrl?: string): Promise<AdvisoryCheck>;
41
+ export declare function printAdvisoryWarnings(check: AdvisoryCheck): void;
42
+ export {};
43
+ //# sourceMappingURL=advisories.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"advisories.d.ts","sourceRoot":"","sources":["../../src/util/advisories.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAQH,UAAU,WAAW;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,UAAU,WAAW;IACnB,OAAO,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;IACF,MAAM,CAAC,EAAE;QACP,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE;YAAE,UAAU,CAAC,EAAE,MAAM,CAAC;YAAC,KAAK,CAAC,EAAE,MAAM,CAAA;SAAE,EAAE,CAAC;KACnD,EAAE,CAAC;CACL;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CACxC;AAQD,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,QAAQ,EAAE,CAAC;IACvB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,OAAO,CAAC;CACpB;AAgID,wBAAsB,eAAe,CACnC,GAAG,EAAE,MAAM,EACX,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,aAAa,CAAC,CAgDxB;AAID,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAwBhE"}