@yuaone/tools 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 (87) hide show
  1. package/LICENSE +663 -0
  2. package/README.md +15 -0
  3. package/dist/__tests__/file-edit.test.d.ts +8 -0
  4. package/dist/__tests__/file-edit.test.d.ts.map +1 -0
  5. package/dist/__tests__/file-edit.test.js +125 -0
  6. package/dist/__tests__/file-edit.test.js.map +1 -0
  7. package/dist/__tests__/registry.test.d.ts +7 -0
  8. package/dist/__tests__/registry.test.d.ts.map +1 -0
  9. package/dist/__tests__/registry.test.js +83 -0
  10. package/dist/__tests__/registry.test.js.map +1 -0
  11. package/dist/__tests__/validators.test.d.ts +8 -0
  12. package/dist/__tests__/validators.test.d.ts.map +1 -0
  13. package/dist/__tests__/validators.test.js +189 -0
  14. package/dist/__tests__/validators.test.js.map +1 -0
  15. package/dist/base-tool.d.ts +45 -0
  16. package/dist/base-tool.d.ts.map +1 -0
  17. package/dist/base-tool.js +87 -0
  18. package/dist/base-tool.js.map +1 -0
  19. package/dist/browser-tool.d.ts +39 -0
  20. package/dist/browser-tool.d.ts.map +1 -0
  21. package/dist/browser-tool.js +518 -0
  22. package/dist/browser-tool.js.map +1 -0
  23. package/dist/code-search.d.ts +42 -0
  24. package/dist/code-search.d.ts.map +1 -0
  25. package/dist/code-search.js +298 -0
  26. package/dist/code-search.js.map +1 -0
  27. package/dist/design-tools.d.ts +70 -0
  28. package/dist/design-tools.d.ts.map +1 -0
  29. package/dist/design-tools.js +471 -0
  30. package/dist/design-tools.js.map +1 -0
  31. package/dist/dev-server-manager.d.ts +32 -0
  32. package/dist/dev-server-manager.d.ts.map +1 -0
  33. package/dist/dev-server-manager.js +183 -0
  34. package/dist/dev-server-manager.js.map +1 -0
  35. package/dist/file-edit.d.ts +19 -0
  36. package/dist/file-edit.d.ts.map +1 -0
  37. package/dist/file-edit.js +217 -0
  38. package/dist/file-edit.js.map +1 -0
  39. package/dist/file-read.d.ts +19 -0
  40. package/dist/file-read.d.ts.map +1 -0
  41. package/dist/file-read.js +142 -0
  42. package/dist/file-read.js.map +1 -0
  43. package/dist/file-write.d.ts +18 -0
  44. package/dist/file-write.d.ts.map +1 -0
  45. package/dist/file-write.js +139 -0
  46. package/dist/file-write.js.map +1 -0
  47. package/dist/git-ops.d.ts +25 -0
  48. package/dist/git-ops.d.ts.map +1 -0
  49. package/dist/git-ops.js +219 -0
  50. package/dist/git-ops.js.map +1 -0
  51. package/dist/glob.d.ts +18 -0
  52. package/dist/glob.d.ts.map +1 -0
  53. package/dist/glob.js +91 -0
  54. package/dist/glob.js.map +1 -0
  55. package/dist/grep.d.ts +19 -0
  56. package/dist/grep.d.ts.map +1 -0
  57. package/dist/grep.js +177 -0
  58. package/dist/grep.js.map +1 -0
  59. package/dist/index.d.ts +27 -0
  60. package/dist/index.d.ts.map +1 -0
  61. package/dist/index.js +29 -0
  62. package/dist/index.js.map +1 -0
  63. package/dist/security-scan.d.ts +62 -0
  64. package/dist/security-scan.d.ts.map +1 -0
  65. package/dist/security-scan.js +445 -0
  66. package/dist/security-scan.js.map +1 -0
  67. package/dist/shell-exec.d.ts +20 -0
  68. package/dist/shell-exec.d.ts.map +1 -0
  69. package/dist/shell-exec.js +206 -0
  70. package/dist/shell-exec.js.map +1 -0
  71. package/dist/test-run.d.ts +51 -0
  72. package/dist/test-run.d.ts.map +1 -0
  73. package/dist/test-run.js +359 -0
  74. package/dist/test-run.js.map +1 -0
  75. package/dist/tool-registry.d.ts +70 -0
  76. package/dist/tool-registry.d.ts.map +1 -0
  77. package/dist/tool-registry.js +181 -0
  78. package/dist/tool-registry.js.map +1 -0
  79. package/dist/types.d.ts +137 -0
  80. package/dist/types.d.ts.map +1 -0
  81. package/dist/types.js +8 -0
  82. package/dist/types.js.map +1 -0
  83. package/dist/validators.d.ts +57 -0
  84. package/dist/validators.d.ts.map +1 -0
  85. package/dist/validators.js +218 -0
  86. package/dist/validators.js.map +1 -0
  87. package/package.json +42 -0
