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,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":";;AAwDA,8BAsDC;AA9GD,iDAA0D;AAc1D,MAAM,UAAU,GAAqB;IACnC;QACE,KAAK,EAAE,eAAe;QACtB,WAAW,EAAE,2CAA2C;QACxD,QAAQ,EAAE;YACR,EAAE,KAAK,EAAE,oBAAoB,EAAE,OAAO,EAAE,qBAAqB,EAAE,WAAW,EAAE,oCAAoC,EAAE;YAClH,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,qBAAqB,EAAE,WAAW,EAAE,wCAAwC,EAAE;YAC/G,EAAE,KAAK,EAAE,oBAAoB,EAAE,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,uCAAuC,EAAE;YACnH,EAAE,KAAK,EAAE,iBAAiB,EAAE,OAAO,EAAE,sBAAsB,EAAE,WAAW,EAAE,yCAAyC,EAAE;SACtH;KACF;IACD;QACE,KAAK,EAAE,mBAAmB;QAC1B,WAAW,EAAE,iDAAiD;QAC9D,QAAQ,EAAE;YACR,EAAE,KAAK,EAAE,8BAA8B,EAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,0CAA0C,EAAE;YAC9H,EAAE,KAAK,EAAE,mBAAmB,EAAE,OAAO,EAAE,sBAAsB,EAAE,WAAW,EAAE,0CAA0C,EAAE;YACxH,EAAE,KAAK,EAAE,oBAAoB,EAAE,OAAO,EAAE,uBAAuB,EAAE,WAAW,EAAE,sCAAsC,EAAE;YACtH,EAAE,KAAK,EAAE,yBAAyB,EAAE,OAAO,EAAE,sBAAsB,EAAE,WAAW,EAAE,sCAAsC,EAAE;SAC3H;KACF;IACD;QACE,KAAK,EAAE,iBAAiB;QACxB,WAAW,EAAE,2CAA2C;QACxD,QAAQ,EAAE;YACR,EAAE,KAAK,EAAE,uBAAuB,EAAE,OAAO,EAAE,wBAAwB,EAAE,WAAW,EAAE,6BAA6B,EAAE;YACjH,EAAE,KAAK,EAAE,gBAAgB,EAAE,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,oCAAoC,EAAE;YAC3G,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,qBAAqB,EAAE,WAAW,EAAE,2CAA2C,EAAE;YAClH,EAAE,KAAK,EAAE,gBAAgB,EAAE,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,0BAA0B,EAAE;SAChG;KACF;IACD;QACE,KAAK,EAAE,kBAAkB;QACzB,WAAW,EAAE,2CAA2C;QACxD,QAAQ,EAAE;YACR,EAAE,KAAK,EAAE,qBAAqB,EAAE,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,gCAAgC,EAAE;YAC5G,EAAE,KAAK,EAAE,sBAAsB,EAAE,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,iCAAiC,EAAE;YAC1G,EAAE,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,8BAA8B,EAAE;SACjG;KACF;CACF,CAAC;AAEK,KAAK,UAAU,SAAS;IAC7B,6CAA6C;IAC7C,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACzB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;QAC3D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAC9C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;QAErD,yBAAyB;QACzB,MAAM,eAAe,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAC7C,IAAI,EAAE,GAAG,GAAG,CAAC,KAAK,OAAO,GAAG,CAAC,WAAW,EAAE;YAC1C,KAAK,EAAE,GAAG,CAAC,KAAK;SACjB,CAAC,CAAC,CAAC;QAEJ,MAAM,gBAAgB,GAAG,MAAM,MAAM,CAAC;YACpC,OAAO,EAAE,4BAA4B;YACrC,OAAO,EAAE,eAAe;SACzB,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,gBAAgB,CAAC,CAAC;QACpE,IAAI,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAC;QAE3B,wBAAwB;QACxB,MAAM,cAAc,GAAG,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACnD,IAAI,EAAE,GAAG,GAAG,CAAC,KAAK,OAAO,GAAG,CAAC,WAAW,EAAE;YAC1C,KAAK,EAAE,GAAG,CAAC,OAAO;SACnB,CAAC,CAAC,CAAC;QAEJ,MAAM,eAAe,GAAG,MAAM,MAAM,CAAC;YACnC,OAAO,EAAE,GAAG,QAAQ,CAAC,KAAK,GAAG;YAC7B,OAAO,EAAE,cAAc;SACxB,CAAC,CAAC;QAEH,sDAAsD;QACtD,IAAI,eAAe,KAAK,qBAAqB,EAAE,CAAC;YAC9C,MAAM,EAAE,oBAAoB,EAAE,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAC;YACzE,OAAO,oBAAoB,EAAE,CAAC;QAChC,CAAC;QAED,0BAA0B;QAC1B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,IAAA,gBAAI,EAAC,YAAY,CAAC,IAAI,IAAA,gBAAI,EAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QAE7E,OAAO,eAAe,CAAC;IACzB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,0BAA0B;QAC1B,IAAI,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC;YACtE,OAAO,IAAI,CAAC;QACd,CAAC;QACD,kCAAkC;QAClC,OAAO,iBAAiB,EAAE,CAAC;IAC7B,CAAC;AACH,CAAC;AAED,SAAS,iBAAiB;IACxB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;IAEpD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3C,MAAM,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QAC1B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,IAAA,gBAAI,EAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC;QAC9D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,IAAA,gBAAI,EAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACxD,KAAK,MAAM,GAAG,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;YAC/B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,IAAA,eAAG,EAAC,GAAG,CAAC,IAAI,IAAA,gBAAI,EAAC,GAAG,CAAC,OAAO,CAAC,IAAI,IAAA,gBAAI,EAAC,MAAM,GAAG,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,CAAC;QACnG,CAAC;QACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAA,gBAAI,EAAC,+BAA+B,CAAC,qBAAqB,IAAA,gBAAI,EAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IAC1G,OAAO,IAAI,CAAC;AACd,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -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 @@
|
|
|
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 @@
|
|
|
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
|