semantic-primitives 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +201 -0
- package/README.md +449 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +25016 -0
- package/dist/llm/client.d.ts +82 -0
- package/dist/llm/client.d.ts.map +1 -0
- package/dist/llm/index.d.ts +11 -0
- package/dist/llm/index.d.ts.map +1 -0
- package/dist/llm/providers/anthropic.d.ts +13 -0
- package/dist/llm/providers/anthropic.d.ts.map +1 -0
- package/dist/llm/providers/google.d.ts +13 -0
- package/dist/llm/providers/google.d.ts.map +1 -0
- package/dist/llm/providers/index.d.ts +7 -0
- package/dist/llm/providers/index.d.ts.map +1 -0
- package/dist/llm/providers/openai.d.ts +13 -0
- package/dist/llm/providers/openai.d.ts.map +1 -0
- package/dist/llm/types.d.ts +91 -0
- package/dist/llm/types.d.ts.map +1 -0
- package/dist/primitives/bigint/bigint.d.ts +197 -0
- package/dist/primitives/bigint/bigint.d.ts.map +1 -0
- package/dist/primitives/bigint/index.d.ts +7 -0
- package/dist/primitives/bigint/index.d.ts.map +1 -0
- package/dist/primitives/bigint/prompts.d.ts +37 -0
- package/dist/primitives/bigint/prompts.d.ts.map +1 -0
- package/dist/primitives/boolean/boolean.d.ts +194 -0
- package/dist/primitives/boolean/boolean.d.ts.map +1 -0
- package/dist/primitives/boolean/evals/from.evals.d.ts +7 -0
- package/dist/primitives/boolean/evals/from.evals.d.ts.map +1 -0
- package/dist/primitives/boolean/evals/index.d.ts +5 -0
- package/dist/primitives/boolean/evals/index.d.ts.map +1 -0
- package/dist/primitives/boolean/index.d.ts +6 -0
- package/dist/primitives/boolean/index.d.ts.map +1 -0
- package/dist/primitives/boolean/prompts.d.ts +29 -0
- package/dist/primitives/boolean/prompts.d.ts.map +1 -0
- package/dist/primitives/index.d.ts +14 -0
- package/dist/primitives/index.d.ts.map +1 -0
- package/dist/primitives/null/index.d.ts +6 -0
- package/dist/primitives/null/index.d.ts.map +1 -0
- package/dist/primitives/null/null.d.ts +181 -0
- package/dist/primitives/null/null.d.ts.map +1 -0
- package/dist/primitives/null/prompts.d.ts +39 -0
- package/dist/primitives/null/prompts.d.ts.map +1 -0
- package/dist/primitives/number/index.d.ts +6 -0
- package/dist/primitives/number/index.d.ts.map +1 -0
- package/dist/primitives/number/number.d.ts +154 -0
- package/dist/primitives/number/number.d.ts.map +1 -0
- package/dist/primitives/number/number.prompts.d.ts +53 -0
- package/dist/primitives/number/number.prompts.d.ts.map +1 -0
- package/dist/primitives/string/evals/classify.evals.d.ts +7 -0
- package/dist/primitives/string/evals/classify.evals.d.ts.map +1 -0
- package/dist/primitives/string/evals/index.d.ts +6 -0
- package/dist/primitives/string/evals/index.d.ts.map +1 -0
- package/dist/primitives/string/evals/semanticallyEquals.evals.d.ts +7 -0
- package/dist/primitives/string/evals/semanticallyEquals.evals.d.ts.map +1 -0
- package/dist/primitives/string/index.d.ts +206 -0
- package/dist/primitives/string/index.d.ts.map +1 -0
- package/dist/primitives/string/string.prompts.d.ts +45 -0
- package/dist/primitives/string/string.prompts.d.ts.map +1 -0
- package/dist/primitives/symbol/index.d.ts +6 -0
- package/dist/primitives/symbol/index.d.ts.map +1 -0
- package/dist/primitives/symbol/symbol.d.ts +176 -0
- package/dist/primitives/symbol/symbol.d.ts.map +1 -0
- package/dist/primitives/symbol/symbol.prompts.d.ts +53 -0
- package/dist/primitives/symbol/symbol.prompts.d.ts.map +1 -0
- package/dist/primitives/undefined/index.d.ts +5 -0
- package/dist/primitives/undefined/index.d.ts.map +1 -0
- package/dist/primitives/undefined/prompts.d.ts +40 -0
- package/dist/primitives/undefined/prompts.d.ts.map +1 -0
- package/dist/primitives/undefined/undefined.d.ts +216 -0
- package/dist/primitives/undefined/undefined.d.ts.map +1 -0
- package/dist/primitives/void/index.d.ts +5 -0
- package/dist/primitives/void/index.d.ts.map +1 -0
- package/dist/primitives/void/prompts.d.ts +37 -0
- package/dist/primitives/void/prompts.d.ts.map +1 -0
- package/dist/primitives/void/void.d.ts +172 -0
- package/dist/primitives/void/void.d.ts.map +1 -0
- package/dist/shared/base-classes.d.ts +331 -0
- package/dist/shared/base-classes.d.ts.map +1 -0
- package/dist/shared/eval-types.d.ts +82 -0
- package/dist/shared/eval-types.d.ts.map +1 -0
- package/dist/shared/index.d.ts +25 -0
- package/dist/shared/index.d.ts.map +1 -0
- package/dist/shared/interfaces.d.ts +799 -0
- package/dist/shared/interfaces.d.ts.map +1 -0
- package/dist/shared/types.d.ts +335 -0
- package/dist/shared/types.d.ts.map +1 -0
- package/dist/types/array/array.d.ts +250 -0
- package/dist/types/array/array.d.ts.map +1 -0
- package/dist/types/array/index.d.ts +6 -0
- package/dist/types/array/index.d.ts.map +1 -0
- package/dist/types/array/prompts.d.ts +63 -0
- package/dist/types/array/prompts.d.ts.map +1 -0
- package/dist/types/blob-file/blob.d.ts +188 -0
- package/dist/types/blob-file/blob.d.ts.map +1 -0
- package/dist/types/blob-file/file.d.ts +144 -0
- package/dist/types/blob-file/file.d.ts.map +1 -0
- package/dist/types/blob-file/index.d.ts +8 -0
- package/dist/types/blob-file/index.d.ts.map +1 -0
- package/dist/types/blob-file/prompts.d.ts +101 -0
- package/dist/types/blob-file/prompts.d.ts.map +1 -0
- package/dist/types/bun/bun.d.ts +266 -0
- package/dist/types/bun/bun.d.ts.map +1 -0
- package/dist/types/bun/index.d.ts +7 -0
- package/dist/types/bun/index.d.ts.map +1 -0
- package/dist/types/bun/prompts.d.ts +93 -0
- package/dist/types/bun/prompts.d.ts.map +1 -0
- package/dist/types/callable/callable.d.ts +200 -0
- package/dist/types/callable/callable.d.ts.map +1 -0
- package/dist/types/callable/index.d.ts +6 -0
- package/dist/types/callable/index.d.ts.map +1 -0
- package/dist/types/callable/prompts.d.ts +45 -0
- package/dist/types/callable/prompts.d.ts.map +1 -0
- package/dist/types/constructable/constructable.d.ts +150 -0
- package/dist/types/constructable/constructable.d.ts.map +1 -0
- package/dist/types/constructable/index.d.ts +5 -0
- package/dist/types/constructable/index.d.ts.map +1 -0
- package/dist/types/constructable/prompts.d.ts +41 -0
- package/dist/types/constructable/prompts.d.ts.map +1 -0
- package/dist/types/date/date.d.ts +258 -0
- package/dist/types/date/date.d.ts.map +1 -0
- package/dist/types/date/index.d.ts +6 -0
- package/dist/types/date/index.d.ts.map +1 -0
- package/dist/types/date/prompts.d.ts +93 -0
- package/dist/types/date/prompts.d.ts.map +1 -0
- package/dist/types/error/error.d.ts +191 -0
- package/dist/types/error/error.d.ts.map +1 -0
- package/dist/types/error/index.d.ts +6 -0
- package/dist/types/error/index.d.ts.map +1 -0
- package/dist/types/error/prompts.d.ts +49 -0
- package/dist/types/error/prompts.d.ts.map +1 -0
- package/dist/types/event-emitter/event-emitter.d.ts +230 -0
- package/dist/types/event-emitter/event-emitter.d.ts.map +1 -0
- package/dist/types/event-emitter/index.d.ts +6 -0
- package/dist/types/event-emitter/index.d.ts.map +1 -0
- package/dist/types/event-emitter/prompts.d.ts +51 -0
- package/dist/types/event-emitter/prompts.d.ts.map +1 -0
- package/dist/types/fetch/headers.d.ts +126 -0
- package/dist/types/fetch/headers.d.ts.map +1 -0
- package/dist/types/fetch/index.d.ts +9 -0
- package/dist/types/fetch/index.d.ts.map +1 -0
- package/dist/types/fetch/prompts.d.ts +139 -0
- package/dist/types/fetch/prompts.d.ts.map +1 -0
- package/dist/types/fetch/request.d.ts +188 -0
- package/dist/types/fetch/request.d.ts.map +1 -0
- package/dist/types/fetch/response.d.ts +155 -0
- package/dist/types/fetch/response.d.ts.map +1 -0
- package/dist/types/form-data/form-data.d.ts +277 -0
- package/dist/types/form-data/form-data.d.ts.map +1 -0
- package/dist/types/form-data/index.d.ts +7 -0
- package/dist/types/form-data/index.d.ts.map +1 -0
- package/dist/types/form-data/prompts.d.ts +80 -0
- package/dist/types/form-data/prompts.d.ts.map +1 -0
- package/dist/types/index.d.ts +29 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/map/index.d.ts +6 -0
- package/dist/types/map/index.d.ts.map +1 -0
- package/dist/types/map/map.d.ts +204 -0
- package/dist/types/map/map.d.ts.map +1 -0
- package/dist/types/map/prompts.d.ts +56 -0
- package/dist/types/map/prompts.d.ts.map +1 -0
- package/dist/types/never/index.d.ts +5 -0
- package/dist/types/never/index.d.ts.map +1 -0
- package/dist/types/never/never.d.ts +220 -0
- package/dist/types/never/never.d.ts.map +1 -0
- package/dist/types/never/prompts.d.ts +50 -0
- package/dist/types/never/prompts.d.ts.map +1 -0
- package/dist/types/object/index.d.ts +6 -0
- package/dist/types/object/index.d.ts.map +1 -0
- package/dist/types/object/object.d.ts +162 -0
- package/dist/types/object/object.d.ts.map +1 -0
- package/dist/types/object/prompts.d.ts +55 -0
- package/dist/types/object/prompts.d.ts.map +1 -0
- package/dist/types/object-literal/index.d.ts +6 -0
- package/dist/types/object-literal/index.d.ts.map +1 -0
- package/dist/types/object-literal/object-literal.d.ts +223 -0
- package/dist/types/object-literal/object-literal.d.ts.map +1 -0
- package/dist/types/object-literal/prompts.d.ts +49 -0
- package/dist/types/object-literal/prompts.d.ts.map +1 -0
- package/dist/types/promise/index.d.ts +6 -0
- package/dist/types/promise/index.d.ts.map +1 -0
- package/dist/types/promise/promise.d.ts +240 -0
- package/dist/types/promise/promise.d.ts.map +1 -0
- package/dist/types/promise/prompts.d.ts +45 -0
- package/dist/types/promise/prompts.d.ts.map +1 -0
- package/dist/types/record/index.d.ts +5 -0
- package/dist/types/record/index.d.ts.map +1 -0
- package/dist/types/record/prompts.d.ts +45 -0
- package/dist/types/record/prompts.d.ts.map +1 -0
- package/dist/types/record/record.d.ts +179 -0
- package/dist/types/record/record.d.ts.map +1 -0
- package/dist/types/regexp/index.d.ts +7 -0
- package/dist/types/regexp/index.d.ts.map +1 -0
- package/dist/types/regexp/prompts.d.ts +56 -0
- package/dist/types/regexp/prompts.d.ts.map +1 -0
- package/dist/types/regexp/regexp.d.ts +160 -0
- package/dist/types/regexp/regexp.d.ts.map +1 -0
- package/dist/types/set/index.d.ts +6 -0
- package/dist/types/set/index.d.ts.map +1 -0
- package/dist/types/set/prompts.d.ts +60 -0
- package/dist/types/set/prompts.d.ts.map +1 -0
- package/dist/types/set/set.d.ts +261 -0
- package/dist/types/set/set.d.ts.map +1 -0
- package/dist/types/streams/index.d.ts +8 -0
- package/dist/types/streams/index.d.ts.map +1 -0
- package/dist/types/streams/prompts.d.ts +53 -0
- package/dist/types/streams/prompts.d.ts.map +1 -0
- package/dist/types/streams/readable-stream.d.ts +148 -0
- package/dist/types/streams/readable-stream.d.ts.map +1 -0
- package/dist/types/streams/transform-stream.d.ts +67 -0
- package/dist/types/streams/transform-stream.d.ts.map +1 -0
- package/dist/types/streams/writable-stream.d.ts +111 -0
- package/dist/types/streams/writable-stream.d.ts.map +1 -0
- package/dist/types/text-codec/index.d.ts +12 -0
- package/dist/types/text-codec/index.d.ts.map +1 -0
- package/dist/types/text-codec/prompts.d.ts +79 -0
- package/dist/types/text-codec/prompts.d.ts.map +1 -0
- package/dist/types/text-codec/text-codec.d.ts +305 -0
- package/dist/types/text-codec/text-codec.d.ts.map +1 -0
- package/dist/types/tuple/index.d.ts +6 -0
- package/dist/types/tuple/index.d.ts.map +1 -0
- package/dist/types/tuple/prompts.d.ts +41 -0
- package/dist/types/tuple/prompts.d.ts.map +1 -0
- package/dist/types/tuple/tuple.d.ts +221 -0
- package/dist/types/tuple/tuple.d.ts.map +1 -0
- package/dist/types/unknown/index.d.ts +5 -0
- package/dist/types/unknown/index.d.ts.map +1 -0
- package/dist/types/unknown/prompts.d.ts +45 -0
- package/dist/types/unknown/prompts.d.ts.map +1 -0
- package/dist/types/unknown/unknown.d.ts +220 -0
- package/dist/types/unknown/unknown.d.ts.map +1 -0
- package/dist/types/url/index.d.ts +7 -0
- package/dist/types/url/index.d.ts.map +1 -0
- package/dist/types/url/prompts.d.ts +93 -0
- package/dist/types/url/prompts.d.ts.map +1 -0
- package/dist/types/url/url.d.ts +270 -0
- package/dist/types/url/url.d.ts.map +1 -0
- package/package.json +73 -0
|
@@ -0,0 +1,266 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SemanticBun - LLM-enhanced Bun-specific APIs with semantic understanding
|
|
3
|
+
*
|
|
4
|
+
* Provides intelligent wrappers around Bun's file operations, server configuration,
|
|
5
|
+
* shell commands, and environment variable management.
|
|
6
|
+
*
|
|
7
|
+
* Core capabilities:
|
|
8
|
+
* - SemanticBunFile: File operations with content detection and explanation
|
|
9
|
+
* - SemanticServer: Server configuration analysis and suggestions
|
|
10
|
+
* - SemanticShell: Shell command safety checking and explanation
|
|
11
|
+
* - SemanticEnv: Environment variable validation and semantic lookup
|
|
12
|
+
*/
|
|
13
|
+
import type { LLMConfig, Message } from '../../llm/types.ts';
|
|
14
|
+
import type { ValidateResult } from '../../shared/types.ts';
|
|
15
|
+
export type { ValidateResult } from '../../shared/types.ts';
|
|
16
|
+
/** Result of file type detection */
|
|
17
|
+
export interface FileTypeResult {
|
|
18
|
+
type: string;
|
|
19
|
+
subtype?: string;
|
|
20
|
+
confidence: number;
|
|
21
|
+
}
|
|
22
|
+
/** Result of server configuration analysis */
|
|
23
|
+
export interface ServerConfigAnalysis {
|
|
24
|
+
secure: boolean;
|
|
25
|
+
issues: string[];
|
|
26
|
+
suggestions: string[];
|
|
27
|
+
}
|
|
28
|
+
/** Result of command safety assessment */
|
|
29
|
+
export interface CommandSafetyResult {
|
|
30
|
+
safe: boolean;
|
|
31
|
+
reason?: string;
|
|
32
|
+
risks: string[];
|
|
33
|
+
}
|
|
34
|
+
/** Suggestion for a safer command alternative */
|
|
35
|
+
export interface SaferCommandSuggestion {
|
|
36
|
+
command: string;
|
|
37
|
+
reason: string;
|
|
38
|
+
}
|
|
39
|
+
/** Result of environment variable validation */
|
|
40
|
+
export interface EnvValidationResult {
|
|
41
|
+
valid: boolean;
|
|
42
|
+
missing: string[];
|
|
43
|
+
suggestions: {
|
|
44
|
+
variable: string;
|
|
45
|
+
example: string;
|
|
46
|
+
}[];
|
|
47
|
+
}
|
|
48
|
+
/** Result of sensitive environment detection */
|
|
49
|
+
export interface SensitiveEnvResult {
|
|
50
|
+
sensitive: string[];
|
|
51
|
+
recommendation: string;
|
|
52
|
+
}
|
|
53
|
+
/** LLM client interface for dependency injection */
|
|
54
|
+
export interface BunLLMClientInterface {
|
|
55
|
+
chat(options: {
|
|
56
|
+
messages: Message[];
|
|
57
|
+
systemPrompt?: string;
|
|
58
|
+
} & LLMConfig): Promise<{
|
|
59
|
+
content: string;
|
|
60
|
+
}>;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* SemanticBunFileRef - A reference to a file with semantic capabilities
|
|
64
|
+
*
|
|
65
|
+
* Provides LLM-enhanced operations on file references including:
|
|
66
|
+
* - Type detection with semantic understanding
|
|
67
|
+
* - Content explanation
|
|
68
|
+
* - Purpose-based validation
|
|
69
|
+
* - Standard file operations (text, json, exists)
|
|
70
|
+
*/
|
|
71
|
+
export declare class SemanticBunFileRef {
|
|
72
|
+
private readonly _path;
|
|
73
|
+
private readonly _llmClient;
|
|
74
|
+
private readonly _llmConfig?;
|
|
75
|
+
/**
|
|
76
|
+
* Create a SemanticBunFileRef instance
|
|
77
|
+
* @param path - The file path
|
|
78
|
+
* @param llmClient - Optional LLM client for dependency injection
|
|
79
|
+
* @param llmConfig - Optional LLM configuration
|
|
80
|
+
*/
|
|
81
|
+
constructor(path: string, llmClient?: BunLLMClientInterface, llmConfig?: LLMConfig);
|
|
82
|
+
/**
|
|
83
|
+
* Get the file path
|
|
84
|
+
*/
|
|
85
|
+
get path(): string;
|
|
86
|
+
/**
|
|
87
|
+
* Detect the file type semantically.
|
|
88
|
+
*
|
|
89
|
+
* @returns File type detection with confidence
|
|
90
|
+
*
|
|
91
|
+
* @example
|
|
92
|
+
* await fileRef.detectType()
|
|
93
|
+
* // { type: "json", subtype: "package-json", confidence: 0.95 }
|
|
94
|
+
*/
|
|
95
|
+
detectType(): Promise<FileTypeResult>;
|
|
96
|
+
/**
|
|
97
|
+
* Read and explain the file contents.
|
|
98
|
+
*
|
|
99
|
+
* @returns Human-readable explanation of the file
|
|
100
|
+
*
|
|
101
|
+
* @example
|
|
102
|
+
* await fileRef.explain()
|
|
103
|
+
* // "Node.js package.json with 15 dependencies, configured for TypeScript"
|
|
104
|
+
*/
|
|
105
|
+
explain(): Promise<string>;
|
|
106
|
+
/**
|
|
107
|
+
* Validate file contents for a specific purpose.
|
|
108
|
+
*
|
|
109
|
+
* @param purpose - Intended use of the file
|
|
110
|
+
* @returns Validation result with issues
|
|
111
|
+
*
|
|
112
|
+
* @example
|
|
113
|
+
* await fileRef.validateFor("production deployment")
|
|
114
|
+
* // { valid: false, issues: ["Contains development dependencies"] }
|
|
115
|
+
*/
|
|
116
|
+
validateFor(purpose: string): Promise<ValidateResult>;
|
|
117
|
+
/**
|
|
118
|
+
* Read file as text with encoding detection.
|
|
119
|
+
*
|
|
120
|
+
* @returns File content as string
|
|
121
|
+
*/
|
|
122
|
+
text(): Promise<string>;
|
|
123
|
+
/**
|
|
124
|
+
* Read and parse JSON with validation.
|
|
125
|
+
*
|
|
126
|
+
* @returns Parsed JSON content
|
|
127
|
+
*/
|
|
128
|
+
json<T>(): Promise<T>;
|
|
129
|
+
/**
|
|
130
|
+
* Check if file exists and is accessible.
|
|
131
|
+
*
|
|
132
|
+
* @returns true if file exists
|
|
133
|
+
*/
|
|
134
|
+
exists(): Promise<boolean>;
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Analyze server configuration for issues.
|
|
138
|
+
*
|
|
139
|
+
* @param config - Server configuration object
|
|
140
|
+
* @param llmClient - Optional LLM client for dependency injection
|
|
141
|
+
* @param llmConfig - Optional LLM configuration
|
|
142
|
+
* @returns Configuration analysis with issues and suggestions
|
|
143
|
+
*
|
|
144
|
+
* @example
|
|
145
|
+
* analyzeServerConfig({ port: 3000 })
|
|
146
|
+
* // { secure: false, issues: ["No HTTPS configured"], suggestions: [...] }
|
|
147
|
+
*/
|
|
148
|
+
export declare function analyzeServerConfig(config: object, llmClient?: BunLLMClientInterface, llmConfig?: LLMConfig): Promise<ServerConfigAnalysis>;
|
|
149
|
+
/**
|
|
150
|
+
* Suggest optimal server configuration.
|
|
151
|
+
*
|
|
152
|
+
* @param requirements - Server requirements
|
|
153
|
+
* @param llmClient - Optional LLM client for dependency injection
|
|
154
|
+
* @param llmConfig - Optional LLM configuration
|
|
155
|
+
* @returns Suggested server configuration
|
|
156
|
+
*
|
|
157
|
+
* @example
|
|
158
|
+
* suggestServerConfig({ purpose: "REST API", scale: "medium" })
|
|
159
|
+
*/
|
|
160
|
+
export declare function suggestServerConfig(requirements: {
|
|
161
|
+
purpose: string;
|
|
162
|
+
scale?: 'small' | 'medium' | 'large';
|
|
163
|
+
}, llmClient?: BunLLMClientInterface, llmConfig?: LLMConfig): Promise<object>;
|
|
164
|
+
/**
|
|
165
|
+
* Check if a shell command is safe to execute.
|
|
166
|
+
*
|
|
167
|
+
* @param command - Command to check
|
|
168
|
+
* @param llmClient - Optional LLM client for dependency injection
|
|
169
|
+
* @param llmConfig - Optional LLM configuration
|
|
170
|
+
* @returns Safety assessment with risks
|
|
171
|
+
*
|
|
172
|
+
* @example
|
|
173
|
+
* isCommandSafe("rm -rf /")
|
|
174
|
+
* // { safe: false, reason: "Destructive command targeting root directory", risks: [...] }
|
|
175
|
+
*/
|
|
176
|
+
export declare function isCommandSafe(command: string, llmClient?: BunLLMClientInterface, llmConfig?: LLMConfig): Promise<CommandSafetyResult>;
|
|
177
|
+
/**
|
|
178
|
+
* Explain what a shell command does.
|
|
179
|
+
*
|
|
180
|
+
* @param command - Command to explain
|
|
181
|
+
* @param llmClient - Optional LLM client for dependency injection
|
|
182
|
+
* @param llmConfig - Optional LLM configuration
|
|
183
|
+
* @returns Human-readable explanation
|
|
184
|
+
*
|
|
185
|
+
* @example
|
|
186
|
+
* explainCommand("find . -name '*.ts' | xargs wc -l")
|
|
187
|
+
* // "Counts total lines of code in all TypeScript files recursively"
|
|
188
|
+
*/
|
|
189
|
+
export declare function explainCommand(command: string, llmClient?: BunLLMClientInterface, llmConfig?: LLMConfig): Promise<string>;
|
|
190
|
+
/**
|
|
191
|
+
* Suggest a safer alternative for a command.
|
|
192
|
+
*
|
|
193
|
+
* @param command - Command to improve
|
|
194
|
+
* @param llmClient - Optional LLM client for dependency injection
|
|
195
|
+
* @param llmConfig - Optional LLM configuration
|
|
196
|
+
* @returns Safer alternative or null if already safe
|
|
197
|
+
*
|
|
198
|
+
* @example
|
|
199
|
+
* suggestSaferCommand("rm file.txt")
|
|
200
|
+
* // { command: "rm -i file.txt", reason: "Interactive mode prevents accidental deletion" }
|
|
201
|
+
*/
|
|
202
|
+
export declare function suggestSaferCommand(command: string, llmClient?: BunLLMClientInterface, llmConfig?: LLMConfig): Promise<SaferCommandSuggestion | null>;
|
|
203
|
+
/**
|
|
204
|
+
* Validate environment configuration.
|
|
205
|
+
*
|
|
206
|
+
* @param required - Required environment variable names
|
|
207
|
+
* @param llmClient - Optional LLM client for dependency injection
|
|
208
|
+
* @param llmConfig - Optional LLM configuration
|
|
209
|
+
* @returns Validation result with missing variables and suggestions
|
|
210
|
+
*
|
|
211
|
+
* @example
|
|
212
|
+
* validateEnv(["DATABASE_URL", "API_KEY"])
|
|
213
|
+
* // { valid: false, missing: ["API_KEY"], suggestions: [...] }
|
|
214
|
+
*/
|
|
215
|
+
export declare function validateEnv(required: string[], llmClient?: BunLLMClientInterface, llmConfig?: LLMConfig): Promise<EnvValidationResult>;
|
|
216
|
+
/**
|
|
217
|
+
* Detect sensitive environment variables.
|
|
218
|
+
*
|
|
219
|
+
* @param llmClient - Optional LLM client for dependency injection
|
|
220
|
+
* @param llmConfig - Optional LLM configuration
|
|
221
|
+
* @returns Sensitive variable analysis with recommendations
|
|
222
|
+
*
|
|
223
|
+
* @example
|
|
224
|
+
* detectSensitiveEnv()
|
|
225
|
+
* // { sensitive: ["DATABASE_URL", "API_KEY"], recommendation: "Use secrets manager" }
|
|
226
|
+
*/
|
|
227
|
+
export declare function detectSensitiveEnv(llmClient?: BunLLMClientInterface, llmConfig?: LLMConfig): Promise<SensitiveEnvResult>;
|
|
228
|
+
/**
|
|
229
|
+
* Get an env variable with semantic fallback.
|
|
230
|
+
*
|
|
231
|
+
* @param nameOrDescription - Variable name or semantic description
|
|
232
|
+
* @param llmClient - Optional LLM client for dependency injection
|
|
233
|
+
* @param llmConfig - Optional LLM configuration
|
|
234
|
+
* @returns Variable value or undefined
|
|
235
|
+
*
|
|
236
|
+
* @example
|
|
237
|
+
* getEnv("database connection string")
|
|
238
|
+
* // Matches DATABASE_URL, DB_CONNECTION, etc.
|
|
239
|
+
*/
|
|
240
|
+
export declare function getEnv(nameOrDescription: string, llmClient?: BunLLMClientInterface, llmConfig?: LLMConfig): Promise<string | undefined>;
|
|
241
|
+
/**
|
|
242
|
+
* SemanticBun - Unified namespace for all semantic Bun operations
|
|
243
|
+
*/
|
|
244
|
+
export declare const SemanticBun: {
|
|
245
|
+
/**
|
|
246
|
+
* Create a semantic file reference.
|
|
247
|
+
*
|
|
248
|
+
* @param path - File path
|
|
249
|
+
* @param llmClient - Optional LLM client
|
|
250
|
+
* @param llmConfig - Optional LLM configuration
|
|
251
|
+
* @returns SemanticBunFileRef instance
|
|
252
|
+
*
|
|
253
|
+
* @example
|
|
254
|
+
* const config = await SemanticBun.file("config.json").json()
|
|
255
|
+
*/
|
|
256
|
+
file(path: string, llmClient?: BunLLMClientInterface, llmConfig?: LLMConfig): SemanticBunFileRef;
|
|
257
|
+
analyzeServerConfig: typeof analyzeServerConfig;
|
|
258
|
+
suggestServerConfig: typeof suggestServerConfig;
|
|
259
|
+
isCommandSafe: typeof isCommandSafe;
|
|
260
|
+
explainCommand: typeof explainCommand;
|
|
261
|
+
suggestSaferCommand: typeof suggestSaferCommand;
|
|
262
|
+
validateEnv: typeof validateEnv;
|
|
263
|
+
detectSensitiveEnv: typeof detectSensitiveEnv;
|
|
264
|
+
getEnv: typeof getEnv;
|
|
265
|
+
};
|
|
266
|
+
//# sourceMappingURL=bun.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bun.d.ts","sourceRoot":"","sources":["../../../src/types/bun/bun.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SemanticBun Module
|
|
3
|
+
* LLM-enhanced Bun-specific APIs with semantic understanding
|
|
4
|
+
*/
|
|
5
|
+
export { SemanticBun, SemanticBunFileRef, analyzeServerConfig, suggestServerConfig, isCommandSafe, explainCommand, suggestSaferCommand, validateEnv, detectSensitiveEnv, getEnv, type FileTypeResult, type ServerConfigAnalysis, type CommandSafetyResult, type SaferCommandSuggestion, type EnvValidationResult, type SensitiveEnvResult, type BunLLMClientInterface, } from './bun.ts';
|
|
6
|
+
export type { ValidateResult } from '../../shared/types.ts';
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/bun/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EACL,WAAW,EACX,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,aAAa,EACb,cAAc,EACd,mBAAmB,EACnB,WAAW,EACX,kBAAkB,EAClB,MAAM,EACN,KAAK,cAAc,EACnB,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,sBAAsB,EAC3B,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,GAC3B,MAAM,UAAU,CAAC;AAGlB,YAAY,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Prompts for SemanticBun LLM operations
|
|
3
|
+
* These prompts are used for various semantic Bun API operations that require LLM understanding
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* System prompt for file type detection
|
|
7
|
+
*/
|
|
8
|
+
export declare const DETECT_FILE_TYPE_SYSTEM = "You are a file type detection assistant. Your task is to analyze file paths, names, and optionally content to determine the file type.\n\nConsider:\n- File extension and common naming patterns\n- Content structure if provided (JSON, YAML, XML, etc.)\n- Common configuration file patterns (package.json, tsconfig.json, .env, etc.)\n- Source code file patterns\n- Document and media file types\n\nAlways respond with valid JSON only.";
|
|
9
|
+
/**
|
|
10
|
+
* User prompt template for file type detection
|
|
11
|
+
*/
|
|
12
|
+
export declare function detectFileTypePrompt(path: string, contentPreview?: string): string;
|
|
13
|
+
/**
|
|
14
|
+
* System prompt for file content explanation
|
|
15
|
+
*/
|
|
16
|
+
export declare const EXPLAIN_FILE_SYSTEM = "You are a file content explanation assistant. Your task is to explain what a file contains and its purpose in human-readable terms.\n\nConsider:\n- The file's purpose in a project context\n- Key configuration or content elements\n- Dependencies, scripts, or important settings\n- Potential issues or notable configurations\n\nProvide concise, informative explanations.\n\nAlways respond with valid JSON only.";
|
|
17
|
+
/**
|
|
18
|
+
* User prompt template for file explanation
|
|
19
|
+
*/
|
|
20
|
+
export declare function explainFilePrompt(path: string, content: string): string;
|
|
21
|
+
/**
|
|
22
|
+
* System prompt for file validation for purpose
|
|
23
|
+
*/
|
|
24
|
+
export declare const VALIDATE_FILE_FOR_SYSTEM = "You are a file validation assistant. Your task is to validate file contents for specific use cases and purposes.\n\nConsider:\n- Required fields or configurations for the purpose\n- Security concerns (exposed secrets, debug settings, etc.)\n- Best practices for the file type\n- Production vs development configurations\n- Missing or incorrect settings\n\nAlways respond with valid JSON only.";
|
|
25
|
+
/**
|
|
26
|
+
* User prompt template for purpose validation
|
|
27
|
+
*/
|
|
28
|
+
export declare function validateFileForPrompt(path: string, content: string, purpose: string): string;
|
|
29
|
+
/**
|
|
30
|
+
* System prompt for server configuration analysis
|
|
31
|
+
*/
|
|
32
|
+
export declare const ANALYZE_SERVER_CONFIG_SYSTEM = "You are a Bun server configuration analyst. Your task is to analyze Bun.serve() configurations for security, performance, and best practices.\n\nConsider:\n- HTTPS/TLS configuration\n- CORS settings\n- Rate limiting\n- Request validation\n- Error handling\n- WebSocket configuration\n- Development vs production settings\n- Port and hostname security\n\nAlways respond with valid JSON only.";
|
|
33
|
+
/**
|
|
34
|
+
* User prompt template for server config analysis
|
|
35
|
+
*/
|
|
36
|
+
export declare function analyzeServerConfigPrompt(config: string): string;
|
|
37
|
+
/**
|
|
38
|
+
* System prompt for server configuration suggestions
|
|
39
|
+
*/
|
|
40
|
+
export declare const SUGGEST_SERVER_CONFIG_SYSTEM = "You are a Bun server configuration expert. Your task is to suggest optimal server configurations based on requirements.\n\nConsider:\n- Purpose (REST API, static files, WebSocket, etc.)\n- Scale requirements\n- Security best practices\n- Performance optimizations\n- Common middleware needs\n\nAlways respond with valid JSON only.";
|
|
41
|
+
/**
|
|
42
|
+
* User prompt template for server config suggestions
|
|
43
|
+
*/
|
|
44
|
+
export declare function suggestServerConfigPrompt(purpose: string, scale?: 'small' | 'medium' | 'large'): string;
|
|
45
|
+
/**
|
|
46
|
+
* System prompt for command safety assessment
|
|
47
|
+
*/
|
|
48
|
+
export declare const IS_COMMAND_SAFE_SYSTEM = "You are a shell command safety analyst. Your task is to assess whether shell commands are safe to execute.\n\nConsider these risk factors:\n- Destructive operations (rm, del, format, etc.)\n- System-wide impact (sudo, admin commands)\n- Data exfiltration risks\n- Privilege escalation\n- Network operations\n- File permission changes\n- Environment variable exposure\n- Command injection vulnerabilities\n- Piping to dangerous commands\n\nClassify risks by severity and provide clear explanations.\n\nAlways respond with valid JSON only.";
|
|
49
|
+
/**
|
|
50
|
+
* User prompt template for command safety check
|
|
51
|
+
*/
|
|
52
|
+
export declare function isCommandSafePrompt(command: string): string;
|
|
53
|
+
/**
|
|
54
|
+
* System prompt for command explanation
|
|
55
|
+
*/
|
|
56
|
+
export declare const EXPLAIN_COMMAND_SYSTEM = "You are a shell command explanation assistant. Your task is to explain what shell commands do in human-readable terms.\n\nConsider:\n- The main command and its purpose\n- All flags and options\n- Piped commands and their effects\n- Redirections and their targets\n- Environment variables used\n- Overall effect of the command\n\nProvide clear, concise explanations suitable for developers.\n\nAlways respond with valid JSON only.";
|
|
57
|
+
/**
|
|
58
|
+
* User prompt template for command explanation
|
|
59
|
+
*/
|
|
60
|
+
export declare function explainCommandPrompt(command: string): string;
|
|
61
|
+
/**
|
|
62
|
+
* System prompt for safer command suggestions
|
|
63
|
+
*/
|
|
64
|
+
export declare const SUGGEST_SAFER_COMMAND_SYSTEM = "You are a shell command safety advisor. Your task is to suggest safer alternatives to potentially risky shell commands.\n\nConsider:\n- Interactive modes for destructive operations\n- Dry-run options\n- Backup strategies\n- More specific targeting\n- Permission restrictions\n- Safer alternatives that achieve the same goal\n\nAlways respond with valid JSON only.";
|
|
65
|
+
/**
|
|
66
|
+
* User prompt template for safer command suggestion
|
|
67
|
+
*/
|
|
68
|
+
export declare function suggestSaferCommandPrompt(command: string): string;
|
|
69
|
+
/**
|
|
70
|
+
* System prompt for environment validation
|
|
71
|
+
*/
|
|
72
|
+
export declare const VALIDATE_ENV_SYSTEM = "You are an environment variable validation assistant. Your task is to validate that required environment variables are properly configured.\n\nConsider:\n- Presence of required variables\n- Correct naming conventions\n- Common environment variable patterns\n- Suggestions for missing variables\n\nAlways respond with valid JSON only.";
|
|
73
|
+
/**
|
|
74
|
+
* User prompt template for environment validation
|
|
75
|
+
*/
|
|
76
|
+
export declare function validateEnvPrompt(required: string[], currentEnv: string[]): string;
|
|
77
|
+
/**
|
|
78
|
+
* System prompt for sensitive env detection
|
|
79
|
+
*/
|
|
80
|
+
export declare const DETECT_SENSITIVE_ENV_SYSTEM = "You are a security analyst for environment variables. Your task is to identify sensitive environment variables that should be protected.\n\nSensitive variables typically include:\n- API keys and tokens\n- Database credentials\n- Encryption keys and secrets\n- OAuth credentials\n- Private keys\n- Connection strings with credentials\n- Service account credentials\n\nAlways respond with valid JSON only.";
|
|
81
|
+
/**
|
|
82
|
+
* User prompt template for sensitive env detection
|
|
83
|
+
*/
|
|
84
|
+
export declare function detectSensitiveEnvPrompt(envNames: string[]): string;
|
|
85
|
+
/**
|
|
86
|
+
* System prompt for semantic env lookup
|
|
87
|
+
*/
|
|
88
|
+
export declare const GET_ENV_SEMANTIC_SYSTEM = "You are an environment variable matching assistant. Your task is to match semantic descriptions to environment variable names.\n\nConsider:\n- Common naming conventions (DATABASE_URL, DB_URL, DB_CONNECTION)\n- Abbreviations and variations\n- Purpose-based naming\n- Service-specific patterns\n\nAlways respond with valid JSON only.";
|
|
89
|
+
/**
|
|
90
|
+
* User prompt template for semantic env lookup
|
|
91
|
+
*/
|
|
92
|
+
export declare function getEnvSemanticPrompt(description: string, availableEnvs: string[]): string;
|
|
93
|
+
//# sourceMappingURL=prompts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../../src/types/bun/prompts.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH;;GAEG;AACH,eAAO,MAAM,uBAAuB,obASC,CAAC;AAEtC;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM,CAWlF;AAED;;GAEG;AACH,eAAO,MAAM,mBAAmB,6ZAUK,CAAC;AAEtC;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CASvE;AAED;;GAEG;AACH,eAAO,MAAM,wBAAwB,6YASA,CAAC;AAEtC;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAU5F;AAMD;;GAEG;AACH,eAAO,MAAM,4BAA4B,2YAYJ,CAAC;AAEtC;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAQhE;AAED;;GAEG;AACH,eAAO,MAAM,4BAA4B,+UASJ,CAAC;AAEtC;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,CAcvG;AAMD;;GAEG;AACH,eAAO,MAAM,sBAAsB,8hBAeE,CAAC;AAEtC;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAO3D;AAED;;GAEG;AACH,eAAO,MAAM,sBAAsB,kbAYE,CAAC;AAEtC;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAO5D;AAED;;GAEG;AACH,eAAO,MAAM,4BAA4B,gXAUJ,CAAC;AAEtC;;GAEG;AACH,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAUjE;AAMD;;GAEG;AACH,eAAO,MAAM,mBAAmB,kVAQK,CAAC;AAEtC;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,MAAM,CAQlF;AAED;;GAEG;AACH,eAAO,MAAM,2BAA2B,wZAWH,CAAC;AAEtC;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,CAOnE;AAED;;GAEG;AACH,eAAO,MAAM,uBAAuB,gVAQC,CAAC;AAEtC;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,GAAG,MAAM,CAQzF"}
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SemanticCallable
|
|
3
|
+
* A callable type with LLM-powered semantic understanding
|
|
4
|
+
*
|
|
5
|
+
* Implements:
|
|
6
|
+
* - Behavioral analysis and comparison
|
|
7
|
+
* - Signature inference from usage patterns
|
|
8
|
+
* - Intelligent argument validation
|
|
9
|
+
* - Test case generation
|
|
10
|
+
* - Issue detection
|
|
11
|
+
*/
|
|
12
|
+
import type { LLMClient } from '../../llm/client.ts';
|
|
13
|
+
import type { SemanticEqualsResult, ValidateResult, DetectedIssue, SafetyResult } from '../../shared/types.ts';
|
|
14
|
+
export type { SemanticEqualsResult, ValidateResult, DetectedIssue, SafetyResult };
|
|
15
|
+
/** Inferred signature result */
|
|
16
|
+
export interface InferredSignature {
|
|
17
|
+
params: string[];
|
|
18
|
+
return: string;
|
|
19
|
+
confidence: number;
|
|
20
|
+
}
|
|
21
|
+
/** Wrapper suggestion result */
|
|
22
|
+
export interface WrapperSuggestion {
|
|
23
|
+
code: string;
|
|
24
|
+
reason: string;
|
|
25
|
+
}
|
|
26
|
+
/** Generated test case for callable (typed version) */
|
|
27
|
+
export interface CallableTestCase<TInput extends unknown[] = unknown[], TOutput = unknown> {
|
|
28
|
+
inputs: TInput;
|
|
29
|
+
expectedOutput: TOutput;
|
|
30
|
+
description: string;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* SemanticCallable - Function wrapper with LLM-powered semantic understanding
|
|
34
|
+
*
|
|
35
|
+
* Wraps a function and provides intelligent analysis, validation, and code generation.
|
|
36
|
+
*/
|
|
37
|
+
export declare class SemanticCallable<T extends (...args: never[]) => unknown> {
|
|
38
|
+
readonly [Symbol.toStringTag] = "SemanticCallable";
|
|
39
|
+
private readonly _fn;
|
|
40
|
+
private readonly _description?;
|
|
41
|
+
private readonly _client;
|
|
42
|
+
private _cachedSource?;
|
|
43
|
+
private constructor();
|
|
44
|
+
/**
|
|
45
|
+
* Wrap a function with semantic callable capabilities.
|
|
46
|
+
*
|
|
47
|
+
* @param fn - Function to wrap
|
|
48
|
+
* @param description - Optional description of what the function does
|
|
49
|
+
* @param client - Optional LLM client
|
|
50
|
+
* @returns SemanticCallable wrapper
|
|
51
|
+
*
|
|
52
|
+
* @example
|
|
53
|
+
* const calc = SemanticCallable.from((a, b) => a + b, "adds two numbers")
|
|
54
|
+
*/
|
|
55
|
+
static from<T extends (...args: never[]) => unknown>(fn: T, description?: string, client?: LLMClient): SemanticCallable<T>;
|
|
56
|
+
/**
|
|
57
|
+
* Get the source code representation of the function.
|
|
58
|
+
* Uses Function.prototype.toString() for native functions.
|
|
59
|
+
*/
|
|
60
|
+
private getSource;
|
|
61
|
+
/**
|
|
62
|
+
* Check if two callables are behaviorally equivalent.
|
|
63
|
+
* Same outputs for same inputs, regardless of implementation.
|
|
64
|
+
*
|
|
65
|
+
* @param other - Callable to compare
|
|
66
|
+
* @param testCases - Optional inputs to test with
|
|
67
|
+
* @returns Equivalence result with confidence
|
|
68
|
+
*
|
|
69
|
+
* @example
|
|
70
|
+
* fn1.semanticallyEquals(fn2, [[1, 2], [3, 4]])
|
|
71
|
+
* // { equivalent: true, confidence: 0.95 }
|
|
72
|
+
*/
|
|
73
|
+
semanticallyEquals(other: ((...args: Parameters<T>) => ReturnType<T>) | SemanticCallable<T>, testCases?: Parameters<T>[]): Promise<SemanticEqualsResult>;
|
|
74
|
+
/**
|
|
75
|
+
* Explain what this callable does.
|
|
76
|
+
*
|
|
77
|
+
* @returns Human-readable explanation
|
|
78
|
+
*
|
|
79
|
+
* @example
|
|
80
|
+
* fn.explain()
|
|
81
|
+
* // "Takes two numbers and returns their sum, handling NaN edge cases"
|
|
82
|
+
*/
|
|
83
|
+
explain(): Promise<string>;
|
|
84
|
+
/**
|
|
85
|
+
* Infer parameter types from usage patterns.
|
|
86
|
+
*
|
|
87
|
+
* @param sampleCalls - Sample inputs used to call the function
|
|
88
|
+
* @returns Inferred signature with confidence
|
|
89
|
+
*
|
|
90
|
+
* @example
|
|
91
|
+
* fn.inferSignature([[1, 2], ["a", "b"], [true, false]])
|
|
92
|
+
* // { params: ["number | string | boolean", "number | string | boolean"], return: "..." }
|
|
93
|
+
*/
|
|
94
|
+
inferSignature(sampleCalls: Parameters<T>[]): Promise<InferredSignature>;
|
|
95
|
+
/**
|
|
96
|
+
* Generate TypeScript type definition for this callable.
|
|
97
|
+
*
|
|
98
|
+
* @returns Type definition string
|
|
99
|
+
*
|
|
100
|
+
* @example
|
|
101
|
+
* fn.generateTypeDefinition()
|
|
102
|
+
* // "type Calculator = (a: number, b: number) => number;"
|
|
103
|
+
*/
|
|
104
|
+
generateTypeDefinition(): Promise<string>;
|
|
105
|
+
/**
|
|
106
|
+
* Validate inputs against semantic rules.
|
|
107
|
+
*
|
|
108
|
+
* @param args - Arguments to validate
|
|
109
|
+
* @param rules - Optional validation rules
|
|
110
|
+
* @returns Validation result
|
|
111
|
+
*
|
|
112
|
+
* @example
|
|
113
|
+
* divide.validateArgs([10, 0], ["divisor must not be zero"])
|
|
114
|
+
* // { valid: false, issues: ["divisor is zero"] }
|
|
115
|
+
*/
|
|
116
|
+
validateArgs(args: Parameters<T>, rules?: string[]): Promise<ValidateResult>;
|
|
117
|
+
/**
|
|
118
|
+
* Generate test cases for this callable.
|
|
119
|
+
*
|
|
120
|
+
* @returns Generated test cases
|
|
121
|
+
*
|
|
122
|
+
* @example
|
|
123
|
+
* fn.generateTests()
|
|
124
|
+
* // [
|
|
125
|
+
* // { inputs: [0, 0], expectedOutput: 0, description: "zero case" },
|
|
126
|
+
* // { inputs: [1, -1], expectedOutput: 0, description: "opposite numbers" }
|
|
127
|
+
* // ]
|
|
128
|
+
*/
|
|
129
|
+
generateTests(): Promise<CallableTestCase<Parameters<T>, ReturnType<T>>[]>;
|
|
130
|
+
/**
|
|
131
|
+
* Suggest type-safe wrapper or decorator.
|
|
132
|
+
*
|
|
133
|
+
* @returns Suggested wrapper code with reasoning
|
|
134
|
+
*
|
|
135
|
+
* @example
|
|
136
|
+
* fn.suggestWrapper()
|
|
137
|
+
* // { code: "function safeDivide(a: number, b: number): number | null { ... }", reason: "..." }
|
|
138
|
+
*/
|
|
139
|
+
suggestWrapper(): Promise<WrapperSuggestion>;
|
|
140
|
+
/**
|
|
141
|
+
* Detect potential issues with the callable.
|
|
142
|
+
*
|
|
143
|
+
* @returns Detected issues with severity
|
|
144
|
+
*
|
|
145
|
+
* @example
|
|
146
|
+
* fn.detectIssues()
|
|
147
|
+
* // [{ issue: "No null check for optional param", severity: "warning" }]
|
|
148
|
+
*/
|
|
149
|
+
detectIssues(): Promise<DetectedIssue[]>;
|
|
150
|
+
/**
|
|
151
|
+
* Check if the callable is safe to call with given arguments.
|
|
152
|
+
*
|
|
153
|
+
* @param args - Arguments to check
|
|
154
|
+
* @returns Safety assessment
|
|
155
|
+
*
|
|
156
|
+
* @example
|
|
157
|
+
* divide.isSafeToCall([10, 0])
|
|
158
|
+
* // { safe: false, reason: "Division by zero" }
|
|
159
|
+
*/
|
|
160
|
+
isSafeToCall(args: Parameters<T>): Promise<SafetyResult>;
|
|
161
|
+
/**
|
|
162
|
+
* Call the underlying function.
|
|
163
|
+
*
|
|
164
|
+
* @param args - Arguments to pass to the function
|
|
165
|
+
* @returns Function result
|
|
166
|
+
*
|
|
167
|
+
* @example
|
|
168
|
+
* const result = add.call(1, 2)
|
|
169
|
+
* // 3
|
|
170
|
+
*/
|
|
171
|
+
call(...args: Parameters<T>): ReturnType<T>;
|
|
172
|
+
/**
|
|
173
|
+
* Get the underlying function.
|
|
174
|
+
*
|
|
175
|
+
* @returns Original function
|
|
176
|
+
*
|
|
177
|
+
* @example
|
|
178
|
+
* const originalFn = semanticCallable.valueOf()
|
|
179
|
+
*/
|
|
180
|
+
valueOf(): T;
|
|
181
|
+
/**
|
|
182
|
+
* Get the description of this callable.
|
|
183
|
+
*
|
|
184
|
+
* @returns Description if provided, undefined otherwise
|
|
185
|
+
*/
|
|
186
|
+
getDescription(): string | undefined;
|
|
187
|
+
/**
|
|
188
|
+
* Get the function's name.
|
|
189
|
+
*
|
|
190
|
+
* @returns Function name or 'anonymous'
|
|
191
|
+
*/
|
|
192
|
+
getName(): string;
|
|
193
|
+
/**
|
|
194
|
+
* Get the function's arity (number of expected arguments).
|
|
195
|
+
*
|
|
196
|
+
* @returns Number of parameters
|
|
197
|
+
*/
|
|
198
|
+
getArity(): number;
|
|
199
|
+
}
|
|
200
|
+
//# sourceMappingURL=callable.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"callable.d.ts","sourceRoot":"","sources":["../../../src/types/callable/callable.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SemanticCallable module
|
|
3
|
+
* LLM-enhanced callable type with semantic understanding
|
|
4
|
+
*/
|
|
5
|
+
export { SemanticCallable, type SemanticEqualsResult, type ValidateResult, type DetectedIssue, type SafetyResult, type InferredSignature, type WrapperSuggestion, type CallableTestCase, } from './callable.ts';
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/callable/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,gBAAgB,EAChB,KAAK,oBAAoB,EACzB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,GACtB,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Prompts for SemanticCallable LLM operations
|
|
3
|
+
* These prompts enable intelligent function analysis, signature inference, and behavioral understanding
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* System prompt for callable analysis tasks
|
|
7
|
+
*/
|
|
8
|
+
export declare const CALLABLE_SYSTEM_PROMPT = "You are an expert at analyzing TypeScript/JavaScript functions, understanding their behavior, and providing semantic insights about callable types.\n\nYou must respond with valid JSON only, no additional text or explanation.\n\nGuidelines:\n- Analyze function signatures, behavior, and usage patterns\n- Consider edge cases, type safety, and common programming patterns\n- Provide meaningful, contextual responses based on the function's purpose\n- Be precise with confidence scores based on available information";
|
|
9
|
+
/**
|
|
10
|
+
* Prompt template for semantic equality comparison between callables
|
|
11
|
+
*/
|
|
12
|
+
export declare function createSemanticallyEqualsPrompt(fn1Source: string, fn2Source: string, fn1Description?: string, fn2Description?: string, testCases?: unknown[][]): string;
|
|
13
|
+
/**
|
|
14
|
+
* Prompt template for explaining what a callable does
|
|
15
|
+
*/
|
|
16
|
+
export declare function createExplainPrompt(fnSource: string, description?: string): string;
|
|
17
|
+
/**
|
|
18
|
+
* Prompt template for inferring function signature from sample calls
|
|
19
|
+
*/
|
|
20
|
+
export declare function createInferSignaturePrompt(fnSource: string, sampleCalls: unknown[][]): string;
|
|
21
|
+
/**
|
|
22
|
+
* Prompt template for generating TypeScript type definition
|
|
23
|
+
*/
|
|
24
|
+
export declare function createGenerateTypeDefinitionPrompt(fnSource: string, description?: string, inferredParams?: string[], inferredReturn?: string): string;
|
|
25
|
+
/**
|
|
26
|
+
* Prompt template for validating function arguments
|
|
27
|
+
*/
|
|
28
|
+
export declare function createValidateArgsPrompt(fnSource: string, args: unknown[], rules?: string[]): string;
|
|
29
|
+
/**
|
|
30
|
+
* Prompt template for generating test cases
|
|
31
|
+
*/
|
|
32
|
+
export declare function createGenerateTestsPrompt(fnSource: string, description?: string): string;
|
|
33
|
+
/**
|
|
34
|
+
* Prompt template for suggesting a type-safe wrapper
|
|
35
|
+
*/
|
|
36
|
+
export declare function createSuggestWrapperPrompt(fnSource: string, description?: string, detectedIssues?: string[]): string;
|
|
37
|
+
/**
|
|
38
|
+
* Prompt template for detecting potential issues
|
|
39
|
+
*/
|
|
40
|
+
export declare function createDetectIssuesPrompt(fnSource: string, description?: string): string;
|
|
41
|
+
/**
|
|
42
|
+
* Prompt template for checking if safe to call with arguments
|
|
43
|
+
*/
|
|
44
|
+
export declare function createIsSafeToCallPrompt(fnSource: string, args: unknown[], description?: string): string;
|
|
45
|
+
//# sourceMappingURL=prompts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../../src/types/callable/prompts.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,eAAO,MAAM,sBAAsB,sgBAQgC,CAAC;AAEpE;;GAEG;AACH,wBAAgB,8BAA8B,CAC5C,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,cAAc,CAAC,EAAE,MAAM,EACvB,cAAc,CAAC,EAAE,MAAM,EACvB,SAAS,CAAC,EAAE,OAAO,EAAE,EAAE,GACtB,MAAM,CAkCR;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,EAChB,WAAW,CAAC,EAAE,MAAM,GACnB,MAAM,CAiBR;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,OAAO,EAAE,EAAE,GACvB,MAAM,CAoBR;AAED;;GAEG;AACH,wBAAgB,kCAAkC,CAChD,QAAQ,EAAE,MAAM,EAChB,WAAW,CAAC,EAAE,MAAM,EACpB,cAAc,CAAC,EAAE,MAAM,EAAE,EACzB,cAAc,CAAC,EAAE,MAAM,GACtB,MAAM,CA4BR;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,OAAO,EAAE,EACf,KAAK,CAAC,EAAE,MAAM,EAAE,GACf,MAAM,CA+BR;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,MAAM,EAChB,WAAW,CAAC,EAAE,MAAM,GACnB,MAAM,CAyBR;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,MAAM,EAChB,WAAW,CAAC,EAAE,MAAM,EACpB,cAAc,CAAC,EAAE,MAAM,EAAE,GACxB,MAAM,CA6BR;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,MAAM,EAChB,WAAW,CAAC,EAAE,MAAM,GACnB,MAAM,CA8BR;AAED;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,OAAO,EAAE,EACf,WAAW,CAAC,EAAE,MAAM,GACnB,MAAM,CAuBR"}
|