From 499c9150e671c67d71fca2b031b0a276acaca5dc Mon Sep 17 00:00:00 2001 From: Mike Grabowski Date: Fri, 6 Dec 2024 10:37:51 +0100 Subject: [PATCH] feat: initial commit --- .eslintrc.cjs | 58 +++++ .gitignore | 175 ++++++++++++++ LICENSE | 21 ++ README.md | 15 ++ bun.lockb | Bin 0 -> 258740 bytes example/sales-marketing-tech/run.ts | 59 +++++ package.json | 35 +++ src/index.ts | 351 ++++++++++++++++++++++++++++ test.ts | 59 +++++ tsconfig.json | 15 ++ 10 files changed, 788 insertions(+) create mode 100644 .eslintrc.cjs create mode 100644 .gitignore create mode 100644 LICENSE create mode 100644 README.md create mode 100755 bun.lockb create mode 100644 example/sales-marketing-tech/run.ts create mode 100644 package.json create mode 100644 src/index.ts create mode 100644 test.ts create mode 100644 tsconfig.json diff --git a/.eslintrc.cjs b/.eslintrc.cjs new file mode 100644 index 0000000..fda6101 --- /dev/null +++ b/.eslintrc.cjs @@ -0,0 +1,58 @@ +module.exports = { + env: { + es6: true, + node: true, + }, + plugins: ['import', 'simple-import-sort'], + extends: ['eslint:recommended'], + parserOptions: { + ecmaVersion: 2020, + sourceType: 'module', + }, + rules: { + 'prettier/prettier': [ + 'error', + { + trailingComma: 'es5', + semi: false, + singleQuote: true, + arrowParens: 'always', + printWidth: 100, + }, + ], + 'object-shorthand': ['error', 'always'], + 'simple-import-sort/imports': 'error', + 'simple-import-sort/exports': 'error', + }, + overrides: [ + { + files: ['*.ts', '*.tsx'], + parser: '@typescript-eslint/parser', + plugins: ['@typescript-eslint/eslint-plugin'], + extends: ['plugin:@typescript-eslint/recommended', 'plugin:import/typescript'], + settings: { + 'import/parsers': { + '@typescript-eslint/parser': ['.ts', '.tsx'], + }, + 'import/resolver': { + typescript: { + alwaysTryTypes: true, + }, + }, + }, + rules: { + '@typescript-eslint/no-explicit-any': 'off', + '@typescript-eslint/ban-types': 'off', + '@typescript-eslint/ban-ts-comment': 'off', + '@typescript-eslint/ban-ts-ignore': 'off', + '@typescript-eslint/explicit-module-boundary-types': 'off', + '@typescript-eslint/explicit-function-return-type': 'off', + }, + }, + { + files: ['*'], + plugins: ['prettier'], + extends: ['plugin:prettier/recommended'], + }, + ], +} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9b1ee42 --- /dev/null +++ b/.gitignore @@ -0,0 +1,175 @@ +# Based on https://raw.githubusercontent.com/github/gitignore/main/Node.gitignore + +# Logs + +logs +_.log +npm-debug.log_ +yarn-debug.log* +yarn-error.log* +lerna-debug.log* +.pnpm-debug.log* + +# Caches + +.cache + +# Diagnostic reports (https://nodejs.org/api/report.html) + +report.[0-9]_.[0-9]_.[0-9]_.[0-9]_.json + +# Runtime data + +pids +_.pid +_.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover + +lib-cov + +# Coverage directory used by tools like istanbul + +coverage +*.lcov + +# nyc test coverage + +.nyc_output + +# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) + +.grunt + +# Bower dependency directory (https://bower.io/) + +bower_components + +# node-waf configuration + +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) + +build/Release + +# Dependency directories + +node_modules/ +jspm_packages/ + +# Snowpack dependency directory (https://snowpack.dev/) + +web_modules/ + +# TypeScript cache + +*.tsbuildinfo + +# Optional npm cache directory + +.npm + +# Optional eslint cache + +.eslintcache + +# Optional stylelint cache + +.stylelintcache + +# Microbundle cache + +.rpt2_cache/ +.rts2_cache_cjs/ +.rts2_cache_es/ +.rts2_cache_umd/ + +# Optional REPL history + +.node_repl_history + +# Output of 'npm pack' + +*.tgz + +# Yarn Integrity file + +.yarn-integrity + +# dotenv environment variable files + +.env +.env.development.local +.env.test.local +.env.production.local +.env.local + +# parcel-bundler cache (https://parceljs.org/) + +.parcel-cache + +# Next.js build output + +.next +out + +# Nuxt.js build / generate output + +.nuxt +dist + +# Gatsby files + +# Comment in the public line in if your project uses Gatsby and not Next.js + +# https://nextjs.org/blog/next-9-1#public-directory-support + +# public + +# vuepress build output + +.vuepress/dist + +# vuepress v2.x temp and cache directory + +.temp + +# Docusaurus cache and generated files + +.docusaurus + +# Serverless directories + +.serverless/ + +# FuseBox cache + +.fusebox/ + +# DynamoDB Local files + +.dynamodb/ + +# TernJS port file + +.tern-port + +# Stores VSCode versions used for testing VSCode extensions + +.vscode-test + +# yarn v2 + +.yarn/cache +.yarn/unplugged +.yarn/build-state.yml +.yarn/install-state.gz +.pnp.* + +# IntelliJ based IDEs +.idea + +# Finder (MacOS) folder config +.DS_Store diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..dfbf893 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 Mike Grabowski + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..673e8b6 --- /dev/null +++ b/README.md @@ -0,0 +1,15 @@ +# dead-simple-ai-agent + +To install dependencies: + +```bash +bun install +``` + +To run: + +```bash +bun run index.ts +``` + +This project was created using `bun init` in bun v1.1.38. [Bun](https://bun.sh) is a fast all-in-one JavaScript runtime. diff --git a/bun.lockb b/bun.lockb new file mode 100755 index 0000000000000000000000000000000000000000..69845dd33e63fc6d3c2ac3bb6404ec13ad39fdd7 GIT binary patch literal 258740 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�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", + "type": "module", + "devDependencies": { + "@release-it-plugins/workspaces": "^4.2.0", + "@release-it/conventional-changelog": "^9.0.3", + "@rslib/core": "^0.1.1", + "@typescript-eslint/eslint-plugin": "^7.3.1", + "@typescript-eslint/parser": "^7.3.1", + "bun-types": "^1.1.33", + "eslint": "^8.21.0", + "eslint-config-prettier": "^9.1.0", + "eslint-plugin-import": "^2.29.1", + "eslint-plugin-prettier": "^5.0.0", + "eslint-plugin-simple-import-sort": "^12.0.0", + "prettier": "^3.2.5", + "release-it": "^17.10.0", + "tsx": "^4.19.2", + "typescript": "^5.1.3", + "vitest": "^2.1.1" + }, + "peerDependencies": { + "typescript": "^5.0.0" + }, + "dependencies": { + "dedent": "^1.5.3", + "openai": "^4.76.0", + "zod": "^3.23.8" + }, + "trustedDependencies": [ + "core-js" + ] +} diff --git a/src/index.ts b/src/index.ts new file mode 100644 index 0000000..dbffebe --- /dev/null +++ b/src/index.ts @@ -0,0 +1,351 @@ +import dedent from 'dedent' +import OpenAI from 'openai' +import { zodResponseFormat } from 'openai/helpers/zod' +import type { ChatCompletionMessageParam } from 'openai/resources/chat/completions' +import { z } from 'zod' + +// tbd: abstract this away or not? most APIs are OpenAI compatible +const openai = new OpenAI() + +interface Protocol { + requestUserInput(prompt: string): Promise +} + +// tbd: we should replace this with a "HumanInTheLoop" agent of CLI type +// to do so, we need to implement delegation across different agents +// so they can work collaboratively on smaller tasks too +class CLIProtocol implements Protocol { + async requestUserInput(prompt: string): Promise { + return new Promise((resolve) => { + console.log(prompt) + process.stdin.once('data', (data) => { + resolve(data.toString().trim()) + }) + }) + } +} + +type ToolDefinition> = { + name: string + description: string + parameters: T + execute: (parameters: z.infer) => Promise +} + +interface AgentConfig { + prompt?: string + tools?: ToolDefinition[] + model?: string + protocol?: Protocol +} + +// tbd: implement delegation +// tbd: implement short-term and long-term memory with different storage models +export class Agent { + private prompt: string + private tools: ToolDefinition[] + private model: string + private protocol: Protocol + + constructor({ + prompt = '', + tools = [], + model = 'gpt-4o', + protocol = new CLIProtocol(), + }: AgentConfig = {}) { + this.prompt = prompt + this.tools = tools + this.model = model + this.protocol = protocol + } + + async executeTask(messages: ChatCompletionMessageParam[]): Promise { + const response = await openai.beta.chat.completions.parse({ + model: this.model, + messages: [ + { + role: 'system', + content: dedent` + ${this.prompt} + + Your task is to complete the assigned work by: + 1. Breaking down the task into steps + 2. Using available tools when needed + 3. Requesting user input if required + 4. Providing clear progress updates + `, + }, + ...messages, + ], + // tbd: only add tools if there are any + // tools: this.tools.map(zodFunction), + response_format: zodResponseFormat( + z.object({ + response: z.discriminatedUnion('kind', [ + z.object({ + kind: z.literal('user_input'), + prompt: z.string().describe('The question to ask the user'), + reasoning: z.string().describe('The reasoning for asking this question'), + }), + z.object({ + kind: z.literal('complete'), + result: z.string().describe('The final result of the task'), + reasoning: z.string().describe('The reasoning for completing the task'), + }), + ]), + }), + 'task_result' + ), + }) + if (response.choices[0].message.tool_calls.length > 0) { + const toolResults = await Promise.all( + response.choices[0].message.tool_calls.map(async (toolCall) => { + if (toolCall.type !== 'function') { + throw new Error('Tool call is not a function') + } + + const tool = this.tools.find((t) => t.name === toolCall.function.name) + if (!tool) { + throw new Error(`Unknown tool: ${toolCall.function.name}`) + } + + const parameters = tool.parameters.parse(toolCall.function.arguments) + const content = await tool.execute(parameters) + + return { + role: 'tool' as const, + tool_call_id: toolCall.id, + content: JSON.stringify(content), + } + }) + ) + + return this.executeTask([...messages, response.choices[0].message, ...toolResults]) + } + + // tbd: verify shape of response + const result = response.choices[0].message.parsed + if (!result) { + throw new Error('No parsed response received') + } + + if (result.response.kind === 'user_input') { + const userInput = await this.requestUserInput(result.response.prompt) + return this.executeTask([ + ...messages, + { + role: 'assistant', + content: result.response.prompt, + }, + { + role: 'user', + content: userInput, + }, + ]) + } + + if (result.response.kind === 'complete') { + return result.response.result + } + + // tbd: check if this is reachable + throw new Error('Illegal state') + } + + async requestUserInput(prompt: string): Promise { + return this.protocol.requestUserInput(prompt) + } +} + +interface WorkflowState { + workflow: string + messages: ChatCompletionMessageParam[] +} + +class Supervisor { + private agents: Agent[] = [] + private state: WorkflowState | null = null + + constructor(agents: Agent[]) { + this.agents = agents + } + + private async getNextTask(state: WorkflowState): Promise { + const response = await openai.beta.chat.completions.parse({ + model: 'gpt-4o', + messages: [ + { + role: 'system', + // tbd: improve prompt for generic workflow + // tbd: handle subsequent failures + content: dedent` + You are a workflow planner that breaks down complex tasks into smaller, actionable steps. + Your job is to determine the next task that needs to be done based on the original workflow and what has been completed so far. + If all required tasks are completed, return null. + + Rules: + 1. Each task should be self-contained and achievable + 2. Tasks should be specific and actionable + 3. Return null when the workflow is complete + 4. Consider dependencies and order of operations + 5. Use context from completed tasks to inform next steps + `, + }, + ...state.messages, + { + role: 'user', + content: 'What is the next task that needs to be done?', + }, + ], + temperature: 0.2, + response_format: zodResponseFormat( + z.object({ + nextTask: z + .string() + .describe('The next task to be completed or null if the workflow is complete'), + reasoning: z + .string() + .describe('The reasoning for selecting the next task or why the workflow is complete'), + }), + 'next_task' + ), + }) + + try { + const content = response.choices[0].message.parsed + if (!content) { + throw new Error('No content in response') + } + + if (!content.nextTask) { + return null + } + + return content.nextTask + } catch (error) { + throw new Error('Failed to determine next task') + } + } + + private async selectAgent(task: string): Promise { + const response = await openai.beta.chat.completions.parse({ + model: 'gpt-4o', + messages: [ + { + role: 'system', + content: dedent` + You are an agent selector that matches tasks to the most capable agent. + Analyze the task requirements and each agent's capabilities to select the best match. + + Consider: + 1. Required tools and skills + 2. Agent's specialization (via prompt) + 3. Model capabilities + 4. Previous task context if available + `, + }, + { + role: 'user', + content: dedent` + Task: + ${task} + + Available agents: + ${this.agents} + + Select the most suitable agent for this task. + `, + }, + ], + temperature: 0.1, + response_format: zodResponseFormat( + z.object({ + agentIndex: z.number(), + reasoning: z.string(), + }), + 'agent_selection' + ), + }) + + const content = response.choices[0].message.parsed + if (!content) { + throw new Error('No content in response') + } + + const agent = this.agents[content.agentIndex] + if (!agent) { + throw new Error('Invalid agent') + } + + return agent + } + + async executeWorkflow(workflow: string): Promise { + this.state = { + workflow, + messages: [ + { + role: 'user', + content: workflow, + }, + ], + } + + // tbd: set reasonable max iterations + // eslint-disable-next-line no-constant-condition + while (true) { + const task = await this.getNextTask(this.state) + + if (!task) { + break + } + + this.state.messages.push({ + role: 'assistant', + content: task, + }) + + // tbd: this throws, handle it + const selectedAgent = await this.selectAgent(task) + + // tbd: this should just be a try/catch + // tbd: do not return string, but more information or keep memory in agent + try { + const result = await selectedAgent.executeTask([ + { + role: 'user', + content: task, + }, + ]) + + this.state.messages.push({ + role: 'assistant', + content: result, + }) + } catch (error) { + console.log('💬', error) + this.state.messages.push({ + role: 'assistant', + content: dedent` + An error occurred while executing the task: + ${error instanceof Error ? error.message : 'Unknown error'} + `, + }) + } + } + } +} + +export class Team { + private agents: Agent[] + private supervisor: Supervisor + + constructor({ agents = [] }: { agents: Agent[] }) { + this.agents = agents + this.supervisor = new Supervisor(agents) + } + + async ask(workflow: string): Promise { + await this.supervisor.executeWorkflow(workflow) + } +} diff --git a/test.ts b/test.ts new file mode 100644 index 0000000..e4f40ec --- /dev/null +++ b/test.ts @@ -0,0 +1,59 @@ +import { Agent, Team } from './index' + +// Business Team Agents +const marketingManager = new Agent({ + prompt: `You are a Marketing Manager with expertise in: + - Digital marketing strategy + - Brand development and management + - Marketing campaign planning + - Analytics and performance tracking + - Content strategy and social media`, +}) + +const salesManager = new Agent({ + prompt: `You are a Sales Manager with expertise in: + - Sales strategy and pipeline management + - Customer relationship management + - Sales forecasting and analytics + - Team performance optimization + - Deal negotiation and closing strategies`, +}) + +const technicalManager = new Agent({ + prompt: `You are a Technical Manager with expertise in: + - Technical infrastructure planning + - System architecture and integration + - Technology stack evaluation + - Development process optimization + - Technical resource allocation`, +}) + +// Create team +const team = new Team({ + agents: [marketingManager, salesManager, technicalManager], +}) + +// Business alignment workflow +const alignmentWorkflow = ` + Quarterly Business Alignment Meeting Agenda: + - Review current marketing campaigns and their technical requirements + - Analyze sales pipeline and identify technology bottlenecks + - Discuss integration needs between CRM and marketing automation + - Plan resource allocation for upcoming projects + - Establish KPIs for cross-team collaboration + + Please provide recommendations for: + - Improving customer journey tracking across departments + - Streamlining lead handoff process + - Technical infrastructure improvements to support growth + + The goal is to create an action plan that aligns marketing initiatives, + sales objectives, and technical capabilities for the next quarter. +` + +// Run the workflow +console.log('🚀 Starting business alignment workflow...') + +await team.ask(alignmentWorkflow) + +console.log('✅ Alignment meeting completed successfully') diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..ade9808 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,15 @@ +{ + "compilerOptions": { + "target": "esnext", + "module": "NodeNext", + "moduleResolution": "nodenext", + "allowJs": true, + "strict": true, + "skipLibCheck": true, + "isolatedModules": true, + "esModuleInterop": true, + "outDir": "dist", + "resolveJsonModule": true, + "customConditions": ["source"] + } +}