package/dist/grep.js ADDED
@@ -0,0 +1,177 @@
1
+ /**
2
+ * @yuaone/tools — grep tool
3
+ *
4
+ * Searches file contents using regex patterns.
5
+ * - Node.js built-in implementation (no ripgrep dependency)
6
+ * - Glob-based file filtering
7
+ * - Context lines support
8
+ * - Max 100 result lines
9
+ */
10
+ import { readFile, stat } from 'node:fs/promises';
11
+ import fg from 'fast-glob';
12
+ import { BaseTool } from './base-tool.js';
13
+ const DEFAULT_MAX_RESULTS = 50;
14
+ const ABSOLUTE_MAX_RESULTS = 100;
15
+ const DEFAULT_CONTEXT = 0;
16
+ export class GrepTool extends BaseTool {
17
+ name = 'grep';
18
+ description = 'Search file contents using a regex pattern. ' +
19
+ 'Returns matching lines with file paths and line numbers.';
20
+ riskLevel = 'low';
21
+ parameters = {
22
+ pattern: {
23
+ type: 'string',
24
+ description: 'Regular expression pattern to search for',
25
+ required: true,
26
+ },
27
+ path: {
28
+ type: 'string',
29
+ description: 'Search path relative to project root (default: project root)',
30
+ required: false,
31
+ },
32
+ glob: {
33
+ type: 'string',
34
+ description: 'File pattern filter (e.g., "*.ts", "*.{ts,tsx}")',
35
+ required: false,
36
+ },
37
+ maxResults: {
38
+ type: 'number',
39
+ description: `Maximum results to return (default: ${DEFAULT_MAX_RESULTS}, max: ${ABSOLUTE_MAX_RESULTS})`,
40
+ required: false,
41
+ default: DEFAULT_MAX_RESULTS,
42
+ },
43
+ context: {
44
+ type: 'number',
45
+ description: 'Number of context lines before and after each match (default: 0)',
46
+ required: false,
47
+ default: DEFAULT_CONTEXT,
48
+ },
49
+ };
50
+ async execute(args, workDir) {
51
+ const toolCallId = args._toolCallId ?? '';
52
+ const pattern = args.pattern;
53
+ const searchPath = args.path;
54
+ const globPattern = args.glob;
55
+ const maxResults = Math.min(args.maxResults ?? DEFAULT_MAX_RESULTS, ABSOLUTE_MAX_RESULTS);
56
+ const contextLines = args.context ?? DEFAULT_CONTEXT;
57
+ if (!pattern) {
58
+ return this.fail(toolCallId, 'Missing required parameter: pattern');
59
+ }
60
+ // Compile regex
61
+ let regex;
62
+ try {
63
+ regex = new RegExp(pattern, 'g');
64
+ }
65
+ catch (err) {
66
+ return this.fail(toolCallId, `Invalid regex pattern: ${err.message}`);
67
+ }
68
+ // Resolve search path
69
+ let searchDir = workDir;
70
+ if (searchPath) {
71
+ try {
72
+ searchDir = this.validatePath(searchPath, workDir);
73
+ }
74
+ catch (err) {
75
+ return this.fail(toolCallId, err.message);
76
+ }
77
+ }
78
+ // Check if searchDir is a file or directory
79
+ let isFile = false;
80
+ try {
81
+ const s = await stat(searchDir);
82
+ isFile = s.isFile();
83
+ }
84
+ catch {
85
+ return this.fail(toolCallId, `Path not found: ${searchPath ?? '.'}`);
86
+ }
87
+ // Collect files to search
88
+ let files;
89
+ if (isFile) {
90
+ files = [searchDir];
91
+ }
92
+ else {
93
+ const fileGlob = globPattern ?? '**/*';
94
+ try {
95
+ files = await fg(fileGlob, {
96
+ cwd: searchDir,
97
+ absolute: true,
98
+ ignore: ['**/node_modules/**', '**/.git/**', '**/dist/**', '**/build/**'],
99
+ onlyFiles: true,
100
+ followSymbolicLinks: false,
101
+ });
102
+ }
103
+ catch (err) {
104
+ return this.fail(toolCallId, `Glob error: ${err.message}`);
105
+ }
106
+ }
107
+ // Search files
108
+ const matches = [];
109
+ let totalMatches = 0;
110
+ for (const filePath of files) {
111
+ if (matches.length >= maxResults)
112
+ break;
113
+ let content;
114
+ try {
115
+ content = await readFile(filePath, 'utf-8');
116
+ }
117
+ catch {
118
+ continue; // Skip unreadable files (binary, permissions, etc.)
119
+ }
120
+ const lines = content.split('\n');
121
+ for (let i = 0; i < lines.length; i++) {
122
+ // Reset regex state
123
+ regex.lastIndex = 0;
124
+ if (!regex.test(lines[i]))
125
+ continue;
126
+ totalMatches++;
127
+ if (matches.length >= maxResults)
128
+ continue; // Keep counting but stop collecting
129
+ const relativePath = filePath.startsWith(workDir)
130
+ ? filePath.slice(workDir.length + 1)
131
+ : filePath;
132
+ const match = {
133
+ file: relativePath,
134
+ line: i + 1,
135
+ content: lines[i],
136
+ };
137
+ if (contextLines > 0) {
138
+ match.contextBefore = lines.slice(Math.max(0, i - contextLines), i);
139
+ match.contextAfter = lines.slice(i + 1, Math.min(lines.length, i + 1 + contextLines));
140
+ }
141
+ matches.push(match);
142
+ }
143
+ }
144
+ const truncated = totalMatches > maxResults;
145
+ // Format output
146
+ const outputLines = [];
147
+ for (const m of matches) {
148
+ if (m.contextBefore && m.contextBefore.length > 0) {
149
+ for (let j = 0; j < m.contextBefore.length; j++) {
150
+ const lineNum = m.line - m.contextBefore.length + j;
151
+ outputLines.push(` ${m.file}:${lineNum}: ${m.contextBefore[j]}`);
152
+ }
153
+ }
154
+ outputLines.push(`> ${m.file}:${m.line}: ${m.content}`);
155
+ if (m.contextAfter && m.contextAfter.length > 0) {
156
+ for (let j = 0; j < m.contextAfter.length; j++) {
157
+ outputLines.push(` ${m.file}:${m.line + 1 + j}: ${m.contextAfter[j]}`);
158
+ }
159
+ }
160
+ if (m.contextBefore || m.contextAfter) {
161
+ outputLines.push('--');
162
+ }
163
+ }
164
+ if (truncated) {
165
+ outputLines.push(`\n... (showing ${matches.length} of ${totalMatches} total matches)`);
166
+ }
167
+ const output = outputLines.length > 0
168
+ ? outputLines.join('\n')
169
+ : `No matches found for pattern: ${pattern}`;
170
+ return this.ok(toolCallId, output, {
171
+ totalMatches,
172
+ matchesReturned: matches.length,
173
+ truncated,
174
+ });
175
+ }
176
+ }
177
+ //# sourceMappingURL=grep.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grep.js","sourceRoot":"","sources":["../src/grep.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * @yuaone/tools — YUAN Agent Tool Implementations
3
+ *
4
+ * Provides the complete tool system for the YUAN coding agent:
5
+ * file_read, file_write, file_edit, shell_exec, grep, glob, git_ops, test_run, code_search, security_scan
6
+ */
7
+ export type { ToolDefinition, ToolCall, ToolResult, ToolParameterSchema, } from '@yuaone/core';
8
+ export type { ParameterDef, RiskLevel, FileReadInput, FileReadOutput, FileWriteInput, FileWriteOutput, FileEditInput, FileEditOutput, ShellExecInput, ShellExecOutput, GrepInput, GrepMatch, GrepOutput, GlobInput, GlobOutput, GitOperation, GitOpsInput, GitOpsOutput, TestRunInput, TestRunOutput, CodeSearchMode, CodeSearchInput, CodeSearchResult, CodeSearchOutput, } from './types.js';
9
+ export { BaseTool } from './base-tool.js';
10
+ export { FileReadTool } from './file-read.js';
11
+ export { FileWriteTool } from './file-write.js';
12
+ export { FileEditTool } from './file-edit.js';
13
+ export { ShellExecTool } from './shell-exec.js';
14
+ export { GrepTool } from './grep.js';
15
+ export { GlobTool } from './glob.js';
16
+ export { GitOpsTool } from './git-ops.js';
17
+ export { TestRunTool } from './test-run.js';
18
+ export { CodeSearchTool } from './code-search.js';
19
+ export { SecurityScanTool } from './security-scan.js';
20
+ export type { SecurityFinding, SecurityReport, FindingSeverity } from './security-scan.js';
21
+ export { BrowserTool } from './browser-tool.js';
22
+ export { ToolRegistry, createDefaultRegistry, createDesignRegistry } from './tool-registry.js';
23
+ export { DevServerManager } from './dev-server-manager.js';
24
+ export type { DevServerManagerEvents } from './dev-server-manager.js';
25
+ export { DesignSnapshotTool, DesignScreenshotTool, DesignNavigateTool, DesignResizeTool, DesignInspectTool, DesignScrollTool, createDesignTools, setDesignBrowserSession, clearDesignBrowserSession, } from './design-tools.js';
26
+ export { validatePath, validateNoShellMeta, validateCommand, isSensitiveFile, isBinaryFile, isImageFile, truncateOutput, detectLanguage, } from './validators.js';
27
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,YAAY,EACV,cAAc,EACd,QAAQ,EACR,UAAU,EACV,mBAAmB,GACpB,MAAM,cAAc,CAAC;AAGtB,YAAY,EACV,YAAY,EACZ,SAAS,EACT,aAAa,EACb,cAAc,EACd,cAAc,EACd,eAAe,EACf,aAAa,EACb,cAAc,EACd,cAAc,EACd,eAAe,EACf,SAAS,EACT,SAAS,EACT,UAAU,EACV,SAAS,EACT,UAAU,EACV,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,cAAc,EACd,eAAe,EACf,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG1C,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC3F,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGhD,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAG/F,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,YAAY,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAGtE,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,uBAAuB,EACvB,yBAAyB,GAC1B,MAAM,mBAAmB,CAAC;AAG3B,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,eAAe,EACf,eAAe,EACf,YAAY,EACZ,WAAW,EACX,cAAc,EACd,cAAc,GACf,MAAM,iBAAiB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,29 @@
1
+ /**
2
+ * @yuaone/tools — YUAN Agent Tool Implementations
3
+ *
4
+ * Provides the complete tool system for the YUAN coding agent:
5
+ * file_read, file_write, file_edit, shell_exec, grep, glob, git_ops, test_run, code_search, security_scan
6
+ */
7
+ // Base class
8
+ export { BaseTool } from './base-tool.js';
9
+ // Tool implementations
10
+ export { FileReadTool } from './file-read.js';
11
+ export { FileWriteTool } from './file-write.js';
12
+ export { FileEditTool } from './file-edit.js';
13
+ export { ShellExecTool } from './shell-exec.js';
14
+ export { GrepTool } from './grep.js';
15
+ export { GlobTool } from './glob.js';
16
+ export { GitOpsTool } from './git-ops.js';
17
+ export { TestRunTool } from './test-run.js';
18
+ export { CodeSearchTool } from './code-search.js';
19
+ export { SecurityScanTool } from './security-scan.js';
20
+ export { BrowserTool } from './browser-tool.js';
21
+ // Registry
22
+ export { ToolRegistry, createDefaultRegistry, createDesignRegistry } from './tool-registry.js';
23
+ // Dev Server Manager (Design Mode)
24
+ export { DevServerManager } from './dev-server-manager.js';
25
+ // Design Mode Tools
26
+ export { DesignSnapshotTool, DesignScreenshotTool, DesignNavigateTool, DesignResizeTool, DesignInspectTool, DesignScrollTool, createDesignTools, setDesignBrowserSession, clearDesignBrowserSession, } from './design-tools.js';
27
+ // Validators
28
+ export { validatePath, validateNoShellMeta, validateCommand, isSensitiveFile, isBinaryFile, isImageFile, truncateOutput, detectLanguage, } from './validators.js';
29
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAsCH,aAAa;AACb,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE1C,uBAAuB;AACvB,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEtD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhD,WAAW;AACX,OAAO,EAAE,YAAY,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE/F,mCAAmC;AACnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAG3D,oBAAoB;AACpB,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,uBAAuB,EACvB,yBAAyB,GAC1B,MAAM,mBAAmB,CAAC;AAE3B,aAAa;AACb,OAAO,EACL,YAAY,EACZ,mBAAmB,EACnB,eAAe,EACf,eAAe,EACf,YAAY,EACZ,WAAW,EACX,cAAc,EACd,cAAc,GACf,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * @module security-scan
3
+ * @description Security scanning tool for YUAN agent.
4
+ * Checks for common security vulnerabilities in code:
5
+ * - Hardcoded secrets (API keys, passwords, tokens, AWS keys, private keys)
6
+ * - Dangerous code patterns (eval, innerHTML, SQL injection, command injection)
7
+ * - Dependency vulnerabilities (npm/pnpm audit)
8
+ * - File permission issues
9
+ *
10
+ * No external dependencies -- pure TypeScript + node:fs + node:child_process.
11
+ */
12
+ import type { ParameterDef, RiskLevel } from './types.js';
13
+ import type { ToolResult } from '@yuaone/core';
14
+ import { BaseTool } from './base-tool.js';
15
+ /** Severity classification for security findings */
16
+ export type FindingSeverity = 'critical' | 'high' | 'medium' | 'low';
17
+ /** A single security finding */
18
+ export interface SecurityFinding {
19
+ /** Category of the finding */
20
+ type: string;
21
+ /** File where the issue was found */
22
+ file: string;
23
+ /** Line number (1-based) */
24
+ line: number;
25
+ /** The offending line (redacted if secret) */
26
+ code: string;
27
+ /** Human-readable description of the issue */
28
+ description: string;
29
+ /** Recommended fix */
30
+ recommendation: string;
31
+ }
32
+ /** Full security scan report */
33
+ export interface SecurityReport {
34
+ /** Security score 0-100 (100 = clean) */
35
+ score: number;
36
+ /** Critical severity findings */
37
+ critical: SecurityFinding[];
38
+ /** High severity findings */
39
+ high: SecurityFinding[];
40
+ /** Medium severity findings */
41
+ medium: SecurityFinding[];
42
+ /** Low severity findings */
43
+ low: SecurityFinding[];
44
+ /** Human-readable summary */
45
+ summary: string;
46
+ }
47
+ export declare class SecurityScanTool extends BaseTool {
48
+ readonly name = "security_scan";
49
+ readonly description: string;
50
+ readonly riskLevel: RiskLevel;
51
+ readonly parameters: Record<string, ParameterDef>;
52
+ execute(args: Record<string, unknown>, workDir: string): Promise<ToolResult>;
53
+ }
54
+ /**
55
+ * Run a full security scan on the given directory.
56
+ *
57
+ * @param scanDir - Directory to scan recursively
58
+ * @param skipAudit - If true, skip npm/pnpm audit
59
+ * @returns SecurityReport
60
+ */
61
+ export declare function runSecurityScan(scanDir: string, skipAudit?: boolean): Promise<SecurityReport>;
62
+ //# sourceMappingURL=security-scan.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"security-scan.d.ts","sourceRoot":"","sources":["../src/security-scan.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAMH,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAM1C,oDAAoD;AACpD,MAAM,MAAM,eAAe,GAAG,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;AAErE,gCAAgC;AAChC,MAAM,WAAW,eAAe;IAC9B,8BAA8B;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,qCAAqC;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,4BAA4B;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,8CAA8C;IAC9C,IAAI,EAAE,MAAM,CAAC;IACb,8CAA8C;IAC9C,WAAW,EAAE,MAAM,CAAC;IACpB,sBAAsB;IACtB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,gCAAgC;AAChC,MAAM,WAAW,cAAc;IAC7B,yCAAyC;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,iCAAiC;IACjC,QAAQ,EAAE,eAAe,EAAE,CAAC;IAC5B,6BAA6B;IAC7B,IAAI,EAAE,eAAe,EAAE,CAAC;IACxB,+BAA+B;IAC/B,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,4BAA4B;IAC5B,GAAG,EAAE,eAAe,EAAE,CAAC;IACvB,6BAA6B;IAC7B,OAAO,EAAE,MAAM,CAAC;CACjB;AA2ID,qBAAa,gBAAiB,SAAQ,QAAQ;IAC5C,QAAQ,CAAC,IAAI,mBAAmB;IAChC,QAAQ,CAAC,WAAW,SAG6D;IACjF,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAS;IAEtC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAY/C;IAEI,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;CAsBnF;AAID;;;;;;GAMG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,UAAQ,GAAG,OAAO,CAAC,cAAc,CAAC,CAsCjG"}