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,8 @@
1
+ import type { Adapter, AdapterConfig, RunOptions, RunResult } from './types.js';
2
+ export declare class DockerAdapter implements Adapter {
3
+ readonly config: AdapterConfig;
4
+ constructor(config: AdapterConfig);
5
+ run(options: RunOptions): Promise<RunResult>;
6
+ isAvailable(): Promise<boolean>;
7
+ }
8
+ //# sourceMappingURL=docker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docker.d.ts","sourceRoot":"","sources":["../../src/adapters/docker.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEhF,qBAAa,aAAc,YAAW,OAAO;IAC3C,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;gBAEnB,MAAM,EAAE,aAAa;IAI3B,GAAG,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC;IAiD5C,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;CAOtC"}
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DockerAdapter = void 0;
4
+ const node_child_process_1 = require("node:child_process");
5
+ class DockerAdapter {
6
+ config;
7
+ constructor(config) {
8
+ this.config = config;
9
+ }
10
+ async run(options) {
11
+ const image = this.config.image;
12
+ if (!image) {
13
+ return { exitCode: 1, stdout: '', stderr: `No image configured for ${this.config.name}` };
14
+ }
15
+ const dockerArgs = ['run', '--rm'];
16
+ if (options.args.includes('--interactive') || options.args.includes('-it')) {
17
+ dockerArgs.push('-it');
18
+ }
19
+ // Map common port ranges for training environments
20
+ dockerArgs.push('-p', '3000:3000');
21
+ dockerArgs.push(image);
22
+ dockerArgs.push(...options.args.filter(a => a !== '--interactive' && a !== '-it'));
23
+ return new Promise((resolve) => {
24
+ const child = (0, node_child_process_1.spawn)('docker', dockerArgs, {
25
+ cwd: options.cwd ?? process.cwd(),
26
+ stdio: ['inherit', 'pipe', 'pipe'],
27
+ env: { ...process.env },
28
+ });
29
+ let stdout = '';
30
+ let stderr = '';
31
+ child.stdout?.on('data', (data) => {
32
+ const chunk = data.toString();
33
+ stdout += chunk;
34
+ if (!options.quiet)
35
+ process.stdout.write(chunk);
36
+ });
37
+ child.stderr?.on('data', (data) => {
38
+ const chunk = data.toString();
39
+ stderr += chunk;
40
+ if (!options.quiet)
41
+ process.stderr.write(chunk);
42
+ });
43
+ child.on('error', (err) => {
44
+ resolve({ exitCode: 1, stdout, stderr: stderr + err.message });
45
+ });
46
+ child.on('close', (code) => {
47
+ resolve({ exitCode: code ?? 1, stdout, stderr });
48
+ });
49
+ });
50
+ }
51
+ async isAvailable() {
52
+ return new Promise((resolve) => {
53
+ const child = (0, node_child_process_1.spawn)('docker', ['info'], { stdio: 'ignore' });
54
+ child.on('close', (code) => resolve(code === 0));
55
+ child.on('error', () => resolve(false));
56
+ });
57
+ }
58
+ }
59
+ exports.DockerAdapter = DockerAdapter;
60
+ //# sourceMappingURL=docker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docker.js","sourceRoot":"","sources":["../../src/adapters/docker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { Adapter, AdapterConfig, RunOptions, RunResult } from './types.js';
2
+ /**
3
+ * ImportAdapter handles workspace packages that are imported directly.
4
+ * It delegates to the package's programmatic API or CLI entry point.
5
+ */
6
+ export declare class ImportAdapter implements Adapter {
7
+ readonly config: AdapterConfig;
8
+ constructor(config: AdapterConfig);
9
+ run(options: RunOptions): Promise<RunResult>;
10
+ isAvailable(): Promise<boolean>;
11
+ }
12
+ //# sourceMappingURL=import.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"import.d.ts","sourceRoot":"","sources":["../../src/adapters/import.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEhF;;;GAGG;AACH,qBAAa,aAAc,YAAW,OAAO;IAC3C,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;gBAEnB,MAAM,EAAE,aAAa;IAI3B,GAAG,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC;IA0D5C,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;CAQtC"}
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ImportAdapter = void 0;
4
+ /**
5
+ * ImportAdapter handles workspace packages that are imported directly.
6
+ * It delegates to the package's programmatic API or CLI entry point.
7
+ */
8
+ class ImportAdapter {
9
+ config;
10
+ constructor(config) {
11
+ this.config = config;
12
+ }
13
+ async run(options) {
14
+ const pkgName = this.config.packageName;
15
+ if (!pkgName) {
16
+ return { exitCode: 1, stdout: '', stderr: `No package configured for ${this.config.name}` };
17
+ }
18
+ try {
19
+ // Dynamic import of the workspace package
20
+ const mod = await import(pkgName);
21
+ // If the module has a CLI entry point, use it
22
+ if (typeof mod.run === 'function') {
23
+ const result = await mod.run(options.args, {
24
+ verbose: options.verbose,
25
+ quiet: options.quiet,
26
+ ci: options.ci,
27
+ format: options.format,
28
+ cwd: options.cwd,
29
+ });
30
+ return {
31
+ exitCode: result?.exitCode ?? 0,
32
+ stdout: result?.stdout ?? '',
33
+ stderr: result?.stderr ?? '',
34
+ };
35
+ }
36
+ // If it has a main function
37
+ if (typeof mod.main === 'function') {
38
+ await mod.main(options.args);
39
+ return { exitCode: 0, stdout: '', stderr: '' };
40
+ }
41
+ // Fallback: spawn the bin command from the package
42
+ const { SpawnAdapter } = await import('./spawn.js');
43
+ const fallback = new SpawnAdapter({
44
+ ...this.config,
45
+ method: 'spawn',
46
+ command: pkgName,
47
+ });
48
+ return fallback.run(options);
49
+ }
50
+ catch (err) {
51
+ const message = err instanceof Error ? err.message : String(err);
52
+ // Package not installed -- try npx fallback
53
+ if (message.includes('Cannot find module') || message.includes('ERR_MODULE_NOT_FOUND')) {
54
+ const { SpawnAdapter } = await import('./spawn.js');
55
+ const fallback = new SpawnAdapter({
56
+ ...this.config,
57
+ method: 'spawn',
58
+ command: `npx ${pkgName}`,
59
+ });
60
+ return fallback.run(options);
61
+ }
62
+ return { exitCode: 1, stdout: '', stderr: `Failed to load ${pkgName}: ${message}` };
63
+ }
64
+ }
65
+ async isAvailable() {
66
+ try {
67
+ await import(this.config.packageName);
68
+ return true;
69
+ }
70
+ catch {
71
+ return false;
72
+ }
73
+ }
74
+ }
75
+ exports.ImportAdapter = ImportAdapter;
76
+ //# sourceMappingURL=import.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"import.js","sourceRoot":"","sources":["../../src/adapters/import.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ export type { Adapter, AdapterConfig, AdapterMethod, RunOptions, RunResult } from './types.js';
2
+ export { ADAPTER_REGISTRY, getAdapter, listAdapters, getAdaptersByMethod } from './registry.js';
3
+ export { SpawnAdapter } from './spawn.js';
4
+ export { DockerAdapter } from './docker.js';
5
+ export { PythonAdapter } from './python.js';
6
+ export { ImportAdapter } from './import.js';
7
+ import type { Adapter } from './types.js';
8
+ export declare function createAdapter(name: string): Adapter | null;
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC/F,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAChG,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAO1C,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAgB1D"}
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ImportAdapter = exports.PythonAdapter = exports.DockerAdapter = exports.SpawnAdapter = exports.getAdaptersByMethod = exports.listAdapters = exports.getAdapter = exports.ADAPTER_REGISTRY = void 0;
4
+ exports.createAdapter = createAdapter;
5
+ var registry_js_1 = require("./registry.js");
6
+ Object.defineProperty(exports, "ADAPTER_REGISTRY", { enumerable: true, get: function () { return registry_js_1.ADAPTER_REGISTRY; } });
7
+ Object.defineProperty(exports, "getAdapter", { enumerable: true, get: function () { return registry_js_1.getAdapter; } });
8
+ Object.defineProperty(exports, "listAdapters", { enumerable: true, get: function () { return registry_js_1.listAdapters; } });
9
+ Object.defineProperty(exports, "getAdaptersByMethod", { enumerable: true, get: function () { return registry_js_1.getAdaptersByMethod; } });
10
+ var spawn_js_1 = require("./spawn.js");
11
+ Object.defineProperty(exports, "SpawnAdapter", { enumerable: true, get: function () { return spawn_js_1.SpawnAdapter; } });
12
+ var docker_js_1 = require("./docker.js");
13
+ Object.defineProperty(exports, "DockerAdapter", { enumerable: true, get: function () { return docker_js_1.DockerAdapter; } });
14
+ var python_js_1 = require("./python.js");
15
+ Object.defineProperty(exports, "PythonAdapter", { enumerable: true, get: function () { return python_js_1.PythonAdapter; } });
16
+ var import_js_1 = require("./import.js");
17
+ Object.defineProperty(exports, "ImportAdapter", { enumerable: true, get: function () { return import_js_1.ImportAdapter; } });
18
+ const registry_js_2 = require("./registry.js");
19
+ const import_js_2 = require("./import.js");
20
+ const spawn_js_2 = require("./spawn.js");
21
+ const docker_js_2 = require("./docker.js");
22
+ const python_js_2 = require("./python.js");
23
+ function createAdapter(name) {
24
+ const config = registry_js_2.ADAPTER_REGISTRY[name];
25
+ if (!config)
26
+ return null;
27
+ switch (config.method) {
28
+ case 'import':
29
+ return new import_js_2.ImportAdapter(config);
30
+ case 'spawn':
31
+ return new spawn_js_2.SpawnAdapter(config);
32
+ case 'docker':
33
+ return new docker_js_2.DockerAdapter(config);
34
+ case 'python':
35
+ return new python_js_2.PythonAdapter(config);
36
+ default:
37
+ return null;
38
+ }
39
+ }
40
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":";;;AAcA,sCAgBC;AA7BD,6CAAgG;AAAvF,+GAAA,gBAAgB,OAAA;AAAE,yGAAA,UAAU,OAAA;AAAE,2GAAA,YAAY,OAAA;AAAE,kHAAA,mBAAmB,OAAA;AACxE,uCAA0C;AAAjC,wGAAA,YAAY,OAAA;AACrB,yCAA4C;AAAnC,0GAAA,aAAa,OAAA;AACtB,yCAA4C;AAAnC,0GAAA,aAAa,OAAA;AACtB,yCAA4C;AAAnC,0GAAA,aAAa,OAAA;AAGtB,+CAAiD;AACjD,2CAA4C;AAC5C,yCAA0C;AAC1C,2CAA4C;AAC5C,2CAA4C;AAE5C,SAAgB,aAAa,CAAC,IAAY;IACxC,MAAM,MAAM,GAAG,8BAAgB,CAAC,IAAI,CAAC,CAAC;IACtC,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAEzB,QAAQ,MAAM,CAAC,MAAM,EAAE,CAAC;QACtB,KAAK,QAAQ;YACX,OAAO,IAAI,yBAAa,CAAC,MAAM,CAAC,CAAC;QACnC,KAAK,OAAO;YACV,OAAO,IAAI,uBAAY,CAAC,MAAM,CAAC,CAAC;QAClC,KAAK,QAAQ;YACX,OAAO,IAAI,yBAAa,CAAC,MAAM,CAAC,CAAC;QACnC,KAAK,QAAQ;YACX,OAAO,IAAI,yBAAa,CAAC,MAAM,CAAC,CAAC;QACnC;YACE,OAAO,IAAI,CAAC;IAChB,CAAC;AACH,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { Adapter, AdapterConfig, RunOptions, RunResult } from './types.js';
2
+ export declare class PythonAdapter implements Adapter {
3
+ readonly config: AdapterConfig;
4
+ constructor(config: AdapterConfig);
5
+ run(options: RunOptions): Promise<RunResult>;
6
+ isAvailable(): Promise<boolean>;
7
+ private findPython;
8
+ }
9
+ //# sourceMappingURL=python.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"python.d.ts","sourceRoot":"","sources":["../../src/adapters/python.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEhF,qBAAa,aAAc,YAAW,OAAO;IAC3C,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;gBAEnB,MAAM,EAAE,aAAa;IAI3B,GAAG,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC;IA6C5C,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;YAWvB,UAAU;CAWzB"}
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PythonAdapter = void 0;
4
+ const node_child_process_1 = require("node:child_process");
5
+ class PythonAdapter {
6
+ config;
7
+ constructor(config) {
8
+ this.config = config;
9
+ }
10
+ async run(options) {
11
+ const module = this.config.pythonModule;
12
+ if (!module) {
13
+ return { exitCode: 1, stdout: '', stderr: `No Python module configured for ${this.config.name}` };
14
+ }
15
+ // Try python3 -m module first, then pipx run
16
+ const pythonBin = await this.findPython();
17
+ const bin = pythonBin ?? 'pipx';
18
+ const args = pythonBin
19
+ ? ['-m', module, ...options.args]
20
+ : ['run', module, ...options.args];
21
+ return new Promise((resolve) => {
22
+ const child = (0, node_child_process_1.spawn)(bin, args, {
23
+ cwd: options.cwd ?? process.cwd(),
24
+ stdio: ['inherit', 'pipe', 'pipe'],
25
+ env: { ...process.env },
26
+ });
27
+ let stdout = '';
28
+ let stderr = '';
29
+ child.stdout?.on('data', (data) => {
30
+ const chunk = data.toString();
31
+ stdout += chunk;
32
+ if (!options.quiet)
33
+ process.stdout.write(chunk);
34
+ });
35
+ child.stderr?.on('data', (data) => {
36
+ const chunk = data.toString();
37
+ stderr += chunk;
38
+ if (!options.quiet)
39
+ process.stderr.write(chunk);
40
+ });
41
+ child.on('error', (err) => {
42
+ resolve({ exitCode: 1, stdout, stderr: stderr + err.message });
43
+ });
44
+ child.on('close', (code) => {
45
+ resolve({ exitCode: code ?? 1, stdout, stderr });
46
+ });
47
+ });
48
+ }
49
+ async isAvailable() {
50
+ const python = await this.findPython();
51
+ if (python)
52
+ return true;
53
+ return new Promise((resolve) => {
54
+ const child = (0, node_child_process_1.spawn)('pipx', ['--version'], { stdio: 'ignore' });
55
+ child.on('close', (code) => resolve(code === 0));
56
+ child.on('error', () => resolve(false));
57
+ });
58
+ }
59
+ async findPython() {
60
+ for (const bin of ['python3', 'python']) {
61
+ const exists = await new Promise((resolve) => {
62
+ const child = (0, node_child_process_1.spawn)(bin, ['--version'], { stdio: 'ignore' });
63
+ child.on('close', (code) => resolve(code === 0));
64
+ child.on('error', () => resolve(false));
65
+ });
66
+ if (exists)
67
+ return bin;
68
+ }
69
+ return null;
70
+ }
71
+ }
72
+ exports.PythonAdapter = PythonAdapter;
73
+ //# sourceMappingURL=python.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"python.js","sourceRoot":"","sources":["../../src/adapters/python.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { AdapterConfig, AdapterMethod } from './types.js';
2
+ export declare const ADAPTER_REGISTRY: Record<string, AdapterConfig>;
3
+ export declare function getAdapter(name: string): AdapterConfig | undefined;
4
+ export declare function listAdapters(): AdapterConfig[];
5
+ export declare function getAdaptersByMethod(method: AdapterMethod): AdapterConfig[];
6
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/adapters/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE/D,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAqE1D,CAAC;AAEF,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAElE;AAED,wBAAgB,YAAY,IAAI,aAAa,EAAE,CAE9C;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,aAAa,GAAG,aAAa,EAAE,CAE1E"}
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ADAPTER_REGISTRY = void 0;
4
+ exports.getAdapter = getAdapter;
5
+ exports.listAdapters = listAdapters;
6
+ exports.getAdaptersByMethod = getAdaptersByMethod;
7
+ exports.ADAPTER_REGISTRY = {
8
+ scan: {
9
+ name: 'scan',
10
+ method: 'import',
11
+ packageName: 'hackmyagent',
12
+ description: 'Scan AI agent for security vulnerabilities (HackMyAgent)',
13
+ },
14
+ secrets: {
15
+ name: 'secrets',
16
+ method: 'import',
17
+ packageName: 'secretless-ai',
18
+ description: 'Manage credentials for AI coding tools (Secretless)',
19
+ },
20
+ // runtime is now handled directly by packages/cli/src/commands/runtime.ts
21
+ benchmark: {
22
+ name: 'benchmark',
23
+ method: 'import',
24
+ packageName: '@opena2a/oasb',
25
+ description: 'Run security benchmark against AI agent (OASB)',
26
+ },
27
+ registry: {
28
+ name: 'registry',
29
+ method: 'import',
30
+ packageName: 'ai-trust',
31
+ description: 'Query OpenA2A Trust Registry for package security data',
32
+ },
33
+ research: {
34
+ name: 'research',
35
+ method: 'spawn',
36
+ command: 'hma-researcher',
37
+ description: 'Autonomous security research agent (HMA Researcher)',
38
+ },
39
+ hunt: {
40
+ name: 'hunt',
41
+ method: 'spawn',
42
+ command: 'hma-hunter',
43
+ description: 'Autonomous vulnerability hunter (HMA Hunter)',
44
+ },
45
+ train: {
46
+ name: 'train',
47
+ method: 'docker',
48
+ image: 'opena2a/dvaa',
49
+ description: 'Launch vulnerable AI agent for training (DVAA)',
50
+ },
51
+ crypto: {
52
+ name: 'crypto',
53
+ method: 'python',
54
+ pythonModule: 'cryptoserve',
55
+ description: 'Cryptographic inventory and PQC readiness (CryptoServe)',
56
+ },
57
+ identity: {
58
+ name: 'identity',
59
+ method: 'spawn',
60
+ command: 'aim',
61
+ description: 'Agent identity management (AIM SDK)',
62
+ },
63
+ // guard is now handled directly by packages/cli/src/commands/guard.ts (ConfigGuard)
64
+ broker: {
65
+ name: 'broker',
66
+ method: 'import',
67
+ packageName: 'secretless-ai',
68
+ description: 'Identity-aware credential broker daemon',
69
+ },
70
+ dlp: {
71
+ name: 'dlp',
72
+ method: 'import',
73
+ packageName: 'secretless-ai',
74
+ description: 'Data loss prevention for AI tool transcripts',
75
+ },
76
+ };
77
+ function getAdapter(name) {
78
+ return exports.ADAPTER_REGISTRY[name];
79
+ }
80
+ function listAdapters() {
81
+ return Object.values(exports.ADAPTER_REGISTRY);
82
+ }
83
+ function getAdaptersByMethod(method) {
84
+ return Object.values(exports.ADAPTER_REGISTRY).filter(a => a.method === method);
85
+ }
86
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/adapters/registry.ts"],"names":[],"mappings":";;;AAyEA,gCAEC;AAED,oCAEC;AAED,kDAEC;AAjFY,QAAA,gBAAgB,GAAkC;IAC7D,IAAI,EAAE;QACJ,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,QAAQ;QAChB,WAAW,EAAE,aAAa;QAC1B,WAAW,EAAE,0DAA0D;KACxE;IACD,OAAO,EAAE;QACP,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,QAAQ;QAChB,WAAW,EAAE,eAAe;QAC5B,WAAW,EAAE,qDAAqD;KACnE;IACD,0EAA0E;IAC1E,SAAS,EAAE;QACT,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,QAAQ;QAChB,WAAW,EAAE,eAAe;QAC5B,WAAW,EAAE,gDAAgD;KAC9D;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,UAAU;QAChB,MAAM,EAAE,QAAQ;QAChB,WAAW,EAAE,UAAU;QACvB,WAAW,EAAE,wDAAwD;KACtE;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,UAAU;QAChB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,gBAAgB;QACzB,WAAW,EAAE,qDAAqD;KACnE;IACD,IAAI,EAAE;QACJ,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,YAAY;QACrB,WAAW,EAAE,8CAA8C;KAC5D;IACD,KAAK,EAAE;QACL,IAAI,EAAE,OAAO;QACb,MAAM,EAAE,QAAQ;QAChB,KAAK,EAAE,cAAc;QACrB,WAAW,EAAE,gDAAgD;KAC9D;IACD,MAAM,EAAE;QACN,IAAI,EAAE,QAAQ;QACd,MAAM,EAAE,QAAQ;QAChB,YAAY,EAAE,aAAa;QAC3B,WAAW,EAAE,yDAAyD;KACvE;IACD,QAAQ,EAAE;QACR,IAAI,EAAE,UAAU;QAChB,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,KAAK;QACd,WAAW,EAAE,qCAAqC;KACnD;IACD,oFAAoF;IACpF,MAAM,EAAE;QACN,IAAI,EAAE,QAAQ;QACd,MAAM,EAAE,QAAQ;QAChB,WAAW,EAAE,eAAe;QAC5B,WAAW,EAAE,yCAAyC;KACvD;IACD,GAAG,EAAE;QACH,IAAI,EAAE,KAAK;QACX,MAAM,EAAE,QAAQ;QAChB,WAAW,EAAE,eAAe;QAC5B,WAAW,EAAE,8CAA8C;KAC5D;CACF,CAAC;AAEF,SAAgB,UAAU,CAAC,IAAY;IACrC,OAAO,wBAAgB,CAAC,IAAI,CAAC,CAAC;AAChC,CAAC;AAED,SAAgB,YAAY;IAC1B,OAAO,MAAM,CAAC,MAAM,CAAC,wBAAgB,CAAC,CAAC;AACzC,CAAC;AAED,SAAgB,mBAAmB,CAAC,MAAqB;IACvD,OAAO,MAAM,CAAC,MAAM,CAAC,wBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;AAC1E,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { Adapter, AdapterConfig, RunOptions, RunResult } from './types.js';
2
+ export declare class SpawnAdapter implements Adapter {
3
+ readonly config: AdapterConfig;
4
+ constructor(config: AdapterConfig);
5
+ run(options: RunOptions): Promise<RunResult>;
6
+ isAvailable(): Promise<boolean>;
7
+ private commandExists;
8
+ }
9
+ //# sourceMappingURL=spawn.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spawn.d.ts","sourceRoot":"","sources":["../../src/adapters/spawn.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEhF,qBAAa,YAAa,YAAW,OAAO;IAC1C,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;gBAEnB,MAAM,EAAE,aAAa;IAI3B,GAAG,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC;IA4C5C,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;YAMvB,aAAa;CAO5B"}
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SpawnAdapter = void 0;
4
+ const node_child_process_1 = require("node:child_process");
5
+ class SpawnAdapter {
6
+ config;
7
+ constructor(config) {
8
+ this.config = config;
9
+ }
10
+ async run(options) {
11
+ const command = this.config.command;
12
+ if (!command) {
13
+ return { exitCode: 1, stdout: '', stderr: `No command configured for ${this.config.name}` };
14
+ }
15
+ // Try npx first, then direct command
16
+ const args = [...options.args];
17
+ const useNpx = !(await this.commandExists(command));
18
+ const bin = useNpx ? 'npx' : command;
19
+ const spawnArgs = useNpx ? [command, ...args] : args;
20
+ return new Promise((resolve) => {
21
+ const child = (0, node_child_process_1.spawn)(bin, spawnArgs, {
22
+ cwd: options.cwd ?? process.cwd(),
23
+ stdio: ['inherit', 'pipe', 'pipe'],
24
+ env: { ...process.env },
25
+ });
26
+ let stdout = '';
27
+ let stderr = '';
28
+ child.stdout?.on('data', (data) => {
29
+ const chunk = data.toString();
30
+ stdout += chunk;
31
+ if (!options.quiet)
32
+ process.stdout.write(chunk);
33
+ });
34
+ child.stderr?.on('data', (data) => {
35
+ const chunk = data.toString();
36
+ stderr += chunk;
37
+ if (!options.quiet)
38
+ process.stderr.write(chunk);
39
+ });
40
+ child.on('error', (err) => {
41
+ resolve({ exitCode: 1, stdout, stderr: stderr + err.message });
42
+ });
43
+ child.on('close', (code) => {
44
+ resolve({ exitCode: code ?? 1, stdout, stderr });
45
+ });
46
+ });
47
+ }
48
+ async isAvailable() {
49
+ const command = this.config.command;
50
+ if (!command)
51
+ return false;
52
+ return this.commandExists(command) || this.commandExists('npx');
53
+ }
54
+ async commandExists(cmd) {
55
+ return new Promise((resolve) => {
56
+ const child = (0, node_child_process_1.spawn)('which', [cmd], { stdio: 'ignore' });
57
+ child.on('close', (code) => resolve(code === 0));
58
+ child.on('error', () => resolve(false));
59
+ });
60
+ }
61
+ }
62
+ exports.SpawnAdapter = SpawnAdapter;
63
+ //# sourceMappingURL=spawn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spawn.js","sourceRoot":"","sources":["../../src/adapters/spawn.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ export type AdapterMethod = 'import' | 'spawn' | 'docker' | 'python';
2
+ export interface AdapterConfig {
3
+ name: string;
4
+ method: AdapterMethod;
5
+ /** npm package name for import() adapters */
6
+ packageName?: string;
7
+ /** CLI command for spawn() adapters */
8
+ command?: string;
9
+ /** Docker image for docker() adapters */
10
+ image?: string;
11
+ /** Python module for python() adapters */
12
+ pythonModule?: string;
13
+ /** Description shown in help text */
14
+ description: string;
15
+ }
16
+ export interface RunOptions {
17
+ args: string[];
18
+ verbose?: boolean;
19
+ quiet?: boolean;
20
+ ci?: boolean;
21
+ format?: 'text' | 'json' | 'sarif';
22
+ contribute?: boolean;
23
+ cwd?: string;
24
+ }
25
+ export interface RunResult {
26
+ exitCode: number;
27
+ stdout: string;
28
+ stderr: string;
29
+ }
30
+ export interface Adapter {
31
+ readonly config: AdapterConfig;
32
+ run(options: RunOptions): Promise<RunResult>;
33
+ isAvailable(): Promise<boolean>;
34
+ }
35
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/adapters/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAErE,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,aAAa,CAAC;IACtB,6CAA6C;IAC7C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uCAAuC;IACvC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,yCAAyC;IACzC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0CAA0C;IAC1C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,qCAAqC;IACrC,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IACnC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,GAAG,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;IAC7C,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;CACjC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/adapters/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ export declare function printBanner(version: string): void;
2
+ export declare function printCompact(version: string): void;
3
+ //# sourceMappingURL=branding.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"branding.d.ts","sourceRoot":"","sources":["../src/branding.ts"],"names":[],"mappings":"AAWA,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAGjD;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAElD"}
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.printBanner = printBanner;
4
+ exports.printCompact = printCompact;
5
+ const LOGO = `
6
+ ___ _ ____ _
7
+ / _ \\ _ __ ___ _ __ / \\ |___ \\ / \\
8
+ | | | | '_ \\ / _ \\ '_ / _ \\ __) |/ _ \\
9
+ | |_| | |_) | __/ | / ___ \\/ __// ___ \\
10
+ \\___/| .__/ \\___|_|/_/ \\_\\___|_/ \\_\\
11
+ |_|
12
+ `;
13
+ const TAGLINE = 'Open-source security for AI agents';
14
+ function printBanner(version) {
15
+ process.stdout.write(LOGO);
16
+ process.stdout.write(` ${TAGLINE} v${version}\n\n`);
17
+ }
18
+ function printCompact(version) {
19
+ process.stdout.write(`opena2a v${version}\n`);
20
+ }
21
+ //# sourceMappingURL=branding.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"branding.js","sourceRoot":"","sources":["../src/branding.ts"],"names":[],"mappings":";;AAWA,kCAGC;AAED,oCAEC;AAlBD,MAAM,IAAI,GAAG;;;;;;;CAOZ,CAAC;AAEF,MAAM,OAAO,GAAG,oCAAoC,CAAC;AAErD,SAAgB,WAAW,CAAC,OAAe;IACzC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC3B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,OAAO,MAAM,OAAO,MAAM,CAAC,CAAC;AACxD,CAAC;AAED,SAAgB,YAAY,CAAC,OAAe;IAC1C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,OAAO,IAAI,CAAC,CAAC;AAChD,CAAC"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * opena2a baselines -- Collect and submit behavioral observations
3
+ * for crowdsourced agent behavioral profiles. Opt-in only.
4
+ */
5
+ export interface BaselinesOptions {
6
+ packageName: string;
7
+ duration?: number;
8
+ registryUrl?: string;
9
+ ci?: boolean;
10
+ format?: 'text' | 'json';
11
+ verbose?: boolean;
12
+ }
13
+ export declare function baselines(options: BaselinesOptions): Promise<number>;
14
+ //# sourceMappingURL=baselines.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"baselines.d.ts","sourceRoot":"","sources":["../../src/commands/baselines.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,EAAE,CAAC,EAAE,OAAO,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AA+BD,wBAAsB,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC,CAmI1E"}