@reminix/runtime 0.5.0 → 0.6.1
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/README.md +209 -30
- package/dist/agent.d.ts +132 -0
- package/dist/agent.d.ts.map +1 -0
- package/dist/agent.js +207 -0
- package/dist/agent.js.map +1 -0
- package/dist/index.d.ts +28 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +31 -5
- package/dist/index.js.map +1 -1
- package/dist/server.d.ts +39 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +243 -0
- package/dist/server.js.map +1 -0
- package/dist/streaming.d.ts +27 -0
- package/dist/streaming.d.ts.map +1 -0
- package/dist/streaming.js +58 -0
- package/dist/streaming.js.map +1 -0
- package/dist/types.d.ts +224 -75
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +92 -2
- package/dist/types.js.map +1 -1
- package/dist/version.d.ts +6 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +6 -0
- package/dist/version.js.map +1 -0
- package/package.json +11 -8
- package/dist/executor.d.ts +0 -17
- package/dist/executor.d.ts.map +0 -1
- package/dist/executor.js +0 -22
- package/dist/executor.js.map +0 -1
- package/dist/loader.d.ts +0 -19
- package/dist/loader.d.ts.map +0 -1
- package/dist/loader.js +0 -52
- package/dist/loader.js.map +0 -1
- package/dist/registry.d.ts +0 -24
- package/dist/registry.d.ts.map +0 -1
- package/dist/registry.js +0 -208
- package/dist/registry.js.map +0 -1
package/dist/types.d.ts
CHANGED
|
@@ -1,104 +1,253 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Type definitions for the Reminix Agent Runtime.
|
|
3
|
+
*
|
|
4
|
+
* These types define the contract between AI agents and the Reminix API.
|
|
3
5
|
*/
|
|
6
|
+
import { z } from 'zod/v4';
|
|
4
7
|
/**
|
|
5
|
-
*
|
|
8
|
+
* Tool call function details.
|
|
9
|
+
* @internal
|
|
6
10
|
*/
|
|
7
|
-
export
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
11
|
+
export declare const ToolCallFunctionSchema: z.ZodObject<{
|
|
12
|
+
name: z.ZodString;
|
|
13
|
+
arguments: z.ZodString;
|
|
14
|
+
}, z.core.$strip>;
|
|
15
|
+
/** @internal */
|
|
16
|
+
export type ToolCallFunction = z.infer<typeof ToolCallFunctionSchema>;
|
|
12
17
|
/**
|
|
13
|
-
*
|
|
18
|
+
* A tool call made by the assistant.
|
|
19
|
+
* @internal
|
|
14
20
|
*/
|
|
15
|
-
export
|
|
16
|
-
id:
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
21
|
+
export declare const ToolCallSchema: z.ZodObject<{
|
|
22
|
+
id: z.ZodString;
|
|
23
|
+
type: z.ZodLiteral<"function">;
|
|
24
|
+
function: z.ZodObject<{
|
|
25
|
+
name: z.ZodString;
|
|
26
|
+
arguments: z.ZodString;
|
|
27
|
+
}, z.core.$strip>;
|
|
28
|
+
}, z.core.$strip>;
|
|
29
|
+
/** @internal */
|
|
30
|
+
export type ToolCall = z.infer<typeof ToolCallSchema>;
|
|
31
|
+
/**
|
|
32
|
+
* Valid message roles.
|
|
33
|
+
* @internal
|
|
34
|
+
*/
|
|
35
|
+
export declare const MessageRoleSchema: z.ZodEnum<{
|
|
36
|
+
system: "system";
|
|
37
|
+
user: "user";
|
|
38
|
+
assistant: "assistant";
|
|
39
|
+
tool: "tool";
|
|
40
|
+
}>;
|
|
41
|
+
/** @internal */
|
|
42
|
+
export type MessageRole = z.infer<typeof MessageRoleSchema>;
|
|
43
|
+
/**
|
|
44
|
+
* A chat message in a conversation.
|
|
45
|
+
* @internal
|
|
46
|
+
*/
|
|
47
|
+
export declare const ChatMessageSchema: z.ZodObject<{
|
|
48
|
+
role: z.ZodEnum<{
|
|
49
|
+
system: "system";
|
|
50
|
+
user: "user";
|
|
51
|
+
assistant: "assistant";
|
|
52
|
+
tool: "tool";
|
|
53
|
+
}>;
|
|
54
|
+
content: z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodAny>, z.ZodNull]>;
|
|
55
|
+
name: z.ZodOptional<z.ZodString>;
|
|
56
|
+
tool_calls: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
57
|
+
id: z.ZodString;
|
|
58
|
+
type: z.ZodLiteral<"function">;
|
|
59
|
+
function: z.ZodObject<{
|
|
60
|
+
name: z.ZodString;
|
|
61
|
+
arguments: z.ZodString;
|
|
62
|
+
}, z.core.$strip>;
|
|
63
|
+
}, z.core.$strip>>>;
|
|
64
|
+
tool_call_id: z.ZodOptional<z.ZodString>;
|
|
65
|
+
}, z.core.$strip>;
|
|
66
|
+
/**
|
|
67
|
+
* A chat message in a conversation.
|
|
68
|
+
*/
|
|
69
|
+
export type ChatMessage = z.infer<typeof ChatMessageSchema>;
|
|
70
|
+
/**
|
|
71
|
+
* An assistant message returned by chat handlers.
|
|
72
|
+
* @internal
|
|
73
|
+
*/
|
|
74
|
+
export declare const AssistantMessageSchema: z.ZodObject<{
|
|
75
|
+
role: z.ZodLiteral<"assistant">;
|
|
76
|
+
content: z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodAny>, z.ZodNull]>;
|
|
77
|
+
tool_calls: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
78
|
+
id: z.ZodString;
|
|
79
|
+
type: z.ZodLiteral<"function">;
|
|
80
|
+
function: z.ZodObject<{
|
|
81
|
+
name: z.ZodString;
|
|
82
|
+
arguments: z.ZodString;
|
|
83
|
+
}, z.core.$strip>;
|
|
84
|
+
}, z.core.$strip>>>;
|
|
85
|
+
}, z.core.$strip>;
|
|
86
|
+
/**
|
|
87
|
+
* An assistant message returned by chat handlers.
|
|
88
|
+
*/
|
|
89
|
+
export type AssistantMessage = z.infer<typeof AssistantMessageSchema>;
|
|
90
|
+
/**
|
|
91
|
+
* Request body for invoke endpoint.
|
|
92
|
+
* @internal
|
|
93
|
+
*/
|
|
94
|
+
export declare const InvokeRequestSchema: z.ZodObject<{
|
|
95
|
+
input: z.ZodRecord<z.ZodString, z.ZodAny>;
|
|
96
|
+
stream: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
97
|
+
}, z.core.$strip>;
|
|
98
|
+
/** @internal */
|
|
99
|
+
export type InvokeRequest = z.infer<typeof InvokeRequestSchema>;
|
|
100
|
+
/**
|
|
101
|
+
* Request body for chat endpoint.
|
|
102
|
+
* @internal
|
|
103
|
+
*/
|
|
104
|
+
export declare const ChatRequestSchema: z.ZodObject<{
|
|
105
|
+
messages: z.ZodArray<z.ZodObject<{
|
|
106
|
+
role: z.ZodEnum<{
|
|
107
|
+
system: "system";
|
|
108
|
+
user: "user";
|
|
109
|
+
assistant: "assistant";
|
|
110
|
+
tool: "tool";
|
|
111
|
+
}>;
|
|
112
|
+
content: z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodAny>, z.ZodNull]>;
|
|
113
|
+
name: z.ZodOptional<z.ZodString>;
|
|
114
|
+
tool_calls: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
115
|
+
id: z.ZodString;
|
|
116
|
+
type: z.ZodLiteral<"function">;
|
|
117
|
+
function: z.ZodObject<{
|
|
118
|
+
name: z.ZodString;
|
|
119
|
+
arguments: z.ZodString;
|
|
120
|
+
}, z.core.$strip>;
|
|
121
|
+
}, z.core.$strip>>>;
|
|
122
|
+
tool_call_id: z.ZodOptional<z.ZodString>;
|
|
123
|
+
}, z.core.$strip>>;
|
|
124
|
+
stream: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
125
|
+
}, z.core.$strip>;
|
|
126
|
+
/** @internal */
|
|
127
|
+
export type ChatRequest = z.infer<typeof ChatRequestSchema>;
|
|
128
|
+
/**
|
|
129
|
+
* Response from invoke handler (non-streaming).
|
|
130
|
+
* @internal
|
|
131
|
+
*/
|
|
132
|
+
export declare const InvokeResponseSchema: z.ZodObject<{
|
|
133
|
+
output: z.ZodAny;
|
|
134
|
+
}, z.core.$strip>;
|
|
135
|
+
/** @internal */
|
|
136
|
+
export type InvokeResponse = z.infer<typeof InvokeResponseSchema>;
|
|
137
|
+
/**
|
|
138
|
+
* Response from chat handler (non-streaming).
|
|
139
|
+
* @internal
|
|
140
|
+
*/
|
|
141
|
+
export declare const ChatResponseSchema: z.ZodObject<{
|
|
142
|
+
message: z.ZodObject<{
|
|
143
|
+
role: z.ZodLiteral<"assistant">;
|
|
144
|
+
content: z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodAny>, z.ZodNull]>;
|
|
145
|
+
tool_calls: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
146
|
+
id: z.ZodString;
|
|
147
|
+
type: z.ZodLiteral<"function">;
|
|
148
|
+
function: z.ZodObject<{
|
|
149
|
+
name: z.ZodString;
|
|
150
|
+
arguments: z.ZodString;
|
|
151
|
+
}, z.core.$strip>;
|
|
152
|
+
}, z.core.$strip>>>;
|
|
153
|
+
}, z.core.$strip>;
|
|
154
|
+
}, z.core.$strip>;
|
|
155
|
+
/** @internal */
|
|
156
|
+
export type ChatResponse = z.infer<typeof ChatResponseSchema>;
|
|
157
|
+
/**
|
|
158
|
+
* A streaming chunk.
|
|
159
|
+
* @internal
|
|
160
|
+
*/
|
|
161
|
+
export declare const StreamChunkSchema: z.ZodObject<{
|
|
162
|
+
chunk: z.ZodString;
|
|
163
|
+
}, z.core.$strip>;
|
|
164
|
+
/** @internal */
|
|
165
|
+
export type StreamChunk = z.infer<typeof StreamChunkSchema>;
|
|
20
166
|
/**
|
|
21
|
-
*
|
|
167
|
+
* Request context passed to handlers.
|
|
22
168
|
*/
|
|
23
169
|
export interface Context {
|
|
24
|
-
|
|
25
|
-
chatId: string;
|
|
26
|
-
/** Thread identifier (optional) */
|
|
27
|
-
threadId?: string;
|
|
28
|
-
/** Memory store for persistent memory */
|
|
29
|
-
memory: MemoryStore;
|
|
30
|
-
/** Knowledge base for RAG/retrieval */
|
|
31
|
-
knowledgeBase: KnowledgeBase;
|
|
32
|
-
/** Available tools registry */
|
|
33
|
-
tools?: ToolRegistry;
|
|
34
|
-
/** User identifier */
|
|
170
|
+
conversationId?: string;
|
|
35
171
|
userId?: string;
|
|
36
|
-
|
|
37
|
-
sessionId?: string;
|
|
38
|
-
/** Additional metadata */
|
|
39
|
-
metadata?: Record<string, unknown>;
|
|
40
|
-
/** Extensible for future additions */
|
|
41
|
-
[key: string]: unknown;
|
|
172
|
+
custom?: Record<string, unknown>;
|
|
42
173
|
}
|
|
43
174
|
/**
|
|
44
|
-
*
|
|
175
|
+
* Input data passed to invoke handlers.
|
|
176
|
+
* @internal
|
|
45
177
|
*/
|
|
46
|
-
export
|
|
47
|
-
/** Conversation messages */
|
|
48
|
-
messages: Message[];
|
|
49
|
-
/** Additional metadata for this request */
|
|
50
|
-
metadata?: Record<string, unknown>;
|
|
51
|
-
}
|
|
178
|
+
export type InvokeInput = Record<string, unknown>;
|
|
52
179
|
/**
|
|
53
|
-
*
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
180
|
+
* Result from an invoke handler - either a response or an async generator for streaming.
|
|
181
|
+
* @internal
|
|
182
|
+
*/
|
|
183
|
+
export type InvokeResult = InvokeResponse | AsyncGenerator<StreamChunk, void, unknown>;
|
|
184
|
+
/**
|
|
185
|
+
* Result from a chat handler - either a response or an async generator for streaming.
|
|
186
|
+
* @internal
|
|
187
|
+
*/
|
|
188
|
+
export type ChatResult = ChatResponse | AsyncGenerator<StreamChunk, void, unknown>;
|
|
189
|
+
/**
|
|
190
|
+
* Handler function for invoke requests (with optional context).
|
|
191
|
+
* @internal
|
|
192
|
+
*/
|
|
193
|
+
export type InvokeHandler = (input: InvokeInput, ctx?: Context) => InvokeResult | Promise<InvokeResult>;
|
|
194
|
+
/**
|
|
195
|
+
* Handler function for chat requests (with optional context).
|
|
196
|
+
* @internal
|
|
197
|
+
*/
|
|
198
|
+
export type ChatHandler = (messages: ChatMessage[], ctx?: Context) => ChatResult | Promise<ChatResult>;
|
|
199
|
+
/**
|
|
200
|
+
* Individual agent health status.
|
|
201
|
+
* @internal
|
|
202
|
+
*/
|
|
203
|
+
export interface AgentHealth {
|
|
204
|
+
name: string;
|
|
205
|
+
invoke: boolean;
|
|
206
|
+
chat: boolean;
|
|
71
207
|
}
|
|
72
208
|
/**
|
|
73
|
-
*
|
|
209
|
+
* Overall health response for the runtime.
|
|
210
|
+
* @internal
|
|
74
211
|
*/
|
|
75
|
-
export interface
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
delete(key: string): Promise<void>;
|
|
79
|
-
clear(): Promise<void>;
|
|
212
|
+
export interface HealthResponse {
|
|
213
|
+
status: 'healthy';
|
|
214
|
+
agents: string[];
|
|
80
215
|
}
|
|
81
216
|
/**
|
|
82
|
-
*
|
|
217
|
+
* User-defined metadata for an agent.
|
|
218
|
+
* @internal
|
|
83
219
|
*/
|
|
84
|
-
export interface
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
220
|
+
export interface AgentMetadata {
|
|
221
|
+
framework?: string;
|
|
222
|
+
model?: string;
|
|
223
|
+
description?: string;
|
|
224
|
+
[key: string]: unknown;
|
|
88
225
|
}
|
|
89
226
|
/**
|
|
90
|
-
*
|
|
227
|
+
* Agent information returned by the discovery endpoint.
|
|
228
|
+
* @internal
|
|
91
229
|
*/
|
|
92
|
-
export interface
|
|
93
|
-
|
|
94
|
-
|
|
230
|
+
export interface AgentInfo {
|
|
231
|
+
name: string;
|
|
232
|
+
invoke: boolean;
|
|
233
|
+
chat: boolean;
|
|
234
|
+
metadata: Record<string, unknown>;
|
|
95
235
|
}
|
|
96
236
|
/**
|
|
97
|
-
*
|
|
237
|
+
* Runtime information returned by the discovery endpoint.
|
|
238
|
+
* @internal
|
|
98
239
|
*/
|
|
99
|
-
export
|
|
240
|
+
export interface RuntimeInfo {
|
|
241
|
+
version: string;
|
|
242
|
+
language: 'typescript';
|
|
243
|
+
framework: 'hono';
|
|
244
|
+
}
|
|
100
245
|
/**
|
|
101
|
-
*
|
|
246
|
+
* Response from the /_discover endpoint.
|
|
247
|
+
* @internal
|
|
102
248
|
*/
|
|
103
|
-
export
|
|
249
|
+
export interface DiscoverResponse {
|
|
250
|
+
runtime: RuntimeInfo;
|
|
251
|
+
agents: AgentInfo[];
|
|
252
|
+
}
|
|
104
253
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
CHANGED
|
@@ -1,5 +1,95 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Type definitions for the Reminix Agent Runtime.
|
|
3
|
+
*
|
|
4
|
+
* These types define the contract between AI agents and the Reminix API.
|
|
3
5
|
*/
|
|
4
|
-
|
|
6
|
+
import { z } from 'zod/v4';
|
|
7
|
+
// =============================================================================
|
|
8
|
+
// Message Types
|
|
9
|
+
// =============================================================================
|
|
10
|
+
/**
|
|
11
|
+
* Tool call function details.
|
|
12
|
+
* @internal
|
|
13
|
+
*/
|
|
14
|
+
export const ToolCallFunctionSchema = z.object({
|
|
15
|
+
name: z.string(),
|
|
16
|
+
arguments: z.string(),
|
|
17
|
+
});
|
|
18
|
+
/**
|
|
19
|
+
* A tool call made by the assistant.
|
|
20
|
+
* @internal
|
|
21
|
+
*/
|
|
22
|
+
export const ToolCallSchema = z.object({
|
|
23
|
+
id: z.string(),
|
|
24
|
+
type: z.literal('function'),
|
|
25
|
+
function: ToolCallFunctionSchema,
|
|
26
|
+
});
|
|
27
|
+
/**
|
|
28
|
+
* Valid message roles.
|
|
29
|
+
* @internal
|
|
30
|
+
*/
|
|
31
|
+
export const MessageRoleSchema = z.enum(['system', 'user', 'assistant', 'tool']);
|
|
32
|
+
/**
|
|
33
|
+
* A chat message in a conversation.
|
|
34
|
+
* @internal
|
|
35
|
+
*/
|
|
36
|
+
export const ChatMessageSchema = z.object({
|
|
37
|
+
role: MessageRoleSchema,
|
|
38
|
+
content: z.union([z.string(), z.array(z.any()), z.null()]),
|
|
39
|
+
name: z.string().optional(),
|
|
40
|
+
tool_calls: z.array(ToolCallSchema).optional(),
|
|
41
|
+
tool_call_id: z.string().optional(),
|
|
42
|
+
});
|
|
43
|
+
/**
|
|
44
|
+
* An assistant message returned by chat handlers.
|
|
45
|
+
* @internal
|
|
46
|
+
*/
|
|
47
|
+
export const AssistantMessageSchema = z.object({
|
|
48
|
+
role: z.literal('assistant'),
|
|
49
|
+
content: z.union([z.string(), z.array(z.any()), z.null()]),
|
|
50
|
+
tool_calls: z.array(ToolCallSchema).optional(),
|
|
51
|
+
});
|
|
52
|
+
// =============================================================================
|
|
53
|
+
// Request Types
|
|
54
|
+
// =============================================================================
|
|
55
|
+
/**
|
|
56
|
+
* Request body for invoke endpoint.
|
|
57
|
+
* @internal
|
|
58
|
+
*/
|
|
59
|
+
export const InvokeRequestSchema = z.object({
|
|
60
|
+
input: z.record(z.string(), z.any()),
|
|
61
|
+
stream: z.boolean().optional().default(false),
|
|
62
|
+
});
|
|
63
|
+
/**
|
|
64
|
+
* Request body for chat endpoint.
|
|
65
|
+
* @internal
|
|
66
|
+
*/
|
|
67
|
+
export const ChatRequestSchema = z.object({
|
|
68
|
+
messages: z.array(ChatMessageSchema).nonempty(),
|
|
69
|
+
stream: z.boolean().optional().default(false),
|
|
70
|
+
});
|
|
71
|
+
// =============================================================================
|
|
72
|
+
// Response Types
|
|
73
|
+
// =============================================================================
|
|
74
|
+
/**
|
|
75
|
+
* Response from invoke handler (non-streaming).
|
|
76
|
+
* @internal
|
|
77
|
+
*/
|
|
78
|
+
export const InvokeResponseSchema = z.object({
|
|
79
|
+
output: z.any(),
|
|
80
|
+
});
|
|
81
|
+
/**
|
|
82
|
+
* Response from chat handler (non-streaming).
|
|
83
|
+
* @internal
|
|
84
|
+
*/
|
|
85
|
+
export const ChatResponseSchema = z.object({
|
|
86
|
+
message: AssistantMessageSchema,
|
|
87
|
+
});
|
|
88
|
+
/**
|
|
89
|
+
* A streaming chunk.
|
|
90
|
+
* @internal
|
|
91
|
+
*/
|
|
92
|
+
export const StreamChunkSchema = z.object({
|
|
93
|
+
chunk: z.string(),
|
|
94
|
+
});
|
|
5
95
|
//# sourceMappingURL=types.js.map
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,eAAO,MAAM,OAAO,UAAU,CAAC"}
|
package/dist/version.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@reminix/runtime",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.1",
|
|
4
4
|
"type": "module",
|
|
5
|
-
"description": "Reminix
|
|
5
|
+
"description": "Reminix Agent Runtime - Build AI agents that integrate with Reminix",
|
|
6
6
|
"main": "./dist/index.js",
|
|
7
7
|
"types": "./dist/index.d.ts",
|
|
8
8
|
"exports": {
|
|
@@ -18,8 +18,8 @@
|
|
|
18
18
|
"keywords": [
|
|
19
19
|
"reminix",
|
|
20
20
|
"runtime",
|
|
21
|
-
"
|
|
22
|
-
"
|
|
21
|
+
"agent",
|
|
22
|
+
"ai",
|
|
23
23
|
"typescript"
|
|
24
24
|
],
|
|
25
25
|
"author": "Reminix <support@reminix.com>",
|
|
@@ -30,11 +30,14 @@
|
|
|
30
30
|
"directory": "packages/runtime"
|
|
31
31
|
},
|
|
32
32
|
"homepage": "https://github.com/reminix-ai/reminix-typescript",
|
|
33
|
-
"dependencies": {
|
|
33
|
+
"dependencies": {
|
|
34
|
+
"@hono/node-server": "^1.19.7",
|
|
35
|
+
"hono": "^4.11.3",
|
|
36
|
+
"zod": "^4.3.5"
|
|
37
|
+
},
|
|
34
38
|
"devDependencies": {
|
|
35
|
-
"@types/
|
|
36
|
-
"vitest": "^4.0.16"
|
|
37
|
-
"tsd": "^0.33.0"
|
|
39
|
+
"@types/node": "^22.0.0",
|
|
40
|
+
"vitest": "^4.0.16"
|
|
38
41
|
},
|
|
39
42
|
"engines": {
|
|
40
43
|
"node": ">=18.0.0"
|
package/dist/executor.d.ts
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Core handler execution logic
|
|
3
|
-
*/
|
|
4
|
-
import type { AgentHandler, ToolHandler, Context, Request, Response } from './types';
|
|
5
|
-
/**
|
|
6
|
-
* Execute an agent handler
|
|
7
|
-
*/
|
|
8
|
-
export declare function executeAgent(handler: AgentHandler, context: Context, request: Request): Promise<Response>;
|
|
9
|
-
/**
|
|
10
|
-
* Execute a tool handler
|
|
11
|
-
*/
|
|
12
|
-
export declare function executeTool(handler: ToolHandler, context: Context, request: Request): Promise<Response>;
|
|
13
|
-
/**
|
|
14
|
-
* Execute a handler (agent or tool)
|
|
15
|
-
*/
|
|
16
|
-
export declare function executeHandler(handler: AgentHandler | ToolHandler, context: Context, request: Request): Promise<Response>;
|
|
17
|
-
//# sourceMappingURL=executor.d.ts.map
|
package/dist/executor.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../src/executor.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAErF;;GAEG;AACH,wBAAsB,YAAY,CAChC,OAAO,EAAE,YAAY,EACrB,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,QAAQ,CAAC,CAEnB;AAED;;GAEG;AACH,wBAAsB,WAAW,CAC/B,OAAO,EAAE,WAAW,EACpB,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,QAAQ,CAAC,CAEnB;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,YAAY,GAAG,WAAW,EACnC,OAAO,EAAE,OAAO,EAChB,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,QAAQ,CAAC,CAEnB"}
|
package/dist/executor.js
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Core handler execution logic
|
|
3
|
-
*/
|
|
4
|
-
/**
|
|
5
|
-
* Execute an agent handler
|
|
6
|
-
*/
|
|
7
|
-
export async function executeAgent(handler, context, request) {
|
|
8
|
-
return await handler(context, request);
|
|
9
|
-
}
|
|
10
|
-
/**
|
|
11
|
-
* Execute a tool handler
|
|
12
|
-
*/
|
|
13
|
-
export async function executeTool(handler, context, request) {
|
|
14
|
-
return await handler(context, request);
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* Execute a handler (agent or tool)
|
|
18
|
-
*/
|
|
19
|
-
export async function executeHandler(handler, context, request) {
|
|
20
|
-
return await handler(context, request);
|
|
21
|
-
}
|
|
22
|
-
//# sourceMappingURL=executor.js.map
|
package/dist/executor.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../src/executor.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,OAAqB,EACrB,OAAgB,EAChB,OAAgB;IAEhB,OAAO,MAAM,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AACzC,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,OAAoB,EACpB,OAAgB,EAChB,OAAgB;IAEhB,OAAO,MAAM,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AACzC,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,OAAmC,EACnC,OAAgB,EAChB,OAAgB;IAEhB,OAAO,MAAM,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AACzC,CAAC"}
|
package/dist/loader.d.ts
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Load handler from file
|
|
3
|
-
*/
|
|
4
|
-
import type { AgentHandler, ToolHandler } from './types';
|
|
5
|
-
export interface LoadedHandler {
|
|
6
|
-
agents?: Record<string, AgentHandler>;
|
|
7
|
-
tools?: Record<string, ToolHandler>;
|
|
8
|
-
prompts?: Record<string, unknown>;
|
|
9
|
-
}
|
|
10
|
-
/**
|
|
11
|
-
* Load handler from a file path
|
|
12
|
-
* Supports both TypeScript (.ts) and JavaScript (.js) files
|
|
13
|
-
*/
|
|
14
|
-
export declare function loadHandler(handlerPath: string): Promise<LoadedHandler>;
|
|
15
|
-
/**
|
|
16
|
-
* Check if a path is a file (not a directory)
|
|
17
|
-
*/
|
|
18
|
-
export declare function isFile(path: string): boolean;
|
|
19
|
-
//# sourceMappingURL=loader.d.ts.map
|
package/dist/loader.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEzD,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACpC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAqC7E;AAED;;GAEG;AACH,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAO5C"}
|
package/dist/loader.js
DELETED
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Load handler from file
|
|
3
|
-
*/
|
|
4
|
-
import { pathToFileURL } from 'url';
|
|
5
|
-
import { statSync } from 'fs';
|
|
6
|
-
/**
|
|
7
|
-
* Load handler from a file path
|
|
8
|
-
* Supports both TypeScript (.ts) and JavaScript (.js) files
|
|
9
|
-
*/
|
|
10
|
-
export async function loadHandler(handlerPath) {
|
|
11
|
-
try {
|
|
12
|
-
// Convert file path to file URL for ES modules
|
|
13
|
-
const fileUrl = pathToFileURL(handlerPath).href;
|
|
14
|
-
// Dynamic import of the handler module
|
|
15
|
-
const module = await import(fileUrl);
|
|
16
|
-
// Extract agents, tools, and prompts
|
|
17
|
-
const loaded = {};
|
|
18
|
-
if (module.agents) {
|
|
19
|
-
loaded.agents = module.agents;
|
|
20
|
-
}
|
|
21
|
-
if (module.tools) {
|
|
22
|
-
loaded.tools = module.tools;
|
|
23
|
-
}
|
|
24
|
-
if (module.prompts) {
|
|
25
|
-
loaded.prompts = module.prompts;
|
|
26
|
-
}
|
|
27
|
-
// Validate that at least one export exists
|
|
28
|
-
if (!loaded.agents && !loaded.tools && !loaded.prompts) {
|
|
29
|
-
throw new Error(`Handler file "${handlerPath}" must export at least one of: agents, tools, or prompts`);
|
|
30
|
-
}
|
|
31
|
-
return loaded;
|
|
32
|
-
}
|
|
33
|
-
catch (error) {
|
|
34
|
-
if (error instanceof Error) {
|
|
35
|
-
throw new Error(`Failed to load handler from "${handlerPath}": ${error.message}`);
|
|
36
|
-
}
|
|
37
|
-
throw error;
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
/**
|
|
41
|
-
* Check if a path is a file (not a directory)
|
|
42
|
-
*/
|
|
43
|
-
export function isFile(path) {
|
|
44
|
-
try {
|
|
45
|
-
const stats = statSync(path);
|
|
46
|
-
return stats.isFile();
|
|
47
|
-
}
|
|
48
|
-
catch {
|
|
49
|
-
return false;
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
//# sourceMappingURL=loader.js.map
|
package/dist/loader.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;AAS9B;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,WAAmB;IACnD,IAAI,CAAC;QACH,+CAA+C;QAC/C,MAAM,OAAO,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC;QAEhD,uCAAuC;QACvC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC;QAErC,qCAAqC;QACrC,MAAM,MAAM,GAAkB,EAAE,CAAC;QAEjC,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClB,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAChC,CAAC;QAED,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACjB,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC9B,CAAC;QAED,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAClC,CAAC;QAED,2CAA2C;QAC3C,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACvD,MAAM,IAAI,KAAK,CACb,iBAAiB,WAAW,0DAA0D,CACvF,CAAC;QACJ,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,gCAAgC,WAAW,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACpF,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,MAAM,CAAC,IAAY;IACjC,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC7B,OAAO,KAAK,CAAC,MAAM,EAAE,CAAC;IACxB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
|