@lov3kaizen/agentsea-prompts 0.5.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/LICENSE +21 -0
- package/README.md +518 -0
- package/dist/Client-raKKKXgi.d.ts +117 -0
- package/dist/index-CxHUTqKA.d.ts +280 -0
- package/dist/index.d.ts +56 -0
- package/dist/index.js +3474 -0
- package/dist/index.js.map +1 -0
- package/dist/integrations/agentsea/index.d.ts +7 -0
- package/dist/integrations/agentsea/index.js +186 -0
- package/dist/integrations/agentsea/index.js.map +1 -0
- package/dist/prompt.types-UpghZJIu.d.ts +78 -0
- package/dist/sdk/Client.d.ts +4 -0
- package/dist/sdk/Client.js +629 -0
- package/dist/sdk/Client.js.map +1 -0
- package/dist/storage/index.d.ts +123 -0
- package/dist/storage/index.js +795 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/storage.types-CNQ8CxaH.d.ts +462 -0
- package/dist/testing/index.d.ts +41 -0
- package/dist/testing/index.js +402 -0
- package/dist/testing/index.js.map +1 -0
- package/package.json +89 -0
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
// src/integrations/agentsea/PromptProvider.ts
|
|
2
|
+
import { EventEmitter } from "eventemitter3";
|
|
3
|
+
var PromptProvider = class extends EventEmitter {
|
|
4
|
+
registry;
|
|
5
|
+
client;
|
|
6
|
+
environment;
|
|
7
|
+
autoRefresh;
|
|
8
|
+
cache = /* @__PURE__ */ new Map();
|
|
9
|
+
cacheTtl;
|
|
10
|
+
constructor(config) {
|
|
11
|
+
super();
|
|
12
|
+
if (!config.registry && !config.client) {
|
|
13
|
+
throw new Error("Either registry or client must be provided");
|
|
14
|
+
}
|
|
15
|
+
this.registry = config.registry;
|
|
16
|
+
this.client = config.client;
|
|
17
|
+
this.environment = config.environment || "production";
|
|
18
|
+
this.autoRefresh = config.autoRefresh ?? true;
|
|
19
|
+
this.cacheTtl = (config.cacheTtl ?? 300) * 1e3;
|
|
20
|
+
if (this.autoRefresh) {
|
|
21
|
+
this.setupAutoRefresh();
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Set up auto-refresh listeners
|
|
26
|
+
*/
|
|
27
|
+
setupAutoRefresh() {
|
|
28
|
+
if (this.registry) {
|
|
29
|
+
this.registry.on("prompt:updated", (event) => {
|
|
30
|
+
if (event.environment === this.environment) {
|
|
31
|
+
this.cache.delete(event.promptName || "");
|
|
32
|
+
this.emit("prompt:refreshed", {
|
|
33
|
+
name: event.promptName || "",
|
|
34
|
+
version: event.version || ""
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
if (this.client) {
|
|
40
|
+
this.client.on("prompt:updated", ({ name, version }) => {
|
|
41
|
+
this.cache.delete(name);
|
|
42
|
+
this.emit("prompt:refreshed", { name, version });
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Get a prompt
|
|
48
|
+
*/
|
|
49
|
+
async get(name, options = {}) {
|
|
50
|
+
const cacheKey = `${name}:${options.version || "latest"}`;
|
|
51
|
+
if (!options.forceRefresh) {
|
|
52
|
+
const cached = this.cache.get(cacheKey);
|
|
53
|
+
if (cached && Date.now() < cached.expiresAt) {
|
|
54
|
+
return cached.prompt;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
let prompt = null;
|
|
58
|
+
if (this.registry) {
|
|
59
|
+
prompt = await this.registry.get(name, {
|
|
60
|
+
environment: this.environment,
|
|
61
|
+
version: options.version
|
|
62
|
+
});
|
|
63
|
+
} else if (this.client) {
|
|
64
|
+
prompt = await this.client.get(name, { version: options.version });
|
|
65
|
+
}
|
|
66
|
+
if (prompt) {
|
|
67
|
+
this.cache.set(cacheKey, {
|
|
68
|
+
prompt,
|
|
69
|
+
expiresAt: Date.now() + this.cacheTtl
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
return prompt;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Render a prompt
|
|
76
|
+
*/
|
|
77
|
+
async render(name, variables, options = {}) {
|
|
78
|
+
const prompt = await this.get(name, { version: options.version });
|
|
79
|
+
if (!prompt) {
|
|
80
|
+
throw new Error(`Prompt '${name}' not found`);
|
|
81
|
+
}
|
|
82
|
+
return prompt.render(variables, options);
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Create a dynamic prompt for an agent
|
|
86
|
+
*
|
|
87
|
+
* Returns a function that can be used as a systemPrompt
|
|
88
|
+
* that auto-updates when the prompt changes.
|
|
89
|
+
*/
|
|
90
|
+
dynamic(nameOrConfig, defaultVariables) {
|
|
91
|
+
const config = typeof nameOrConfig === "string" ? { name: nameOrConfig, variables: defaultVariables } : nameOrConfig;
|
|
92
|
+
return async () => {
|
|
93
|
+
try {
|
|
94
|
+
const prompt = await this.get(config.name, { version: config.version });
|
|
95
|
+
if (!prompt) {
|
|
96
|
+
if (config.fallback) {
|
|
97
|
+
return config.fallback;
|
|
98
|
+
}
|
|
99
|
+
throw new Error(`Prompt '${config.name}' not found`);
|
|
100
|
+
}
|
|
101
|
+
const result = prompt.render(config.variables || {});
|
|
102
|
+
return result.content;
|
|
103
|
+
} catch (error) {
|
|
104
|
+
this.emit("prompt:error", { name: config.name, error });
|
|
105
|
+
if (config.fallback) {
|
|
106
|
+
return config.fallback;
|
|
107
|
+
}
|
|
108
|
+
throw error;
|
|
109
|
+
}
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Create a static prompt that renders once and caches
|
|
114
|
+
*/
|
|
115
|
+
static(name, variables = {}) {
|
|
116
|
+
let cachedContent = null;
|
|
117
|
+
void this.render(name, variables).then((result) => {
|
|
118
|
+
cachedContent = result.content;
|
|
119
|
+
});
|
|
120
|
+
return () => {
|
|
121
|
+
if (cachedContent === null) {
|
|
122
|
+
throw new Error(`Prompt '${name}' not yet loaded`);
|
|
123
|
+
}
|
|
124
|
+
return cachedContent;
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Preload prompts for faster access
|
|
129
|
+
*/
|
|
130
|
+
async preload(names) {
|
|
131
|
+
await Promise.all(names.map((name) => this.get(name)));
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Clear the cache
|
|
135
|
+
*/
|
|
136
|
+
clearCache() {
|
|
137
|
+
this.cache.clear();
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Invalidate a specific prompt
|
|
141
|
+
*/
|
|
142
|
+
invalidate(name) {
|
|
143
|
+
for (const key of this.cache.keys()) {
|
|
144
|
+
if (key.startsWith(`${name}:`)) {
|
|
145
|
+
this.cache.delete(key);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Get cache statistics
|
|
151
|
+
*/
|
|
152
|
+
getCacheStats() {
|
|
153
|
+
return {
|
|
154
|
+
size: this.cache.size,
|
|
155
|
+
prompts: Array.from(this.cache.keys())
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
};
|
|
159
|
+
function createSystemPrompt(provider, name, variables = {}, options = {}) {
|
|
160
|
+
return provider.dynamic({
|
|
161
|
+
name,
|
|
162
|
+
variables,
|
|
163
|
+
fallback: options.fallback
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
function createABTestPrompt(provider, config) {
|
|
167
|
+
return async (context) => {
|
|
168
|
+
const userId = config.getUserId(context);
|
|
169
|
+
const prompt = await provider.get(config.prompt);
|
|
170
|
+
if (!prompt) {
|
|
171
|
+
throw new Error(`Prompt '${config.prompt}' not found`);
|
|
172
|
+
}
|
|
173
|
+
const result = prompt.render({
|
|
174
|
+
...config.variables,
|
|
175
|
+
_userId: userId,
|
|
176
|
+
_testName: config.testName
|
|
177
|
+
});
|
|
178
|
+
return result.content;
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
export {
|
|
182
|
+
PromptProvider,
|
|
183
|
+
createABTestPrompt,
|
|
184
|
+
createSystemPrompt
|
|
185
|
+
};
|
|
186
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/integrations/agentsea/PromptProvider.ts"],"sourcesContent":["/**\n * AgentSea Prompt Provider\n *\n * Integration with AgentSea agents for dynamic prompt loading.\n */\n\nimport { EventEmitter } from 'eventemitter3';\nimport type { PromptRegistry } from '../../core/PromptRegistry.js';\nimport type { PromptClient } from '../../sdk/Client.js';\nimport type { Prompt } from '../../core/Prompt.js';\nimport type { RenderedPrompt, RenderOptions } from '../../types/index.js';\n\n/**\n * Provider configuration\n */\nexport interface PromptProviderConfig {\n /** Registry instance (for server-side) */\n registry?: PromptRegistry;\n /** Client instance (for client-side) */\n client?: PromptClient;\n /** Environment to use */\n environment?: string;\n /** Auto-refresh prompts on update */\n autoRefresh?: boolean;\n /** Cache TTL in seconds */\n cacheTtl?: number;\n}\n\n/**\n * Dynamic prompt configuration\n */\nexport interface DynamicPromptConfig {\n name: string;\n variables?: Record<string, unknown>;\n version?: string;\n fallback?: string;\n}\n\n/**\n * Provider events\n */\ninterface ProviderEvents {\n 'prompt:refreshed': { name: string; version: string };\n 'prompt:error': { name: string; error: unknown };\n}\n\n/**\n * Prompt Provider for AgentSea agents\n */\nexport class PromptProvider extends EventEmitter<ProviderEvents> {\n private registry?: PromptRegistry;\n private client?: PromptClient;\n private environment: string;\n private autoRefresh: boolean;\n private cache = new Map<string, { prompt: Prompt; expiresAt: number }>();\n private cacheTtl: number;\n\n constructor(config: PromptProviderConfig) {\n super();\n\n if (!config.registry && !config.client) {\n throw new Error('Either registry or client must be provided');\n }\n\n this.registry = config.registry;\n this.client = config.client;\n this.environment = config.environment || 'production';\n this.autoRefresh = config.autoRefresh ?? true;\n this.cacheTtl = (config.cacheTtl ?? 300) * 1000; // Convert to ms\n\n // Set up auto-refresh listeners\n if (this.autoRefresh) {\n this.setupAutoRefresh();\n }\n }\n\n /**\n * Set up auto-refresh listeners\n */\n private setupAutoRefresh(): void {\n if (this.registry) {\n this.registry.on('prompt:updated', (event) => {\n if (event.environment === this.environment) {\n this.cache.delete(event.promptName || '');\n this.emit('prompt:refreshed', {\n name: event.promptName || '',\n version: event.version || '',\n });\n }\n });\n }\n\n if (this.client) {\n this.client.on('prompt:updated', ({ name, version }) => {\n this.cache.delete(name);\n this.emit('prompt:refreshed', { name, version });\n });\n }\n }\n\n /**\n * Get a prompt\n */\n async get(\n name: string,\n options: { version?: string; forceRefresh?: boolean } = {},\n ): Promise<Prompt | null> {\n const cacheKey = `${name}:${options.version || 'latest'}`;\n\n // Check cache\n if (!options.forceRefresh) {\n const cached = this.cache.get(cacheKey);\n if (cached && Date.now() < cached.expiresAt) {\n return cached.prompt;\n }\n }\n\n // Fetch prompt\n let prompt: Prompt | null = null;\n\n if (this.registry) {\n prompt = await this.registry.get(name, {\n environment: this.environment,\n version: options.version,\n });\n } else if (this.client) {\n prompt = await this.client.get(name, { version: options.version });\n }\n\n // Cache result\n if (prompt) {\n this.cache.set(cacheKey, {\n prompt,\n expiresAt: Date.now() + this.cacheTtl,\n });\n }\n\n return prompt;\n }\n\n /**\n * Render a prompt\n */\n async render(\n name: string,\n variables: Record<string, unknown>,\n options: RenderOptions & { version?: string } = {},\n ): Promise<RenderedPrompt> {\n const prompt = await this.get(name, { version: options.version });\n\n if (!prompt) {\n throw new Error(`Prompt '${name}' not found`);\n }\n\n return prompt.render(variables, options);\n }\n\n /**\n * Create a dynamic prompt for an agent\n *\n * Returns a function that can be used as a systemPrompt\n * that auto-updates when the prompt changes.\n */\n dynamic(\n nameOrConfig: string | DynamicPromptConfig,\n defaultVariables?: Record<string, unknown>,\n ): () => Promise<string> {\n const config: DynamicPromptConfig =\n typeof nameOrConfig === 'string'\n ? { name: nameOrConfig, variables: defaultVariables }\n : nameOrConfig;\n\n return async () => {\n try {\n const prompt = await this.get(config.name, { version: config.version });\n\n if (!prompt) {\n if (config.fallback) {\n return config.fallback;\n }\n throw new Error(`Prompt '${config.name}' not found`);\n }\n\n const result = prompt.render(config.variables || {});\n return result.content;\n } catch (error) {\n this.emit('prompt:error', { name: config.name, error });\n\n if (config.fallback) {\n return config.fallback;\n }\n throw error;\n }\n };\n }\n\n /**\n * Create a static prompt that renders once and caches\n */\n static(name: string, variables: Record<string, unknown> = {}): () => string {\n let cachedContent: string | null = null;\n\n // Pre-render asynchronously\n void this.render(name, variables).then((result) => {\n cachedContent = result.content;\n });\n\n return () => {\n if (cachedContent === null) {\n throw new Error(`Prompt '${name}' not yet loaded`);\n }\n return cachedContent;\n };\n }\n\n /**\n * Preload prompts for faster access\n */\n async preload(names: string[]): Promise<void> {\n await Promise.all(names.map((name) => this.get(name)));\n }\n\n /**\n * Clear the cache\n */\n clearCache(): void {\n this.cache.clear();\n }\n\n /**\n * Invalidate a specific prompt\n */\n invalidate(name: string): void {\n for (const key of this.cache.keys()) {\n if (key.startsWith(`${name}:`)) {\n this.cache.delete(key);\n }\n }\n }\n\n /**\n * Get cache statistics\n */\n getCacheStats(): {\n size: number;\n prompts: string[];\n } {\n return {\n size: this.cache.size,\n prompts: Array.from(this.cache.keys()),\n };\n }\n}\n\n/**\n * Create a prompt-based system prompt for an agent\n *\n * @example\n * ```typescript\n * const agent = new Agent({\n * name: 'support-agent',\n * systemPrompt: createSystemPrompt(provider, 'customer-support', {\n * company_name: 'Acme Corp',\n * }),\n * });\n * ```\n */\nexport function createSystemPrompt(\n provider: PromptProvider,\n name: string,\n variables: Record<string, unknown> = {},\n options: { fallback?: string } = {},\n): () => Promise<string> {\n return provider.dynamic({\n name,\n variables,\n fallback: options.fallback,\n });\n}\n\n/**\n * Create multiple system prompts for A/B testing\n *\n * @example\n * ```typescript\n * const systemPrompt = createABTestPrompt(provider, {\n * testName: 'support-tone',\n * prompt: 'customer-support',\n * getUserId: (context) => context.userId,\n * });\n * ```\n */\nexport function createABTestPrompt(\n provider: PromptProvider,\n config: {\n testName: string;\n prompt: string;\n variables?: Record<string, unknown>;\n getUserId: (context: Record<string, unknown>) => string;\n },\n): (context: Record<string, unknown>) => Promise<string> {\n return async (context) => {\n // For A/B testing, we'd need the registry to get test configuration\n // This is a simplified version that just returns the prompt\n const userId = config.getUserId(context);\n\n // In a full implementation, this would:\n // 1. Get the A/B test configuration\n // 2. Assign the user to a variant\n // 3. Return the appropriate prompt version\n\n const prompt = await provider.get(config.prompt);\n if (!prompt) {\n throw new Error(`Prompt '${config.prompt}' not found`);\n }\n\n const result = prompt.render({\n ...config.variables,\n _userId: userId,\n _testName: config.testName,\n });\n\n return result.content;\n };\n}\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
|
|
3
|
+
type VariableType = 'string' | 'number' | 'boolean' | 'array' | 'enum' | 'object';
|
|
4
|
+
interface VariableDefinition {
|
|
5
|
+
type: VariableType;
|
|
6
|
+
required?: boolean;
|
|
7
|
+
default?: unknown;
|
|
8
|
+
description?: string;
|
|
9
|
+
values?: string[];
|
|
10
|
+
items?: VariableDefinition;
|
|
11
|
+
properties?: Record<string, VariableDefinition>;
|
|
12
|
+
validation?: z.ZodSchema;
|
|
13
|
+
}
|
|
14
|
+
type VariableDefinitions = Record<string, VariableDefinition>;
|
|
15
|
+
interface PromptMetadata {
|
|
16
|
+
author?: string;
|
|
17
|
+
tags?: string[];
|
|
18
|
+
model?: string;
|
|
19
|
+
temperature?: number;
|
|
20
|
+
maxTokens?: number;
|
|
21
|
+
category?: string;
|
|
22
|
+
description?: string;
|
|
23
|
+
[key: string]: unknown;
|
|
24
|
+
}
|
|
25
|
+
type PromptStatus = 'draft' | 'active' | 'deprecated' | 'archived';
|
|
26
|
+
interface PromptData {
|
|
27
|
+
id: string;
|
|
28
|
+
name: string;
|
|
29
|
+
description?: string;
|
|
30
|
+
template: string;
|
|
31
|
+
variables: VariableDefinitions;
|
|
32
|
+
metadata: PromptMetadata;
|
|
33
|
+
status: PromptStatus;
|
|
34
|
+
version: string;
|
|
35
|
+
environment: string;
|
|
36
|
+
createdAt: Date;
|
|
37
|
+
updatedAt: Date;
|
|
38
|
+
createdBy?: string;
|
|
39
|
+
hash: string;
|
|
40
|
+
}
|
|
41
|
+
interface CreatePromptInput {
|
|
42
|
+
name: string;
|
|
43
|
+
description?: string;
|
|
44
|
+
template: string;
|
|
45
|
+
variables?: VariableDefinitions;
|
|
46
|
+
metadata?: PromptMetadata;
|
|
47
|
+
status?: PromptStatus;
|
|
48
|
+
environment?: string;
|
|
49
|
+
}
|
|
50
|
+
interface UpdatePromptInput {
|
|
51
|
+
description?: string;
|
|
52
|
+
template?: string;
|
|
53
|
+
variables?: VariableDefinitions;
|
|
54
|
+
metadata?: PromptMetadata;
|
|
55
|
+
status?: PromptStatus;
|
|
56
|
+
message?: string;
|
|
57
|
+
}
|
|
58
|
+
interface PromptQueryOptions {
|
|
59
|
+
environment?: string;
|
|
60
|
+
version?: string;
|
|
61
|
+
status?: PromptStatus;
|
|
62
|
+
tags?: string[];
|
|
63
|
+
search?: string;
|
|
64
|
+
limit?: number;
|
|
65
|
+
offset?: number;
|
|
66
|
+
}
|
|
67
|
+
interface RenderOptions {
|
|
68
|
+
strict?: boolean;
|
|
69
|
+
partials?: Record<string, string>;
|
|
70
|
+
helpers?: Record<string, (...args: unknown[]) => string>;
|
|
71
|
+
}
|
|
72
|
+
interface RenderedPrompt {
|
|
73
|
+
content: string;
|
|
74
|
+
variables: Record<string, unknown>;
|
|
75
|
+
warnings?: string[];
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
export type { CreatePromptInput as C, PromptData as P, RenderOptions as R, UpdatePromptInput as U, VariableDefinitions as V, PromptMetadata as a, PromptStatus as b, RenderedPrompt as c, VariableDefinition as d, VariableType as e, PromptQueryOptions as f };
|