@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
@@ -0,0 +1,70 @@
1
+ /**
2
+ * @yuaone/tools — Tool Registry
3
+ *
4
+ * Central registry for all YUAN agent tools.
5
+ * - Register/retrieve tools by name
6
+ * - Generate LLM-ready tool definitions
7
+ * - Execute tools by name
8
+ * - toExecutor() bridges to @yuaone/core's ToolExecutor interface
9
+ */
10
+ import type { ToolDefinition, ToolResult, ToolExecutor } from '@yuaone/core';
11
+ import type { BaseTool } from './base-tool.js';
12
+ export declare class ToolRegistry {
13
+ private tools;
14
+ /** Register a tool instance. */
15
+ register(tool: BaseTool): void;
16
+ /** Register multiple tools at once. */
17
+ registerAll(tools: BaseTool[]): void;
18
+ /** Get a tool by name. */
19
+ get(name: string): BaseTool | undefined;
20
+ /** Check if a tool is registered. */
21
+ has(name: string): boolean;
22
+ /** List all registered tool names. */
23
+ listNames(): string[];
24
+ /** Generate tool definitions for LLM consumption (core-compatible JSON Schema). */
25
+ toDefinitions(): ToolDefinition[];
26
+ /**
27
+ * Execute a tool by name (internal use).
28
+ * @param name - Tool name
29
+ * @param args - Tool arguments (must include _toolCallId)
30
+ * @param workDir - Project working directory
31
+ */
32
+ execute(name: string, args: Record<string, unknown>, workDir: string): Promise<ToolResult>;
33
+ /**
34
+ * Execute a tool by name, passing an optional AbortSignal for interrupt support.
35
+ * @param name - Tool name
36
+ * @param args - Tool arguments
37
+ * @param workDir - Project working directory
38
+ * @param abortSignal - Optional AbortSignal for cancellation
39
+ */
40
+ executeWithSignal(name: string, args: Record<string, unknown>, workDir: string, abortSignal?: AbortSignal): Promise<ToolResult>;
41
+ /**
42
+ * Create a ToolExecutor adapter that implements @yuaone/core's ToolExecutor interface.
43
+ *
44
+ * The adapter:
45
+ * - Provides tool definitions in JSON Schema format
46
+ * - Parses ToolCall.arguments (string → object if needed)
47
+ * - Injects _toolCallId into args
48
+ * - Measures execution duration
49
+ * - Returns core-compatible ToolResult
50
+ *
51
+ * @param workDir - Project working directory for tool execution
52
+ */
53
+ toExecutor(workDir: string): ToolExecutor;
54
+ /** Get the number of registered tools. */
55
+ get size(): number;
56
+ }
57
+ /**
58
+ * Create a ToolRegistry pre-loaded with all built-in YUAN tools.
59
+ */
60
+ export declare function createDefaultRegistry(): ToolRegistry;
61
+ /**
62
+ * Create a ToolRegistry with all standard tools + design mode tools.
63
+ *
64
+ * Design tools (snapshot, screenshot, navigate, resize, inspect, scroll)
65
+ * are loaded via dynamic import to avoid circular dependencies.
66
+ *
67
+ * @param workDir - Project working directory (reserved for future use)
68
+ */
69
+ export declare function createDesignRegistry(workDir: string): Promise<ToolRegistry>;
70
+ //# sourceMappingURL=tool-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-registry.d.ts","sourceRoot":"","sources":["../src/tool-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAY,YAAY,EAAE,MAAM,cAAc,CAAC;AACvF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAE/C,qBAAa,YAAY;IACvB,OAAO,CAAC,KAAK,CAA+B;IAE5C,gCAAgC;IAChC,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI;IAO9B,uCAAuC;IACvC,WAAW,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,IAAI;IAMpC,0BAA0B;IAC1B,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAIvC,qCAAqC;IACrC,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAI1B,sCAAsC;IACtC,SAAS,IAAI,MAAM,EAAE;IAIrB,mFAAmF;IACnF,aAAa,IAAI,cAAc,EAAE;IAIjC;;;;;OAKG;IACG,OAAO,CACX,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,UAAU,CAAC;IAetB;;;;;;OAMG;IACG,iBAAiB,CACrB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,EAAE,MAAM,EACf,WAAW,CAAC,EAAE,WAAW,GACxB,OAAO,CAAC,UAAU,CAAC;IAetB;;;;;;;;;;;OAWG;IACH,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY;IA0CzC,0CAA0C;IAC1C,IAAI,IAAI,IAAI,MAAM,CAEjB;CACF;AAeD;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,YAAY,CAepD;AAED;;;;;;;GAOG;AACH,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAOjF"}
@@ -0,0 +1,181 @@
1
+ /**
2
+ * @yuaone/tools — Tool Registry
3
+ *
4
+ * Central registry for all YUAN agent tools.
5
+ * - Register/retrieve tools by name
6
+ * - Generate LLM-ready tool definitions
7
+ * - Execute tools by name
8
+ * - toExecutor() bridges to @yuaone/core's ToolExecutor interface
9
+ */
10
+ export class ToolRegistry {
11
+ tools = new Map();
12
+ /** Register a tool instance. */
13
+ register(tool) {
14
+ if (this.tools.has(tool.name)) {
15
+ throw new Error(`Tool already registered: ${tool.name}`);
16
+ }
17
+ this.tools.set(tool.name, tool);
18
+ }
19
+ /** Register multiple tools at once. */
20
+ registerAll(tools) {
21
+ for (const tool of tools) {
22
+ this.register(tool);
23
+ }
24
+ }
25
+ /** Get a tool by name. */
26
+ get(name) {
27
+ return this.tools.get(name);
28
+ }
29
+ /** Check if a tool is registered. */
30
+ has(name) {
31
+ return this.tools.has(name);
32
+ }
33
+ /** List all registered tool names. */
34
+ listNames() {
35
+ return [...this.tools.keys()];
36
+ }
37
+ /** Generate tool definitions for LLM consumption (core-compatible JSON Schema). */
38
+ toDefinitions() {
39
+ return [...this.tools.values()].map((t) => t.toDefinition());
40
+ }
41
+ /**
42
+ * Execute a tool by name (internal use).
43
+ * @param name - Tool name
44
+ * @param args - Tool arguments (must include _toolCallId)
45
+ * @param workDir - Project working directory
46
+ */
47
+ async execute(name, args, workDir) {
48
+ const tool = this.tools.get(name);
49
+ if (!tool) {
50
+ return {
51
+ tool_call_id: args._toolCallId ?? '',
52
+ name,
53
+ success: false,
54
+ output: `Error: Unknown tool: ${name}. Available tools: ${this.listNames().join(', ')}`,
55
+ durationMs: 0,
56
+ };
57
+ }
58
+ return tool.execute(args, workDir);
59
+ }
60
+ /**
61
+ * Execute a tool by name, passing an optional AbortSignal for interrupt support.
62
+ * @param name - Tool name
63
+ * @param args - Tool arguments
64
+ * @param workDir - Project working directory
65
+ * @param abortSignal - Optional AbortSignal for cancellation
66
+ */
67
+ async executeWithSignal(name, args, workDir, abortSignal) {
68
+ const tool = this.tools.get(name);
69
+ if (!tool) {
70
+ return {
71
+ tool_call_id: args._toolCallId ?? '',
72
+ name,
73
+ success: false,
74
+ output: `Error: Unknown tool: ${name}. Available tools: ${this.listNames().join(', ')}`,
75
+ durationMs: 0,
76
+ };
77
+ }
78
+ return tool.execute(args, workDir, abortSignal);
79
+ }
80
+ /**
81
+ * Create a ToolExecutor adapter that implements @yuaone/core's ToolExecutor interface.
82
+ *
83
+ * The adapter:
84
+ * - Provides tool definitions in JSON Schema format
85
+ * - Parses ToolCall.arguments (string → object if needed)
86
+ * - Injects _toolCallId into args
87
+ * - Measures execution duration
88
+ * - Returns core-compatible ToolResult
89
+ *
90
+ * @param workDir - Project working directory for tool execution
91
+ */
92
+ toExecutor(workDir) {
93
+ const registry = this;
94
+ const definitions = this.toDefinitions();
95
+ return {
96
+ definitions,
97
+ async execute(call, abortSignal) {
98
+ // Parse arguments: core ToolCall.arguments can be string or object
99
+ let args;
100
+ if (typeof call.arguments === 'string') {
101
+ try {
102
+ args = JSON.parse(call.arguments);
103
+ }
104
+ catch {
105
+ return {
106
+ tool_call_id: call.id,
107
+ name: call.name,
108
+ output: `Error: Failed to parse tool arguments as JSON: ${call.arguments}`,
109
+ success: false,
110
+ durationMs: 0,
111
+ };
112
+ }
113
+ }
114
+ else {
115
+ args = { ...call.arguments };
116
+ }
117
+ // Inject toolCallId for BaseTool.execute
118
+ args._toolCallId = call.id;
119
+ const startTime = Date.now();
120
+ const result = await registry.executeWithSignal(call.name, args, workDir, abortSignal);
121
+ const durationMs = Date.now() - startTime;
122
+ // Ensure result has correct durationMs
123
+ return {
124
+ ...result,
125
+ durationMs,
126
+ };
127
+ },
128
+ };
129
+ }
130
+ /** Get the number of registered tools. */
131
+ get size() {
132
+ return this.tools.size;
133
+ }
134
+ }
135
+ // ─── Factory: create a registry with all built-in tools ──────────────
136
+ import { FileReadTool } from './file-read.js';
137
+ import { FileWriteTool } from './file-write.js';
138
+ import { FileEditTool } from './file-edit.js';
139
+ import { ShellExecTool } from './shell-exec.js';
140
+ import { GrepTool } from './grep.js';
141
+ import { GlobTool } from './glob.js';
142
+ import { GitOpsTool } from './git-ops.js';
143
+ import { TestRunTool } from './test-run.js';
144
+ import { CodeSearchTool } from './code-search.js';
145
+ import { SecurityScanTool } from './security-scan.js';
146
+ /**
147
+ * Create a ToolRegistry pre-loaded with all built-in YUAN tools.
148
+ */
149
+ export function createDefaultRegistry() {
150
+ const registry = new ToolRegistry();
151
+ registry.registerAll([
152
+ new FileReadTool(),
153
+ new FileWriteTool(),
154
+ new FileEditTool(),
155
+ new ShellExecTool(),
156
+ new GrepTool(),
157
+ new GlobTool(),
158
+ new GitOpsTool(),
159
+ new TestRunTool(),
160
+ new CodeSearchTool(),
161
+ new SecurityScanTool(),
162
+ ]);
163
+ return registry;
164
+ }
165
+ /**
166
+ * Create a ToolRegistry with all standard tools + design mode tools.
167
+ *
168
+ * Design tools (snapshot, screenshot, navigate, resize, inspect, scroll)
169
+ * are loaded via dynamic import to avoid circular dependencies.
170
+ *
171
+ * @param workDir - Project working directory (reserved for future use)
172
+ */
173
+ export async function createDesignRegistry(workDir) {
174
+ const registry = createDefaultRegistry();
175
+ const { createDesignTools } = await import('./design-tools.js');
176
+ for (const tool of createDesignTools()) {
177
+ registry.register(tool);
178
+ }
179
+ return registry;
180
+ }
181
+ //# sourceMappingURL=tool-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-registry.js","sourceRoot":"","sources":["../src/tool-registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,137 @@
1
+ /**
2
+ * @yuaone/tools — Type definitions
3
+ *
4
+ * Core types (ToolDefinition, ToolCall, ToolResult, etc.) are re-exported from @yuaone/core.
5
+ * Tool-specific I/O types remain here.
6
+ */
7
+ export type { ToolDefinition, ToolCall, ToolResult, ToolParameterSchema, } from '@yuaone/core';
8
+ export interface ParameterDef {
9
+ type: 'string' | 'number' | 'boolean' | 'array' | 'object';
10
+ description: string;
11
+ required?: boolean;
12
+ default?: unknown;
13
+ enum?: string[];
14
+ items?: ParameterDef;
15
+ }
16
+ export type RiskLevel = 'low' | 'medium' | 'high' | 'critical';
17
+ export interface FileReadInput {
18
+ path: string;
19
+ offset?: number;
20
+ limit?: number;
21
+ }
22
+ export interface FileReadOutput {
23
+ content: string;
24
+ totalLines: number;
25
+ language: string;
26
+ truncated: boolean;
27
+ }
28
+ export interface FileWriteInput {
29
+ path: string;
30
+ content: string;
31
+ createDirectories?: boolean;
32
+ }
33
+ export interface FileWriteOutput {
34
+ bytesWritten: number;
35
+ created: boolean;
36
+ }
37
+ export interface FileEditInput {
38
+ path: string;
39
+ old_string: string;
40
+ new_string: string;
41
+ replace_all?: boolean;
42
+ }
43
+ export interface FileEditOutput {
44
+ replacements: number;
45
+ preview: string;
46
+ }
47
+ export interface ShellExecInput {
48
+ executable: string;
49
+ args: string[];
50
+ cwd?: string;
51
+ timeout?: number;
52
+ env?: Record<string, string>;
53
+ }
54
+ export interface ShellExecOutput {
55
+ exitCode: number;
56
+ stdout: string;
57
+ stderr: string;
58
+ timedOut: boolean;
59
+ durationMs: number;
60
+ }
61
+ export interface GrepInput {
62
+ pattern: string;
63
+ path?: string;
64
+ glob?: string;
65
+ maxResults?: number;
66
+ context?: number;
67
+ }
68
+ export interface GrepMatch {
69
+ file: string;
70
+ line: number;
71
+ content: string;
72
+ contextBefore?: string[];
73
+ contextAfter?: string[];
74
+ }
75
+ export interface GrepOutput {
76
+ matches: GrepMatch[];
77
+ totalMatches: number;
78
+ truncated: boolean;
79
+ }
80
+ export interface GlobInput {
81
+ pattern: string;
82
+ path?: string;
83
+ maxResults?: number;
84
+ }
85
+ export interface GlobOutput {
86
+ files: string[];
87
+ totalMatches: number;
88
+ truncated: boolean;
89
+ }
90
+ export type GitOperation = 'status' | 'diff' | 'log' | 'add' | 'commit' | 'create_branch' | 'stash' | 'restore';
91
+ export interface GitOpsInput {
92
+ operation: GitOperation;
93
+ message?: string;
94
+ files?: string[];
95
+ count?: number;
96
+ branch?: string;
97
+ }
98
+ export interface GitOpsOutput {
99
+ result: string;
100
+ success: boolean;
101
+ }
102
+ export interface TestRunInput {
103
+ testPath?: string;
104
+ framework?: 'jest' | 'vitest' | 'pytest' | 'auto';
105
+ coverage?: boolean;
106
+ }
107
+ export interface TestRunOutput {
108
+ passed: number;
109
+ failed: number;
110
+ skipped: number;
111
+ coverage?: number;
112
+ failedTests: Array<{
113
+ name: string;
114
+ error: string;
115
+ }>;
116
+ stdout: string;
117
+ }
118
+ export type CodeSearchMode = 'symbol' | 'reference' | 'definition';
119
+ export interface CodeSearchInput {
120
+ query: string;
121
+ mode?: CodeSearchMode;
122
+ path?: string;
123
+ language?: string;
124
+ maxResults?: number;
125
+ }
126
+ export interface CodeSearchResult {
127
+ file: string;
128
+ line: number;
129
+ column: number;
130
+ content: string;
131
+ kind: string;
132
+ }
133
+ export interface CodeSearchOutput {
134
+ results: CodeSearchResult[];
135
+ totalCount: number;
136
+ }
137
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js ADDED
@@ -0,0 +1,8 @@
1
+ /**
2
+ * @yuaone/tools — Type definitions
3
+ *
4
+ * Core types (ToolDefinition, ToolCall, ToolResult, etc.) are re-exported from @yuaone/core.
5
+ * Tool-specific I/O types remain here.
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * @yuaone/tools — Common validation utilities
3
+ *
4
+ * Security-first validators for path traversal, shell injection,
5
+ * sensitive file detection, binary detection, and output truncation.
6
+ *
7
+ * Security rules SSOT: @yuaone/core/security.ts
8
+ * This module delegates to the SSOT and provides tool-specific wrappers.
9
+ */
10
+ /**
11
+ * Resolve a path and verify that it (and its symlink target) stays within the
12
+ * allowed project directory. Defends against symlink-based path traversal.
13
+ *
14
+ * @returns `{ valid, resolved, reason? }` — `resolved` is the real path if valid.
15
+ */
16
+ export declare function resolveAndValidatePath(filePath: string, projectRoot: string): {
17
+ valid: boolean;
18
+ resolved: string;
19
+ reason?: string;
20
+ };
21
+ /**
22
+ * Resolve and validate a path to ensure it stays within workDir.
23
+ * Returns the resolved absolute path.
24
+ * Throws on path traversal attempts (including symlink-based).
25
+ */
26
+ export declare function validatePath(inputPath: string, workDir: string): string;
27
+ /**
28
+ * Validate that neither executable nor args contain shell metacharacters.
29
+ * Prevents shell injection when using execFile.
30
+ * Delegates to SHELL_META_PATTERN from @yuaone/core/security (SSOT).
31
+ */
32
+ export declare function validateNoShellMeta(executable: string, args: string[]): void;
33
+ /**
34
+ * Check whether an executable + args combination is blocked.
35
+ * Throws with explanation if blocked.
36
+ * Delegates to @yuaone/core/security.validateCommand (SSOT).
37
+ */
38
+ export declare function validateCommand(executable: string, args: string[]): void;
39
+ /**
40
+ * Check whether a file path matches known sensitive file patterns.
41
+ * Delegates to @yuaone/core/security.isSensitiveFile (SSOT).
42
+ */
43
+ export declare function isSensitiveFile(filePath: string): boolean;
44
+ /**
45
+ * Check whether a file is likely binary by extension and (optionally) content sniffing.
46
+ */
47
+ export declare function isBinaryFile(filePath: string): Promise<boolean>;
48
+ /**
49
+ * Check whether a file is an image.
50
+ */
51
+ export declare function isImageFile(filePath: string): boolean;
52
+ /**
53
+ * Truncate output to maxBytes. Uses head/tail strategy.
54
+ */
55
+ export declare function truncateOutput(output: string, maxBytes?: number): string;
56
+ export declare function detectLanguage(filePath: string): string;
57
+ //# sourceMappingURL=validators.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validators.d.ts","sourceRoot":"","sources":["../src/validators.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAaH;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,GAClB;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAyCvD;AAID;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAyBvE;AAID;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAS5E;AAID;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,CAKxE;AAID;;;GAGG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEzD;AAwBD;;GAEG;AACH,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAuBrE;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAGrD;AAMD;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAE,MAA0B,GAAG,MAAM,CAY3F;AAqBD,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAQvD"}