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.
- package/dist/adapters/docker.d.ts +8 -0
- package/dist/adapters/docker.d.ts.map +1 -0
- package/dist/adapters/docker.js +60 -0
- package/dist/adapters/docker.js.map +1 -0
- package/dist/adapters/import.d.ts +12 -0
- package/dist/adapters/import.d.ts.map +1 -0
- package/dist/adapters/import.js +76 -0
- package/dist/adapters/import.js.map +1 -0
- package/dist/adapters/index.d.ts +9 -0
- package/dist/adapters/index.d.ts.map +1 -0
- package/dist/adapters/index.js +40 -0
- package/dist/adapters/index.js.map +1 -0
- package/dist/adapters/python.d.ts +9 -0
- package/dist/adapters/python.d.ts.map +1 -0
- package/dist/adapters/python.js +73 -0
- package/dist/adapters/python.js.map +1 -0
- package/dist/adapters/registry.d.ts +6 -0
- package/dist/adapters/registry.d.ts.map +1 -0
- package/dist/adapters/registry.js +86 -0
- package/dist/adapters/registry.js.map +1 -0
- package/dist/adapters/spawn.d.ts +9 -0
- package/dist/adapters/spawn.d.ts.map +1 -0
- package/dist/adapters/spawn.js +63 -0
- package/dist/adapters/spawn.js.map +1 -0
- package/dist/adapters/types.d.ts +35 -0
- package/dist/adapters/types.d.ts.map +1 -0
- package/dist/adapters/types.js +3 -0
- package/dist/adapters/types.js.map +1 -0
- package/dist/branding.d.ts +3 -0
- package/dist/branding.d.ts.map +1 -0
- package/dist/branding.js +21 -0
- package/dist/branding.js.map +1 -0
- package/dist/commands/baselines.d.ts +14 -0
- package/dist/commands/baselines.d.ts.map +1 -0
- package/dist/commands/baselines.js +269 -0
- package/dist/commands/baselines.js.map +1 -0
- package/dist/commands/guard.d.ts +38 -0
- package/dist/commands/guard.d.ts.map +1 -0
- package/dist/commands/guard.js +307 -0
- package/dist/commands/guard.js.map +1 -0
- package/dist/commands/init.d.ts +14 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +356 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/onepassword-migration.d.ts +23 -0
- package/dist/commands/onepassword-migration.d.ts.map +1 -0
- package/dist/commands/onepassword-migration.js +179 -0
- package/dist/commands/onepassword-migration.js.map +1 -0
- package/dist/commands/protect.d.ts +34 -0
- package/dist/commands/protect.d.ts.map +1 -0
- package/dist/commands/protect.js +642 -0
- package/dist/commands/protect.js.map +1 -0
- package/dist/commands/runtime.d.ts +28 -0
- package/dist/commands/runtime.d.ts.map +1 -0
- package/dist/commands/runtime.js +309 -0
- package/dist/commands/runtime.js.map +1 -0
- package/dist/commands/self-register.d.ts +39 -0
- package/dist/commands/self-register.d.ts.map +1 -0
- package/dist/commands/self-register.js +528 -0
- package/dist/commands/self-register.js.map +1 -0
- package/dist/commands/verify.d.ts +25 -0
- package/dist/commands/verify.d.ts.map +1 -0
- package/dist/commands/verify.js +300 -0
- package/dist/commands/verify.js.map +1 -0
- package/dist/contextual/advisor.d.ts +12 -0
- package/dist/contextual/advisor.d.ts.map +1 -0
- package/dist/contextual/advisor.js +94 -0
- package/dist/contextual/advisor.js.map +1 -0
- package/dist/contextual/index.d.ts +3 -0
- package/dist/contextual/index.d.ts.map +1 -0
- package/dist/contextual/index.js +7 -0
- package/dist/contextual/index.js.map +1 -0
- package/dist/guided/attack-walkthrough.d.ts +13 -0
- package/dist/guided/attack-walkthrough.d.ts.map +1 -0
- package/dist/guided/attack-walkthrough.js +113 -0
- package/dist/guided/attack-walkthrough.js.map +1 -0
- package/dist/guided/wizard.d.ts +2 -0
- package/dist/guided/wizard.d.ts.map +1 -0
- package/dist/guided/wizard.js +108 -0
- package/dist/guided/wizard.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +326 -0
- package/dist/index.js.map +1 -0
- package/dist/natural/index.d.ts +4 -0
- package/dist/natural/index.d.ts.map +1 -0
- package/dist/natural/index.js +9 -0
- package/dist/natural/index.js.map +1 -0
- package/dist/natural/intent-map.d.ts +7 -0
- package/dist/natural/intent-map.d.ts.map +1 -0
- package/dist/natural/intent-map.js +145 -0
- package/dist/natural/intent-map.js.map +1 -0
- package/dist/natural/llm-fallback.d.ts +8 -0
- package/dist/natural/llm-fallback.d.ts.map +1 -0
- package/dist/natural/llm-fallback.js +143 -0
- package/dist/natural/llm-fallback.js.map +1 -0
- package/dist/report/interactive-html.d.ts +51 -0
- package/dist/report/interactive-html.d.ts.map +1 -0
- package/dist/report/interactive-html.js +508 -0
- package/dist/report/interactive-html.js.map +1 -0
- package/dist/router.d.ts +23 -0
- package/dist/router.d.ts.map +1 -0
- package/dist/router.js +132 -0
- package/dist/router.js.map +1 -0
- package/dist/semantic/command-index.json +182 -0
- package/dist/semantic/index.d.ts +3 -0
- package/dist/semantic/index.d.ts.map +1 -0
- package/dist/semantic/index.js +28 -0
- package/dist/semantic/index.js.map +1 -0
- package/dist/semantic/search.d.ts +17 -0
- package/dist/semantic/search.d.ts.map +1 -0
- package/dist/semantic/search.js +123 -0
- package/dist/semantic/search.js.map +1 -0
- package/dist/util/action-prompt.d.ts +29 -0
- package/dist/util/action-prompt.d.ts.map +1 -0
- package/dist/util/action-prompt.js +126 -0
- package/dist/util/action-prompt.js.map +1 -0
- package/dist/util/advisories.d.ts +43 -0
- package/dist/util/advisories.d.ts.map +1 -0
- package/dist/util/advisories.js +229 -0
- package/dist/util/advisories.js.map +1 -0
- package/dist/util/colors.d.ts +9 -0
- package/dist/util/colors.d.ts.map +1 -0
- package/dist/util/colors.js +18 -0
- package/dist/util/colors.js.map +1 -0
- package/dist/util/credential-patterns.d.ts +38 -0
- package/dist/util/credential-patterns.d.ts.map +1 -0
- package/dist/util/credential-patterns.js +203 -0
- package/dist/util/credential-patterns.js.map +1 -0
- package/dist/util/detect.d.ts +11 -0
- package/dist/util/detect.d.ts.map +1 -0
- package/dist/util/detect.js +49 -0
- package/dist/util/detect.js.map +1 -0
- package/dist/util/format.d.ts +6 -0
- package/dist/util/format.d.ts.map +1 -0
- package/dist/util/format.js +49 -0
- package/dist/util/format.js.map +1 -0
- package/dist/util/report-submission.d.ts +64 -0
- package/dist/util/report-submission.d.ts.map +1 -0
- package/dist/util/report-submission.js +109 -0
- package/dist/util/report-submission.js.map +1 -0
- package/dist/util/spinner.d.ts +10 -0
- package/dist/util/spinner.d.ts.map +1 -0
- package/dist/util/spinner.js +38 -0
- package/dist/util/spinner.js.map +1 -0
- package/dist/util/version.d.ts +5 -0
- package/dist/util/version.d.ts.map +1 -0
- package/dist/util/version.js +24 -0
- package/dist/util/version.js.map +1 -0
- 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 @@
|
|
|
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"}
|