@vigilbase/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 (67) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +138 -0
  3. package/dist/auth/device-auth.d.ts +58 -0
  4. package/dist/auth/device-auth.d.ts.map +1 -0
  5. package/dist/auth/device-auth.js +229 -0
  6. package/dist/auth/device-auth.js.map +1 -0
  7. package/dist/auth/index.d.ts +4 -0
  8. package/dist/auth/index.d.ts.map +1 -0
  9. package/dist/auth/index.js +3 -0
  10. package/dist/auth/index.js.map +1 -0
  11. package/dist/auth/store.d.ts +12 -0
  12. package/dist/auth/store.d.ts.map +1 -0
  13. package/dist/auth/store.js +85 -0
  14. package/dist/auth/store.js.map +1 -0
  15. package/dist/auth/types.d.ts +46 -0
  16. package/dist/auth/types.d.ts.map +1 -0
  17. package/dist/auth/types.js +8 -0
  18. package/dist/auth/types.js.map +1 -0
  19. package/dist/bin.d.ts +3 -0
  20. package/dist/bin.d.ts.map +1 -0
  21. package/dist/bin.js +5 -0
  22. package/dist/bin.js.map +1 -0
  23. package/dist/cli.d.ts +13 -0
  24. package/dist/cli.d.ts.map +1 -0
  25. package/dist/cli.js +510 -0
  26. package/dist/cli.js.map +1 -0
  27. package/dist/index.d.ts +9 -0
  28. package/dist/index.d.ts.map +1 -0
  29. package/dist/index.js +7 -0
  30. package/dist/index.js.map +1 -0
  31. package/dist/lib/banner.d.ts +29 -0
  32. package/dist/lib/banner.d.ts.map +1 -0
  33. package/dist/lib/banner.js +68 -0
  34. package/dist/lib/banner.js.map +1 -0
  35. package/dist/lib/client.d.ts +27 -0
  36. package/dist/lib/client.d.ts.map +1 -0
  37. package/dist/lib/client.js +146 -0
  38. package/dist/lib/client.js.map +1 -0
  39. package/dist/lib/config.d.ts +31 -0
  40. package/dist/lib/config.d.ts.map +1 -0
  41. package/dist/lib/config.js +57 -0
  42. package/dist/lib/config.js.map +1 -0
  43. package/dist/lib/format.d.ts +14 -0
  44. package/dist/lib/format.d.ts.map +1 -0
  45. package/dist/lib/format.js +289 -0
  46. package/dist/lib/format.js.map +1 -0
  47. package/dist/lib/help.d.ts +4 -0
  48. package/dist/lib/help.d.ts.map +1 -0
  49. package/dist/lib/help.js +58 -0
  50. package/dist/lib/help.js.map +1 -0
  51. package/dist/lib/one-client.d.ts +43 -0
  52. package/dist/lib/one-client.d.ts.map +1 -0
  53. package/dist/lib/one-client.js +147 -0
  54. package/dist/lib/one-client.js.map +1 -0
  55. package/dist/lib/open-url.d.ts +25 -0
  56. package/dist/lib/open-url.d.ts.map +1 -0
  57. package/dist/lib/open-url.js +112 -0
  58. package/dist/lib/open-url.js.map +1 -0
  59. package/dist/lib/progress.d.ts +20 -0
  60. package/dist/lib/progress.d.ts.map +1 -0
  61. package/dist/lib/progress.js +78 -0
  62. package/dist/lib/progress.js.map +1 -0
  63. package/dist/types.d.ts +45 -0
  64. package/dist/types.d.ts.map +1 -0
  65. package/dist/types.js +7 -0
  66. package/dist/types.js.map +1 -0
  67. package/package.json +70 -0
