recker 1.0.5 → 1.0.6

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 (106) hide show
  1. package/README.md +1 -1
  2. package/dist/ai/adaptive-timeout.d.ts +51 -0
  3. package/dist/ai/adaptive-timeout.d.ts.map +1 -0
  4. package/dist/ai/adaptive-timeout.js +208 -0
  5. package/dist/ai/client.d.ts +24 -0
  6. package/dist/ai/client.d.ts.map +1 -0
  7. package/dist/ai/client.js +289 -0
  8. package/dist/ai/index.d.ts +10 -0
  9. package/dist/ai/index.d.ts.map +1 -0
  10. package/dist/ai/index.js +6 -0
  11. package/dist/ai/providers/anthropic.d.ts +64 -0
  12. package/dist/ai/providers/anthropic.d.ts.map +1 -0
  13. package/dist/ai/providers/anthropic.js +367 -0
  14. package/dist/ai/providers/base.d.ts +49 -0
  15. package/dist/ai/providers/base.d.ts.map +1 -0
  16. package/dist/ai/providers/base.js +145 -0
  17. package/dist/ai/providers/index.d.ts +7 -0
  18. package/dist/ai/providers/index.d.ts.map +1 -0
  19. package/dist/ai/providers/index.js +3 -0
  20. package/dist/ai/providers/openai.d.ts +65 -0
  21. package/dist/ai/providers/openai.d.ts.map +1 -0
  22. package/dist/ai/providers/openai.js +298 -0
  23. package/dist/ai/rate-limiter.d.ts +44 -0
  24. package/dist/ai/rate-limiter.d.ts.map +1 -0
  25. package/dist/ai/rate-limiter.js +212 -0
  26. package/dist/bench/generator.d.ts +19 -0
  27. package/dist/bench/generator.d.ts.map +1 -0
  28. package/dist/bench/generator.js +86 -0
  29. package/dist/bench/stats.d.ts +35 -0
  30. package/dist/bench/stats.d.ts.map +1 -0
  31. package/dist/bench/stats.js +60 -0
  32. package/dist/cli/handler.d.ts +11 -0
  33. package/dist/cli/handler.d.ts.map +1 -0
  34. package/dist/cli/handler.js +92 -0
  35. package/dist/cli/index.d.ts +3 -0
  36. package/dist/cli/index.d.ts.map +1 -0
  37. package/dist/cli/index.js +255 -0
  38. package/dist/cli/presets.d.ts +2 -0
  39. package/dist/cli/presets.d.ts.map +1 -0
  40. package/dist/cli/presets.js +67 -0
  41. package/dist/cli/tui/ai-chat.d.ts +3 -0
  42. package/dist/cli/tui/ai-chat.d.ts.map +1 -0
  43. package/dist/cli/tui/ai-chat.js +100 -0
  44. package/dist/cli/tui/load-dashboard.d.ts +3 -0
  45. package/dist/cli/tui/load-dashboard.d.ts.map +1 -0
  46. package/dist/cli/tui/load-dashboard.js +117 -0
  47. package/dist/cli/tui/shell.d.ts +27 -0
  48. package/dist/cli/tui/shell.d.ts.map +1 -0
  49. package/dist/cli/tui/shell.js +386 -0
  50. package/dist/cli/tui/websocket.d.ts +2 -0
  51. package/dist/cli/tui/websocket.d.ts.map +1 -0
  52. package/dist/cli/tui/websocket.js +87 -0
  53. package/dist/contract/index.d.ts +2 -2
  54. package/dist/contract/index.d.ts.map +1 -1
  55. package/dist/core/client.d.ts +1 -0
  56. package/dist/core/client.d.ts.map +1 -1
  57. package/dist/core/client.js +4 -2
  58. package/dist/core/request-promise.d.ts +1 -1
  59. package/dist/core/request-promise.d.ts.map +1 -1
  60. package/dist/mcp/contract.d.ts +1 -1
  61. package/dist/mcp/contract.d.ts.map +1 -1
  62. package/dist/protocols/ftp.d.ts +28 -5
  63. package/dist/protocols/ftp.d.ts.map +1 -1
  64. package/dist/protocols/ftp.js +549 -136
  65. package/dist/protocols/sftp.d.ts +4 -2
  66. package/dist/protocols/sftp.d.ts.map +1 -1
  67. package/dist/protocols/sftp.js +16 -2
  68. package/dist/protocols/telnet.d.ts +37 -5
  69. package/dist/protocols/telnet.d.ts.map +1 -1
  70. package/dist/protocols/telnet.js +434 -58
  71. package/dist/scrape/document.d.ts.map +1 -1
  72. package/dist/scrape/document.js +7 -12
  73. package/dist/testing/index.d.ts +2 -0
  74. package/dist/testing/index.d.ts.map +1 -1
  75. package/dist/testing/index.js +1 -0
  76. package/dist/testing/mock-udp-server.d.ts +44 -0
  77. package/dist/testing/mock-udp-server.d.ts.map +1 -0
  78. package/dist/testing/mock-udp-server.js +188 -0
  79. package/dist/transport/base-udp.d.ts +36 -0
  80. package/dist/transport/base-udp.d.ts.map +1 -0
  81. package/dist/transport/base-udp.js +188 -0
  82. package/dist/transport/udp-response.d.ts +65 -0
  83. package/dist/transport/udp-response.d.ts.map +1 -0
  84. package/dist/transport/udp-response.js +269 -0
  85. package/dist/transport/udp.d.ts +22 -0
  86. package/dist/transport/udp.d.ts.map +1 -0
  87. package/dist/transport/udp.js +260 -0
  88. package/dist/types/ai.d.ts +268 -0
  89. package/dist/types/ai.d.ts.map +1 -0
  90. package/dist/types/ai.js +1 -0
  91. package/dist/types/udp.d.ts +138 -0
  92. package/dist/types/udp.d.ts.map +1 -0
  93. package/dist/types/udp.js +1 -0
  94. package/dist/udp/index.d.ts +6 -0
  95. package/dist/udp/index.d.ts.map +1 -0
  96. package/dist/udp/index.js +3 -0
  97. package/dist/utils/chart.d.ts +15 -0
  98. package/dist/utils/chart.d.ts.map +1 -0
  99. package/dist/utils/chart.js +94 -0
  100. package/dist/utils/colors.d.ts +27 -0
  101. package/dist/utils/colors.d.ts.map +1 -0
  102. package/dist/utils/colors.js +50 -0
  103. package/dist/utils/optional-require.d.ts +20 -0
  104. package/dist/utils/optional-require.d.ts.map +1 -0
  105. package/dist/utils/optional-require.js +105 -0
  106. package/package.json +53 -12
