@morphllm/subagents 0.1.3 → 0.1.5

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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/core/base-client.ts","../src/core/base-agent.ts","../src/docx/client.ts","../src/docx/agent.ts"],"names":[],"mappings":"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","file":"index.mjs","sourcesContent":["/**\n * BaseClient - Abstract HTTP client for subagent APIs\n */\n\nimport type { BaseClientOptions } from './types';\n\nexport abstract class BaseClient {\n protected apiUrl: string;\n protected timeout: number;\n\n constructor(options: BaseClientOptions = {}) {\n this.apiUrl = options.apiUrl || this.getDefaultApiUrl();\n this.timeout = options.timeout || 60000;\n }\n\n /** Override in subclasses to provide default API URL */\n protected abstract getDefaultApiUrl(): string;\n\n /** Make a GET request */\n protected async get<T>(path: string): Promise<T> {\n const response = await fetch(`${this.apiUrl}${path}`, {\n method: 'GET',\n signal: AbortSignal.timeout(this.timeout),\n });\n\n if (!response.ok) {\n throw new Error(`GET ${path} failed: ${response.statusText}`);\n }\n\n return response.json();\n }\n\n /** Make a POST request with JSON body */\n protected async post<T>(path: string, body?: unknown): Promise<T> {\n const response = await fetch(`${this.apiUrl}${path}`, {\n method: 'POST',\n headers: body ? { 'Content-Type': 'application/json' } : undefined,\n body: body ? JSON.stringify(body) : undefined,\n signal: AbortSignal.timeout(this.timeout),\n });\n\n if (!response.ok) {\n throw new Error(`POST ${path} failed: ${response.statusText}`);\n }\n\n return response.json();\n }\n\n /** Make a POST request with FormData */\n protected async postFormData<T>(path: string, formData: FormData): Promise<T> {\n const response = await fetch(`${this.apiUrl}${path}`, {\n method: 'POST',\n body: formData,\n signal: AbortSignal.timeout(this.timeout),\n });\n\n if (!response.ok) {\n throw new Error(`POST ${path} failed: ${response.statusText}`);\n }\n\n return response.json();\n }\n\n /** Make a DELETE request */\n protected async delete(path: string): Promise<void> {\n const response = await fetch(`${this.apiUrl}${path}`, {\n method: 'DELETE',\n signal: AbortSignal.timeout(this.timeout),\n });\n\n if (!response.ok) {\n throw new Error(`DELETE ${path} failed: ${response.statusText}`);\n }\n }\n\n /** Download a file as Blob */\n protected async downloadBlob(path: string): Promise<Blob> {\n const response = await fetch(`${this.apiUrl}${path}`, {\n signal: AbortSignal.timeout(this.timeout),\n });\n\n if (!response.ok) {\n throw new Error(`Download ${path} failed: ${response.statusText}`);\n }\n\n return response.blob();\n }\n\n /** Health check */\n async health(): Promise<{ status: string; service: string }> {\n return this.get('/health');\n }\n}\n","/**\n * BaseAgent - Abstract base class for AI subagents\n *\n * Provides common functionality for tool-using agents with\n * OpenAI-compatible API support.\n */\n\nimport type {\n Tool,\n ChatMessage,\n ToolCall,\n StreamEvent,\n AgentRunResult,\n BaseAgentOptions,\n} from './types';\n\nexport abstract class BaseAgent<TClient> {\n protected openai: any;\n protected model: string;\n protected instructions: string;\n protected client: TClient;\n\n constructor(options: BaseAgentOptions & { client: TClient }) {\n this.openai = options.openai;\n this.model = options.model || this.getDefaultModel();\n this.instructions = options.instructions || this.getDefaultInstructions();\n this.client = options.client;\n }\n\n /** Get the underlying client */\n getClient(): TClient {\n return this.client;\n }\n\n /** Override to provide default model */\n protected abstract getDefaultModel(): string;\n\n /** Override to provide default instructions */\n protected abstract getDefaultInstructions(): string;\n\n /** Override to provide tool definitions */\n protected abstract getTools(): Tool[];\n\n /** Override to execute a tool call */\n protected abstract executeTool(name: string, args: Record<string, unknown>): Promise<string>;\n\n /**\n * Run the agent with a user message.\n * Returns the final response and all tool calls made.\n */\n async run(\n userMessage: string,\n conversationHistory: ChatMessage[] = []\n ): Promise<AgentRunResult> {\n if (!this.openai) {\n throw new Error('OpenAI client is required for agent.run(). Pass it in the constructor options.');\n }\n\n const messages: ChatMessage[] = [\n { role: 'system', content: this.instructions },\n ...conversationHistory,\n { role: 'user', content: userMessage },\n ];\n\n const toolCalls: ToolCall[] = [];\n let response = '';\n const tools = this.getTools();\n\n // Agent loop - keep running until no more tool calls\n while (true) {\n const completion = await this.openai.chat.completions.create({\n model: this.model,\n messages: messages as any,\n tools: tools as any,\n tool_choice: 'auto',\n });\n\n const assistantMessage = completion.choices[0].message;\n\n // Check if there are tool calls\n if (assistantMessage.tool_calls && assistantMessage.tool_calls.length > 0) {\n // Add assistant message with tool calls\n messages.push({\n role: 'assistant',\n content: assistantMessage.content || '',\n });\n\n // Execute each tool call\n for (const tc of assistantMessage.tool_calls) {\n const fn = (tc as any).function;\n const args = JSON.parse(fn.arguments);\n\n const toolCall: ToolCall = {\n id: tc.id,\n name: fn.name,\n arguments: args,\n status: 'running',\n };\n toolCalls.push(toolCall);\n\n // Execute the tool\n const result = await this.executeTool(fn.name, args);\n\n // Update tool call status\n if (result.startsWith('Error:')) {\n toolCall.error = result;\n toolCall.status = 'error';\n } else {\n toolCall.result = result;\n toolCall.status = 'completed';\n }\n\n // Add tool result to messages\n messages.push({\n role: 'tool',\n content: result,\n tool_call_id: tc.id,\n });\n }\n } else {\n // No more tool calls - return the final response\n response = assistantMessage.content || '';\n break;\n }\n }\n\n return { response, toolCalls };\n }\n\n /**\n * Run the agent with streaming output.\n * Yields events for real-time UI updates.\n */\n async *runStream(\n userMessage: string,\n conversationHistory: ChatMessage[] = []\n ): AsyncGenerator<StreamEvent> {\n if (!this.openai) {\n throw new Error('OpenAI client is required for agent.runStream(). Pass it in the constructor options.');\n }\n\n const messages: ChatMessage[] = [\n { role: 'system', content: this.instructions },\n ...conversationHistory,\n { role: 'user', content: userMessage },\n ];\n\n const tools = this.getTools();\n\n // Agent loop\n while (true) {\n yield { type: 'message_start', message: { role: 'assistant' } };\n\n const stream = await this.openai.chat.completions.create({\n model: this.model,\n messages: messages as any,\n tools: tools as any,\n tool_choice: 'auto',\n stream: true,\n });\n\n let contentBuffer = '';\n const toolCallBuffers: Map<number, { id: string; name: string; arguments: string }> =\n new Map();\n\n for await (const chunk of stream) {\n const delta = chunk.choices[0]?.delta;\n\n // Handle content\n if (delta?.content) {\n contentBuffer += delta.content;\n yield { type: 'content_delta', delta: { text: delta.content } };\n }\n\n // Handle tool calls\n if (delta?.tool_calls) {\n for (const tc of delta.tool_calls) {\n const idx = tc.index;\n if (!toolCallBuffers.has(idx)) {\n toolCallBuffers.set(idx, { id: '', name: '', arguments: '' });\n }\n\n const buffer = toolCallBuffers.get(idx)!;\n if (tc.id) buffer.id = tc.id;\n if (tc.function?.name) buffer.name = tc.function.name;\n if (tc.function?.arguments) buffer.arguments += tc.function.arguments;\n }\n }\n }\n\n // Process tool calls if any\n if (toolCallBuffers.size > 0) {\n // Add assistant message to history\n messages.push({\n role: 'assistant',\n content: contentBuffer,\n });\n\n for (const [_, buffer] of toolCallBuffers) {\n const args = JSON.parse(buffer.arguments);\n\n yield {\n type: 'tool_start',\n tool: { id: buffer.id, name: buffer.name, arguments: args },\n };\n\n // Execute the tool\n const result = await this.executeTool(buffer.name, args);\n\n if (result.startsWith('Error:')) {\n yield { type: 'tool_end', tool: { id: buffer.id, error: result } };\n } else {\n yield { type: 'tool_end', tool: { id: buffer.id, result } };\n }\n\n // Add tool result to messages\n messages.push({\n role: 'tool',\n content: result,\n tool_call_id: buffer.id,\n });\n }\n } else {\n // No more tool calls - done\n yield { type: 'message_end' };\n break;\n }\n }\n }\n}\n","/**\n * DocxClient - HTTP client for DOCX document API\n */\n\nimport { BaseClient } from '../core/base-client';\nimport type {\n DocxClientOptions,\n DocumentInfo,\n ReadResponse,\n EditOperation,\n EditResponse,\n ValidateResponse,\n} from './types';\n\nconst DEFAULT_API_URL = 'https://docx-api-service-production.up.railway.app';\n\nexport class DocxClient extends BaseClient {\n constructor(options: DocxClientOptions = {}) {\n super(options);\n }\n\n protected getDefaultApiUrl(): string {\n return process.env.DOCX_API_URL || DEFAULT_API_URL;\n }\n\n /**\n * Upload a DOCX document.\n */\n async upload(file: File | Blob, filename?: string): Promise<DocumentInfo> {\n const formData = new FormData();\n formData.append('file', file, filename || 'document.docx');\n return this.postFormData('/documents/upload', formData);\n }\n\n /**\n * Download a DOCX document.\n */\n async download(docId: string): Promise<Blob> {\n return this.downloadBlob(`/documents/${docId}`);\n }\n\n /**\n * Read document content as plain text.\n */\n async read(docId: string): Promise<ReadResponse> {\n return this.post(`/documents/${docId}/read`);\n }\n\n /**\n * Execute edit operations on a document.\n */\n async edit(docId: string, operations: EditOperation[]): Promise<EditResponse> {\n return this.post(`/documents/${docId}/edit`, { operations });\n }\n\n /**\n * Validate document structure.\n */\n async validate(docId: string): Promise<ValidateResponse> {\n return this.post(`/documents/${docId}/validate`);\n }\n\n /**\n * Delete a document from storage.\n */\n async deleteDocument(docId: string): Promise<void> {\n return this.delete(`/documents/${docId}`);\n }\n}\n","/**\n * DocxAgent - AI agent for DOCX document editing\n *\n * Uses OpenAI-compatible API to process requests and execute\n * document editing operations.\n */\n\nimport { BaseAgent } from '../core/base-agent';\nimport type { Tool } from '../core/types';\nimport { DocxClient } from './client';\nimport type { DocxAgentOptions } from './types';\n\nconst DEFAULT_INSTRUCTIONS = `You are an expert DOCX document editing assistant.\n\nWhen editing documents:\n1. First read the document to understand its structure\n2. Use track changes for all modifications\n3. Add comments to flag issues or request clarification\n4. Be precise with paragraph text matching - use unique text snippets\n\nAvailable tools:\n- read_document: Read the document content\n- add_comment: Add a comment to a specific paragraph\n- insert_text: Insert text within a paragraph (tracked change)\n- propose_deletion: Mark text for deletion (tracked change)\n- reply_comment: Reply to an existing comment\n- resolve_comment: Mark a comment as resolved\n- delete_comment: Delete a comment\n- insert_paragraph: Insert a new paragraph\n- validate_document: Validate DOCX structure`;\n\nconst TOOLS: Tool[] = [\n {\n type: 'function',\n function: {\n name: 'read_document',\n description: 'Read the document content as plain text',\n parameters: {\n type: 'object',\n properties: {\n doc_id: { type: 'string', description: 'Document ID' },\n },\n required: ['doc_id'],\n },\n },\n },\n {\n type: 'function',\n function: {\n name: 'add_comment',\n description: 'Add a comment to a specific paragraph in the document',\n parameters: {\n type: 'object',\n properties: {\n doc_id: { type: 'string', description: 'Document ID' },\n para_text: { type: 'string', description: 'Unique text from the target paragraph' },\n comment: { type: 'string', description: 'Comment text to add' },\n highlight: { type: 'string', description: 'Optional specific text to highlight' },\n },\n required: ['doc_id', 'para_text', 'comment'],\n },\n },\n },\n {\n type: 'function',\n function: {\n name: 'insert_text',\n description: 'Insert text within a paragraph (creates a tracked change)',\n parameters: {\n type: 'object',\n properties: {\n doc_id: { type: 'string', description: 'Document ID' },\n para_text: { type: 'string', description: 'Unique text from the target paragraph' },\n after: { type: 'string', description: 'Text after which to insert' },\n new_text: { type: 'string', description: 'Text to insert' },\n },\n required: ['doc_id', 'para_text', 'after', 'new_text'],\n },\n },\n },\n {\n type: 'function',\n function: {\n name: 'propose_deletion',\n description: 'Mark text for deletion (creates a tracked change)',\n parameters: {\n type: 'object',\n properties: {\n doc_id: { type: 'string', description: 'Document ID' },\n para_text: { type: 'string', description: 'Unique text from the target paragraph' },\n target: { type: 'string', description: 'Specific text to delete (optional, defaults to whole paragraph)' },\n },\n required: ['doc_id', 'para_text'],\n },\n },\n },\n {\n type: 'function',\n function: {\n name: 'reply_comment',\n description: 'Reply to an existing comment',\n parameters: {\n type: 'object',\n properties: {\n doc_id: { type: 'string', description: 'Document ID' },\n comment_id: { type: 'string', description: 'ID of the comment to reply to' },\n reply: { type: 'string', description: 'Reply text' },\n },\n required: ['doc_id', 'comment_id', 'reply'],\n },\n },\n },\n {\n type: 'function',\n function: {\n name: 'resolve_comment',\n description: 'Mark a comment as resolved',\n parameters: {\n type: 'object',\n properties: {\n doc_id: { type: 'string', description: 'Document ID' },\n comment_id: { type: 'string', description: 'ID of the comment to resolve' },\n },\n required: ['doc_id', 'comment_id'],\n },\n },\n },\n {\n type: 'function',\n function: {\n name: 'delete_comment',\n description: 'Delete a comment and its replies',\n parameters: {\n type: 'object',\n properties: {\n doc_id: { type: 'string', description: 'Document ID' },\n comment_id: { type: 'string', description: 'ID of the comment to delete' },\n },\n required: ['doc_id', 'comment_id'],\n },\n },\n },\n {\n type: 'function',\n function: {\n name: 'insert_paragraph',\n description: 'Insert a new paragraph after existing text',\n parameters: {\n type: 'object',\n properties: {\n doc_id: { type: 'string', description: 'Document ID' },\n after_text: { type: 'string', description: 'Text after which to insert the new paragraph' },\n new_text: { type: 'string', description: 'Content of the new paragraph' },\n },\n required: ['doc_id', 'after_text', 'new_text'],\n },\n },\n },\n {\n type: 'function',\n function: {\n name: 'validate_document',\n description: 'Validate the document structure',\n parameters: {\n type: 'object',\n properties: {\n doc_id: { type: 'string', description: 'Document ID' },\n },\n required: ['doc_id'],\n },\n },\n },\n];\n\nexport class DocxAgent extends BaseAgent<DocxClient> {\n private documentId?: string;\n\n constructor(options: DocxAgentOptions = {}) {\n const client = new DocxClient(options);\n super({ ...options, client });\n this.documentId = options.documentId;\n }\n\n protected getDefaultModel(): string {\n return 'moonshot-v1-32k';\n }\n\n protected getDefaultInstructions(): string {\n return this.documentId\n ? `${DEFAULT_INSTRUCTIONS}\\n\\nCurrent document ID: ${this.documentId}`\n : DEFAULT_INSTRUCTIONS;\n }\n\n protected getTools(): Tool[] {\n return TOOLS;\n }\n\n /** Set the current document ID */\n setDocument(docId: string) {\n this.documentId = docId;\n }\n\n /** Get current document ID */\n getDocumentId(): string | undefined {\n return this.documentId;\n }\n\n protected async executeTool(name: string, args: Record<string, unknown>): Promise<string> {\n const docId = (args.doc_id as string) || this.documentId;\n\n if (!docId) {\n return 'Error: No document ID provided. Please upload a document first.';\n }\n\n try {\n switch (name) {\n case 'read_document': {\n const result = await this.client.read(docId);\n return `Document content (${result.paragraphs} paragraphs):\\n\\n${result.content}`;\n }\n\n case 'add_comment': {\n const result = await this.client.edit(docId, [\n {\n type: 'add_comment',\n para_text: args.para_text as string,\n comment: args.comment as string,\n highlight: args.highlight as string | undefined,\n },\n ]);\n return result.results[0];\n }\n\n case 'insert_text': {\n const result = await this.client.edit(docId, [\n {\n type: 'insert_text',\n para_text: args.para_text as string,\n after: args.after as string,\n new_text: args.new_text as string,\n },\n ]);\n return result.results[0];\n }\n\n case 'propose_deletion': {\n const result = await this.client.edit(docId, [\n {\n type: 'propose_deletion',\n para_text: args.para_text as string,\n target: args.target as string | undefined,\n },\n ]);\n return result.results[0];\n }\n\n case 'reply_comment': {\n const result = await this.client.edit(docId, [\n {\n type: 'reply_comment',\n comment_id: args.comment_id as string,\n reply: args.reply as string,\n },\n ]);\n return result.results[0];\n }\n\n case 'resolve_comment': {\n const result = await this.client.edit(docId, [\n {\n type: 'resolve_comment',\n comment_id: args.comment_id as string,\n },\n ]);\n return result.results[0];\n }\n\n case 'delete_comment': {\n const result = await this.client.edit(docId, [\n {\n type: 'delete_comment',\n comment_id: args.comment_id as string,\n },\n ]);\n return result.results[0];\n }\n\n case 'insert_paragraph': {\n const result = await this.client.edit(docId, [\n {\n type: 'insert_paragraph',\n after_text: args.after_text as string,\n new_text: args.new_text as string,\n },\n ]);\n return result.results[0];\n }\n\n case 'validate_document': {\n const result = await this.client.validate(docId);\n return `${result.result}: ${result.output}`;\n }\n\n default:\n return `Error: Unknown tool '${name}'`;\n }\n } catch (error) {\n return `Error: ${error instanceof Error ? error.message : String(error)}`;\n }\n }\n}\n"]}
1
+ {"version":3,"sources":["../src/core/base-client.ts","../src/core/base-agent.ts","../src/docx/client.ts","../src/docx/agent.ts"],"names":[],"mappings":"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","file":"index.mjs","sourcesContent":["/**\n * BaseClient - Abstract HTTP client for subagent APIs\n */\n\nimport type { BaseClientOptions } from './types';\n\nexport abstract class BaseClient {\n protected apiUrl: string;\n protected timeout: number;\n\n constructor(options: BaseClientOptions = {}) {\n this.apiUrl = options.apiUrl || this.getDefaultApiUrl();\n this.timeout = options.timeout || 60000;\n }\n\n /** Override in subclasses to provide default API URL */\n protected abstract getDefaultApiUrl(): string;\n\n /** Make a GET request */\n protected async get<T>(path: string): Promise<T> {\n const response = await fetch(`${this.apiUrl}${path}`, {\n method: 'GET',\n signal: AbortSignal.timeout(this.timeout),\n });\n\n if (!response.ok) {\n throw new Error(`GET ${path} failed: ${response.statusText}`);\n }\n\n return response.json();\n }\n\n /** Make a POST request with JSON body */\n protected async post<T>(path: string, body?: unknown): Promise<T> {\n const response = await fetch(`${this.apiUrl}${path}`, {\n method: 'POST',\n headers: body ? { 'Content-Type': 'application/json' } : undefined,\n body: body ? JSON.stringify(body) : undefined,\n signal: AbortSignal.timeout(this.timeout),\n });\n\n if (!response.ok) {\n throw new Error(`POST ${path} failed: ${response.statusText}`);\n }\n\n return response.json();\n }\n\n /** Make a POST request with FormData */\n protected async postFormData<T>(path: string, formData: FormData): Promise<T> {\n const response = await fetch(`${this.apiUrl}${path}`, {\n method: 'POST',\n body: formData,\n signal: AbortSignal.timeout(this.timeout),\n });\n\n if (!response.ok) {\n throw new Error(`POST ${path} failed: ${response.statusText}`);\n }\n\n return response.json();\n }\n\n /** Make a DELETE request */\n protected async delete(path: string): Promise<void> {\n const response = await fetch(`${this.apiUrl}${path}`, {\n method: 'DELETE',\n signal: AbortSignal.timeout(this.timeout),\n });\n\n if (!response.ok) {\n throw new Error(`DELETE ${path} failed: ${response.statusText}`);\n }\n }\n\n /** Download a file as Blob */\n protected async downloadBlob(path: string): Promise<Blob> {\n const response = await fetch(`${this.apiUrl}${path}`, {\n signal: AbortSignal.timeout(this.timeout),\n });\n\n if (!response.ok) {\n throw new Error(`Download ${path} failed: ${response.statusText}`);\n }\n\n return response.blob();\n }\n\n /** Health check */\n async health(): Promise<{ status: string; service: string }> {\n return this.get('/health');\n }\n}\n","/**\n * BaseAgent - Abstract base class for AI subagents\n *\n * Provides common functionality for tool-using agents with\n * OpenAI-compatible API support.\n */\n\nimport type {\n Tool,\n ChatMessage,\n ToolCall,\n StreamEvent,\n AgentRunResult,\n BaseAgentOptions,\n} from './types';\n\nexport abstract class BaseAgent<TClient> {\n protected openai: any;\n protected model: string;\n protected instructions: string;\n protected client: TClient;\n\n constructor(options: BaseAgentOptions & { client: TClient }) {\n this.openai = options.openai;\n this.model = options.model || this.getDefaultModel();\n this.instructions = options.instructions || this.getDefaultInstructions();\n this.client = options.client;\n }\n\n /** Get the underlying client */\n getClient(): TClient {\n return this.client;\n }\n\n /** Override to provide default model */\n protected abstract getDefaultModel(): string;\n\n /** Override to provide default instructions */\n protected abstract getDefaultInstructions(): string;\n\n /** Override to provide tool definitions */\n protected abstract getTools(): Tool[];\n\n /** Override to execute a tool call */\n protected abstract executeTool(name: string, args: Record<string, unknown>): Promise<string>;\n\n /**\n * Run the agent with a user message.\n * Returns the final response and all tool calls made.\n */\n async run(\n userMessage: string,\n conversationHistory: ChatMessage[] = []\n ): Promise<AgentRunResult> {\n if (!this.openai) {\n throw new Error('OpenAI client is required for agent.run(). Pass it in the constructor options.');\n }\n\n const messages: ChatMessage[] = [\n { role: 'system', content: this.instructions },\n ...conversationHistory,\n { role: 'user', content: userMessage },\n ];\n\n const toolCalls: ToolCall[] = [];\n let response = '';\n const tools = this.getTools();\n\n // Agent loop - keep running until no more tool calls\n while (true) {\n const completion = await this.openai.chat.completions.create({\n model: this.model,\n messages: messages as any,\n tools: tools as any,\n tool_choice: 'auto',\n });\n\n const assistantMessage = completion.choices[0].message;\n\n // Check if there are tool calls\n if (assistantMessage.tool_calls && assistantMessage.tool_calls.length > 0) {\n // Add assistant message with tool calls\n messages.push({\n role: 'assistant',\n content: assistantMessage.content || '',\n });\n\n // Execute each tool call\n for (const tc of assistantMessage.tool_calls) {\n const fn = (tc as any).function;\n const args = JSON.parse(fn.arguments);\n\n const toolCall: ToolCall = {\n id: tc.id,\n name: fn.name,\n arguments: args,\n status: 'running',\n };\n toolCalls.push(toolCall);\n\n // Execute the tool\n const result = await this.executeTool(fn.name, args);\n\n // Update tool call status\n if (result.startsWith('Error:')) {\n toolCall.error = result;\n toolCall.status = 'error';\n } else {\n toolCall.result = result;\n toolCall.status = 'completed';\n }\n\n // Add tool result to messages\n messages.push({\n role: 'tool',\n content: result,\n tool_call_id: tc.id,\n });\n }\n } else {\n // No more tool calls - return the final response\n response = assistantMessage.content || '';\n break;\n }\n }\n\n return { response, toolCalls };\n }\n\n /**\n * Run the agent with streaming output.\n * Yields events for real-time UI updates.\n */\n async *runStream(\n userMessage: string,\n conversationHistory: ChatMessage[] = []\n ): AsyncGenerator<StreamEvent> {\n if (!this.openai) {\n throw new Error('OpenAI client is required for agent.runStream(). Pass it in the constructor options.');\n }\n\n const messages: ChatMessage[] = [\n { role: 'system', content: this.instructions },\n ...conversationHistory,\n { role: 'user', content: userMessage },\n ];\n\n const tools = this.getTools();\n\n // Agent loop\n while (true) {\n yield { type: 'message_start', message: { role: 'assistant' } };\n\n const stream = await this.openai.chat.completions.create({\n model: this.model,\n messages: messages as any,\n tools: tools as any,\n tool_choice: 'auto',\n stream: true,\n });\n\n let contentBuffer = '';\n const toolCallBuffers: Map<number, { id: string; name: string; arguments: string }> =\n new Map();\n\n for await (const chunk of stream) {\n const delta = chunk.choices[0]?.delta;\n\n // Handle content\n if (delta?.content) {\n contentBuffer += delta.content;\n yield { type: 'content_delta', delta: { text: delta.content } };\n }\n\n // Handle tool calls\n if (delta?.tool_calls) {\n for (const tc of delta.tool_calls) {\n const idx = tc.index;\n if (!toolCallBuffers.has(idx)) {\n toolCallBuffers.set(idx, { id: '', name: '', arguments: '' });\n }\n\n const buffer = toolCallBuffers.get(idx)!;\n if (tc.id) buffer.id = tc.id;\n if (tc.function?.name) buffer.name = tc.function.name;\n if (tc.function?.arguments) buffer.arguments += tc.function.arguments;\n }\n }\n }\n\n // Process tool calls if any\n if (toolCallBuffers.size > 0) {\n // Add assistant message to history\n messages.push({\n role: 'assistant',\n content: contentBuffer,\n });\n\n for (const [_, buffer] of toolCallBuffers) {\n const args = JSON.parse(buffer.arguments);\n\n yield {\n type: 'tool_start',\n tool: { id: buffer.id, name: buffer.name, arguments: args },\n };\n\n // Execute the tool\n const result = await this.executeTool(buffer.name, args);\n\n if (result.startsWith('Error:')) {\n yield { type: 'tool_end', tool: { id: buffer.id, error: result } };\n } else {\n yield { type: 'tool_end', tool: { id: buffer.id, result } };\n }\n\n // Add tool result to messages\n messages.push({\n role: 'tool',\n content: result,\n tool_call_id: buffer.id,\n });\n }\n } else {\n // No more tool calls - done\n yield { type: 'message_end' };\n break;\n }\n }\n }\n}\n","/**\n * DocxClient - HTTP client for DOCX document API\n */\n\nimport { BaseClient } from '../core/base-client';\nimport type {\n DocxClientOptions,\n DocumentInfo,\n ReadResponse,\n EditOperation,\n EditResponse,\n ValidateResponse,\n BuildOperation,\n BuildResponse,\n CreateResponse,\n DocumentInfoResponse,\n} from './types';\n\nconst DEFAULT_API_URL = 'https://api.subagents.com/v1/morph-docx';\n\nexport class DocxClient extends BaseClient {\n constructor(options: DocxClientOptions = {}) {\n super(options);\n }\n\n protected getDefaultApiUrl(): string {\n return process.env.DOCX_API_URL || DEFAULT_API_URL;\n }\n\n /**\n * Upload a DOCX document.\n */\n async upload(file: File | Blob, filename?: string): Promise<DocumentInfo> {\n const formData = new FormData();\n formData.append('file', file, filename || 'document.docx');\n return this.postFormData('/documents/upload', formData);\n }\n\n /**\n * Download a DOCX document.\n */\n async download(docId: string): Promise<Blob> {\n return this.downloadBlob(`/documents/${docId}`);\n }\n\n /**\n * Read document content as plain text.\n */\n async read(docId: string): Promise<ReadResponse> {\n return this.post(`/documents/${docId}/read`);\n }\n\n /**\n * Execute edit operations on a document.\n */\n async edit(docId: string, operations: EditOperation[]): Promise<EditResponse> {\n return this.post(`/documents/${docId}/edit`, { operations });\n }\n\n /**\n * Validate document structure.\n */\n async validate(docId: string): Promise<ValidateResponse> {\n return this.post(`/documents/${docId}/validate`);\n }\n\n /**\n * Delete a document from storage.\n */\n async deleteDocument(docId: string): Promise<void> {\n return this.delete(`/documents/${docId}`);\n }\n\n // --- Creation Operations ---\n\n /**\n * Create a new empty DOCX document.\n */\n async create(title?: string): Promise<CreateResponse> {\n return this.post('/documents/create', { title });\n }\n\n /**\n * Execute build operations on a document (add content).\n */\n async build(docId: string, operations: BuildOperation[]): Promise<BuildResponse> {\n return this.post(`/documents/${docId}/build`, { operations });\n }\n\n /**\n * Get document information.\n */\n async getInfo(docId: string): Promise<DocumentInfoResponse> {\n return this.get(`/documents/${docId}/info`);\n }\n\n // --- Convenience Methods ---\n\n /**\n * Add a heading to the document.\n */\n async addHeading(docId: string, text: string, level = 1): Promise<BuildResponse> {\n return this.build(docId, [{ type: 'add_heading', text, level }]);\n }\n\n /**\n * Add a paragraph to the document.\n */\n async addParagraph(docId: string, text: string, options?: Partial<BuildOperation>): Promise<BuildResponse> {\n return this.build(docId, [{ type: 'add_paragraph', text, ...options }]);\n }\n\n /**\n * Add a table to the document.\n */\n async addTable(docId: string, headers: string[], rows: string[][]): Promise<BuildResponse> {\n return this.build(docId, [{ type: 'add_table', headers, rows }]);\n }\n\n /**\n * Add page numbers to the document.\n */\n async addPageNumbers(docId: string, format = 'Page {PAGE} of {NUMPAGES}'): Promise<BuildResponse> {\n return this.build(docId, [{ type: 'add_page_numbers', format_string: format }]);\n }\n}\n","/**\n * DocxAgent - AI agent for DOCX document editing\n *\n * OpenAI Agents SDK compatible client for morph-docx.\n * Talks to api.subagents.com/v1/chat/completions with model \"morph-docx\".\n */\n\nimport type { DocxAgentOptions, Message, ChatCompletionResponse, StreamChunk } from './types';\n\nconst DEFAULT_BASE_URL = 'https://api.subagents.com/v1';\n\nexport class DocxAgent {\n private baseUrl: string;\n private apiKey: string;\n private documentId?: string;\n\n constructor(options: DocxAgentOptions = {}) {\n this.baseUrl = options.baseUrl || process.env.MORPH_API_URL || DEFAULT_BASE_URL;\n this.apiKey = options.apiKey || process.env.MORPH_API_KEY || '';\n this.documentId = options.documentId;\n }\n\n /** Set the current document ID */\n setDocument(docId: string) {\n this.documentId = docId;\n }\n\n /** Get current document ID */\n getDocumentId(): string | undefined {\n return this.documentId;\n }\n\n /**\n * Send a chat completion request (non-streaming).\n * This runs the full agent loop on the server and returns the final response.\n */\n async chat(messages: Message[]): Promise<ChatCompletionResponse> {\n // Add document context to user message if we have a document ID\n const contextMessages = this.documentId\n ? messages.map((m, i) => {\n if (i === messages.length - 1 && m.role === 'user') {\n return {\n ...m,\n content: `[Document ID: ${this.documentId}]\\n\\n${m.content}`,\n };\n }\n return m;\n })\n : messages;\n\n const response = await fetch(`${this.baseUrl}/chat/completions`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n ...(this.apiKey && { Authorization: `Bearer ${this.apiKey}` }),\n },\n body: JSON.stringify({\n model: 'morph-docx',\n messages: contextMessages,\n stream: false,\n }),\n });\n\n if (!response.ok) {\n const error = await response.text();\n throw new Error(`API error: ${error}`);\n }\n\n return response.json();\n }\n\n /**\n * Send a streaming chat completion request.\n * Returns an async generator that yields chunks as they arrive.\n */\n async *chatStream(messages: Message[]): AsyncGenerator<StreamChunk> {\n // Add document context to user message if we have a document ID\n const contextMessages = this.documentId\n ? messages.map((m, i) => {\n if (i === messages.length - 1 && m.role === 'user') {\n return {\n ...m,\n content: `[Document ID: ${this.documentId}]\\n\\n${m.content}`,\n };\n }\n return m;\n })\n : messages;\n\n const response = await fetch(`${this.baseUrl}/chat/completions`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n ...(this.apiKey && { Authorization: `Bearer ${this.apiKey}` }),\n },\n body: JSON.stringify({\n model: 'morph-docx',\n messages: contextMessages,\n stream: true,\n }),\n });\n\n if (!response.ok) {\n const error = await response.text();\n throw new Error(`API error: ${error}`);\n }\n\n const reader = response.body?.getReader();\n if (!reader) {\n throw new Error('No response body');\n }\n\n const decoder = new TextDecoder();\n let buffer = '';\n\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n\n buffer += decoder.decode(value, { stream: true });\n const lines = buffer.split('\\n');\n buffer = lines.pop() || '';\n\n for (const line of lines) {\n if (!line.startsWith('data: ')) continue;\n const data = line.slice(6).trim();\n if (data === '[DONE]') return;\n\n try {\n const chunk = JSON.parse(data);\n yield chunk;\n } catch {\n // Skip malformed JSON\n }\n }\n }\n }\n\n /**\n * Helper: Simple completion that returns just the content string.\n */\n async complete(userMessage: string): Promise<string> {\n const response = await this.chat([{ role: 'user', content: userMessage }]);\n return response.choices[0]?.message?.content || '';\n }\n\n /**\n * Create an OpenAI-compatible client configuration.\n * Use this with the OpenAI SDK or OpenAI Agents SDK.\n *\n * @example\n * ```typescript\n * import OpenAI from 'openai';\n * import { DocxAgent } from 'subagents/docx';\n *\n * const agent = new DocxAgent();\n * const openai = new OpenAI(agent.getOpenAIConfig());\n *\n * const response = await openai.chat.completions.create({\n * model: 'morph-docx',\n * messages: [{ role: 'user', content: 'Hello!' }],\n * });\n * ```\n */\n getOpenAIConfig() {\n return {\n baseURL: this.baseUrl,\n apiKey: this.apiKey || 'not-required',\n };\n }\n}\n"]}
@@ -2,7 +2,7 @@ export { F as FillOperation, a as FillResponse, b as FormField, P as PdfAgentOpt
2
2
  import '../types-D9rS2MQq.mjs';
3
3
 
4
4
  /**
5
- * @morphllm/subagents/pdf
5
+ * subagents/pdf
6
6
  *
7
7
  * PDF form filling subagent (coming soon).
8
8
  *
@@ -2,7 +2,7 @@ export { F as FillOperation, a as FillResponse, b as FormField, P as PdfAgentOpt
2
2
  import '../types-D9rS2MQq.js';
3
3
 
4
4
  /**
5
- * @morphllm/subagents/pdf
5
+ * subagents/pdf
6
6
  *
7
7
  * PDF form filling subagent (coming soon).
8
8
  *
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/pdf/index.ts"],"names":[],"mappings":";;;AAqBO,IAAM,SAAA,GAAY;AAClB,IAAM,QAAA,GAAW","file":"index.js","sourcesContent":["/**\n * @morphllm/subagents/pdf\n *\n * PDF form filling subagent (coming soon).\n *\n * This module will provide:\n * - PdfClient: HTTP client for PDF form API\n * - PdfAgent: AI agent for filling PDF forms\n */\n\nexport type {\n PdfDocumentInfo,\n FormField,\n ReadFieldsResponse,\n FillOperation,\n FillResponse,\n PdfClientOptions,\n PdfAgentOptions,\n} from './types';\n\n// Placeholder exports - will be implemented when PDF service is ready\nexport const PdfClient = null;\nexport const PdfAgent = null;\n"]}
1
+ {"version":3,"sources":["../../src/pdf/index.ts"],"names":[],"mappings":";;;AAqBO,IAAM,SAAA,GAAY;AAClB,IAAM,QAAA,GAAW","file":"index.js","sourcesContent":["/**\n * subagents/pdf\n *\n * PDF form filling subagent (coming soon).\n *\n * This module will provide:\n * - PdfClient: HTTP client for PDF form API\n * - PdfAgent: AI agent for filling PDF forms\n */\n\nexport type {\n PdfDocumentInfo,\n FormField,\n ReadFieldsResponse,\n FillOperation,\n FillResponse,\n PdfClientOptions,\n PdfAgentOptions,\n} from './types';\n\n// Placeholder exports - will be implemented when PDF service is ready\nexport const PdfClient = null;\nexport const PdfAgent = null;\n"]}
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/pdf/index.ts"],"names":[],"mappings":";AAqBO,IAAM,SAAA,GAAY;AAClB,IAAM,QAAA,GAAW","file":"index.mjs","sourcesContent":["/**\n * @morphllm/subagents/pdf\n *\n * PDF form filling subagent (coming soon).\n *\n * This module will provide:\n * - PdfClient: HTTP client for PDF form API\n * - PdfAgent: AI agent for filling PDF forms\n */\n\nexport type {\n PdfDocumentInfo,\n FormField,\n ReadFieldsResponse,\n FillOperation,\n FillResponse,\n PdfClientOptions,\n PdfAgentOptions,\n} from './types';\n\n// Placeholder exports - will be implemented when PDF service is ready\nexport const PdfClient = null;\nexport const PdfAgent = null;\n"]}
1
+ {"version":3,"sources":["../../src/pdf/index.ts"],"names":[],"mappings":";AAqBO,IAAM,SAAA,GAAY;AAClB,IAAM,QAAA,GAAW","file":"index.mjs","sourcesContent":["/**\n * subagents/pdf\n *\n * PDF form filling subagent (coming soon).\n *\n * This module will provide:\n * - PdfClient: HTTP client for PDF form API\n * - PdfAgent: AI agent for filling PDF forms\n */\n\nexport type {\n PdfDocumentInfo,\n FormField,\n ReadFieldsResponse,\n FillOperation,\n FillResponse,\n PdfClientOptions,\n PdfAgentOptions,\n} from './types';\n\n// Placeholder exports - will be implemented when PDF service is ready\nexport const PdfClient = null;\nexport const PdfAgent = null;\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@morphllm/subagents",
3
- "version": "0.1.3",
3
+ "version": "0.1.5",
4
4
  "description": "Modular AI subagents for document processing - DOCX editing, PDF filling, and more",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.mjs",
@@ -47,9 +47,10 @@
47
47
  "document",
48
48
  "editing",
49
49
  "openai",
50
- "morphllm"
50
+ "llm"
51
51
  ],
52
- "author": "MorphLLM",
52
+ "author": "Subagents",
53
+ "homepage": "https://subagents.com",
53
54
  "license": "MIT",
54
55
  "repository": {
55
56
  "type": "git",
package/src/core/index.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @morphllm/subagents/core
2
+ * subagents/core
3
3
  *
4
4
  * Core utilities and base classes for building subagents.
5
5
  */