@standardagents/builder 0.11.12 → 0.12.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/dist/built-in-routes.js +3498 -498
- package/dist/built-in-routes.js.map +1 -1
- package/dist/client/assets/index.css +1 -1
- package/dist/client/index.js +56 -25
- package/dist/client/vendor.js +78 -5
- package/dist/client/vue.js +1 -1
- package/dist/discovery-CpMs68Yx.d.ts +97 -0
- package/dist/index-DkbUJ4MM.d.ts +1043 -0
- package/dist/index.d.ts +205 -999
- package/dist/index.js +4563 -956
- package/dist/index.js.map +1 -1
- package/dist/packing.d.ts +266 -0
- package/dist/packing.js +2202 -0
- package/dist/packing.js.map +1 -0
- package/dist/plugin.js +3477 -608
- package/dist/plugin.js.map +1 -1
- package/dist/test.d.ts +256 -0
- package/dist/test.js +391 -0
- package/dist/test.js.map +1 -0
- package/dist/types-pLkJx8vg.d.ts +306 -0
- package/package.json +25 -4
package/dist/test.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/agents/providers/TestScript.ts","../src/agents/providers/TestProvider.ts"],"names":[],"mappings":"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","file":"test.js","sourcesContent":["/**\n * TestScript - Fluent builder for defining deterministic LLM response sequences.\n *\n * Use this to script exact responses for tests, enabling deterministic testing\n * of agent behavior without calling real LLM APIs.\n *\n * @example\n * ```typescript\n * const script = TestScript.create()\n * .addTextResponse(\"Hello! How can I help?\")\n * .addToolCallResponse([\n * { name: \"search\", arguments: { query: \"test\" } }\n * ])\n * .addTextResponse(\"Based on the search, here's what I found...\");\n * ```\n */\n\nimport type { ToolCall } from \"../types\";\n\n/**\n * A single scripted response from the LLM\n */\nexport interface ScriptedResponse {\n /** Text content to return (null for pure tool calls) */\n content?: string | null;\n\n /** Tool calls to return (OpenAI format) */\n toolCalls?: ToolCall[];\n\n /** Reasoning content for o1-style models */\n reasoningContent?: string | null;\n\n /** Reasoning details for OpenRouter structured reasoning */\n reasoningDetails?: any[];\n\n /** Finish reason */\n finishReason?: \"stop\" | \"tool_calls\" | \"length\" | \"content_filter\";\n\n /** Token usage to report */\n usage?: {\n promptTokens?: number;\n completionTokens?: number;\n reasoningTokens?: number;\n };\n\n /** Simulate an error instead of a successful response */\n error?: {\n message: string;\n code?: string;\n status?: number;\n };\n\n /** Optional: Validate the input matches expectations */\n expectInput?: InputExpectation;\n\n /** Optional: Delay before responding (ms) - useful for streaming tests */\n delayMs?: number;\n}\n\n/**\n * Input validation expectations\n */\nexport interface InputExpectation {\n /** Check that a message contains this text (string or regex) */\n containsMessage?: string | RegExp;\n\n /** Check that a tool result for this tool exists */\n containsToolResult?: {\n toolName: string;\n resultContains?: string;\n };\n\n /** Exact message count expected */\n messageCount?: number;\n\n /** Check that the system prompt contains this text */\n systemPromptContains?: string | RegExp;\n}\n\n/**\n * Configuration for streaming simulation\n */\nexport interface StreamingConfig {\n /** Characters per chunk */\n chunkSize: number;\n\n /** Delay between chunks in milliseconds */\n chunkDelayMs: number;\n}\n\n/**\n * Shorthand for creating tool calls\n */\nexport interface ToolCallSpec {\n name: string;\n arguments: Record<string, any>;\n id?: string;\n}\n\n/**\n * Builder class for creating deterministic test scripts.\n *\n * Each call to addResponse/addTextResponse/etc adds a response to the sequence.\n * When the TestProvider is used, it returns these responses in order.\n */\nexport class TestScript {\n private responses: ScriptedResponse[] = [];\n private streamingConfig?: StreamingConfig;\n\n /**\n * Create a new TestScript instance\n */\n static create(): TestScript {\n return new TestScript();\n }\n\n /**\n * Add a response to the sequence\n */\n addResponse(response: ScriptedResponse): this {\n this.responses.push(response);\n return this;\n }\n\n /**\n * Add a simple text response (stops after response)\n */\n addTextResponse(content: string, options?: Partial<ScriptedResponse>): this {\n return this.addResponse({\n content,\n finishReason: \"stop\",\n ...options,\n });\n }\n\n /**\n * Add a response with tool calls\n */\n addToolCallResponse(\n toolCalls: ToolCallSpec[],\n content?: string,\n options?: Partial<ScriptedResponse>\n ): this {\n return this.addResponse({\n content: content ?? null,\n toolCalls: toolCalls.map((tc) => ({\n id: tc.id || `call_${crypto.randomUUID().substring(0, 8)}`,\n type: \"function\" as const,\n function: {\n name: tc.name,\n arguments: JSON.stringify(tc.arguments),\n },\n })),\n finishReason: \"tool_calls\",\n ...options,\n });\n }\n\n /**\n * Add an error response (simulates provider error)\n */\n addErrorResponse(\n message: string,\n code?: string,\n status?: number,\n options?: Partial<ScriptedResponse>\n ): this {\n return this.addResponse({\n error: { message, code, status },\n ...options,\n });\n }\n\n /**\n * Add a response with reasoning content (for o1-style models)\n */\n addReasoningResponse(\n content: string,\n reasoningContent: string,\n options?: Partial<ScriptedResponse>\n ): this {\n return this.addResponse({\n content,\n reasoningContent,\n finishReason: \"stop\",\n ...options,\n });\n }\n\n /**\n * Enable streaming simulation for all responses\n */\n withStreamingSimulation(config: StreamingConfig): this {\n this.streamingConfig = config;\n return this;\n }\n\n /**\n * Get all scripted responses\n */\n getResponses(): ScriptedResponse[] {\n return [...this.responses];\n }\n\n /**\n * Get streaming configuration\n */\n getStreamingConfig(): StreamingConfig | undefined {\n return this.streamingConfig;\n }\n\n /**\n * Get total number of responses\n */\n get length(): number {\n return this.responses.length;\n }\n\n /**\n * Check if script is empty\n */\n isEmpty(): boolean {\n return this.responses.length === 0;\n }\n\n /**\n * Create a clone of this script\n */\n clone(): TestScript {\n const cloned = new TestScript();\n cloned.responses = [...this.responses];\n cloned.streamingConfig = this.streamingConfig\n ? { ...this.streamingConfig }\n : undefined;\n return cloned;\n }\n}\n","/**\n * TestProvider - Deterministic LLM provider for testing.\n *\n * Returns scripted responses in sequence, enabling deterministic testing\n * of agent execution without real API calls.\n *\n * Implements the new LLMProviderInterface with generate() and stream() methods.\n *\n * @example\n * ```typescript\n * const script = TestScript.create()\n * .addTextResponse(\"Hello!\")\n * .addToolCallResponse([{ name: \"search\", arguments: { q: \"test\" } }])\n * .addTextResponse(\"Found results.\");\n *\n * const provider = createTestProvider(script);\n * ```\n */\n\nimport type {\n LLMProviderInterface,\n ProviderRequest,\n ProviderResponse,\n ProviderStreamChunk,\n ProviderUsage,\n ProviderToolCallPart,\n ProviderFinishReason,\n ProviderFactoryConfig,\n ProviderMessageContent,\n} from \"./types\";\nimport { ProviderError } from \"@standardagents/spec\";\nimport { TestScript } from \"./TestScript\";\nimport type { ScriptedResponse, InputExpectation } from \"./TestScript\";\n\n/**\n * Helper to extract text from ProviderMessageContent (string or multimodal array)\n */\nfunction contentToString(content: ProviderMessageContent | undefined | null): string {\n if (!content) return \"\";\n if (typeof content === \"string\") return content;\n // Extract text from multimodal content\n return content\n .filter((part) => part.type === \"text\")\n .map((part) => (part as { type: \"text\"; text: string }).text)\n .join(\" \");\n}\n\n/**\n * Extended provider config for TestProvider\n */\nexport interface TestProviderConfig extends ProviderFactoryConfig {\n /** The test script defining response sequence. If not provided, uses a default that echoes responses. */\n script?: TestScript;\n\n /** Whether to validate inputs match expectations (default: false) */\n validateInputs?: boolean;\n\n /** Log all requests for debugging (default: false) */\n debugLog?: boolean;\n}\n\n/**\n * Deterministic test provider that returns scripted LLM responses.\n *\n * Key features:\n * - Returns responses in sequence as defined by TestScript\n * - Supports streaming simulation\n * - Optional input validation\n * - Request logging for assertions\n * - Clear error when script is exhausted\n */\nexport class TestProvider implements LLMProviderInterface {\n readonly name = \"test\";\n readonly specificationVersion = \"1\" as const;\n\n private script: TestScript;\n private responseIndex: number = 0;\n private validateInputs: boolean;\n private debugLog: boolean;\n private requestLog: ProviderRequest[] = [];\n private useDefaultResponse: boolean;\n\n constructor(config: TestProviderConfig) {\n // If no script provided, use a default that returns a simple acknowledgment\n this.useDefaultResponse = !config.script;\n this.script = config.script ?? TestScript.create().addTextResponse(\"Test response received.\");\n this.validateInputs = config.validateInputs ?? false;\n this.debugLog = config.debugLog ?? false;\n }\n\n /**\n * Test provider supports any model ID\n */\n supportsModel(_modelId: string): boolean {\n return true;\n }\n\n /**\n * Non-streaming generation - returns the next scripted response\n */\n async generate(request: ProviderRequest): Promise<ProviderResponse> {\n // Log request for debugging/assertions\n if (this.debugLog) {\n console.log(`[TestProvider] Request ${this.responseIndex + 1}:`, {\n messageCount: request.messages.length,\n lastMessage: request.messages.slice(-1)[0],\n });\n }\n this.requestLog.push({ ...request });\n\n // Check for abort\n if (request.signal?.aborted) {\n throw new ProviderError(\"Request aborted\", \"timeout\");\n }\n\n // Get next scripted response\n const responses = this.script.getResponses();\n let scripted: ScriptedResponse;\n\n if (this.responseIndex >= responses.length) {\n if (this.useDefaultResponse) {\n // When using default response mode, keep returning the same response\n scripted = responses[0];\n } else {\n const lastMessage = request.messages.slice(-1)[0];\n const lastContent =\n lastMessage?.role === \"user\"\n ? contentToString(lastMessage.content)\n : lastMessage?.role === \"assistant\"\n ? lastMessage.content ?? \"\"\n : \"\";\n throw new ProviderError(\n `TestProvider: Script exhausted after ${this.responseIndex} responses. ` +\n `Expected ${responses.length} total requests. ` +\n `Received request with ${request.messages.length} messages. ` +\n `Last message role: \"${lastMessage?.role}\", ` +\n `content: \"${String(lastContent).substring(0, 100)}...\"`,\n \"invalid_request\"\n );\n }\n } else {\n scripted = responses[this.responseIndex];\n }\n\n this.responseIndex++;\n\n // Validate input expectations if configured\n if (this.validateInputs && scripted.expectInput) {\n this.validateInput(request, scripted.expectInput);\n }\n\n // Simulate delay if configured\n if (scripted.delayMs) {\n await this.sleep(scripted.delayMs);\n }\n\n // Simulate error if scripted\n if (scripted.error) {\n throw new ProviderError(\n scripted.error.message,\n (scripted.error.code as ProviderError[\"code\"]) || \"unknown\",\n scripted.error.status\n );\n }\n\n // Build provider response\n const promptTokens = scripted.usage?.promptTokens ?? this.estimateTokens(request);\n const completionTokens =\n scripted.usage?.completionTokens ?? Math.ceil((scripted.content?.length ?? 0) / 4);\n const reasoningTokens = scripted.usage?.reasoningTokens ?? 0;\n\n // Convert tool calls from internal format to provider format\n const toolCalls: ProviderToolCallPart[] | undefined = scripted.toolCalls?.map((tc) => ({\n id: tc.id,\n name: tc.function.name,\n arguments: JSON.parse(tc.function.arguments),\n }));\n\n const finishReason: ProviderFinishReason =\n scripted.finishReason === \"tool_calls\" ? \"tool_calls\" : \"stop\";\n\n return {\n content: scripted.content ?? null,\n reasoning: scripted.reasoningContent ?? null,\n reasoningDetails: scripted.reasoningDetails,\n toolCalls,\n finishReason,\n usage: {\n promptTokens,\n completionTokens,\n totalTokens: promptTokens + completionTokens,\n reasoningTokens: reasoningTokens || undefined,\n },\n };\n }\n\n /**\n * Streaming generation - yields chunks for the next scripted response\n */\n async stream(request: ProviderRequest): Promise<AsyncIterable<ProviderStreamChunk>> {\n const response = await this.generate(request);\n const streamingConfig = this.script.getStreamingConfig();\n const self = this;\n\n return {\n async *[Symbol.asyncIterator]() {\n // Check for abort\n if (request.signal?.aborted) {\n yield { type: \"error\", error: \"Request aborted\", code: \"timeout\" };\n return;\n }\n\n // Stream content\n if (response.content) {\n if (streamingConfig) {\n // Chunk the content for streaming simulation\n for (let i = 0; i < response.content.length; i += streamingConfig.chunkSize) {\n const chunk = response.content.substring(i, i + streamingConfig.chunkSize);\n yield { type: \"content-delta\", delta: chunk };\n\n if (streamingConfig.chunkDelayMs > 0) {\n await self.sleep(streamingConfig.chunkDelayMs);\n }\n }\n } else {\n // Immediate mode - send full content as one chunk\n yield { type: \"content-delta\", delta: response.content };\n }\n yield { type: \"content-done\" };\n }\n\n // Stream reasoning\n if (response.reasoning) {\n yield { type: \"reasoning-delta\", delta: response.reasoning };\n yield { type: \"reasoning-done\" };\n }\n\n // Stream tool calls\n if (response.toolCalls) {\n for (const tc of response.toolCalls) {\n yield { type: \"tool-call-start\", id: tc.id, name: tc.name };\n yield { type: \"tool-call-done\", id: tc.id, arguments: tc.arguments };\n }\n }\n\n // Final finish event\n yield {\n type: \"finish\",\n finishReason: response.finishReason,\n usage: response.usage,\n };\n },\n };\n }\n\n /**\n * Validate request matches expectations\n */\n private validateInput(request: ProviderRequest, expectations: InputExpectation): void {\n if (expectations.messageCount !== undefined) {\n if (request.messages.length !== expectations.messageCount) {\n throw new ProviderError(\n `TestProvider: Expected ${expectations.messageCount} messages, got ${request.messages.length}`,\n \"invalid_request\"\n );\n }\n }\n\n if (expectations.containsMessage) {\n const pattern = expectations.containsMessage;\n const found = request.messages.some((m) => {\n const content =\n m.role === \"user\" ? contentToString(m.content) : m.role === \"assistant\" ? m.content : \"\";\n if (!content) return false;\n return typeof pattern === \"string\" ? content.includes(pattern) : pattern.test(content);\n });\n\n if (!found) {\n throw new ProviderError(\n `TestProvider: Expected message containing \"${pattern}\" not found`,\n \"invalid_request\"\n );\n }\n }\n\n if (expectations.containsToolResult) {\n const { toolName, resultContains } = expectations.containsToolResult;\n const found = request.messages.some((m) => {\n if (m.role !== \"tool\") return false;\n const content = typeof m.content === \"string\" ? m.content : \"\";\n return !resultContains || content.includes(resultContains);\n });\n\n if (!found) {\n throw new ProviderError(\n `TestProvider: Expected tool result for \"${toolName}\" not found`,\n \"invalid_request\"\n );\n }\n }\n\n if (expectations.systemPromptContains) {\n const pattern = expectations.systemPromptContains;\n const systemMessage = request.messages.find((m) => m.role === \"system\");\n const systemContent = systemMessage?.role === \"system\" ? systemMessage.content : \"\";\n if (!systemContent) {\n throw new ProviderError(`TestProvider: No system message found`, \"invalid_request\");\n }\n const matches =\n typeof pattern === \"string\" ? systemContent.includes(pattern) : pattern.test(systemContent);\n if (!matches) {\n throw new ProviderError(\n `TestProvider: System prompt does not contain \"${pattern}\"`,\n \"invalid_request\"\n );\n }\n }\n }\n\n /**\n * Simple token estimation (for mock usage stats)\n */\n private estimateTokens(request: ProviderRequest): number {\n return request.messages.reduce((sum, m) => {\n let content = \"\";\n if (m.role === \"system\") {\n content = m.content;\n } else if (m.role === \"user\") {\n content = contentToString(m.content);\n } else if (m.role === \"assistant\") {\n content = m.content ?? \"\";\n } else if (m.role === \"tool\") {\n content = typeof m.content === \"string\" ? m.content : \"\";\n }\n // Rough approximation: ~4 chars per token\n return sum + Math.ceil(content.length / 4);\n }, 0);\n }\n\n private sleep(ms: number): Promise<void> {\n return new Promise((resolve) => setTimeout(resolve, ms));\n }\n\n // ============ Test Utility Methods ============\n\n /**\n * Get logged requests (for test assertions)\n */\n getRequestLog(): ProviderRequest[] {\n return [...this.requestLog];\n }\n\n /**\n * Get the last request made\n */\n getLastRequest(): ProviderRequest | undefined {\n return this.requestLog[this.requestLog.length - 1];\n }\n\n /**\n * Reset provider state for reuse across tests\n */\n reset(): void {\n this.responseIndex = 0;\n this.requestLog = [];\n }\n\n /**\n * Replace the script with a new one and reset\n */\n setScript(script: TestScript): void {\n this.script = script;\n this.reset();\n }\n\n /**\n * Check if all scripted responses were consumed\n */\n isScriptComplete(): boolean {\n return this.responseIndex === this.script.length;\n }\n\n /**\n * Get remaining unconsumed response count\n */\n remainingResponses(): number {\n return this.script.length - this.responseIndex;\n }\n\n /**\n * Get current response index\n */\n getCurrentIndex(): number {\n return this.responseIndex;\n }\n}\n\n/**\n * Factory function to create a TestProvider\n */\nexport function createTestProvider(script?: TestScript): TestProvider {\n return new TestProvider({\n apiKey: \"test\",\n script,\n });\n}\n\n/**\n * ProviderFactory-compatible factory for test provider\n */\nexport const test = (config: ProviderFactoryConfig): LLMProviderInterface => {\n return new TestProvider({\n ...config,\n script: (config as TestProviderConfig).script,\n validateInputs: (config as TestProviderConfig).validateInputs,\n debugLog: (config as TestProviderConfig).debugLog,\n });\n};\n"]}
|
|
@@ -0,0 +1,306 @@
|
|
|
1
|
+
import { DefinitionLoader, AgentDefinition, PackageSignature, PackedMeta } from '@standardagents/spec';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Packing system types for Standard Agents builder.
|
|
5
|
+
*
|
|
6
|
+
* These types are used by the packing/unpacking services and
|
|
7
|
+
* the Vite plugin for managing packed agent packages.
|
|
8
|
+
*
|
|
9
|
+
* @module
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* A discovered packed agent package (from npm or local).
|
|
14
|
+
*
|
|
15
|
+
* Packages are discovered by checking for the `standardagent` field
|
|
16
|
+
* in package.json, rather than looking for manifest.json.
|
|
17
|
+
*/
|
|
18
|
+
interface DiscoveredPackage {
|
|
19
|
+
/** Package identifier */
|
|
20
|
+
packageId: string;
|
|
21
|
+
/** Package version */
|
|
22
|
+
version: string;
|
|
23
|
+
/** Source type */
|
|
24
|
+
source: 'npm' | 'local';
|
|
25
|
+
/** Absolute path to the package root */
|
|
26
|
+
path: string;
|
|
27
|
+
/** All entry agent names (for multiple entry points) */
|
|
28
|
+
entryAgents: string[];
|
|
29
|
+
/** Package description (optional) */
|
|
30
|
+
description?: string;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Base type for agent definitions in the registry.
|
|
35
|
+
* Uses Pick to select the minimum required properties for resolution.
|
|
36
|
+
*/
|
|
37
|
+
type AgentDefBase = Pick<AgentDefinition, 'name' | 'type' | 'title'> & {
|
|
38
|
+
sideA?: {
|
|
39
|
+
prompt?: string;
|
|
40
|
+
};
|
|
41
|
+
sideB?: {
|
|
42
|
+
prompt?: string;
|
|
43
|
+
};
|
|
44
|
+
exposeAsTool?: boolean;
|
|
45
|
+
__package?: PackageSignature;
|
|
46
|
+
};
|
|
47
|
+
/**
|
|
48
|
+
* Base type for prompt definitions in the registry.
|
|
49
|
+
*/
|
|
50
|
+
type PromptDefBase = {
|
|
51
|
+
name?: string;
|
|
52
|
+
model?: string;
|
|
53
|
+
prompt?: string | unknown[];
|
|
54
|
+
tools?: string[];
|
|
55
|
+
__package?: PackageSignature;
|
|
56
|
+
};
|
|
57
|
+
/**
|
|
58
|
+
* Base type for tool definitions in the registry.
|
|
59
|
+
*/
|
|
60
|
+
type ToolDefBase = {
|
|
61
|
+
description?: string;
|
|
62
|
+
execute?: (...args: unknown[]) => Promise<unknown>;
|
|
63
|
+
uses?: string[];
|
|
64
|
+
__package?: PackageSignature;
|
|
65
|
+
};
|
|
66
|
+
/**
|
|
67
|
+
* Base type for model definitions in the registry.
|
|
68
|
+
*/
|
|
69
|
+
type ModelDefBase = {
|
|
70
|
+
name?: string;
|
|
71
|
+
model?: string;
|
|
72
|
+
provider?: string;
|
|
73
|
+
__package?: PackageSignature;
|
|
74
|
+
};
|
|
75
|
+
/**
|
|
76
|
+
* Base type for hook definitions in the registry.
|
|
77
|
+
*/
|
|
78
|
+
type HookDefBase = ((...args: unknown[]) => Promise<unknown>) | Record<string, unknown>;
|
|
79
|
+
/**
|
|
80
|
+
* Registry of items within a single namespace.
|
|
81
|
+
*
|
|
82
|
+
* Uses flexible base types to accommodate both full definitions
|
|
83
|
+
* and partial mock definitions in tests.
|
|
84
|
+
*/
|
|
85
|
+
interface NamespaceItems {
|
|
86
|
+
agents: Record<string, DefinitionLoader<AgentDefBase>>;
|
|
87
|
+
prompts: Record<string, DefinitionLoader<PromptDefBase>>;
|
|
88
|
+
tools: Record<string, DefinitionLoader<ToolDefBase>>;
|
|
89
|
+
models: Record<string, DefinitionLoader<ModelDefBase>>;
|
|
90
|
+
hooks: Record<string, DefinitionLoader<HookDefBase>>;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Registry for a packed package namespace.
|
|
94
|
+
*/
|
|
95
|
+
interface PackageNamespace extends NamespaceItems {
|
|
96
|
+
/** Entry point agents (visible from outside the package) */
|
|
97
|
+
entryAgents: string[];
|
|
98
|
+
/** Package metadata */
|
|
99
|
+
signature: PackageSignature;
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* The complete namespaced registry structure.
|
|
103
|
+
*
|
|
104
|
+
* This replaces the flat registries (tools, models, prompts, agents, hooks)
|
|
105
|
+
* with a namespace-aware structure that supports packing.
|
|
106
|
+
*/
|
|
107
|
+
interface NamespacedRegistry {
|
|
108
|
+
/** Global namespace - unpacked items from agents/ directory */
|
|
109
|
+
global: NamespaceItems;
|
|
110
|
+
/** Per-package namespaces - packed agents */
|
|
111
|
+
packages: Record<string, PackageNamespace>;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Result of analyzing an agent for packing.
|
|
115
|
+
*/
|
|
116
|
+
interface PackingAnalysis {
|
|
117
|
+
/** Agent being packed */
|
|
118
|
+
agent: string;
|
|
119
|
+
/** Primary prompt used by the agent */
|
|
120
|
+
primaryPrompt: string;
|
|
121
|
+
/** All discovered constituents */
|
|
122
|
+
constituents: {
|
|
123
|
+
prompts: ConstituentItem[];
|
|
124
|
+
tools: ConstituentItem[];
|
|
125
|
+
models: ConstituentItem[];
|
|
126
|
+
hooks: ConstituentItem[];
|
|
127
|
+
agents: ConstituentItem[];
|
|
128
|
+
};
|
|
129
|
+
/** Items shared with other unpacked agents */
|
|
130
|
+
shared: {
|
|
131
|
+
prompts: string[];
|
|
132
|
+
tools: string[];
|
|
133
|
+
models: string[];
|
|
134
|
+
hooks: string[];
|
|
135
|
+
};
|
|
136
|
+
/** Any warnings or issues found during analysis */
|
|
137
|
+
warnings: string[];
|
|
138
|
+
/** Any errors that would prevent packing */
|
|
139
|
+
errors: string[];
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* A constituent item discovered during packing analysis.
|
|
143
|
+
*/
|
|
144
|
+
interface ConstituentItem {
|
|
145
|
+
/** Item name */
|
|
146
|
+
name: string;
|
|
147
|
+
/** Absolute file path */
|
|
148
|
+
filePath: string;
|
|
149
|
+
/** How the item was discovered */
|
|
150
|
+
discoveredVia: 'static' | 'uses' | 'manual' | 'prompt-tools' | 'prompt-includes' | 'agent-prompt';
|
|
151
|
+
/** Other agents sharing this item (if any) */
|
|
152
|
+
sharedWith: string[];
|
|
153
|
+
/** Parent item key (e.g., "prompt:customer_support") that discovered this item */
|
|
154
|
+
parentKey?: string;
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* User selection for how to handle a constituent item during packing.
|
|
158
|
+
*/
|
|
159
|
+
interface ItemSelection {
|
|
160
|
+
/** Item name */
|
|
161
|
+
name: string;
|
|
162
|
+
/** Type of item */
|
|
163
|
+
type: 'agent' | 'prompt' | 'tool' | 'model' | 'hook';
|
|
164
|
+
/** Absolute file path */
|
|
165
|
+
filePath: string;
|
|
166
|
+
/** Whether to extract (remove from source) or copy (keep in source) */
|
|
167
|
+
mode: 'extract' | 'copy';
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Options for packing an agent.
|
|
171
|
+
*/
|
|
172
|
+
interface PackingOptions {
|
|
173
|
+
/** Agent name to pack */
|
|
174
|
+
agentName: string;
|
|
175
|
+
/** Root directory of the agents workspace */
|
|
176
|
+
rootDir: string;
|
|
177
|
+
/** Output directory for the packed agent */
|
|
178
|
+
outputDir: string;
|
|
179
|
+
/** Package version (default: '1.0.0') */
|
|
180
|
+
version?: string;
|
|
181
|
+
/** Generate npm-ready package structure */
|
|
182
|
+
npm?: boolean;
|
|
183
|
+
/** Remove original files after packing */
|
|
184
|
+
removeOriginals?: boolean;
|
|
185
|
+
/** Package ID override (default: derived from agent name) */
|
|
186
|
+
packageId?: string;
|
|
187
|
+
/** npm package name (for publishing) */
|
|
188
|
+
packageName?: string;
|
|
189
|
+
/** License identifier (MIT, Apache-2.0, etc.) */
|
|
190
|
+
license?: string;
|
|
191
|
+
/** Copyright holder name */
|
|
192
|
+
licenseOwner?: string;
|
|
193
|
+
/** Additional items to include manually */
|
|
194
|
+
includeItems?: {
|
|
195
|
+
tools?: string[];
|
|
196
|
+
prompts?: string[];
|
|
197
|
+
models?: string[];
|
|
198
|
+
hooks?: string[];
|
|
199
|
+
};
|
|
200
|
+
/** User selections for each item (extract vs copy) */
|
|
201
|
+
itemSelections?: ItemSelection[];
|
|
202
|
+
/** Custom README content (if not provided, one will be generated) */
|
|
203
|
+
readme?: string;
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Result of a packing operation.
|
|
207
|
+
*/
|
|
208
|
+
interface PackingResult {
|
|
209
|
+
/** Whether packing succeeded */
|
|
210
|
+
success: boolean;
|
|
211
|
+
/** Package ID */
|
|
212
|
+
packageId: string;
|
|
213
|
+
/** Path to the output directory */
|
|
214
|
+
outputPath: string;
|
|
215
|
+
/** Generated package metadata */
|
|
216
|
+
meta: PackedMeta;
|
|
217
|
+
/** Files created */
|
|
218
|
+
filesCreated: string[];
|
|
219
|
+
/** Files removed (if removeOriginals was true) */
|
|
220
|
+
filesRemoved?: string[];
|
|
221
|
+
/** Any warnings during packing */
|
|
222
|
+
warnings: string[];
|
|
223
|
+
/** Error message if failed */
|
|
224
|
+
error?: string;
|
|
225
|
+
}
|
|
226
|
+
/**
|
|
227
|
+
* Result of analyzing a package for unpacking.
|
|
228
|
+
*/
|
|
229
|
+
interface UnpackAnalysis {
|
|
230
|
+
/** Package identifier */
|
|
231
|
+
packageId: string;
|
|
232
|
+
/** Package version */
|
|
233
|
+
version: string;
|
|
234
|
+
/** Source type */
|
|
235
|
+
source: 'npm' | 'local';
|
|
236
|
+
/** Whether the package can be unpacked */
|
|
237
|
+
canUnpack: boolean;
|
|
238
|
+
/** Items that can be unpacked */
|
|
239
|
+
items: UnpackableItem[];
|
|
240
|
+
/** Any warnings during analysis */
|
|
241
|
+
warnings: string[];
|
|
242
|
+
/** Any errors that would prevent unpacking */
|
|
243
|
+
errors: string[];
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* An item that can be unpacked from a package.
|
|
247
|
+
*/
|
|
248
|
+
interface UnpackableItem {
|
|
249
|
+
/** Item name */
|
|
250
|
+
name: string;
|
|
251
|
+
/** Item type */
|
|
252
|
+
type: 'agent' | 'prompt' | 'tool' | 'model' | 'hook';
|
|
253
|
+
/** Target file path in agents/ directory */
|
|
254
|
+
targetPath: string;
|
|
255
|
+
/** Whether this item already exists in the global namespace */
|
|
256
|
+
existsGlobally: boolean;
|
|
257
|
+
/** Action to take: generate the file or skip */
|
|
258
|
+
action: 'generate' | 'skip';
|
|
259
|
+
/** Parent item key that references this item (e.g., "prompt:customer_support") */
|
|
260
|
+
parentKey?: string;
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Options for unpacking a packed agent.
|
|
264
|
+
*/
|
|
265
|
+
interface UnpackOptions {
|
|
266
|
+
/** Package to unpack (npm package name or local path) */
|
|
267
|
+
packageId: string;
|
|
268
|
+
/** Root directory of the agents workspace */
|
|
269
|
+
rootDir: string;
|
|
270
|
+
/** Whether to delete the package after unpacking (only for local packages) */
|
|
271
|
+
deletePackage?: boolean;
|
|
272
|
+
/** Item selections (which items to generate vs skip) */
|
|
273
|
+
itemSelections?: UnpackItemSelection[];
|
|
274
|
+
}
|
|
275
|
+
/**
|
|
276
|
+
* User selection for how to handle an item during unpacking.
|
|
277
|
+
*/
|
|
278
|
+
interface UnpackItemSelection {
|
|
279
|
+
/** Item name */
|
|
280
|
+
name: string;
|
|
281
|
+
/** Item type */
|
|
282
|
+
type: 'agent' | 'prompt' | 'tool' | 'model' | 'hook';
|
|
283
|
+
/** Action to take */
|
|
284
|
+
action: 'generate' | 'skip';
|
|
285
|
+
}
|
|
286
|
+
/**
|
|
287
|
+
* Result of an unpacking operation.
|
|
288
|
+
*/
|
|
289
|
+
interface UnpackResult {
|
|
290
|
+
/** Whether unpacking succeeded */
|
|
291
|
+
success: boolean;
|
|
292
|
+
/** Package ID that was unpacked */
|
|
293
|
+
packageId: string;
|
|
294
|
+
/** Files that were generated */
|
|
295
|
+
filesGenerated: string[];
|
|
296
|
+
/** Files that were skipped (already exist) */
|
|
297
|
+
filesSkipped: string[];
|
|
298
|
+
/** Whether the package was deleted */
|
|
299
|
+
packageDeleted: boolean;
|
|
300
|
+
/** Any warnings during unpacking */
|
|
301
|
+
warnings: string[];
|
|
302
|
+
/** Error message if failed */
|
|
303
|
+
error?: string;
|
|
304
|
+
}
|
|
305
|
+
|
|
306
|
+
export type { ConstituentItem as C, DiscoveredPackage as D, NamespacedRegistry as N, PackingAnalysis as P, UnpackOptions as U, PackingOptions as a, PackingResult as b, UnpackResult as c, UnpackAnalysis as d };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@standardagents/builder",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.12.1",
|
|
4
4
|
"private": false,
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "restricted",
|
|
@@ -44,6 +44,16 @@
|
|
|
44
44
|
"import": "./dist/image-processing.js",
|
|
45
45
|
"default": "./dist/image-processing.js"
|
|
46
46
|
},
|
|
47
|
+
"./packing": {
|
|
48
|
+
"types": "./dist/packing.d.ts",
|
|
49
|
+
"import": "./dist/packing.js",
|
|
50
|
+
"default": "./dist/packing.js"
|
|
51
|
+
},
|
|
52
|
+
"./test": {
|
|
53
|
+
"types": "./dist/test.d.ts",
|
|
54
|
+
"import": "./dist/test.js",
|
|
55
|
+
"default": "./dist/test.js"
|
|
56
|
+
},
|
|
47
57
|
"./client": {
|
|
48
58
|
"types": "./client.d.ts"
|
|
49
59
|
},
|
|
@@ -55,20 +65,31 @@
|
|
|
55
65
|
"client"
|
|
56
66
|
],
|
|
57
67
|
"dependencies": {
|
|
68
|
+
"@formkit/core": "^1.7.2",
|
|
58
69
|
"@formkit/drag-and-drop": "^0.5.3",
|
|
70
|
+
"@formkit/icons": "^1.7.2",
|
|
71
|
+
"@formkit/pro": "npm:@formkit/pro-unlimited@^0.127.24",
|
|
72
|
+
"@formkit/themes": "^1.7.2",
|
|
73
|
+
"@formkit/vue": "^1.7.2",
|
|
74
|
+
"@rollup/plugin-commonjs": "^28.0.0",
|
|
75
|
+
"@rollup/plugin-node-resolve": "^16.0.0",
|
|
59
76
|
"@vueuse/core": "^14.0.0",
|
|
60
77
|
"lucide-vue-next": "^0.546.0",
|
|
78
|
+
"magic-string": "^0.30.21",
|
|
79
|
+
"marked": "^17.0.1",
|
|
61
80
|
"monaco-editor": "^0.52.2",
|
|
62
81
|
"openai": "^6.5.0",
|
|
82
|
+
"rollup": "^4.0.0",
|
|
83
|
+
"rollup-plugin-esbuild": "^6.0.0",
|
|
63
84
|
"rou3": "^0.7.3",
|
|
64
85
|
"shiki": "^3.19.0",
|
|
65
86
|
"vue": "^3.5.13",
|
|
66
87
|
"vue-router": "^4.5.0",
|
|
67
88
|
"zod": "^4.0.17",
|
|
68
89
|
"zodown": "^0.2.1",
|
|
69
|
-
"@standardagents/sip": "0.
|
|
70
|
-
"@standardagents/
|
|
71
|
-
"@standardagents/
|
|
90
|
+
"@standardagents/sip": "0.12.1",
|
|
91
|
+
"@standardagents/spec": "0.12.1",
|
|
92
|
+
"@standardagents/vue": "0.12.1"
|
|
72
93
|
},
|
|
73
94
|
"devDependencies": {
|
|
74
95
|
"@cloudflare/vitest-pool-workers": "^0.10.14",
|