@@ -0,0 +1,268 @@
1
+ export type AIProvider = 'openai' | 'anthropic' | 'google' | 'replicate' | 'huggingface' | 'ollama' | 'custom';
2
+ export type MessageRole = 'system' | 'user' | 'assistant' | 'tool';
3
+ export interface ChatMessage {
4
+ role: MessageRole;
5
+ content: string | ContentPart[];
6
+ name?: string;
7
+ tool_call_id?: string;
8
+ tool_calls?: ToolCall[];
9
+ }
10
+ export type ContentPart = {
11
+ type: 'text';
12
+ text: string;
13
+ } | {
14
+ type: 'image_url';
15
+ image_url: {
16
+ url: string;
17
+ detail?: 'auto' | 'low' | 'high';
18
+ };
19
+ } | {
20
+ type: 'image';
21
+ data: Buffer | Uint8Array;
22
+ mediaType: string;
23
+ };
24
+ export interface ToolDefinition {
25
+ type: 'function';
26
+ function: {
27
+ name: string;
28
+ description: string;
29
+ parameters?: Record<string, unknown>;
30
+ };
31
+ }
32
+ export interface ToolCall {
33
+ id: string;
34
+ type: 'function';
35
+ function: {
36
+ name: string;
37
+ arguments: string;
38
+ };
39
+ }
40
+ export interface TokenUsage {
41
+ inputTokens: number;
42
+ outputTokens: number;
43
+ totalTokens: number;
44
+ cachedTokens?: number;
45
+ }
46
+ export interface CostInfo {
47
+ inputCost: number;
48
+ outputCost: number;
49
+ totalCost: number;
50
+ currency: string;
51
+ }
52
+ export interface AILatency {
53
+ ttft: number;
54
+ tps: number;
55
+ total: number;
56
+ queued?: number;
57
+ }
58
+ export interface AITimeoutOptions {
59
+ firstToken?: number;
60
+ betweenTokens?: number;
61
+ total?: number;
62
+ adaptive?: boolean;
63
+ }
64
+ export interface AIRetryOptions {
65
+ on?: Array<'rate_limit' | 'overloaded' | 'timeout' | 'context_length_exceeded' | 'server_error'>;
66
+ backoff?: 'linear' | 'exponential' | 'decorrelated';
67
+ maxAttempts?: number;
68
+ fallback?: Record<string, string>;
69
+ reduceContext?: boolean;
70
+ onRetry?: (attempt: number, error: Error) => void;
71
+ }
72
+ export type ResponseFormat = {
73
+ type: 'text';
74
+ } | {
75
+ type: 'json_object';
76
+ } | {
77
+ type: 'json_schema';
78
+ schema: Record<string, unknown>;
79
+ };
80
+ export interface ChatOptions {
81
+ provider?: AIProvider;
82
+ model?: string;
83
+ messages: ChatMessage[];
84
+ systemPrompt?: string;
85
+ temperature?: number;
86
+ topP?: number;
87
+ maxTokens?: number;
88
+ stop?: string[];
89
+ tools?: ToolDefinition[];
90
+ toolChoice?: 'auto' | 'none' | 'required' | {
91
+ type: 'function';
92
+ function: {
93
+ name: string;
94
+ };
95
+ };
96
+ responseFormat?: ResponseFormat;
97
+ timeout?: AITimeoutOptions;
98
+ retry?: AIRetryOptions;
99
+ metadata?: Record<string, unknown>;
100
+ signal?: AbortSignal;
101
+ stream?: boolean;
102
+ }
103
+ export interface EmbedOptions {
104
+ provider?: AIProvider;
105
+ model?: string;
106
+ input: string | string[];
107
+ dimensions?: number;
108
+ timeout?: number;
109
+ signal?: AbortSignal;
110
+ }
111
+ export interface AIResponse<T = string> {
112
+ content: T;
113
+ usage: TokenUsage;
114
+ latency: AILatency;
115
+ model: string;
116
+ provider: AIProvider;
117
+ cached: boolean;
118
+ finishReason?: 'stop' | 'length' | 'tool_calls' | 'content_filter';
119
+ toolCalls?: ToolCall[];
120
+ cost?: CostInfo;
121
+ raw?: unknown;
122
+ }
123
+ export interface EmbedResponse {
124
+ embeddings: number[][];
125
+ usage: TokenUsage;
126
+ model: string;
127
+ provider: AIProvider;
128
+ latency: AILatency;
129
+ }
130
+ export type StreamEventType = 'text' | 'tool_call' | 'tool_call_delta' | 'usage' | 'done' | 'error';
131
+ export interface BaseStreamEvent {
132
+ type: StreamEventType;
133
+ }
134
+ export interface TextStreamEvent extends BaseStreamEvent {
135
+ type: 'text';
136
+ content: string;
137
+ }
138
+ export interface ToolCallStreamEvent extends BaseStreamEvent {
139
+ type: 'tool_call';
140
+ toolCall: ToolCall;
141
+ }
142
+ export interface ToolCallDeltaStreamEvent extends BaseStreamEvent {
143
+ type: 'tool_call_delta';
144
+ index: number;
145
+ delta: {
146
+ arguments?: string;
147
+ };
148
+ }
149
+ export interface UsageStreamEvent extends BaseStreamEvent {
150
+ type: 'usage';
151
+ usage: TokenUsage;
152
+ }
153
+ export interface DoneStreamEvent extends BaseStreamEvent {
154
+ type: 'done';
155
+ finishReason: 'stop' | 'length' | 'tool_calls' | 'content_filter';
156
+ usage?: TokenUsage;
157
+ }
158
+ export interface ErrorStreamEvent extends BaseStreamEvent {
159
+ type: 'error';
160
+ error: Error;
161
+ }
162
+ export type StreamEvent = TextStreamEvent | ToolCallStreamEvent | ToolCallDeltaStreamEvent | UsageStreamEvent | DoneStreamEvent | ErrorStreamEvent;
163
+ export type AIStream = AsyncIterable<StreamEvent>;
164
+ export interface ProviderConfig {
165
+ apiKey?: string;
166
+ baseUrl?: string;
167
+ defaultModel?: string;
168
+ organization?: string;
169
+ projectId?: string;
170
+ headers?: Record<string, string>;
171
+ }
172
+ export interface AIClientConfig {
173
+ defaultProvider?: AIProvider;
174
+ defaultModel?: string;
175
+ providers?: Partial<Record<AIProvider, ProviderConfig>>;
176
+ timeout?: AITimeoutOptions;
177
+ retry?: AIRetryOptions;
178
+ observability?: boolean;
179
+ debug?: boolean;
180
+ }
181
+ export interface TokenRateLimitConfig {
182
+ tokensPerMinute?: number;
183
+ requestsPerMinute?: number;
184
+ strategy?: 'queue' | 'throw' | 'retry-after';
185
+ priority?: (req: ChatOptions) => 'high' | 'normal' | 'low';
186
+ }
187
+ export interface SemanticCacheConfig {
188
+ enabled?: boolean;
189
+ embedder?: string;
190
+ similarity?: number;
191
+ ttl?: number | string;
192
+ storage?: CacheStorage;
193
+ }
194
+ export interface CacheStorage {
195
+ get(key: string): Promise<unknown | undefined>;
196
+ set(key: string, value: unknown, ttl?: number): Promise<void>;
197
+ delete(key: string): Promise<void>;
198
+ }
199
+ export interface AIClient {
200
+ chat(options: ChatOptions): Promise<AIResponse>;
201
+ chat(prompt: string): Promise<AIResponse>;
202
+ stream(options: ChatOptions): Promise<AIStream>;
203
+ embed(options: EmbedOptions): Promise<EmbedResponse>;
204
+ extend(defaults: Partial<ChatOptions>): AIClient;
205
+ readonly metrics: AIMetrics;
206
+ }
207
+ export interface AIMetrics {
208
+ totalRequests: number;
209
+ totalTokens: number;
210
+ totalCost: number;
211
+ avgLatency: {
212
+ ttft: number;
213
+ total: number;
214
+ };
215
+ errorRate: number;
216
+ cacheHitRate: number;
217
+ summary(): AIMetricsSummary;
218
+ reset(): void;
219
+ }
220
+ export interface AIMetricsSummary {
221
+ totalRequests: number;
222
+ totalTokens: number;
223
+ totalCost: number;
224
+ avgLatency: {
225
+ ttft: number;
226
+ total: number;
227
+ };
228
+ errorRate: number;
229
+ cacheHitRate: number;
230
+ byModel: Record<string, {
231
+ requests: number;
232
+ tokens: number;
233
+ cost: number;
234
+ }>;
235
+ byProvider: Record<string, {
236
+ requests: number;
237
+ tokens: number;
238
+ cost: number;
239
+ }>;
240
+ }
241
+ export interface AgentTool {
242
+ name: string;
243
+ description: string;
244
+ parameters?: Record<string, unknown>;
245
+ handler: (args: Record<string, unknown>) => Promise<unknown> | unknown;
246
+ }
247
+ export interface AgentConfig {
248
+ provider?: AIProvider;
249
+ model?: string;
250
+ systemPrompt?: string;
251
+ tools?: AgentTool[];
252
+ maxIterations?: number;
253
+ iterationTimeout?: number;
254
+ }
255
+ export type AgentEventType = 'thinking' | 'tool_call' | 'tool_result' | 'text' | 'done' | 'error';
256
+ export interface AgentStreamEvent {
257
+ type: AgentEventType;
258
+ content?: string;
259
+ tool?: string;
260
+ args?: Record<string, unknown>;
261
+ result?: unknown;
262
+ error?: Error;
263
+ }
264
+ export interface Agent {
265
+ run(prompt: string): Promise<AIResponse>;
266
+ stream(prompt: string): AsyncIterable<AgentStreamEvent>;
267
+ }
268
+ //# sourceMappingURL=ai.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai.d.ts","sourceRoot":"","sources":["../../src/types/ai.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,138 @@
1
+ import type { ReckerRequest, ReckerResponse, Transport } from './index.js';
2
+ export interface UDPTimings {
3
+ queued: number;
4
+ send: number;
5
+ receive: number;
6
+ retransmissions: number;
7
+ total: number;
8
+ }
9
+ export interface DTLSTimings extends UDPTimings {
10
+ handshake: number;
11
+ }
12
+ export interface QUICTimings extends UDPTimings {
13
+ quicHandshake: number;
14
+ streamOpen: number;
15
+ firstByte: number;
16
+ zeroRTT: boolean;
17
+ }
18
+ export interface UDPConnection {
19
+ protocol: 'udp' | 'dtls' | 'quic';
20
+ localAddress: string;
21
+ localPort: number;
22
+ remoteAddress: string;
23
+ remotePort: number;
24
+ }
25
+ export interface DTLSConnection extends UDPConnection {
26
+ protocol: 'dtls';
27
+ cipher: string;
28
+ version: string;
29
+ }
30
+ export interface QUICConnection extends UDPConnection {
31
+ protocol: 'quic';
32
+ alpn: string;
33
+ congestion: 'bbr' | 'cubic' | 'reno';
34
+ quicVersion: string;
35
+ migrated: boolean;
36
+ }
37
+ export interface BaseUDPTransportOptions {
38
+ timeout?: number;
39
+ retransmissions?: number;
40
+ maxPacketSize?: number;
41
+ observability?: boolean;
42
+ localAddress?: string;
43
+ localPort?: number;
44
+ }
45
+ export interface UDPTransportOptions extends BaseUDPTransportOptions {
46
+ broadcast?: boolean;
47
+ multicastTTL?: number;
48
+ multicastGroups?: string[];
49
+ multicastLoopback?: boolean;
50
+ type?: 'udp4' | 'udp6';
51
+ recvBufferSize?: number;
52
+ sendBufferSize?: number;
53
+ }
54
+ export interface DTLSTransportOptions extends BaseUDPTransportOptions {
55
+ cert?: string | Buffer;
56
+ key?: string | Buffer;
57
+ ca?: string | Buffer | Array<string | Buffer>;
58
+ passphrase?: string;
59
+ ciphers?: string;
60
+ minVersion?: 'DTLSv1.0' | 'DTLSv1.2';
61
+ rejectUnauthorized?: boolean;
62
+ servername?: string;
63
+ handshakeTimeout?: number;
64
+ mtu?: number;
65
+ }
66
+ export interface QUICTransportOptions extends BaseUDPTransportOptions {
67
+ maxStreams?: number;
68
+ idleTimeout?: number;
69
+ congestionControl?: 'bbr' | 'cubic' | 'reno';
70
+ earlyData?: boolean;
71
+ sessionCache?: Map<string, Buffer>;
72
+ cert?: string | Buffer;
73
+ key?: string | Buffer;
74
+ ca?: string | Buffer | Array<string | Buffer>;
75
+ alpnProtocols?: string[];
76
+ initialRtt?: number;
77
+ connectionMigration?: boolean;
78
+ }
79
+ export interface UDPRequestOptions {
80
+ broadcast?: boolean;
81
+ multicast?: string;
82
+ ttl?: number;
83
+ port?: number;
84
+ }
85
+ export interface UDPRequest extends ReckerRequest {
86
+ udp?: UDPRequestOptions;
87
+ }
88
+ export interface UDPResponse<T = unknown> extends ReckerResponse<T> {
89
+ timings: UDPTimings;
90
+ connection: UDPConnection;
91
+ buffer(): Promise<Buffer>;
92
+ packets(): AsyncGenerator<Buffer>;
93
+ }
94
+ export interface UDPTransport extends Transport {
95
+ dispatch(req: UDPRequest): Promise<UDPResponse>;
96
+ send(host: string, port: number, data: Buffer): Promise<void>;
97
+ broadcast(port: number, data: Buffer): Promise<void>;
98
+ joinMulticast(group: string): void;
99
+ leaveMulticast(group: string): void;
100
+ close(): Promise<void>;
101
+ }
102
+ export interface DTLSTransportInterface extends Transport {
103
+ dispatch(req: UDPRequest): Promise<UDPResponse>;
104
+ handshake(): Promise<void>;
105
+ getSession(): Buffer | null;
106
+ close(): Promise<void>;
107
+ }
108
+ export interface QUICTransportInterface extends Transport {
109
+ dispatch(req: ReckerRequest): Promise<ReckerResponse>;
110
+ getSessionTicket(): Buffer | null;
111
+ migrate(newLocalAddress: string): Promise<void>;
112
+ close(): Promise<void>;
113
+ }
114
+ export interface UDPBatchResult<T> {
115
+ results: Array<T | Error>;
116
+ stats: {
117
+ total: number;
118
+ successful: number;
119
+ failed: number;
120
+ duration: number;
121
+ };
122
+ }
123
+ export interface UDPDiscoveryResult {
124
+ address: string;
125
+ port: number;
126
+ data: Buffer;
127
+ latency: number;
128
+ }
129
+ export interface SimpleUDPAPI {
130
+ send(address: string, data: Buffer, options?: UDPTransportOptions): Promise<UDPResponse>;
131
+ broadcast(port: number, data: Buffer, options?: UDPTransportOptions & {
132
+ timeout?: number;
133
+ }): Promise<UDPDiscoveryResult[]>;
134
+ discover(group: string, port: number, data: Buffer, options?: UDPTransportOptions & {
135
+ timeout?: number;
136
+ }): Promise<UDPDiscoveryResult[]>;
137
+ }
138
+ //# sourceMappingURL=udp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"udp.d.ts","sourceRoot":"","sources":["../../src/types/udp.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,6 @@
1
+ export { UDPTransport, UDPTransportImpl, createUDPClient, udp } from '../transport/udp.js';
2
+ export { UDPResponseImpl, StreamingUDPResponse } from '../transport/udp-response.js';
3
+ export { BaseUDPTransport, udpRequestStorage } from '../transport/base-udp.js';
4
+ export type { UDPRequestContext } from '../transport/base-udp.js';
5
+ export type { UDPTimings, DTLSTimings, QUICTimings, UDPConnection, DTLSConnection, QUICConnection, BaseUDPTransportOptions, UDPTransportOptions, DTLSTransportOptions, QUICTransportOptions, UDPRequestOptions, UDPRequest, UDPResponse, UDPTransport as UDPTransportInterface, DTLSTransportInterface, QUICTransportInterface, UDPBatchResult, UDPDiscoveryResult, SimpleUDPAPI, } from '../types/udp.js';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/udp/index.ts"],"names":[],"mappings":"AAmCA,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,eAAe,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAG3F,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAGrF,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC/E,YAAY,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAGlE,YAAY,EAEV,UAAU,EACV,WAAW,EACX,WAAW,EAEX,aAAa,EACb,cAAc,EACd,cAAc,EAEd,uBAAuB,EACvB,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EAEpB,iBAAiB,EACjB,UAAU,EACV,WAAW,EAEX,YAAY,IAAI,qBAAqB,EACrC,sBAAsB,EACtB,sBAAsB,EAEtB,cAAc,EACd,kBAAkB,EAClB,YAAY,GACb,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { UDPTransport, UDPTransportImpl, createUDPClient, udp } from '../transport/udp.js';
2
+ export { UDPResponseImpl, StreamingUDPResponse } from '../transport/udp-response.js';
3
+ export { BaseUDPTransport, udpRequestStorage } from '../transport/base-udp.js';
@@ -0,0 +1,15 @@
1
+ export interface ChartOptions {
2
+ height?: number;
3
+ padding?: string;
4
+ min?: number;
5
+ max?: number;
6
+ format?: (value: number) => string;
7
+ }
8
+ export declare function plot(series: number[], options?: ChartOptions): string;
9
+ export declare function plotMultiple(seriesList: number[][], options?: ChartOptions): string;
10
+ declare const _default: {
11
+ plot: typeof plot;
12
+ plotMultiple: typeof plotMultiple;
13
+ };
14
+ export default _default;
15
+ //# sourceMappingURL=chart.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chart.d.ts","sourceRoot":"","sources":["../../src/utils/chart.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,YAAY;IAE3B,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;CACpC;AA4BD,wBAAgB,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,OAAO,GAAE,YAAiB,GAAG,MAAM,CAyFzE;AAKD,wBAAgB,YAAY,CAC1B,UAAU,EAAE,MAAM,EAAE,EAAE,EACtB,OAAO,GAAE,YAAiB,GACzB,MAAM,CAqBR;;;;;AAED,wBAGE"}
@@ -0,0 +1,94 @@
1
+ const CHARS = {
2
+ empty: ' ',
3
+ axis: '┤',
4
+ horizontal: '─',
5
+ vertical: '│',
6
+ point: '●',
7
+ lineHorizontal: '─',
8
+ lineUp: '╯',
9
+ lineDown: '╮',
10
+ lineUpDown: '│',
11
+ lineStart: '┼',
12
+ };
13
+ export function plot(series, options = {}) {
14
+ if (!series || series.length === 0) {
15
+ return '';
16
+ }
17
+ const height = options.height ?? 10;
18
+ const padding = options.padding ?? ' ';
19
+ const format = options.format ?? ((v) => v.toFixed(2).padStart(8));
20
+ const validSeries = series.filter((v) => !isNaN(v) && isFinite(v));
21
+ if (validSeries.length === 0) {
22
+ return '';
23
+ }
24
+ let min = options.min ?? Math.min(...validSeries);
25
+ let max = options.max ?? Math.max(...validSeries);
26
+ if (min === max) {
27
+ max = min + 1;
28
+ min = min - 1;
29
+ }
30
+ const range = max - min;
31
+ const scale = height / range;
32
+ const rows = height + 1;
33
+ const cols = series.length;
34
+ const grid = Array.from({ length: rows }, () => Array(cols).fill(CHARS.empty));
35
+ for (let x = 0; x < series.length; x++) {
36
+ const value = series[x];
37
+ if (isNaN(value) || !isFinite(value))
38
+ continue;
39
+ const y = Math.round((max - value) * scale);
40
+ const clampedY = Math.max(0, Math.min(rows - 1, y));
41
+ grid[clampedY][x] = '─';
42
+ if (x > 0) {
43
+ const prevValue = series[x - 1];
44
+ if (!isNaN(prevValue) && isFinite(prevValue)) {
45
+ const prevY = Math.round((max - prevValue) * scale);
46
+ const clampedPrevY = Math.max(0, Math.min(rows - 1, prevY));
47
+ if (clampedPrevY < clampedY) {
48
+ grid[clampedPrevY][x] = '╮';
49
+ grid[clampedY][x] = '╰';
50
+ for (let i = clampedPrevY + 1; i < clampedY; i++) {
51
+ grid[i][x] = '│';
52
+ }
53
+ }
54
+ else if (clampedPrevY > clampedY) {
55
+ grid[clampedPrevY][x] = '╯';
56
+ grid[clampedY][x] = '╭';
57
+ for (let i = clampedY + 1; i < clampedPrevY; i++) {
58
+ grid[i][x] = '│';
59
+ }
60
+ }
61
+ }
62
+ }
63
+ }
64
+ const lines = [];
65
+ for (let row = 0; row < rows; row++) {
66
+ const value = max - (row / height) * range;
67
+ const label = format(value);
68
+ const axis = row === 0 || row === rows - 1 || row === Math.floor(rows / 2)
69
+ ? CHARS.axis
70
+ : CHARS.axis;
71
+ lines.push(`${label} ${axis}${grid[row].join('')}`);
72
+ }
73
+ return lines.join('\n');
74
+ }
75
+ export function plotMultiple(seriesList, options = {}) {
76
+ if (!seriesList || seriesList.length === 0) {
77
+ return '';
78
+ }
79
+ const allValues = seriesList.flat().filter((v) => !isNaN(v) && isFinite(v));
80
+ if (allValues.length === 0) {
81
+ return '';
82
+ }
83
+ const globalMin = Math.min(...allValues);
84
+ const globalMax = Math.max(...allValues);
85
+ return plot(seriesList[0], {
86
+ ...options,
87
+ min: globalMin,
88
+ max: globalMax,
89
+ });
90
+ }
91
+ export default {
92
+ plot,
93
+ plotMultiple,
94
+ };
@@ -0,0 +1,27 @@
1
+ export declare const reset: (s: string) => string;
2
+ export declare const bold: (s: string | number) => string;
3
+ export declare const black: (s: string | number) => string;
4
+ export declare const red: (s: string | number) => string;
5
+ export declare const green: (s: string | number) => string;
6
+ export declare const yellow: (s: string | number) => string;
7
+ export declare const blue: (s: string | number) => string;
8
+ export declare const magenta: (s: string | number) => string;
9
+ export declare const cyan: (s: string | number) => string;
10
+ export declare const white: (s: string | number) => string;
11
+ export declare const gray: (s: string | number) => string;
12
+ declare const colors: {
13
+ reset: (s: string) => string;
14
+ bold: (s: string | number) => string;
15
+ black: (s: string | number) => string;
16
+ red: (s: string | number) => string;
17
+ green: (s: string | number) => string;
18
+ yellow: (s: string | number) => string;
19
+ blue: (s: string | number) => string;
20
+ magenta: (s: string | number) => string;
21
+ cyan: (s: string | number) => string;
22
+ white: (s: string | number) => string;
23
+ gray: (s: string | number) => string;
24
+ grey: (s: string | number) => string;
25
+ };
26
+ export default colors;
27
+ //# sourceMappingURL=colors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"colors.d.ts","sourceRoot":"","sources":["../../src/utils/colors.ts"],"names":[],"mappings":"AA6CA,eAAO,MAAM,KAAK,MAAmB,MAAM,WAA4C,CAAC;AACxF,eAAO,MAAM,IAAI,MAfY,MAAM,GAAG,MAAM,WAeb,CAAC;AAGhC,eAAO,MAAM,KAAK,MAlBW,MAAM,GAAG,MAAM,WAkBX,CAAC;AAClC,eAAO,MAAM,GAAG,MAnBa,MAAM,GAAG,MAAM,WAmBb,CAAC;AAChC,eAAO,MAAM,KAAK,MApBW,MAAM,GAAG,MAAM,WAoBX,CAAC;AAClC,eAAO,MAAM,MAAM,MArBU,MAAM,GAAG,MAAM,WAqBV,CAAC;AACnC,eAAO,MAAM,IAAI,MAtBY,MAAM,GAAG,MAAM,WAsBZ,CAAC;AACjC,eAAO,MAAM,OAAO,MAvBS,MAAM,GAAG,MAAM,WAuBT,CAAC;AACpC,eAAO,MAAM,IAAI,MAxBY,MAAM,GAAG,MAAM,WAwBZ,CAAC;AACjC,eAAO,MAAM,KAAK,MAzBW,MAAM,GAAG,MAAM,WAyBX,CAAC;AAClC,eAAO,MAAM,IAAI,MA1BY,MAAM,GAAG,MAAM,WA0BZ,CAAC;AAGjC,QAAA,MAAM,MAAM;eAfyB,MAAM;cAdd,MAAM,GAAG,MAAM;eAAf,MAAM,GAAG,MAAM;aAAf,MAAM,GAAG,MAAM;eAAf,MAAM,GAAG,MAAM;gBAAf,MAAM,GAAG,MAAM;cAAf,MAAM,GAAG,MAAM;iBAAf,MAAM,GAAG,MAAM;cAAf,MAAM,GAAG,MAAM;eAAf,MAAM,GAAG,MAAM;cAAf,MAAM,GAAG,MAAM;cAAf,MAAM,GAAG,MAAM;CA2C3C,CAAC;AAEF,eAAe,MAAM,CAAC"}
@@ -0,0 +1,50 @@
1
+ const hasColors = (() => {
2
+ if ('NO_COLOR' in process.env)
3
+ return false;
4
+ if ('FORCE_COLOR' in process.env)
5
+ return true;
6
+ if (process.env.TERM === 'dumb')
7
+ return false;
8
+ if (process.stdout?.isTTY)
9
+ return true;
10
+ if (process.env.CI)
11
+ return true;
12
+ return false;
13
+ })();
14
+ const code = (open, close) => {
15
+ if (!hasColors)
16
+ return (s) => String(s);
17
+ const openCode = `\x1b[${open}m`;
18
+ const closeCode = `\x1b[${close}m`;
19
+ return (s) => {
20
+ const str = String(s);
21
+ const closeRe = new RegExp(`\\x1b\\[${close}m`, 'g');
22
+ return openCode + str.replace(closeRe, openCode) + closeCode;
23
+ };
24
+ };
25
+ export const reset = hasColors ? (s) => `\x1b[0m${s}\x1b[0m` : (s) => s;
26
+ export const bold = code(1, 22);
27
+ export const black = code(30, 39);
28
+ export const red = code(31, 39);
29
+ export const green = code(32, 39);
30
+ export const yellow = code(33, 39);
31
+ export const blue = code(34, 39);
32
+ export const magenta = code(35, 39);
33
+ export const cyan = code(36, 39);
34
+ export const white = code(37, 39);
35
+ export const gray = code(90, 39);
36
+ const colors = {
37
+ reset,
38
+ bold,
39
+ black,
40
+ red,
41
+ green,
42
+ yellow,
43
+ blue,
44
+ magenta,
45
+ cyan,
46
+ white,
47
+ gray,
48
+ grey: gray,
49
+ };
50
+ export default colors;
@@ -0,0 +1,20 @@
1
+ interface DependencyInfo {
2
+ package: string;
3
+ submodule: string;
4
+ version?: string;
5
+ feature?: string;
6
+ }
7
+ export declare const OPTIONAL_DEPENDENCIES: Record<string, DependencyInfo>;
8
+ export declare class MissingDependencyError extends Error {
9
+ readonly packageName: string;
10
+ readonly submodule: string;
11
+ readonly installCommand: string;
12
+ constructor(packageName: string, submodule: string, installCommand: string);
13
+ }
14
+ export declare function clearModuleCache(): void;
15
+ export declare function requireOptional<T = unknown>(packageName: string, submodule?: string): Promise<T>;
16
+ export declare function isPackageAvailable(packageName: string): boolean;
17
+ export declare function getInstallCommand(packages: string[]): string;
18
+ export declare function requireOptionalMany<T extends Record<string, unknown>>(packages: string[], submodule: string): Promise<T>;
19
+ export {};
20
+ //# sourceMappingURL=optional-require.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"optional-require.d.ts","sourceRoot":"","sources":["../../src/utils/optional-require.ts"],"names":[],"mappings":"AAgBA,UAAU,cAAc;IAEtB,OAAO,EAAE,MAAM,CAAC;IAEhB,SAAS,EAAE,MAAM,CAAC;IAElB,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAKD,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAgChE,CAAC;AAKF,qBAAa,sBAAuB,SAAQ,KAAK;aAE7B,WAAW,EAAE,MAAM;aACnB,SAAS,EAAE,MAAM;aACjB,cAAc,EAAE,MAAM;gBAFtB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,MAAM;CASzC;AAWD,wBAAgB,gBAAgB,IAAI,IAAI,CAEvC;AAiBD,wBAAsB,eAAe,CAAC,CAAC,GAAG,OAAO,EAC/C,WAAW,EAAE,MAAM,EACnB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,CAAC,CAAC,CAgCZ;AAQD,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAO/D;AAQD,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,CAM5D;AAiBD,wBAAsB,mBAAmB,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACzE,QAAQ,EAAE,MAAM,EAAE,EAClB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,CAAC,CAAC,CAyBZ"}