@@ -0,0 +1,289 @@
1
+ export function createWriter(stdout = process.stdout, stderr = process.stderr) {
2
+ return {
3
+ stdout: (line = '') => {
4
+ stdout.write(line.endsWith('\n') ? line : `${line}\n`);
5
+ },
6
+ stderr: (line = '') => {
7
+ stderr.write(line.endsWith('\n') ? line : `${line}\n`);
8
+ },
9
+ };
10
+ }
11
+ function printJson(writer, value) {
12
+ writer.stdout(JSON.stringify(value, null, 2));
13
+ }
14
+ function asRecord(value) {
15
+ if (!value || typeof value !== 'object' || Array.isArray(value))
16
+ return null;
17
+ return value;
18
+ }
19
+ function findingFromUnknown(value) {
20
+ const item = asRecord(value);
21
+ if (!item)
22
+ return null;
23
+ const title = (typeof item.title === 'string' && item.title) ||
24
+ (typeof item.name === 'string' && item.name) ||
25
+ (typeof item.header === 'string' && item.header) ||
26
+ (typeof item.category === 'string' && item.category) ||
27
+ null;
28
+ if (!title)
29
+ return null;
30
+ const recommendation = (typeof item.recommendation === 'string' && item.recommendation) ||
31
+ (typeof item.suggestion === 'string' && item.suggestion) ||
32
+ (Array.isArray(item.recommendations) &&
33
+ typeof item.recommendations[0] === 'string'
34
+ ? item.recommendations[0]
35
+ : null) ||
36
+ undefined;
37
+ return {
38
+ title,
39
+ severity: typeof item.severity === 'string' ? item.severity : undefined,
40
+ recommendation: recommendation || undefined,
41
+ };
42
+ }
43
+ const CHECK_FAIL_STATUSES = new Set(['fail', 'failed', 'error', 'warning', 'warn']);
44
+ function pushCheckFindings(buckets, checks) {
45
+ for (const raw of checks) {
46
+ const item = asRecord(raw);
47
+ if (!item)
48
+ continue;
49
+ const status = typeof item.status === 'string' ? item.status.trim().toLowerCase() : '';
50
+ if (!CHECK_FAIL_STATUSES.has(status))
51
+ continue;
52
+ const title = (typeof item.name === 'string' && item.name) ||
53
+ (typeof item.title === 'string' && item.title) ||
54
+ null;
55
+ if (!title)
56
+ continue;
57
+ const recommendation = (typeof item.recommendation === 'string' && item.recommendation) ||
58
+ (typeof item.description === 'string' && item.description) ||
59
+ (typeof item.details === 'string' && item.details) ||
60
+ undefined;
61
+ buckets.push({
62
+ title,
63
+ severity: (typeof item.severity === 'string' && item.severity) ||
64
+ (status === 'warning' || status === 'warn' ? 'medium' : undefined),
65
+ recommendation,
66
+ });
67
+ }
68
+ }
69
+ function summarizeCounts(result) {
70
+ const details = asRecord(result.details);
71
+ const summary = asRecord(result.summary) || (details ? asRecord(details.summary) : null);
72
+ if (!summary)
73
+ return null;
74
+ const count = (n, singular, plural = `${singular}s`) => `${n} ${n === 1 ? singular : plural}`;
75
+ const parts = [];
76
+ if (typeof summary.failed === 'number') {
77
+ parts.push(count(summary.failed, 'failed', 'failed'));
78
+ }
79
+ if (typeof summary.warnings === 'number') {
80
+ parts.push(count(summary.warnings, 'warning'));
81
+ }
82
+ if (typeof summary.passed === 'number') {
83
+ parts.push(count(summary.passed, 'passed', 'passed'));
84
+ }
85
+ if (typeof summary.missing === 'number') {
86
+ parts.push(count(summary.missing, 'missing', 'missing'));
87
+ }
88
+ if (typeof summary.misconfigured === 'number' && summary.misconfigured > 0) {
89
+ parts.push(count(summary.misconfigured, 'misconfigured', 'misconfigured'));
90
+ }
91
+ if (typeof summary.configured === 'number') {
92
+ parts.push(count(summary.configured, 'configured', 'configured'));
93
+ }
94
+ if (parts.length === 0 && typeof summary.total === 'number') {
95
+ parts.push(count(summary.total, 'check'));
96
+ }
97
+ return parts.length > 0 ? parts.join(' · ') : null;
98
+ }
99
+ function collectFindings(result) {
100
+ const details = asRecord(result.details);
101
+ const buckets = [];
102
+ for (const key of ['issues', 'findings', 'recommendations']) {
103
+ if (Array.isArray(result[key]))
104
+ buckets.push(...result[key]);
105
+ if (details && Array.isArray(details[key])) {
106
+ buckets.push(...details[key]);
107
+ }
108
+ }
109
+ // website-security / cloudflare-checkup style: details.checks[]
110
+ if (Array.isArray(result.checks)) {
111
+ pushCheckFindings(buckets, result.checks);
112
+ }
113
+ if (details && Array.isArray(details.checks)) {
114
+ pushCheckFindings(buckets, details.checks);
115
+ }
116
+ // Prefer structured issues/checks; synthesize from records/headers only if needed.
117
+ if (buckets.length === 0) {
118
+ const records = details ? asRecord(details.records) : null;
119
+ if (records) {
120
+ for (const [name, value] of Object.entries(records)) {
121
+ const record = asRecord(value);
122
+ if (!record)
123
+ continue;
124
+ const status = typeof record.status === 'string' ? record.status : '';
125
+ if (status !== 'missing' && status !== 'misconfigured' && status !== 'fail') {
126
+ continue;
127
+ }
128
+ buckets.push({
129
+ title: `${name.toUpperCase()} ${status === 'missing' ? 'not configured' : status}`,
130
+ severity: status === 'missing' ? 'high' : 'medium',
131
+ recommendation: (typeof record.recommendation === 'string' && record.recommendation) ||
132
+ (status === 'missing' ? `Configure ${name.toUpperCase()}` : undefined),
133
+ });
134
+ }
135
+ }
136
+ const headers = details ? asRecord(details.headers) : null;
137
+ if (headers) {
138
+ for (const [name, value] of Object.entries(headers)) {
139
+ const header = asRecord(value);
140
+ if (!header)
141
+ continue;
142
+ const status = typeof header.status === 'string' ? header.status : '';
143
+ if (status !== 'missing' && status !== 'misconfigured' && header.present !== false) {
144
+ continue;
145
+ }
146
+ const pretty = name
147
+ .replace(/([A-Z])/g, '-$1')
148
+ .replace(/^-/, '')
149
+ .replace(/^./, (c) => c.toUpperCase());
150
+ const recs = Array.isArray(header.recommendations)
151
+ ? header.recommendations.filter((item) => typeof item === 'string')
152
+ : [];
153
+ buckets.push({
154
+ title: (typeof header.analysis === 'string' && header.analysis) ||
155
+ `${pretty} ${status || 'missing'}`,
156
+ severity: status === 'missing' || header.present === false ? 'high' : 'low',
157
+ recommendation: recs[0] ||
158
+ (typeof header.recommendation === 'string' ? header.recommendation : undefined),
159
+ });
160
+ }
161
+ }
162
+ }
163
+ const findings = [];
164
+ const seen = new Set();
165
+ for (const raw of buckets) {
166
+ const finding = findingFromUnknown(raw);
167
+ if (!finding)
168
+ continue;
169
+ const key = `${finding.title.toLowerCase()}|${(finding.recommendation ?? '').toLowerCase()}`;
170
+ if (seen.has(key))
171
+ continue;
172
+ seen.add(key);
173
+ findings.push(finding);
174
+ }
175
+ return findings;
176
+ }
177
+ const MAX_FINDING_LINES = 12;
178
+ /** Compact human lines for a scan result (no UI/skill links, no summary dump). */
179
+ function summarizeResultCompact(result) {
180
+ if (!result)
181
+ return [];
182
+ const lines = [];
183
+ const message = typeof result.message === 'string' ? result.message : null;
184
+ if (message)
185
+ lines.push(message);
186
+ const counts = summarizeCounts(result);
187
+ if (counts)
188
+ lines.push(counts);
189
+ const findings = collectFindings(result);
190
+ for (const finding of findings.slice(0, MAX_FINDING_LINES)) {
191
+ const sev = finding.severity ? ` ${finding.severity}` : '';
192
+ if (finding.recommendation) {
193
+ lines.push(`✗${sev} ${finding.title} — ${finding.recommendation}`);
194
+ }
195
+ else {
196
+ lines.push(`✗${sev} ${finding.title}`);
197
+ }
198
+ }
199
+ if (findings.length > MAX_FINDING_LINES) {
200
+ lines.push(`… +${findings.length - MAX_FINDING_LINES} more (use --json)`);
201
+ }
202
+ return lines;
203
+ }
204
+ export function formatToolsList(catalog, mode, writer, options) {
205
+ if (mode === 'json') {
206
+ printJson(writer, catalog);
207
+ return;
208
+ }
209
+ const publicNames = catalog.tools.map((tool) => tool.toolName).join(' ');
210
+ writer.stdout(`public ${publicNames || '(none)'}`);
211
+ if (options?.sensitiveTools?.length) {
212
+ writer.stdout(`sensitive ${options.sensitiveTools.join(' ')}`);
213
+ }
214
+ if (typeof options?.isAuthenticated === 'boolean') {
215
+ writer.stdout(options.isAuthenticated ? 'auth signed in' : 'auth signed out');
216
+ }
217
+ }
218
+ export function formatToolDescription(tool, mode, writer, skillMarkdown) {
219
+ if (mode === 'json') {
220
+ printJson(writer, { ...tool, skillMarkdown: skillMarkdown ?? null });
221
+ return;
222
+ }
223
+ writer.stdout(`${tool.toolName} ${tool.name}`);
224
+ const blurb = tool.description.length > 100
225
+ ? `${tool.description.slice(0, 97).trimEnd()}…`
226
+ : tool.description;
227
+ writer.stdout(blurb);
228
+ writer.stdout(`vigilbase run ${tool.toolName} <target>`);
229
+ if (skillMarkdown) {
230
+ writer.stdout();
231
+ writer.stdout(skillMarkdown.trimEnd());
232
+ }
233
+ }
234
+ export function formatExecuteResult(result, mode, writer) {
235
+ if (mode === 'json') {
236
+ printJson(writer, result);
237
+ return;
238
+ }
239
+ const tool = result.toolName ?? 'tool';
240
+ const target = result.target ?? '';
241
+ const grade = result.grade != null
242
+ ? `${result.grade}${result.gradeScore != null ? ` ${result.gradeScore}` : ''}`
243
+ : 'n/a';
244
+ const head = result.success
245
+ ? `✓ ${tool} · ${target} · ${grade}`
246
+ : `✗ ${tool} · ${target} · ${grade}`;
247
+ if (result.success)
248
+ writer.stdout(head);
249
+ else
250
+ writer.stderr(head);
251
+ if (result.error) {
252
+ writer.stderr(` ${result.error}`);
253
+ }
254
+ for (const line of summarizeResultCompact(result.result)) {
255
+ writer.stdout(` ${line}`);
256
+ }
257
+ }
258
+ export function formatError(error, mode, writer) {
259
+ const message = error instanceof Error ? error.message : String(error);
260
+ const payload = {
261
+ success: false,
262
+ error: message,
263
+ };
264
+ if (error && typeof error === 'object') {
265
+ if ('status' in error && typeof error.status === 'number') {
266
+ payload.status = error.status;
267
+ }
268
+ if ('code' in error &&
269
+ typeof error.code === 'string') {
270
+ payload.code = error.code;
271
+ }
272
+ if ('retryAfterSec' in error &&
273
+ typeof error.retryAfterSec === 'number') {
274
+ payload.retryAfterSec = error.retryAfterSec;
275
+ }
276
+ if ('body' in error && error.body != null) {
277
+ payload.body = error.body;
278
+ }
279
+ }
280
+ if (mode === 'json') {
281
+ printJson(writer, payload);
282
+ return;
283
+ }
284
+ writer.stderr(`Error: ${message}`);
285
+ if (typeof payload.retryAfterSec === 'number') {
286
+ writer.stderr(`Retry after ${payload.retryAfterSec}s`);
287
+ }
288
+ }
289
+ //# sourceMappingURL=format.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format.js","sourceRoot":"","sources":["../../src/lib/format.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export declare const HELP_TAGLINE = "one \u00B7 tools";
2
+ export declare const HELP_TEXT = "Usage: vigilbase <command>\n\nCommands\n list List available tools\n run <tool> <target> Run a scan\n headers <url> Check security headers\n email <domain> Check email security (SPF/DKIM/DMARC)\n describe <tool> Show tool details\n login Sign in (unlocks sensitive tools)\n logout \u00B7 whoami Session\n badge <domain> \u00B7 doctor Badge URL \u00B7 connectivity check\n\nSensitive tools (after login)\n website-security \u00B7 react2shell \u00B7 fortibleed-check\n\nOptions\n -j, --json JSON output\n -h, --help \u00B7 -V, --version\n\nExamples\n vigilbase headers https://vigilbase.com\n vigilbase email vigilbase.com\n vigilbase login\n vigilbase run website-security vigilbase.com\n";
3
+ export declare function helpForCommand(command: string): string | null;
4
+ //# sourceMappingURL=help.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../../src/lib/help.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,qBAAgB,CAAA;AAEzC,eAAO,MAAM,SAAS,y0BAwBrB,CAAA;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CA8B7D"}
@@ -0,0 +1,58 @@
1
+ export const HELP_TAGLINE = 'one · tools';
2
+ export const HELP_TEXT = `Usage: vigilbase <command>
3
+
4
+ Commands
5
+ list List available tools
6
+ run <tool> <target> Run a scan
7
+ headers <url> Check security headers
8
+ email <domain> Check email security (SPF/DKIM/DMARC)
9
+ describe <tool> Show tool details
10
+ login Sign in (unlocks sensitive tools)
11
+ logout · whoami Session
12
+ badge <domain> · doctor Badge URL · connectivity check
13
+
14
+ Sensitive tools (after login)
15
+ website-security · react2shell · fortibleed-check
16
+
17
+ Options
18
+ -j, --json JSON output
19
+ -h, --help · -V, --version
20
+
21
+ Examples
22
+ vigilbase headers https://vigilbase.com
23
+ vigilbase email vigilbase.com
24
+ vigilbase login
25
+ vigilbase run website-security vigilbase.com
26
+ `;
27
+ export function helpForCommand(command) {
28
+ switch (command) {
29
+ case 'list':
30
+ return `Usage: vigilbase list [--json]`;
31
+ case 'run':
32
+ return `Usage: vigilbase run <tool> <target> [--json]
33
+
34
+ Public: security-headers, email-security
35
+ Login: website-security, react2shell, fortibleed-check`;
36
+ case 'describe':
37
+ return `Usage: vigilbase describe <tool> [--json] [--no-skill]`;
38
+ case 'skill':
39
+ return `Usage: vigilbase skill <tool> [--json]`;
40
+ case 'badge':
41
+ return `Usage: vigilbase badge <domain> [--style default|compact|mini] [--json]`;
42
+ case 'doctor':
43
+ return `Usage: vigilbase doctor [--json]`;
44
+ case 'login':
45
+ return `Usage: vigilbase login [--json] [--no-open] [--token <bearer>]`;
46
+ case 'logout':
47
+ return `Usage: vigilbase logout [--json]`;
48
+ case 'whoami':
49
+ return `Usage: vigilbase whoami [--json]`;
50
+ case 'headers':
51
+ return `Usage: vigilbase headers <url> [--json]`;
52
+ case 'email':
53
+ return `Usage: vigilbase email <domain> [--json]`;
54
+ default:
55
+ return null;
56
+ }
57
+ }
58
+ //# sourceMappingURL=help.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"help.js","sourceRoot":"","sources":["../../src/lib/help.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,YAAY,GAAG,aAAa,CAAA;AAEzC,MAAM,CAAC,MAAM,SAAS,GAAG;;;;;;;;;;;;;;;;;;;;;;;;CAwBxB,CAAA;AAED,MAAM,UAAU,cAAc,CAAC,OAAe;IAC5C,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,MAAM;YACT,OAAO,gCAAgC,CAAA;QACzC,KAAK,KAAK;YACR,OAAO;;;wDAG2C,CAAA;QACpD,KAAK,UAAU;YACb,OAAO,wDAAwD,CAAA;QACjE,KAAK,OAAO;YACV,OAAO,wCAAwC,CAAA;QACjD,KAAK,OAAO;YACV,OAAO,yEAAyE,CAAA;QAClF,KAAK,QAAQ;YACX,OAAO,kCAAkC,CAAA;QAC3C,KAAK,OAAO;YACV,OAAO,gEAAgE,CAAA;QACzE,KAAK,QAAQ;YACX,OAAO,kCAAkC,CAAA;QAC3C,KAAK,QAAQ;YACX,OAAO,kCAAkC,CAAA;QAC3C,KAAK,SAAS;YACZ,OAAO,yCAAyC,CAAA;QAClD,KAAK,OAAO;YACV,OAAO,0CAA0C,CAAA;QACnD;YACE,OAAO,IAAI,CAAA;IACf,CAAC;AACH,CAAC"}
@@ -0,0 +1,43 @@
1
+ import type { AgentToolDefinition } from '../types.js';
2
+ import type { CliConfig } from './config.js';
3
+ export type OneToolExecuteResponse = {
4
+ success: boolean;
5
+ error?: string;
6
+ data?: {
7
+ toolRunId?: string;
8
+ status?: string;
9
+ grade?: string | null;
10
+ gradeScore?: number | null;
11
+ result?: Record<string, unknown> | null;
12
+ };
13
+ };
14
+ export type OneSessionResponse = {
15
+ session?: Record<string, unknown> | null;
16
+ user?: {
17
+ id?: string;
18
+ email?: string | null;
19
+ name?: string | null;
20
+ } | null;
21
+ };
22
+ /**
23
+ * Tools that require Vigilbase One authentication (sensitive / gated scanners).
24
+ * Public agent tools remain available without login via vigilbase.com.
25
+ */
26
+ export declare const ONE_AUTH_REQUIRED_TOOLS: readonly ["website-security", "react2shell", "fortibleed-check"];
27
+ export type OneAuthRequiredTool = (typeof ONE_AUTH_REQUIRED_TOOLS)[number];
28
+ export declare function isOneAuthRequiredTool(toolName: string): toolName is OneAuthRequiredTool;
29
+ /** Static catalog entries for sensitive tools (not listed on the public agent API). */
30
+ export declare const ONE_SENSITIVE_TOOL_DEFINITIONS: Record<OneAuthRequiredTool, AgentToolDefinition>;
31
+ export declare function resolveToolDefinition(toolName: string, publicTools: AgentToolDefinition[], oneBaseUrl: string): AgentToolDefinition | null;
32
+ /** Tools executable through One's authenticated `/api/tools/{tool}/execute` bridge. */
33
+ export declare const ONE_EXECUTABLE_TOOLS: readonly ["security-headers", "email-security", "website-security", "react2shell", "fortibleed-check"];
34
+ export declare function isOneExecutableTool(toolName: string): boolean;
35
+ export declare class VigilbaseOneClient {
36
+ private readonly config;
37
+ private readonly accessToken;
38
+ constructor(config: CliConfig, accessToken: string);
39
+ private request;
40
+ getSession(): Promise<OneSessionResponse>;
41
+ executeTool(toolName: string, target: string): Promise<OneToolExecuteResponse>;
42
+ }
43
+ //# sourceMappingURL=one-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"one-client.d.ts","sourceRoot":"","sources":["../../src/lib/one-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AACtD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAG5C,MAAM,MAAM,sBAAsB,GAAG;IAEnC,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,IAAI,CAAC,EAAE;QACL,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;QACrB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;QAC1B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;KACxC,CAAA;CACF,CAAA;AAED,MAAM,MAAM,kBAAkB,GAAG;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAA;IACxC,IAAI,CAAC,EAAE;QACL,EAAE,CAAC,EAAE,MAAM,CAAA;QACX,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;QACrB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KACrB,GAAG,IAAI,CAAA;CACT,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,uBAAuB,kEAI1B,CAAA;AAEV,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,uBAAuB,CAAC,CAAC,MAAM,CAAC,CAAA;AAE1E,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,IAAI,mBAAmB,CAEvF;AAED,uFAAuF;AACvF,eAAO,MAAM,8BAA8B,EAAE,MAAM,CACjD,mBAAmB,EACnB,mBAAmB,CAgCpB,CAAA;AAED,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,mBAAmB,EAAE,EAClC,UAAU,EAAE,MAAM,GACjB,mBAAmB,GAAG,IAAI,CAe5B;AAED,uFAAuF;AACvF,eAAO,MAAM,oBAAoB,wGAMvB,CAAA;AAEV,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAE7D;AAED,qBAAa,kBAAkB;IAE3B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,WAAW;gBADX,MAAM,EAAE,SAAS,EACjB,WAAW,EAAE,MAAM;YAGxB,OAAO;IAyCf,UAAU,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAWzC,WAAW,CACf,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,sBAAsB,CAAC;CAgCnC"}
@@ -0,0 +1,147 @@
1
+ import { VigilbaseApiError } from './client.js';
2
+ /**
3
+ * Tools that require Vigilbase One authentication (sensitive / gated scanners).
4
+ * Public agent tools remain available without login via vigilbase.com.
5
+ */
6
+ export const ONE_AUTH_REQUIRED_TOOLS = [
7
+ 'website-security',
8
+ 'react2shell',
9
+ 'fortibleed-check',
10
+ ];
11
+ export function isOneAuthRequiredTool(toolName) {
12
+ return ONE_AUTH_REQUIRED_TOOLS.includes(toolName);
13
+ }
14
+ /** Static catalog entries for sensitive tools (not listed on the public agent API). */
15
+ export const ONE_SENSITIVE_TOOL_DEFINITIONS = {
16
+ 'website-security': {
17
+ toolName: 'website-security',
18
+ name: 'Website Security Scanner',
19
+ description: 'Intrusive website posture scan (requires Vigilbase One login).',
20
+ targetDescription: 'Domain or URL to scan.',
21
+ uiUrl: '/dashboard/tools/website-security',
22
+ skillUrl: 'https://vigilbase.com/agent-skills/website-security.md',
23
+ executeUrl: '/api/tools/website-security/execute',
24
+ },
25
+ react2shell: {
26
+ toolName: 'react2shell',
27
+ name: 'React2Shell Probe',
28
+ description: 'React Server Components RCE probe (requires Vigilbase One login).',
29
+ targetDescription: 'URL of a React Server Components app.',
30
+ uiUrl: '/dashboard/tools/react2shell',
31
+ skillUrl: 'https://vigilbase.com/agent-skills/react2shell.md',
32
+ executeUrl: '/api/tools/react2shell/execute',
33
+ },
34
+ 'fortibleed-check': {
35
+ toolName: 'fortibleed-check',
36
+ name: 'FortiBleed Check',
37
+ description: 'FortiBleed domain dataset lookup (requires Vigilbase One login).',
38
+ targetDescription: 'Domain to look up.',
39
+ uiUrl: '/dashboard/tools/fortibleed-check',
40
+ skillUrl: 'https://vigilbase.com/agent-skills/fortibleed-check.md',
41
+ executeUrl: '/api/tools/fortibleed-check/execute',
42
+ },
43
+ };
44
+ export function resolveToolDefinition(toolName, publicTools, oneBaseUrl) {
45
+ const fromPublic = publicTools.find((tool) => tool.toolName === toolName);
46
+ if (fromPublic)
47
+ return fromPublic;
48
+ if (!isOneAuthRequiredTool(toolName))
49
+ return null;
50
+ const sensitive = ONE_SENSITIVE_TOOL_DEFINITIONS[toolName];
51
+ const origin = oneBaseUrl.replace(/\/+$/, '');
52
+ return {
53
+ ...sensitive,
54
+ uiUrl: sensitive.uiUrl.startsWith('http')
55
+ ? sensitive.uiUrl
56
+ : `${origin}${sensitive.uiUrl}`,
57
+ executeUrl: sensitive.executeUrl.startsWith('http')
58
+ ? sensitive.executeUrl
59
+ : `${origin}${sensitive.executeUrl}`,
60
+ };
61
+ }
62
+ /** Tools executable through One's authenticated `/api/tools/{tool}/execute` bridge. */
63
+ export const ONE_EXECUTABLE_TOOLS = [
64
+ 'security-headers',
65
+ 'email-security',
66
+ 'website-security',
67
+ 'react2shell',
68
+ 'fortibleed-check',
69
+ ];
70
+ export function isOneExecutableTool(toolName) {
71
+ return ONE_EXECUTABLE_TOOLS.includes(toolName);
72
+ }
73
+ export class VigilbaseOneClient {
74
+ config;
75
+ accessToken;
76
+ constructor(config, accessToken) {
77
+ this.config = config;
78
+ this.accessToken = accessToken;
79
+ }
80
+ async request(path, init) {
81
+ const url = `${this.config.oneBaseUrl}${path.startsWith('/') ? path : `/${path}`}`;
82
+ const controller = new AbortController();
83
+ const timer = setTimeout(() => controller.abort(), this.config.timeoutMs);
84
+ try {
85
+ const response = await fetch(url, {
86
+ ...init,
87
+ signal: controller.signal,
88
+ headers: {
89
+ Accept: 'application/json',
90
+ Authorization: `Bearer ${this.accessToken}`,
91
+ 'User-Agent': this.config.userAgent,
92
+ ...(init?.headers ?? {}),
93
+ },
94
+ });
95
+ const text = await response.text();
96
+ let body = null;
97
+ if (text) {
98
+ try {
99
+ body = JSON.parse(text);
100
+ }
101
+ catch {
102
+ body = { raw: text };
103
+ }
104
+ }
105
+ return { response, body };
106
+ }
107
+ catch (error) {
108
+ if (error instanceof Error && error.name === 'AbortError') {
109
+ throw new VigilbaseApiError(`Request timed out after ${this.config.timeoutMs}ms: ${url}`, { status: 0 });
110
+ }
111
+ throw error;
112
+ }
113
+ finally {
114
+ clearTimeout(timer);
115
+ }
116
+ }
117
+ async getSession() {
118
+ const { response, body } = await this.request('/api/auth/get-session');
119
+ if (!response.ok) {
120
+ throw new VigilbaseApiError(`Failed to load One session (HTTP ${response.status})`, { status: response.status, body });
121
+ }
122
+ return (body ?? {});
123
+ }
124
+ async executeTool(toolName, target) {
125
+ const { response, body } = await this.request(`/api/tools/${encodeURIComponent(toolName)}/execute`, {
126
+ method: 'POST',
127
+ headers: { 'Content-Type': 'application/json' },
128
+ body: JSON.stringify({ target }),
129
+ });
130
+ const parsed = (body ?? {});
131
+ if (response.status === 401 || response.status === 403) {
132
+ throw new VigilbaseApiError(parsed.error ||
133
+ 'Authentication required. Run `vigilbase login` and ensure your account can write services.', { status: response.status, body: parsed });
134
+ }
135
+ if (response.status === 429) {
136
+ throw new VigilbaseApiError(parsed.error || 'Rate limit exceeded.', {
137
+ status: 429,
138
+ body: parsed,
139
+ });
140
+ }
141
+ if (!response.ok && response.status !== 422) {
142
+ throw new VigilbaseApiError(parsed.error || `One tool execution failed (HTTP ${response.status})`, { status: response.status, body: parsed });
143
+ }
144
+ return parsed;
145
+ }
146
+ }
147
+ //# sourceMappingURL=one-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"one-client.js","sourceRoot":"","sources":["../../src/lib/one-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ export type OpenBrowserResult = {
2
+ isOpened: boolean;
3
+ /** Why a browser was not opened (headless / explicit / failed). */
4
+ reason?: 'headless' | 'disabled' | 'failed' | 'unsupported';
5
+ };
6
+ /**
7
+ * Detect environments where opening a GUI browser is impossible/undesirable.
8
+ */
9
+ export declare function isHeadlessEnvironment(env?: NodeJS.ProcessEnv): boolean;
10
+ /**
11
+ * Best-effort open of a URL in the user's default browser.
12
+ */
13
+ export declare function openUrlInBrowser(url: string, env?: NodeJS.ProcessEnv): OpenBrowserResult;
14
+ /**
15
+ * Build the device-auth verification URL on the configured One origin.
16
+ * Ignores a mis-reported host so `vigilbase login` always opens Vigilbase One.
17
+ */
18
+ /** Format user codes like ABCD-EFGH for easier reading aloud. */
19
+ export declare function formatUserCode(code: string): string;
20
+ export declare function resolveDeviceVerificationUrl(oneBaseUrl: string, device: {
21
+ user_code: string;
22
+ verification_uri?: string;
23
+ verification_uri_complete?: string;
24
+ }): string;
25
+ //# sourceMappingURL=open-url.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"open-url.d.ts","sourceRoot":"","sources":["../../src/lib/open-url.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,iBAAiB,GAAG;IAC9B,QAAQ,EAAE,OAAO,CAAA;IACjB,mEAAmE;IACnE,MAAM,CAAC,EAAE,UAAU,GAAG,UAAU,GAAG,QAAQ,GAAG,aAAa,CAAA;CAC5D,CAAA;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,OAAO,CAQT;AAyBD;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,MAAM,EACX,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,iBAAiB,CA+BnB;AAED;;;GAGG;AACH,iEAAiE;AACjE,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMnD;AAED,wBAAgB,4BAA4B,CAC1C,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE;IACN,SAAS,EAAE,MAAM,CAAA;IACjB,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,yBAAyB,CAAC,EAAE,MAAM,CAAA;CACnC,GACA,MAAM,CAyBR"}