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,108 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.runWizard = runWizard;
4
+ const colors_js_1 = require("../util/colors.js");
5
+ const CATEGORIES = [
6
+ {
7
+ label: 'Scan & Harden',
8
+ description: 'Find and fix security issues in AI agents',
9
+ commands: [
10
+ { label: 'Full security scan', command: 'opena2a scan secure', description: '150+ security checks with auto-fix' },
11
+ { label: 'Attack mode', command: 'opena2a scan attack', description: 'Adversarial testing against your agent' },
12
+ { label: 'Security benchmark', command: 'opena2a benchmark', description: 'OASB benchmark (222 attack scenarios)' },
13
+ { label: 'Credential scan', command: 'opena2a secrets scan', description: 'Find hardcoded secrets in your codebase' },
14
+ ],
15
+ },
16
+ {
17
+ label: 'Protect & Monitor',
18
+ description: 'Shield credentials and monitor runtime behavior',
19
+ commands: [
20
+ { label: 'Migrate credentials to vault', command: 'opena2a protect', description: 'Detect and encrypt hardcoded credentials' },
21
+ { label: 'Set up Secretless', command: 'opena2a secrets init', description: 'Protect credentials from AI coding tools' },
22
+ { label: 'Runtime monitoring', command: 'opena2a runtime start', description: 'Monitor process, network, filesystem' },
23
+ { label: 'Start credential broker', command: 'opena2a broker start', description: 'Identity-aware credential resolution' },
24
+ ],
25
+ },
26
+ {
27
+ label: 'Verify & Comply',
28
+ description: 'Check trust scores and compliance posture',
29
+ commands: [
30
+ { label: 'Trust registry lookup', command: 'opena2a registry check', description: 'Check package security data' },
31
+ { label: 'Agent identity', command: 'opena2a identity', description: 'Create and manage agent identities' },
32
+ { label: 'Crypto scan', command: 'opena2a crypto scan', description: 'Cryptographic inventory and PQC readiness' },
33
+ { label: 'Project status', command: 'opena2a status', description: 'Security status overview' },
34
+ ],
35
+ },
36
+ {
37
+ label: 'Research & Train',
38
+ description: 'Autonomous security research and training',
39
+ commands: [
40
+ { label: 'Autonomous research', command: 'opena2a research', description: 'Launch security research agent' },
41
+ { label: 'Vulnerability hunter', command: 'opena2a hunt', description: 'Multi-turn attack decomposition' },
42
+ { label: 'Training lab', command: 'opena2a train', description: 'Launch DVAA vulnerable agent' },
43
+ ],
44
+ },
45
+ ];
46
+ async function runWizard() {
47
+ // Check if interactive prompts are available
48
+ if (!process.stdin.isTTY) {
49
+ process.stdout.write('Interactive mode requires a TTY.\n');
50
+ process.stdout.write('Run: opena2a --help\n');
51
+ return null;
52
+ }
53
+ try {
54
+ const { select } = await import('@inquirer/prompts');
55
+ // Stage 1: Pick category
56
+ const categoryChoices = CATEGORIES.map(cat => ({
57
+ name: `${cat.label} -- ${cat.description}`,
58
+ value: cat.label,
59
+ }));
60
+ const selectedCategory = await select({
61
+ message: 'What would you like to do?',
62
+ choices: categoryChoices,
63
+ });
64
+ const category = CATEGORIES.find(c => c.label === selectedCategory);
65
+ if (!category)
66
+ return null;
67
+ // Stage 2: Pick command
68
+ const commandChoices = category.commands.map(cmd => ({
69
+ name: `${cmd.label} -- ${cmd.description}`,
70
+ value: cmd.command,
71
+ }));
72
+ const selectedCommand = await select({
73
+ message: `${category.label}:`,
74
+ choices: commandChoices,
75
+ });
76
+ // Intercept attack mode to provide guided walkthrough
77
+ if (selectedCommand === 'opena2a scan attack') {
78
+ const { runAttackWalkthrough } = await import('./attack-walkthrough.js');
79
+ return runAttackWalkthrough();
80
+ }
81
+ // Show the expert command
82
+ process.stdout.write(`\n${(0, colors_js_1.gray)('Next time:')} ${(0, colors_js_1.cyan)(selectedCommand)}\n\n`);
83
+ return selectedCommand;
84
+ }
85
+ catch (err) {
86
+ // User cancelled (Ctrl+C)
87
+ if (err instanceof Error && err.message.includes('User force closed')) {
88
+ return null;
89
+ }
90
+ // @inquirer/prompts not installed
91
+ return runFallbackWizard();
92
+ }
93
+ }
94
+ function runFallbackWizard() {
95
+ process.stdout.write('\nAvailable categories:\n\n');
96
+ for (let i = 0; i < CATEGORIES.length; i++) {
97
+ const cat = CATEGORIES[i];
98
+ process.stdout.write(` ${(0, colors_js_1.bold)(`${i + 1}.`)} ${cat.label}\n`);
99
+ process.stdout.write(` ${(0, colors_js_1.gray)(cat.description)}\n`);
100
+ for (const cmd of cat.commands) {
101
+ process.stdout.write(` ${(0, colors_js_1.dim)('-')} ${(0, colors_js_1.cyan)(cmd.command)} ${(0, colors_js_1.gray)(`-- ${cmd.description}`)}\n`);
102
+ }
103
+ process.stdout.write('\n');
104
+ }
105
+ process.stdout.write(`${(0, colors_js_1.gray)('Run any command above, or use')} opena2a ~<query> ${(0, colors_js_1.gray)('to search.')}\n`);
106
+ return null;
107
+ }
108
+ //# sourceMappingURL=wizard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wizard.js","sourceRoot":"","sources":["../../src/guided/wizard.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
package/dist/index.js ADDED
@@ -0,0 +1,326 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ const commander_1 = require("commander");
5
+ const branding_js_1 = require("./branding.js");
6
+ const router_js_1 = require("./router.js");
7
+ const index_js_1 = require("./semantic/index.js");
8
+ const index_js_2 = require("./contextual/index.js");
9
+ const index_js_3 = require("./natural/index.js");
10
+ const wizard_js_1 = require("./guided/wizard.js");
11
+ const registry_js_1 = require("./adapters/registry.js");
12
+ const version_js_1 = require("./util/version.js");
13
+ const VERSION = (0, version_js_1.getVersion)();
14
+ async function main() {
15
+ const program = new commander_1.Command();
16
+ program
17
+ .name('opena2a')
18
+ .description('Open-source security platform for AI agents')
19
+ .version(VERSION, '-v, --version')
20
+ .option('--ci', 'CI mode (no interactive prompts, machine-readable output)')
21
+ .option('--quiet', 'Suppress non-essential output')
22
+ .option('--verbose', 'Verbose output')
23
+ .option('--format <type>', 'Output format: text, json, sarif', 'text')
24
+ .option('--contribute', 'Share anonymized scan results with OpenA2A community')
25
+ .addHelpText('after', `
26
+ Quick Start:
27
+ $ opena2a init Assess your project's security posture
28
+ $ opena2a protect Detect and migrate hardcoded credentials
29
+ $ opena2a guard sign Sign config files for tamper detection
30
+ $ opena2a scan secure Run 150+ security checks on your AI agent
31
+
32
+ Smart Features:
33
+ $ opena2a Interactive guided mode (no args)
34
+ $ opena2a ~<query> Search commands (e.g. opena2a ~drift)
35
+ $ opena2a ? Get smart recommendations for your project
36
+ $ opena2a "scan for secrets" Natural language command matching
37
+
38
+ Learn more: https://opena2a.org/docs`);
39
+ // Register all adapter-backed commands
40
+ for (const [name, config] of Object.entries(registry_js_1.ADAPTER_REGISTRY)) {
41
+ program
42
+ .command(name)
43
+ .description(config.description)
44
+ .allowUnknownOption(true)
45
+ .action(async (_opts, cmd) => {
46
+ const args = cmd.args ?? [];
47
+ const globalOpts = program.opts();
48
+ const exitCode = await (0, router_js_1.dispatchCommand)(name, args, {
49
+ verbose: globalOpts.verbose,
50
+ quiet: globalOpts.quiet,
51
+ ci: globalOpts.ci,
52
+ format: globalOpts.format,
53
+ contribute: globalOpts.contribute,
54
+ });
55
+ process.exitCode = exitCode;
56
+ });
57
+ }
58
+ // Protect command (direct, not adapter-based)
59
+ program
60
+ .command('protect')
61
+ .description('Detect and migrate credentials to encrypted vault')
62
+ .option('--dry-run', 'Show what would change without modifying files')
63
+ .option('--report <path>', 'Write interactive HTML report')
64
+ .option('--skip-verify', 'Skip verification re-scan')
65
+ .option('--dir <path>', 'Target directory')
66
+ .action(async (opts) => {
67
+ const { protect: runProtect } = await import('./commands/protect.js');
68
+ const globalOpts = program.opts();
69
+ process.exitCode = await runProtect({
70
+ targetDir: opts.dir ?? process.cwd(),
71
+ dryRun: opts.dryRun,
72
+ verbose: globalOpts.verbose,
73
+ ci: globalOpts.ci,
74
+ format: globalOpts.format,
75
+ skipVerify: opts.skipVerify,
76
+ report: opts.report,
77
+ });
78
+ });
79
+ // Intent commands (init and protect are handled as direct commands)
80
+ for (const intent of ['check', 'status', 'publish']) {
81
+ if (!registry_js_1.ADAPTER_REGISTRY[intent]) {
82
+ program
83
+ .command(intent)
84
+ .description(getIntentDescription(intent))
85
+ .allowUnknownOption(true)
86
+ .action(async (_opts, cmd) => {
87
+ const args = cmd.args ?? [];
88
+ const globalOpts = program.opts();
89
+ const exitCode = await (0, router_js_1.dispatchCommand)(intent, args, {
90
+ verbose: globalOpts.verbose,
91
+ quiet: globalOpts.quiet,
92
+ ci: globalOpts.ci,
93
+ format: globalOpts.format,
94
+ contribute: globalOpts.contribute,
95
+ });
96
+ process.exitCode = exitCode;
97
+ });
98
+ }
99
+ }
100
+ // Init command (direct, not adapter-based)
101
+ program
102
+ .command('init')
103
+ .description('Initialize OpenA2A security in your project')
104
+ .option('--dir <path>', 'Target directory')
105
+ .action(async (opts) => {
106
+ const { init } = await import('./commands/init.js');
107
+ const globalOpts = program.opts();
108
+ process.exitCode = await init({
109
+ targetDir: opts.dir,
110
+ ci: globalOpts.ci,
111
+ format: globalOpts.format,
112
+ verbose: globalOpts.verbose,
113
+ });
114
+ });
115
+ // Guard command (ConfigGuard)
116
+ program
117
+ .command('guard <subcommand>')
118
+ .description('Config file integrity signing and verification (sign|verify|status)')
119
+ .option('--files <files...>', 'Specific files to guard')
120
+ .option('--dir <path>', 'Target directory')
121
+ .action(async (subcommand, opts) => {
122
+ const { guard } = await import('./commands/guard.js');
123
+ const globalOpts = program.opts();
124
+ process.exitCode = await guard({
125
+ subcommand: subcommand,
126
+ files: opts.files,
127
+ targetDir: opts.dir,
128
+ ci: globalOpts.ci,
129
+ format: globalOpts.format,
130
+ verbose: globalOpts.verbose,
131
+ });
132
+ });
133
+ // Runtime command (ARP wrapper)
134
+ program
135
+ .command('runtime <subcommand>')
136
+ .description('Agent runtime protection (start|status|tail|init)')
137
+ .option('--config <path>', 'Path to ARP config file')
138
+ .option('--count <n>', 'Number of events to show (tail) [default: 20]')
139
+ .option('--dir <path>', 'Target directory')
140
+ .option('--force', 'Overwrite existing config (init)')
141
+ .action(async (subcommand, opts) => {
142
+ const { runtime } = await import('./commands/runtime.js');
143
+ const globalOpts = program.opts();
144
+ process.exitCode = await runtime({
145
+ subcommand: subcommand,
146
+ configPath: opts.config,
147
+ count: opts.count ? parseInt(opts.count, 10) : undefined,
148
+ targetDir: opts.dir,
149
+ ci: globalOpts.ci,
150
+ format: globalOpts.format,
151
+ verbose: globalOpts.verbose,
152
+ force: opts.force,
153
+ });
154
+ });
155
+ // Self-register command
156
+ program
157
+ .command('self-register')
158
+ .description('Register OpenA2A tools in the public registry with security scan results')
159
+ .option('--registry-url <url>', 'Registry URL')
160
+ .option('--skip-scan', 'Skip HMA scanning, register metadata only')
161
+ .option('--only <tools>', 'Comma-separated tool names')
162
+ .option('--dry-run', 'Show what would happen without making changes')
163
+ .action(async (opts) => {
164
+ const { selfRegister } = await import('./commands/self-register.js');
165
+ const globalOpts = program.opts();
166
+ process.exitCode = await selfRegister({
167
+ registryUrl: opts.registryUrl,
168
+ skipScan: opts.skipScan,
169
+ only: opts.only?.split(','),
170
+ dryRun: opts.dryRun,
171
+ ci: globalOpts.ci,
172
+ format: globalOpts.format,
173
+ verbose: globalOpts.verbose,
174
+ });
175
+ });
176
+ // Verify command
177
+ program
178
+ .command('verify')
179
+ .description('Verify binary integrity of installed OpenA2A packages')
180
+ .option('--package <name>', 'Specific package to verify')
181
+ .option('--registry-url <url>', 'Registry URL')
182
+ .action(async (opts) => {
183
+ const { verify } = await import('./commands/verify.js');
184
+ const globalOpts = program.opts();
185
+ process.exitCode = await verify({
186
+ packageName: opts.package,
187
+ registryUrl: opts.registryUrl,
188
+ ci: globalOpts.ci,
189
+ format: globalOpts.format,
190
+ verbose: globalOpts.verbose,
191
+ });
192
+ });
193
+ // Baselines command
194
+ program
195
+ .command('baselines')
196
+ .description('Collect behavioral observations for crowdsourced agent profiles (opt-in)')
197
+ .requiredOption('--package <name>', 'Package to observe')
198
+ .option('--duration <seconds>', 'Observation duration', '60')
199
+ .option('--registry-url <url>', 'Registry URL')
200
+ .action(async (opts) => {
201
+ const { baselines } = await import('./commands/baselines.js');
202
+ const globalOpts = program.opts();
203
+ process.exitCode = await baselines({
204
+ packageName: opts.package,
205
+ duration: parseInt(opts.duration, 10),
206
+ registryUrl: opts.registryUrl,
207
+ ci: globalOpts.ci,
208
+ format: globalOpts.format,
209
+ verbose: globalOpts.verbose,
210
+ });
211
+ });
212
+ // Config command
213
+ program
214
+ .command('config <action> [key] [value]')
215
+ .description('Manage OpenA2A configuration')
216
+ .addHelpText('after', `
217
+ Valid actions:
218
+ show Display current configuration
219
+ contribute [on|off] Enable or disable community data contributions
220
+ llm [on|off] Enable or disable LLM-powered features`)
221
+ .action(async (action, key, value) => {
222
+ const shared = await import('@opena2a/shared');
223
+ const { loadUserConfig, saveUserConfig, setContributeEnabled } = 'default' in shared ? shared.default : shared;
224
+ if (action === 'contribute') {
225
+ if (key === 'on') {
226
+ setContributeEnabled(true);
227
+ process.stdout.write('Community contributions enabled.\n');
228
+ }
229
+ else if (key === 'off') {
230
+ setContributeEnabled(false);
231
+ process.stdout.write('Community contributions disabled.\n');
232
+ }
233
+ else {
234
+ const config = loadUserConfig();
235
+ process.stdout.write(`Contribute: ${config.contribute.enabled ? 'enabled' : 'disabled'}\n`);
236
+ if (config.contribute.consentedAt) {
237
+ process.stdout.write(`Consented: ${config.contribute.consentedAt}\n`);
238
+ }
239
+ }
240
+ }
241
+ else if (action === 'llm') {
242
+ const { setLlmEnabled: setLlm } = 'default' in shared ? shared.default : shared;
243
+ if (key === 'on') {
244
+ setLlm(true);
245
+ process.stdout.write('LLM features enabled.\n');
246
+ }
247
+ else if (key === 'off') {
248
+ setLlm(false);
249
+ process.stdout.write('LLM features disabled.\n');
250
+ }
251
+ else {
252
+ const config = loadUserConfig();
253
+ process.stdout.write(`LLM features: ${config.llm.enabled ? 'enabled' : 'disabled'}\n`);
254
+ if (config.llm.consentedAt) {
255
+ process.stdout.write(`Consented: ${config.llm.consentedAt}\n`);
256
+ }
257
+ }
258
+ }
259
+ else if (action === 'show') {
260
+ const config = loadUserConfig();
261
+ process.stdout.write(JSON.stringify(config, null, 2) + '\n');
262
+ }
263
+ else {
264
+ process.stderr.write(`Unknown config action: ${action}\n`);
265
+ process.stderr.write('Usage: opena2a config contribute on|off\n');
266
+ process.stderr.write(' opena2a config llm on|off\n');
267
+ process.stderr.write(' opena2a config show\n');
268
+ process.exitCode = 1;
269
+ }
270
+ });
271
+ const rawArgs = process.argv.slice(2);
272
+ // Let Commander handle --version, --help, and known subcommands/flags
273
+ const isFlag = rawArgs.length > 0 && rawArgs[0].startsWith('-');
274
+ const isSpecialInput = rawArgs.length > 0 && !isFlag && (rawArgs[0].startsWith('~') ||
275
+ rawArgs[0].startsWith('?') ||
276
+ rawArgs[0].startsWith('"') ||
277
+ rawArgs[0].startsWith("'"));
278
+ if (isSpecialInput) {
279
+ const classified = (0, router_js_1.classifyInput)(rawArgs);
280
+ switch (classified.type) {
281
+ case 'search':
282
+ (0, index_js_1.handleSearch)(classified.value);
283
+ return;
284
+ case 'context':
285
+ (0, index_js_2.handleContext)(classified.value);
286
+ return;
287
+ case 'natural': {
288
+ const command = await (0, index_js_3.handleNaturalLanguage)(classified.value);
289
+ if (command) {
290
+ const parts = command.replace('opena2a ', '').split(' ');
291
+ const exitCode = await (0, router_js_1.dispatchCommand)(parts[0], parts.slice(1), program.opts());
292
+ process.exitCode = exitCode;
293
+ }
294
+ return;
295
+ }
296
+ }
297
+ }
298
+ // No args -> guided mode
299
+ if (rawArgs.length === 0) {
300
+ (0, branding_js_1.printBanner)(VERSION);
301
+ const command = await (0, wizard_js_1.runWizard)();
302
+ if (command) {
303
+ const parts = command.replace('opena2a ', '').split(' ');
304
+ const exitCode = await (0, router_js_1.dispatchCommand)(parts[0], parts.slice(1), program.opts());
305
+ process.exitCode = exitCode;
306
+ }
307
+ return;
308
+ }
309
+ // Let Commander parse known subcommands and flags
310
+ await program.parseAsync(process.argv);
311
+ }
312
+ function getIntentDescription(intent) {
313
+ switch (intent) {
314
+ case 'init': return 'Initialize OpenA2A security in your project';
315
+ case 'check': return 'Quick security check (alias for scan secure)';
316
+ case 'protect': return 'Detect and migrate credentials to encrypted vault';
317
+ case 'status': return 'Show security status of current project';
318
+ case 'publish': return 'Verify package trust score before publishing';
319
+ default: return '';
320
+ }
321
+ }
322
+ main().catch((err) => {
323
+ process.stderr.write(`Error: ${err instanceof Error ? err.message : String(err)}\n`);
324
+ process.exitCode = 1;
325
+ });
326
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export { matchIntent } from './intent-map.js';
2
+ export type { IntentResult } from './intent-map.js';
3
+ export { llmFallback, handleNaturalLanguage } from './llm-fallback.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/natural/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,YAAY,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.handleNaturalLanguage = exports.llmFallback = exports.matchIntent = void 0;
4
+ var intent_map_js_1 = require("./intent-map.js");
5
+ Object.defineProperty(exports, "matchIntent", { enumerable: true, get: function () { return intent_map_js_1.matchIntent; } });
6
+ var llm_fallback_js_1 = require("./llm-fallback.js");
7
+ Object.defineProperty(exports, "llmFallback", { enumerable: true, get: function () { return llm_fallback_js_1.llmFallback; } });
8
+ Object.defineProperty(exports, "handleNaturalLanguage", { enumerable: true, get: function () { return llm_fallback_js_1.handleNaturalLanguage; } });
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/natural/index.ts"],"names":[],"mappings":";;;AAAA,iDAA8C;AAArC,4GAAA,WAAW,OAAA;AAEpB,qDAAuE;AAA9D,8GAAA,WAAW,OAAA;AAAE,wHAAA,qBAAqB,OAAA"}
@@ -0,0 +1,7 @@
1
+ export interface IntentResult {
2
+ command: string;
3
+ description: string;
4
+ confidence: 'high' | 'medium' | 'low';
5
+ }
6
+ export declare function matchIntent(input: string): IntentResult | null;
7
+ //# sourceMappingURL=intent-map.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"intent-map.d.ts","sourceRoot":"","sources":["../../src/natural/intent-map.ts"],"names":[],"mappings":"AAiJA,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;CACvC;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAc9D"}
@@ -0,0 +1,145 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.matchIntent = matchIntent;
4
+ const INTENT_MAPPINGS = [
5
+ // Scanning intents
6
+ {
7
+ patterns: [
8
+ /\b(is|are)\s+(my|this|the)\s+\w+\s+(safe|secure|vulnerable|protected)\b/i,
9
+ /\b(scan|check|audit|analyze|inspect|review)\s+(my|this|the)?\s*(\w+\s+){0,2}(agent|server|project|app|code)\b/i,
10
+ /\bfind\s+(vulnerabilities|security\s+issues|problems|bugs)\b/i,
11
+ /\bsecurity\s+(scan|check|audit|assessment|review)\b/i,
12
+ /\bhow\s+secure\s+is\b/i,
13
+ /\bvulnerability\s+(scan|check|assessment)\b/i,
14
+ ],
15
+ command: 'opena2a scan secure',
16
+ description: 'Run a full security scan',
17
+ },
18
+ // Attack testing intents
19
+ {
20
+ patterns: [
21
+ /\b(attack|pentest|pen\s*test|red\s*team|break|exploit|hack)\s+(my|this|the)?\s*\w*\b/i,
22
+ /\btest\s+(against|for)\s+(attacks|exploits|adversarial)\b/i,
23
+ /\badversarial\s+(test|testing)\b/i,
24
+ ],
25
+ command: 'opena2a scan attack',
26
+ description: 'Run attack mode testing',
27
+ },
28
+ // Credential protection intents
29
+ {
30
+ patterns: [
31
+ /\b(protect|hide|encrypt|secure|manage)\s+(my|the)?\s*(secrets?|credentials?|api\s*keys?|tokens?|passwords?)\b/i,
32
+ /\b(secrets?|credentials?|api\s*keys?)\s+(are|is)\s+(exposed|leaked|visible|unsafe)\b/i,
33
+ /\bstop\s+ai\s+(from\s+)?(reading|seeing|accessing)\s+(my\s+)?(secrets?|keys?)\b/i,
34
+ /\bhardcoded\s+(secrets?|credentials?|keys?)\b/i,
35
+ /\b(move|migrate)\s+(secrets?|credentials?)\s+to\s+vault\b/i,
36
+ ],
37
+ command: 'opena2a protect',
38
+ description: 'Migrate credentials to encrypted vault',
39
+ },
40
+ // Secrets management intents
41
+ {
42
+ patterns: [
43
+ /\b(set\s*up|init|initialize|configure)\s+(secretless|secret\s+management|credential\s+protection)\b/i,
44
+ /\bsecretless\b/i,
45
+ ],
46
+ command: 'opena2a secrets init',
47
+ description: 'Initialize Secretless credential protection',
48
+ },
49
+ // Runtime monitoring intents
50
+ {
51
+ patterns: [
52
+ /\b(monitor|watch|observe|track)\s+(my|this|the)?\s*(agent|process|network|runtime)\b/i,
53
+ /\bruntime\s+(protection|monitoring|guard)\b/i,
54
+ /\b(process|network|filesystem)\s+(monitoring|tracking)\b/i,
55
+ ],
56
+ command: 'opena2a runtime start',
57
+ description: 'Start runtime monitoring',
58
+ },
59
+ // Benchmark intents
60
+ {
61
+ patterns: [
62
+ /\b(benchmark|score|grade|assess|evaluate|rate)\s+(my|this|the)?\s*(agent|security|compliance)\b/i,
63
+ /\boasb\b/i,
64
+ /\bcompliance\s+(check|benchmark|score)\b/i,
65
+ ],
66
+ command: 'opena2a benchmark',
67
+ description: 'Run OASB security benchmark',
68
+ },
69
+ // Registry/trust intents
70
+ {
71
+ patterns: [
72
+ /\b(is|check\s+if)\s+\w+\s+(safe|trusted|malicious|suspicious)\b/i,
73
+ /\btrust\s+(score|check|verify|lookup)\b/i,
74
+ /\bsupply\s*chain\s+(check|security|risk)\b/i,
75
+ /\bpackage\s+(safe|trust|security)\b/i,
76
+ ],
77
+ command: 'opena2a registry check',
78
+ description: 'Query trust registry for package security data',
79
+ },
80
+ // Training intents
81
+ {
82
+ patterns: [
83
+ /\b(practice|train|learn|ctf|lab)\s*(on)?\s*(security|hacking|vulnerable|agent)?\b/i,
84
+ /\bdvaa\b/i,
85
+ /\bvulnerable\s+agent\s+(lab|training|practice)\b/i,
86
+ ],
87
+ command: 'opena2a train',
88
+ description: 'Launch DVAA training environment',
89
+ },
90
+ // Crypto/quantum intents
91
+ {
92
+ patterns: [
93
+ /\b(quantum|post-quantum|pqc)\s+(ready|readiness|scan|check|assessment)\b/i,
94
+ /\bcrypto(graphic)?\s+(scan|inventory|check|audit)\b/i,
95
+ /\btls\s+(scan|check|config|configuration)\b/i,
96
+ /\bweak\s+(crypto|encryption|cipher)\b/i,
97
+ ],
98
+ command: 'opena2a crypto scan',
99
+ description: 'Run cryptographic inventory and PQC readiness scan',
100
+ },
101
+ // Identity intents
102
+ {
103
+ patterns: [
104
+ /\b(create|register|manage)\s+(agent\s+)?(identity|id|certificate)\b/i,
105
+ /\bagent\s+identity\b/i,
106
+ /\baim\b/i,
107
+ ],
108
+ command: 'opena2a identity',
109
+ description: 'Manage agent identity via AIM',
110
+ },
111
+ // Status/overview intents
112
+ {
113
+ patterns: [
114
+ /\b(what|show|display)\s+(is|me)?\s*(the)?\s*(status|overview|summary|dashboard)\b/i,
115
+ /\bhow\s+(am|are)\s+(i|we)\s+doing\b/i,
116
+ ],
117
+ command: 'opena2a status',
118
+ description: 'Show project security status',
119
+ },
120
+ // Setup/init intents
121
+ {
122
+ patterns: [
123
+ /\b(get\s+started|set\s*up|initialize|onboard|first\s+time)\b/i,
124
+ /\bhow\s+do\s+i\s+(start|begin|use)\b/i,
125
+ /\bquick\s*start\b/i,
126
+ ],
127
+ command: 'opena2a init',
128
+ description: 'Initialize OpenA2A security in your project',
129
+ },
130
+ ];
131
+ function matchIntent(input) {
132
+ for (const mapping of INTENT_MAPPINGS) {
133
+ for (const pattern of mapping.patterns) {
134
+ if (pattern.test(input)) {
135
+ return {
136
+ command: mapping.command,
137
+ description: mapping.description,
138
+ confidence: 'high',
139
+ };
140
+ }
141
+ }
142
+ }
143
+ return null;
144
+ }
145
+ //# sourceMappingURL=intent-map.js.map