{"_id":"@agent_kit/core","_rev":"4-0d65aa024b02157b9fe9421a84c6aba7","name":"@agent_kit/core","dist-tags":{"latest":"0.0.4-beta"},"versions":{"0.0.1":{"name":"@agent_kit/core","version":"0.0.1","_id":"@agent_kit/core@0.0.1","maintainers":[{"name":"dschoon","email":"dschoon@gmail.com"}],"dist":{"shasum":"89182a1854cc3fd64d2fdbb7921250b860630cdf","tarball":"https://registry.npmjs.org/@agent_kit/core/-/core-0.0.1.tgz","fileCount":3,"integrity":"sha512-gjEs3m3ZJoTzjsv1K08+gLkp97zH+6UvW7J3jY2SBJUk3MPvWWJlf/fVCxJOHm7TXQoGpJTeMmqu5C1rgG9pQg==","signatures":[{"sig":"MEUCIHU/kbOSPwQamDRVDanzjk0UrYKqBzvri309mHeIwxW+AiEAgkaKpRMx/9g24zTrm4fGgheSO/0HYG8QY1UKNek2ZRI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":431},"main":"index.js","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"_npmUser":{"name":"dschoon","email":"dschoon@gmail.com"},"_npmVersion":"9.8.1","description":"A powerful TypeScript framework for building production-ready AI applications with reusable prompts, workflows, and agents. Built for teams that need reliability, testability, and maintainability in their AI systems.","directories":{},"_nodeVersion":"18.18.2","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/core_0.0.1_1737306783578_0.2165235449999774","host":"s3://npm-registry-packages-npm-production"}},"0.0.1-beta":{"name":"@agent_kit/core","version":"0.0.1-beta","keywords":["ai","chain","prompt","prompt engineering","chatgpt","openai","agent","agent kit","llm"],"author":{"name":"Dan Schoonmaker","email":"dan@schoonlabs.com"},"license":"MIT","_id":"@agent_kit/core@0.0.1-beta","maintainers":[{"name":"dschoon","email":"dschoon@gmail.com"}],"homepage":"https://github.com/agent-kit/agent-kit#readme","bugs":{"url":"https://github.com/agent-kit/agent-kit/issues"},"dist":{"shasum":"4af402a14c490187aa3756490425cb1fb8ce7b44","tarball":"https://registry.npmjs.org/@agent_kit/core/-/core-0.0.1-beta.tgz","fileCount":5,"integrity":"sha512-I8tNzyMMWt4J8wvbUlywriqZNRYNTmBQjthpxYPp8lZFEOGWt/lr4i7SxT665HxqAkAZPUagcZt1qDSLilGghQ==","signatures":[{"sig":"MEUCIQDhYkx+pJEmGRmppGyGCkiDOtWOFH9CXrS/QJnoSgKTlgIgbfv6NqXYMPvIJ8JRKZkCnkXyzLfZ/Y4XXnOxxL7MFNg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":185313},"type":"module","types":"./dist/index.d.ts","source":"./src/index.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"2c0d422775226e29b6791b7a80416e9c2ec8332a","scripts":{"lint":"eslint ./","test":"pnpm run test:unit","build":"DEBUG=false rm -rf dist && tsup --config ../../tsup.config.ts","clean":"rm -rf .turbo node_modules","format":"prettier --check \"**/*.{mjs,ts,md,json}\" --ignore-path ../../.prettierignore","example":"pnpm run example:travel-agent && pnpm run example:content-repurposer && pnpm run example:prompt-testing","test:unit":"jest","typecheck":"tsc --noEmit","format:fix":"prettier --write \"**/*.{mjs,ts,md,json}\" --ignore-path ../../.prettierignore","test:watch":"jest --watch","test:coverage":"jest --coverage","example:routing":"tsx examples/workflows/routing.ts","example:parallel":"tsx examples/workflows/parallel.ts","example:evaluated":"tsx examples/workflows/evaluated.ts","example:autonomous":"tsx examples/workflows/autonomous.ts","example:orchestrated":"tsx examples/workflows/orchestrated.ts","example:prompt-chain":"tsx examples/workflows/prompt-chain.ts","example:travel-agent":"tsx examples/travel-agent.ts","example:prompt-testing":"tsx examples/prompt-testing.ts","example:content-repurposer":"tsx examples/content-repurposer.ts","example:agent-collaboration":"tsx examples/agent-collaboration.ts"},"_npmUser":{"name":"dschoon","email":"dschoon@gmail.com"},"prettier":"@agent_kit/prettier","repository":{"url":"git+https://github.com/agent-kit/agent-kit.git","type":"git"},"_npmVersion":"9.8.1","description":"A powerful TypeScript framework for building production-ready AI applications with reusable prompts, workflows, and agents. Built for teams that need reliability, testability, and maintainability in their AI systems.","directories":{},"sideEffects":false,"_nodeVersion":"18.18.2","dependencies":{"ai":"^4.1.0","zod":"^3.22.4","dedent":"^1.5.3","async-mutex":"^0.5.0","@ai-sdk/google":"^1.1.0","@ai-sdk/openai":"^1.1.0","@ai-sdk/anthropic":"^1.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.1","jest":"^29.7.0","tsup":"^8.3.0","dotenv":"^16.4.1","eslint":"^8.57.1","globals":"^15.14.0","ts-jest":"^29.2.5","ts-node":"^10.9.2","typescript":"^5.5.2","@types/jest":"^29.5.14","@jest/globals":"^29.7.0","@agent_kit/eslint":"workspace:*","@agent_kit/prettier":"workspace:*","@agent_kit/tsconfig":"workspace:*","@trivago/prettier-plugin-sort-imports":"^4.3.0"},"_npmOperationalInternal":{"tmp":"tmp/core_0.0.1-beta_1737399958221_0.11936442071217712","host":"s3://npm-registry-packages-npm-production"}},"0.0.2-beta":{"name":"@agent_kit/core","version":"0.0.2-beta","keywords":["ai","chain","prompt","prompt engineering","chatgpt","openai","agent","agent kit","llm"],"author":{"name":"Dan Schoonmaker","email":"dan@schoonlabs.com"},"license":"MIT","_id":"@agent_kit/core@0.0.2-beta","maintainers":[{"name":"dschoon","email":"dschoon@gmail.com"}],"homepage":"https://github.com/agent-kit/agent-kit#readme","bugs":{"url":"https://github.com/agent-kit/agent-kit/issues"},"dist":{"shasum":"5a7e4607078f3fc1ad8745b5053f87846053ea7e","tarball":"https://registry.npmjs.org/@agent_kit/core/-/core-0.0.2-beta.tgz","fileCount":5,"integrity":"sha512-O7IHiTekeEs+jyiHLltyW6PgVveVUFtFDs8HZffEM0WPKbFU+89YoBMYZtZ0XTlGTRyt7MZWe8eCkFB3C6tzEA==","signatures":[{"sig":"MEUCIGm/2I6D9M9gOL3CqK1bF6A097hQbqhGPGM22ouM1MrjAiEAz/Ge2kiHkzB+D6nZad2v58FM1D5uw3xGngWH7/Q7W0E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":185847},"type":"module","types":"./dist/index.d.ts","source":"./src/index.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"2c0d422775226e29b6791b7a80416e9c2ec8332a","scripts":{"lint":"eslint ./","test":"pnpm run test:unit","build":"DEBUG=false rm -rf dist && tsup --config ../../tsup.config.ts","clean":"rm -rf .turbo node_modules","format":"prettier --check \"**/*.{mjs,ts,md,json}\" --ignore-path ../../.prettierignore","example":"pnpm run example:travel-agent && pnpm run example:content-repurposer && pnpm run example:prompt-testing","test:unit":"jest","typecheck":"tsc --noEmit","format:fix":"prettier --write \"**/*.{mjs,ts,md,json}\" --ignore-path ../../.prettierignore","test:watch":"jest --watch","test:coverage":"jest --coverage","example:routing":"tsx examples/workflows/routing.ts","example:parallel":"tsx examples/workflows/parallel.ts","example:evaluated":"tsx examples/workflows/evaluated.ts","example:autonomous":"tsx examples/workflows/autonomous.ts","example:orchestrated":"tsx examples/workflows/orchestrated.ts","example:prompt-chain":"tsx examples/workflows/prompt-chain.ts","example:travel-agent":"tsx examples/travel-agent.ts","example:prompt-testing":"tsx examples/prompt-testing.ts","example:content-repurposer":"tsx examples/content-repurposer.ts","example:agent-collaboration":"tsx examples/agent-collaboration.ts"},"_npmUser":{"name":"dschoon","email":"dschoon@gmail.com"},"prettier":"@agent_kit/prettier","repository":{"url":"git+https://github.com/agent-kit/agent-kit.git","type":"git"},"_npmVersion":"9.8.1","description":"A powerful TypeScript framework for building production-ready AI applications with reusable prompts, workflows, and agents. Built for teams that need reliability, testability, and maintainability in their AI systems.","directories":{},"sideEffects":false,"_nodeVersion":"18.18.2","dependencies":{"ai":"^4.1.0","zod":"^3.22.4","dedent":"^1.5.3","async-mutex":"^0.5.0","@ai-sdk/google":"^1.1.0","@ai-sdk/openai":"^1.1.0","@ai-sdk/anthropic":"^1.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.1","jest":"^29.7.0","tsup":"^8.3.0","dotenv":"^16.4.1","eslint":"^8.57.1","globals":"^15.14.0","ts-jest":"^29.2.5","ts-node":"^10.9.2","typescript":"^5.5.2","@types/jest":"^29.5.14","@jest/globals":"^29.7.0","@agent_kit/eslint":"workspace:*","@agent_kit/prettier":"workspace:*","@agent_kit/tsconfig":"workspace:*","@trivago/prettier-plugin-sort-imports":"^4.3.0"},"_npmOperationalInternal":{"tmp":"tmp/core_0.0.2-beta_1737996815820_0.10532481482208889","host":"s3://npm-registry-packages-npm-production"}},"0.0.3-beta":{"name":"@agent_kit/core","version":"0.0.3-beta","keywords":["ai","chain","prompt","prompt engineering","chatgpt","openai","agent","agent kit","llm"],"author":{"name":"Dan Schoonmaker","email":"dan@schoonlabs.com"},"license":"MIT","_id":"@agent_kit/core@0.0.3-beta","maintainers":[{"name":"dschoon","email":"dschoon@gmail.com"}],"homepage":"https://github.com/agent-kit/agent-kit#readme","bugs":{"url":"https://github.com/agent-kit/agent-kit/issues"},"dist":{"shasum":"396efa487e3365aed17f30054ca9a687789ea860","tarball":"https://registry.npmjs.org/@agent_kit/core/-/core-0.0.3-beta.tgz","fileCount":5,"integrity":"sha512-4BjgFvnoyHJLQCmIxqETPRFOzKauUpXBeLPF2dNKAFkjXy8T4A4VuBcK40W3iwW7/Jn//z+mnsUDKhT5DchaxA==","signatures":[{"sig":"MEUCIBgpwK1JxHfgwQucCqDPY9Bob2zEeN7wGmAIulXFg5gvAiEA3J5hgpjlwe19ssypcDiyY91o64mEoYu2+H7fUpQS9rI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":185847},"type":"module","types":"./dist/index.d.ts","source":"./src/index.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"}},"gitHead":"a26f026a15cbff0f88a1f9bac86de5247ed18a65","scripts":{"lint":"eslint ./","test":"pnpm run test:unit","build":"DEBUG=false rm -rf dist && tsup --config ../../tsup.config.ts","clean":"rm -rf .turbo node_modules","format":"prettier --check \"**/*.{mjs,ts,md,json}\" --ignore-path ../../.prettierignore","example":"pnpm run example:travel-agent && pnpm run example:content-repurposer && pnpm run example:prompt-testing","test:unit":"jest","typecheck":"tsc --noEmit","format:fix":"prettier --write \"**/*.{mjs,ts,md,json}\" --ignore-path ../../.prettierignore","test:watch":"jest --watch","test:coverage":"jest --coverage","example:routing":"tsx examples/workflows/routing.ts","example:parallel":"tsx examples/workflows/parallel.ts","example:evaluated":"tsx examples/workflows/evaluated.ts","example:autonomous":"tsx examples/workflows/autonomous.ts","example:orchestrated":"tsx examples/workflows/orchestrated.ts","example:prompt-chain":"tsx examples/workflows/prompt-chain.ts","example:travel-agent":"tsx examples/travel-agent.ts","example:prompt-testing":"tsx examples/prompt-testing.ts","example:content-repurposer":"tsx examples/content-repurposer.ts","example:agent-collaboration":"tsx examples/agent-collaboration.ts"},"_npmUser":{"name":"dschoon","email":"dschoon@gmail.com"},"prettier":"@agent_kit/prettier","repository":{"url":"git+https://github.com/agent-kit/agent-kit.git","type":"git"},"_npmVersion":"9.8.1","description":"A powerful TypeScript framework for building production-ready AI applications with reusable prompts, workflows, and agents. Built for teams that need reliability, testability, and maintainability in their AI systems.","directories":{},"sideEffects":false,"_nodeVersion":"18.18.2","dependencies":{"ai":"^4.1.0","zod":"^3.22.4","dedent":"^1.5.3","async-mutex":"^0.5.0","@ai-sdk/google":"^1.1.0","@ai-sdk/openai":"^1.1.0","@ai-sdk/anthropic":"^1.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.1","jest":"^29.7.0","tsup":"^8.3.0","dotenv":"^16.4.1","eslint":"^8.57.1","globals":"^15.14.0","ts-jest":"^29.2.5","ts-node":"^10.9.2","typescript":"^5.5.2","@types/jest":"^29.5.14","@jest/globals":"^29.7.0","@agent_kit/eslint":"workspace:*","@agent_kit/prettier":"workspace:*","@agent_kit/tsconfig":"workspace:*","@trivago/prettier-plugin-sort-imports":"^4.3.0"},"_npmOperationalInternal":{"tmp":"tmp/core_0.0.3-beta_1738284985683_0.5741109403531388","host":"s3://npm-registry-packages-npm-production"}},"0.0.4-beta":{"name":"@agent_kit/core","version":"0.0.4-beta","author":{"name":"Dan Schoonmaker","email":"dan@schoonlabs.com"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/agent-kit/agent-kit.git"},"type":"module","source":"./src/index.ts","types":"./dist/index.d.ts","sideEffects":false,"exports":{".":{"import":"./dist/index.js","types":"./dist/index.d.ts","default":"./dist/index.js"}},"scripts":{"build":"DEBUG=false rm -rf dist && tsup --config ../../tsup.config.ts","clean":"rm -rf .turbo node_modules","lint":"eslint ./","format":"prettier --check \"**/*.{mjs,ts,md,json}\" --ignore-path ../../.prettierignore","format:fix":"prettier --write \"**/*.{mjs,ts,md,json}\" --ignore-path ../../.prettierignore","typecheck":"tsc --noEmit","test":"pnpm run test:unit","test:unit":"jest","test:watch":"jest --watch","test:coverage":"jest --coverage","example":"pnpm run example:travel-agent && pnpm run example:content-repurposer && pnpm run example:prompt-testing","example:travel-agent":"tsx examples/travel-agent.ts","example:content-repurposer":"tsx examples/content-repurposer.ts","example:prompt-testing":"tsx examples/prompt-testing.ts","example:agent-collaboration":"tsx examples/agent-collaboration.ts","example:autonomous":"tsx examples/workflows/autonomous.ts","example:evaluated":"tsx examples/workflows/evaluated.ts","example:orchestrated":"tsx examples/workflows/orchestrated.ts","example:parallel":"tsx examples/workflows/parallel.ts","example:prompt-chain":"tsx examples/workflows/prompt-chain.ts","example:routing":"tsx examples/workflows/routing.ts"},"dependencies":{"@ai-sdk/anthropic":"^1.1.0","@ai-sdk/google":"^1.1.0","@ai-sdk/openai":"^1.1.0","ai":"^4.1.0","async-mutex":"^0.5.0","dedent":"^1.5.3","zod":"^3.22.4"},"devDependencies":{"@agent_kit/eslint":"workspace:*","@agent_kit/prettier":"workspace:*","@agent_kit/tsconfig":"workspace:*","@jest/globals":"^29.7.0","@trivago/prettier-plugin-sort-imports":"^4.3.0","@types/jest":"^29.5.14","dotenv":"^16.4.1","eslint":"^8.57.1","globals":"^15.14.0","jest":"^29.7.0","ts-jest":"^29.2.5","ts-node":"^10.9.2","tsup":"^8.3.0","tsx":"^4.19.1","typescript":"^5.5.2"},"prettier":"@agent_kit/prettier","publishConfig":{"access":"public"},"keywords":["ai","chain","prompt","prompt engineering","chatgpt","openai","agent","agent kit","llm"],"_id":"@agent_kit/core@0.0.4-beta","gitHead":"df8586e0a6ff504d1f360a1b5582d1019f06fdce","description":"A powerful TypeScript framework for building production-ready AI applications with reusable prompts, workflows, and agents. Built for teams that need reliability, testability, and maintainability in their AI systems.","bugs":{"url":"https://github.com/agent-kit/agent-kit/issues"},"homepage":"https://github.com/agent-kit/agent-kit#readme","_nodeVersion":"18.18.2","_npmVersion":"9.8.1","dist":{"integrity":"sha512-RjfM0BkJLXmCOYX+G89f1/upWiwCrk9QLJOzCds2RZJHgJnKOVpgqWmUB7hOY4YDHq4+LlXiqbFeHlQp2A/5kA==","shasum":"ffb28539873f5c789f5dd8ac22892732264166fd","tarball":"https://registry.npmjs.org/@agent_kit/core/-/core-0.0.4-beta.tgz","fileCount":5,"unpackedSize":186220,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCySsxIcB7vJVUmg6CJgvN3eOWPMCBtSF78EhogJORjKAIhAO2H/6qStQxkTnL/VUPzDcjolA4Rihin/X3Q0lJgAt6I"}]},"_npmUser":{"name":"dschoon","email":"dschoon@gmail.com"},"directories":{},"maintainers":[{"name":"dschoon","email":"dschoon@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/core_0.0.4-beta_1738286007402_0.9203056611894216"},"_hasShrinkwrap":false}},"time":{"created":"2025-01-19T17:13:03.428Z","modified":"2025-01-31T01:13:27.846Z","0.0.1":"2025-01-19T17:13:03.741Z","0.0.1-beta":"2025-01-20T19:05:58.439Z","0.0.2-beta":"2025-01-27T16:53:36.066Z","0.0.3-beta":"2025-01-31T00:56:25.866Z","0.0.4-beta":"2025-01-31T01:13:27.618Z"},"bugs":{"url":"https://github.com/agent-kit/agent-kit/issues"},"author":{"name":"Dan Schoonmaker","email":"dan@schoonlabs.com"},"license":"MIT","homepage":"https://github.com/agent-kit/agent-kit#readme","keywords":["ai","chain","prompt","prompt engineering","chatgpt","openai","agent","agent kit","llm"],"repository":{"type":"git","url":"git+https://github.com/agent-kit/agent-kit.git"},"description":"A powerful TypeScript framework for building production-ready AI applications with reusable prompts, workflows, and agents. Built for teams that need reliability, testability, and maintainability in their AI systems.","maintainers":[{"name":"dschoon","email":"dschoon@gmail.com"}],"readme":"# Agent Kit - Core\n\nA powerful TypeScript framework for building production-ready AI applications with reusable prompts, workflows, and agents. Built for teams that need reliability, testability, and maintainability in their AI systems.\n\n<br />\n\n> [!WARNING]  \n> This is an initial beta release of Agent Kit. It is not yet ready for production use. Breaking changes will likely occur.\n\n<br />\n\n## Key Features\n\n### Prompt Management\n\n- Type-safe prompt templates\n- Message-based conversations\n- Multi-format support (Text, Chat)\n- Variable validation with Zod\n\n### 🤖 Agent Framework\n\n- Goal-oriented agents\n- Decision making capabilities\n- Tool integration\n- Context management\n\n### ⚡ Workflow Engine\n\n- Sequential prompt chains\n- Parallel execution\n- Multi-agent orchestration\n- Error handling\n\n<br />\n\n## Installation\n\n```bash\npnpm add @agent_kit/core\n```\n\n<br />\n\n## Quick Start\n\n```typescript\nimport { Agent, MessagePrompt, PromptTemplate, ToolManager, WorkflowManager } from '@agent_kit/core';\n\n// Create a prompt template\nconst template = new PromptTemplate('Generate a {{tone}} response about {{topic}}', { tone: 'professional' });\n\n// Build a conversation\nconst chat = new MessagePrompt()\n  .addSystemMessage('You are an expert content writer.')\n  .addUserMessage('Write about AI')\n  .addAssistantMessage('What aspect of AI?')\n  .addUserMessage('Machine learning basics');\n\n// Define and register a tool\nconst toolManager = new ToolManager();\n\nconst searchTool = {\n  name: 'search',\n  description: 'Search knowledge base',\n  parameters: z.object({\n    query: z.string(),\n    limit: z.number().optional(),\n  }),\n  execute: async ({ query, limit = 5 }) => {\n    // Implementation\n  },\n};\n\ntoolManager.registerTool(searchTool);\n\n// Create an agent\nconst agent = new Agent({\n  name: 'ContentWriter',\n  backstory: 'Expert at creating engaging technical content',\n  goal: 'Create engaging content',\n  tools: [searchTool],\n  decideNextAction: (context) => {\n    // Return next action based on context\n    return {\n      type: 'tool',\n      action: searchTool,\n    };\n  },\n});\n\n// Build a workflow\nconst workflow = new WorkflowManager().createWorkflow({\n  type: 'prompt-chain',\n  agents: [agent],\n  context: { topic: 'machine learning' },\n  maxSteps: 10,\n});\n\n// Execute the workflow\nconst result = await workflow.execute();\n```\n\n<br />\n\n## Core Concepts\n\n### Prompt Templates\n\nThe framework provides two powerful ways to create prompts:\n\n#### 1. Variable-based Templates (PromptTemplate)\n\nType-safe templates with variable interpolation:\n\n```typescript\n// Create a template with variables\nconst template = new PromptTemplate('Write a {{length}} {{type}} about {{topic}} in a {{tone}} tone.', {\n  length: 'short',\n  type: 'blog post',\n});\n\n// Update variables\ntemplate.setVariables({\n  topic: 'AI trends',\n  tone: 'professional',\n});\n\n// Render the template\nconst prompt = template.render();\n```\n\nKey features:\n\n- Variable interpolation using `{{variable}}` syntax\n- Safe variable replacement with error checking\n- Reusable template definitions\n- Fluent interface for updates\n\n#### 2. Message-based Conversations (MessagePrompt)\n\nBuild structured multi-turn conversations:\n\n```typescript\nconst conversation = new MessagePrompt()\n  // Add system context\n  .addSystemMessage('You are an expert content writer specializing in tech topics.')\n\n  // Add user query\n  .addUserMessage('Write about AI trends')\n\n  // Add AI response\n  .addAssistantMessage('What specific aspects of AI would you like to focus on?')\n\n  // Add data result\n  .addDataMessage('Found 5 recent articles about AI trends', 'research_tool')\n\n  // Add function call\n  .addMessage('assistant', 'Let me analyze that data', {\n    function_call: {\n      name: 'analyze_trends',\n      arguments: '{\"timeframe\": \"last_6_months\"}',\n    },\n  });\n\n// Get conversation for AI model\nconst messages = conversation.render();\n```\n\nKey features:\n\n- Multiple message roles (system, user, assistant, tool)\n- Function calling support\n- Conversation state management\n- Fluent interface for building conversations\n- Compatible with OpenAI chat format\n\n#### 3. Combining Templates\n\nYou can use `PromptTemplate` within `MessagePrompt` for dynamic conversations:\n\n```typescript\n// Create reusable templates for different message types\nconst systemTemplate = new PromptTemplate('You are an expert {{role}} specializing in {{domain}}.', {\n  role: 'content writer',\n  domain: 'technology',\n});\n\nconst userTemplate = new PromptTemplate('Write a {{length}} article about {{topic}} focusing on {{aspect}}.');\n\n// Use templates in a conversation\nconst conversation = new MessagePrompt()\n  .addSystemMessage(systemTemplate.render())\n  .addUserMessage(\n    userTemplate\n      .setVariables({\n        length: 'comprehensive',\n        topic: 'artificial intelligence',\n        aspect: 'recent breakthroughs',\n      })\n      .render(),\n  )\n  .addAssistantMessage('I will help you write that article. Any specific areas of AI you want to emphasize?');\n\n// Get the formatted conversation\nconst messages = conversation.render();\n```\n\nThis pattern is useful for:\n\n- Creating reusable message templates\n- Dynamic system prompts\n- Standardized user queries\n- Consistent assistant responses\n- Template-based function calls\n\nBoth template types support:\n\n- Type safety with TypeScript\n- Method chaining\n- Clear error messages\n- Reusability across prompts\n\n### Prompt Chains\n\nPromptChain enables sequential execution of prompts and tools with shared context:\n\n```typescript\n// Create a chain with configuration\nconst chain = new PromptChain({\n  maxSteps: 50,\n  defaultMaxRetries: 3,\n  model: 'gpt-4o-mini',\n});\n\n// Add a prompt step using a template\nchain.addStep({\n  id: 'research',\n  type: 'prompt',\n  action: new PromptTemplate('Research the latest developments in {{topic}}', {\n    topic: 'AI',\n  }),\n});\n\n// Add a tool step\nchain.addStep({\n  id: 'analyze',\n  type: 'tool',\n  action: analysisTool,\n  condition: (context) => context.research?.length > 0,\n});\n\n// Add a conversation step\nchain.addStep({\n  id: 'summarize',\n  type: 'prompt',\n  action: new MessagePrompt()\n    .addSystemMessage('You are an expert summarizer')\n    .addUserMessage('Summarize the research and analysis'),\n});\n\n// Set initial context and execute\nconst result = await chain.setContext({ additionalInfo: 'Focus on practical applications' }).execute();\n```\n\nKey features:\n\n- Sequential execution of prompts and tools\n- Conditional step execution\n- Automatic retry handling\n- Shared context between steps\n- Execution statistics tracking\n- Error handling and logging\n- Support for both template types\n- Tool integration\n\n### Agents\n\nThe framework provides a robust system for creating and managing AI agents:\n\n#### 1. Individual Agents\n\nCreate autonomous agents with specific goals and capabilities:\n\n```typescript\n// Create an agent with configuration\nconst researcher = new Agent({\n  name: 'ResearchAgent',\n  backstory: 'Expert at analyzing scientific papers and data',\n  goal: 'Find and summarize relevant research',\n  tools: [searchTool, analyzeTool],\n  maxRetries: 3,\n  maxSteps: 10,\n  decideNextAction: (context) => {\n    // Decision logic returns the next action\n    return {\n      type: 'tool',\n      action: searchTool,\n    };\n  },\n});\n\n// Set context and execute\nconst result = await researcher.setContext({ topic: 'AI trends' }).execute();\n\n// Access agent information\nconsole.log(researcher.getName()); // 'ResearchAgent'\nconsole.log(researcher.getBackstory()); // 'Expert at...'\nconsole.log(researcher.getGoal()); // 'Find and summarize...'\nconsole.log(researcher.getTools()); // [searchTool, analyzeTool]\n```\n\nKey features:\n\n- Goal-oriented behavior\n- Tool usage capabilities\n- Context management\n- Execution tracking\n- Configurable limits\n- Error handling\n\n#### 2. Agent Management\n\nCoordinate multiple agents and delegate tasks:\n\n```typescript\n// Create an agent manager\nconst manager = new AgentManager();\n\n// Register agents with metadata\nmanager.registerAgent('researcher', researcher, {\n  skills: ['data analysis', 'literature review'],\n  expertise: ['machine learning', 'statistics'],\n  description: 'Specializes in scientific research and analysis',\n});\n\nmanager.registerAgent('writer', writer, {\n  skills: ['content writing', 'editing'],\n  expertise: ['technical writing', 'blogging'],\n  description: 'Expert at creating engaging content',\n});\n\n// Find the best agent for a task\nconst { agent, confidence, reasoning } = await manager.findBestAgent(\n  'Analyze recent papers on transformer architectures',\n);\n\n// Or automatically delegate and execute\nconst { result, selectedAgent } = await manager.delegateTask('Write a blog post about AI trends', {\n  style: 'technical',\n  length: 'long',\n});\n```\n\nKey features:\n\n- Agent registration with metadata\n- AI-powered task delegation\n- Skill and expertise matching\n- Confidence scoring\n- Automatic agent selection\n- Team coordination\n- Task execution tracking\n\nBoth agents and the manager support:\n\n- Type safety with TypeScript\n- Method chaining\n- Error handling\n- State management\n- Execution statistics\n\n### Workflows\n\nThe `WorkflowManager` provides several powerful workflow patterns for orchestrating AI agents:\n\n#### 1. Prompt Chain Workflow\n\nSequential execution where each agent's output becomes context for the next:\n\n```typescript\nconst workflow = new WorkflowManager().createWorkflow({\n  type: 'prompt-chain',\n  agents: [researchAgent, analysisAgent, writingAgent],\n  context: { topic: 'AI trends' },\n});\n```\n\n#### 2. Routing Workflow\n\nDynamically routes tasks to the most suitable agent based on capabilities:\n\n```typescript\nconst workflow = new WorkflowManager().createWorkflow({\n  type: 'routing',\n  agents: [techWriter, marketingWriter, academicWriter],\n  context: {\n    task: 'Write about quantum computing',\n    style: 'technical',\n  },\n});\n```\n\n#### 3. Parallel Workflow\n\nExecutes tasks concurrently across multiple agents:\n\n```typescript\nconst workflow = new WorkflowManager().createWorkflow({\n  type: 'parallel',\n  agents: [twitterAgent, linkedinAgent, facebookAgent],\n  context: { content: 'Product launch announcement' },\n});\n```\n\n#### 4. Orchestrator-Workers Workflow\n\nHierarchical pattern with a coordinator managing specialized workers:\n\n```typescript\nconst workflow = new WorkflowManager().createWorkflow({\n  type: 'orchestrator-workers',\n  agents: [\n    projectManager, // orchestrator\n    researcher, // worker\n    writer, // worker\n    editor, // worker\n  ],\n  context: { project: 'Research paper' },\n});\n```\n\n#### 5. Evaluator-Optimizer Workflow\n\nIterative improvement through evaluation and optimization:\n\n```typescript\nconst workflow = new WorkflowManager().createWorkflow({\n  type: 'evaluator-optimizer',\n  agents: [\n    contentGenerator, // generates content\n    qualityEvaluator, // evaluates and provides feedback\n  ],\n  context: {\n    topic: 'Machine Learning',\n    evaluationCriteria: {\n      accuracy: { weight: 0.4 },\n      clarity: { weight: 0.3 },\n      engagement: { weight: 0.3 },\n    },\n    targetScore: 0.9,\n  },\n});\n```\n\n#### 6. Autonomous Agent Workflow\n\nSelf-directed execution by a single agent with goal-based evaluation:\n\n```typescript\nconst workflow = new WorkflowManager().createWorkflow({\n  type: 'autonomous-agent',\n  agents: [strategist],\n  context: {\n    goals: ['Research market opportunities', 'Identify target segments', 'Propose marketing strategy'],\n  },\n  maxSteps: 10,\n});\n```\n\nKey Features:\n\n- Flexible workflow patterns for different use cases\n- Built-in progress tracking and statistics\n- Error handling and retry mechanisms\n- Context management between steps\n- Configurable execution limits\n- Real-time logging and monitoring\n\n### Task Context\n\nThe `TaskContext` provides state management for workflow executions:\n\n```typescript\n// Create a workflow with context management\nconst workflow = new WorkflowManager().createWorkflow({\n  type: 'prompt-chain',\n  agents: [researchAgent, analysisAgent],\n  context: {\n    topic: 'AI trends',\n    metadata: {\n      importance: 'high',\n      deadline: '2024-03-01',\n    },\n  },\n});\n\n// Access results and metadata during execution\nconst context = workflow.getContext();\n\n// Get the last result from a specific agent\nconst lastResearch = context.getLastResultByType('researcher');\n\n// Access specific output fields\nconst analysis = context.getPreviousOutput<Analysis>('analysis');\n\n// Store workflow-wide metadata\ncontext.setMetadata('status', 'in_progress');\n\n// Get formatted context for prompts\nconst contextSummary = context.createPromptContext();\n```\n\n### 🛠️ Tool System\n\nTools are reusable components that provide specific functionality to agents. They can be created in two ways:\n\n#### 1. Using the ToolProvider Base Class\n\nCreate a tool provider class with decorated methods:\n\n```typescript\nimport { z } from 'zod';\n\nimport { ToolProvider, aiFunction } from '@agent_kit/core';\n\nclass SearchTools extends ToolProvider {\n  @aiFunction({\n    name: 'web_search',\n    description: 'Search the web for information',\n    inputSchema: z.object({\n      query: z.string(),\n      limit: z.number().optional(),\n    }),\n  })\n  async webSearch(args: { query: string; limit?: number }) {\n    // Implementation\n    return `Results for: ${args.query}`;\n  }\n\n  @aiFunction({\n    name: 'news_search',\n    description: 'Search news articles',\n    inputSchema: z.object({\n      topic: z.string(),\n      days: z.number().default(7),\n    }),\n  })\n  async newsSearch(args: { topic: string; days: number }) {\n    // Implementation\n    return `News about ${args.topic} from last ${args.days} days`;\n  }\n}\n\n// Register with ToolManager\nconst toolManager = new ToolManager();\nconst searchTools = new SearchTools();\nsearchTools.functions.forEach((tool) => toolManager.registerTool(tool));\n```\n\n#### 2. Direct Tool Registration\n\nRegister individual tools directly with the ToolManager:\n\n```typescript\nconst searchTool = {\n  name: 'search',\n  description: 'Search knowledge base',\n  parameters: z.object({\n    query: z.string(),\n    limit: z.number().optional(),\n  }),\n  execute: async ({ query, limit = 5 }) => {\n    // Implementation\n    return `Found ${limit} results for: ${query}`;\n  },\n};\n\ntoolManager.registerTool(searchTool);\n```\n\n#### Using Tools in Agents\n\nTools can be used in agents by providing them during agent creation:\n\n```typescript\nconst agent = new Agent({\n  name: 'Researcher',\n  backstory: 'Expert at finding information',\n  goal: 'Research topics thoroughly',\n  tools: searchTools.functions, // Pass all tools from provider\n  decideNextAction: (context) => {\n    // Decision logic\n    return {\n      type: 'tool',\n      action: 'web_search',\n      args: { query: context.topic },\n    };\n  },\n});\n```\n\nKey features:\n\n- Type safety with TypeScript\n- Method chaining\n- Clear error messages\n- Reusability across prompts\n\n<br />\n<br />\n<br />\n\n## Documentation \n\nFull Documentation: [AgentKit.co/docs](https://www.agentkit.co)\n\n<br />\n\n## Supporters\n\n- [Content Flywheel](https://www.ContentFlywheel.com)\n- [PromptRewind](https://www.PromptRewind.com)\n- [Bott](https://bo.tt)\n- [ProductReq.com](https://www.ProductReq.com)\n- [UserPanel.ai](https://www.UserPanel.ai)\n- [Humanizes.ai](https://www.humanizes.ai)\n- [WriteBlocks.ai](https://www.WriteBlocks.ai)\n- [Blogg.ai](https://www.Blogg.ai)\n- [AudioJournal.ai](https://www.audiojournal.ai)\n- [SwipeFile.ai](https://www.SwipeFile.ai)\n- [SchoonLabs](https://www.SchoonLabs.com)\n- [Living Security](https://www.LivingSecurity.com)\n\n<br />\n\n## License\n\nMIT © [Dan Schoonmaker](https://www.DanSchoonmaker.com)\n\nTo stay up to date or learn more, follow [@DanSchoonmaker](https://x.com/DanSchoonmaker) on Twitter\n","readmeFilename":"README.md"}