@useconductor/conductor 1.0.0
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/.claude-plugin/marketplace.json +33 -0
- package/.claude-plugin/plugin.json +23 -0
- package/.eslintrc.json +23 -0
- package/.gitattributes +6 -0
- package/.github/FUNDING.yml +15 -0
- package/.github/ISSUE_TEMPLATE/bug_report.yml +91 -0
- package/.github/ISSUE_TEMPLATE/config.yml +8 -0
- package/.github/ISSUE_TEMPLATE/feature_request.yml +63 -0
- package/.github/ISSUE_TEMPLATE/plugin_request.yml +71 -0
- package/.github/README.md +13 -0
- package/.github/workflows/README.md +22 -0
- package/.github/workflows/auto-release.yml +112 -0
- package/.github/workflows/ci.yml +49 -0
- package/.github/workflows/claude-code-review.yml +44 -0
- package/.github/workflows/claude.yml +36 -0
- package/.github/workflows/sync-install.yml +47 -0
- package/.mcp.json +9 -0
- package/.prettierrc.json +7 -0
- package/C.png +0 -0
- package/CHANGELOG.md +74 -0
- package/CLAUDE.md +118 -0
- package/CONTRIBUTING.md +231 -0
- package/LICENSE +201 -0
- package/README.md +179 -0
- package/SECURITY.md +47 -0
- package/commands/conductor-setup.md +11 -0
- package/commands/conductor-status.md +7 -0
- package/dist/ai/base.d.ts +44 -0
- package/dist/ai/base.d.ts.map +1 -0
- package/dist/ai/base.js +47 -0
- package/dist/ai/base.js.map +1 -0
- package/dist/ai/claude.d.ts +11 -0
- package/dist/ai/claude.d.ts.map +1 -0
- package/dist/ai/claude.js +149 -0
- package/dist/ai/claude.js.map +1 -0
- package/dist/ai/gemini.d.ts +15 -0
- package/dist/ai/gemini.d.ts.map +1 -0
- package/dist/ai/gemini.js +156 -0
- package/dist/ai/gemini.js.map +1 -0
- package/dist/ai/maestro.d.ts +22 -0
- package/dist/ai/maestro.d.ts.map +1 -0
- package/dist/ai/maestro.js +142 -0
- package/dist/ai/maestro.js.map +1 -0
- package/dist/ai/manager.d.ts +47 -0
- package/dist/ai/manager.d.ts.map +1 -0
- package/dist/ai/manager.js +450 -0
- package/dist/ai/manager.js.map +1 -0
- package/dist/ai/ollama.d.ts +16 -0
- package/dist/ai/ollama.d.ts.map +1 -0
- package/dist/ai/ollama.js +151 -0
- package/dist/ai/ollama.js.map +1 -0
- package/dist/ai/openai.d.ts +11 -0
- package/dist/ai/openai.d.ts.map +1 -0
- package/dist/ai/openai.js +132 -0
- package/dist/ai/openai.js.map +1 -0
- package/dist/ai/openrouter.d.ts +11 -0
- package/dist/ai/openrouter.d.ts.map +1 -0
- package/dist/ai/openrouter.js +139 -0
- package/dist/ai/openrouter.js.map +1 -0
- package/dist/bot/slack.d.ts +17 -0
- package/dist/bot/slack.d.ts.map +1 -0
- package/dist/bot/slack.js +144 -0
- package/dist/bot/slack.js.map +1 -0
- package/dist/bot/telegram.d.ts +19 -0
- package/dist/bot/telegram.d.ts.map +1 -0
- package/dist/bot/telegram.js +157 -0
- package/dist/bot/telegram.js.map +1 -0
- package/dist/cli/commands/ai.d.ts +4 -0
- package/dist/cli/commands/ai.d.ts.map +1 -0
- package/dist/cli/commands/ai.js +161 -0
- package/dist/cli/commands/ai.js.map +1 -0
- package/dist/cli/commands/doctor.d.ts +18 -0
- package/dist/cli/commands/doctor.d.ts.map +1 -0
- package/dist/cli/commands/doctor.js +213 -0
- package/dist/cli/commands/doctor.js.map +1 -0
- package/dist/cli/commands/init.d.ts +15 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +281 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/install.d.ts +16 -0
- package/dist/cli/commands/install.d.ts.map +1 -0
- package/dist/cli/commands/install.js +750 -0
- package/dist/cli/commands/install.js.map +1 -0
- package/dist/cli/commands/lifecycle.d.ts +4 -0
- package/dist/cli/commands/lifecycle.d.ts.map +1 -0
- package/dist/cli/commands/lifecycle.js +84 -0
- package/dist/cli/commands/lifecycle.js.map +1 -0
- package/dist/cli/commands/marketplace.d.ts +13 -0
- package/dist/cli/commands/marketplace.d.ts.map +1 -0
- package/dist/cli/commands/marketplace.js +197 -0
- package/dist/cli/commands/marketplace.js.map +1 -0
- package/dist/cli/commands/mcp.d.ts +6 -0
- package/dist/cli/commands/mcp.d.ts.map +1 -0
- package/dist/cli/commands/mcp.js +83 -0
- package/dist/cli/commands/mcp.js.map +1 -0
- package/dist/cli/commands/onboard.d.ts +10 -0
- package/dist/cli/commands/onboard.d.ts.map +1 -0
- package/dist/cli/commands/onboard.js +207 -0
- package/dist/cli/commands/onboard.js.map +1 -0
- package/dist/cli/commands/plugin-create.d.ts +13 -0
- package/dist/cli/commands/plugin-create.d.ts.map +1 -0
- package/dist/cli/commands/plugin-create.js +122 -0
- package/dist/cli/commands/plugin-create.js.map +1 -0
- package/dist/cli/commands/plugins.d.ts +5 -0
- package/dist/cli/commands/plugins.d.ts.map +1 -0
- package/dist/cli/commands/plugins.js +30 -0
- package/dist/cli/commands/plugins.js.map +1 -0
- package/dist/cli/commands/release.d.ts +13 -0
- package/dist/cli/commands/release.d.ts.map +1 -0
- package/dist/cli/commands/release.js +243 -0
- package/dist/cli/commands/release.js.map +1 -0
- package/dist/cli/commands/telegram.d.ts +3 -0
- package/dist/cli/commands/telegram.d.ts.map +1 -0
- package/dist/cli/commands/telegram.js +20 -0
- package/dist/cli/commands/telegram.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +402 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/config/oauth.d.ts +8 -0
- package/dist/config/oauth.d.ts.map +1 -0
- package/dist/config/oauth.js +13 -0
- package/dist/config/oauth.js.map +1 -0
- package/dist/core/audit.d.ts +91 -0
- package/dist/core/audit.d.ts.map +1 -0
- package/dist/core/audit.js +233 -0
- package/dist/core/audit.js.map +1 -0
- package/dist/core/circuit-breaker.d.ts +56 -0
- package/dist/core/circuit-breaker.d.ts.map +1 -0
- package/dist/core/circuit-breaker.js +107 -0
- package/dist/core/circuit-breaker.js.map +1 -0
- package/dist/core/conductor.d.ts +44 -0
- package/dist/core/conductor.d.ts.map +1 -0
- package/dist/core/conductor.js +200 -0
- package/dist/core/conductor.js.map +1 -0
- package/dist/core/config.d.ts +66 -0
- package/dist/core/config.d.ts.map +1 -0
- package/dist/core/config.js +86 -0
- package/dist/core/config.js.map +1 -0
- package/dist/core/database.d.ts +59 -0
- package/dist/core/database.d.ts.map +1 -0
- package/dist/core/database.js +342 -0
- package/dist/core/database.js.map +1 -0
- package/dist/core/errors.d.ts +231 -0
- package/dist/core/errors.d.ts.map +1 -0
- package/dist/core/errors.js +254 -0
- package/dist/core/errors.js.map +1 -0
- package/dist/core/health.d.ts +72 -0
- package/dist/core/health.d.ts.map +1 -0
- package/dist/core/health.js +116 -0
- package/dist/core/health.js.map +1 -0
- package/dist/core/interfaces.d.ts +62 -0
- package/dist/core/interfaces.d.ts.map +1 -0
- package/dist/core/interfaces.js +8 -0
- package/dist/core/interfaces.js.map +1 -0
- package/dist/core/logger.d.ts +15 -0
- package/dist/core/logger.d.ts.map +1 -0
- package/dist/core/logger.js +30 -0
- package/dist/core/logger.js.map +1 -0
- package/dist/core/rbac.d.ts +132 -0
- package/dist/core/rbac.d.ts.map +1 -0
- package/dist/core/rbac.js +230 -0
- package/dist/core/rbac.js.map +1 -0
- package/dist/core/retry.d.ts +22 -0
- package/dist/core/retry.d.ts.map +1 -0
- package/dist/core/retry.js +41 -0
- package/dist/core/retry.js.map +1 -0
- package/dist/core/webhooks.d.ts +92 -0
- package/dist/core/webhooks.d.ts.map +1 -0
- package/dist/core/webhooks.js +176 -0
- package/dist/core/webhooks.js.map +1 -0
- package/dist/core/zero-config.d.ts +22 -0
- package/dist/core/zero-config.d.ts.map +1 -0
- package/dist/core/zero-config.js +59 -0
- package/dist/core/zero-config.js.map +1 -0
- package/dist/dashboard/cli.d.ts +6 -0
- package/dist/dashboard/cli.d.ts.map +1 -0
- package/dist/dashboard/cli.js +42 -0
- package/dist/dashboard/cli.js.map +1 -0
- package/dist/dashboard/index.html +3426 -0
- package/dist/dashboard/server.d.ts +7 -0
- package/dist/dashboard/server.d.ts.map +1 -0
- package/dist/dashboard/server.js +1427 -0
- package/dist/dashboard/server.js.map +1 -0
- package/dist/mcp/server.d.ts +27 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +380 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/tools/misc.d.ts +15 -0
- package/dist/mcp/tools/misc.d.ts.map +1 -0
- package/dist/mcp/tools/misc.js +49 -0
- package/dist/mcp/tools/misc.js.map +1 -0
- package/dist/plugins/builtin/calculator.d.ts +11 -0
- package/dist/plugins/builtin/calculator.d.ts.map +1 -0
- package/dist/plugins/builtin/calculator.js +166 -0
- package/dist/plugins/builtin/calculator.js.map +1 -0
- package/dist/plugins/builtin/colors.d.ts +15 -0
- package/dist/plugins/builtin/colors.d.ts.map +1 -0
- package/dist/plugins/builtin/colors.js +193 -0
- package/dist/plugins/builtin/colors.js.map +1 -0
- package/dist/plugins/builtin/cron.d.ts +40 -0
- package/dist/plugins/builtin/cron.d.ts.map +1 -0
- package/dist/plugins/builtin/cron.js +578 -0
- package/dist/plugins/builtin/cron.js.map +1 -0
- package/dist/plugins/builtin/crypto.d.ts +11 -0
- package/dist/plugins/builtin/crypto.d.ts.map +1 -0
- package/dist/plugins/builtin/crypto.js +83 -0
- package/dist/plugins/builtin/crypto.js.map +1 -0
- package/dist/plugins/builtin/database.d.ts +29 -0
- package/dist/plugins/builtin/database.d.ts.map +1 -0
- package/dist/plugins/builtin/database.js +230 -0
- package/dist/plugins/builtin/database.js.map +1 -0
- package/dist/plugins/builtin/docker.d.ts +12 -0
- package/dist/plugins/builtin/docker.d.ts.map +1 -0
- package/dist/plugins/builtin/docker.js +436 -0
- package/dist/plugins/builtin/docker.js.map +1 -0
- package/dist/plugins/builtin/fun.d.ts +11 -0
- package/dist/plugins/builtin/fun.d.ts.map +1 -0
- package/dist/plugins/builtin/fun.js +114 -0
- package/dist/plugins/builtin/fun.js.map +1 -0
- package/dist/plugins/builtin/gcal.d.ts +38 -0
- package/dist/plugins/builtin/gcal.d.ts.map +1 -0
- package/dist/plugins/builtin/gcal.js +280 -0
- package/dist/plugins/builtin/gcal.js.map +1 -0
- package/dist/plugins/builtin/gdrive.d.ts +26 -0
- package/dist/plugins/builtin/gdrive.d.ts.map +1 -0
- package/dist/plugins/builtin/gdrive.js +295 -0
- package/dist/plugins/builtin/gdrive.js.map +1 -0
- package/dist/plugins/builtin/github-actions.d.ts +38 -0
- package/dist/plugins/builtin/github-actions.d.ts.map +1 -0
- package/dist/plugins/builtin/github-actions.js +629 -0
- package/dist/plugins/builtin/github-actions.js.map +1 -0
- package/dist/plugins/builtin/github.d.ts +26 -0
- package/dist/plugins/builtin/github.d.ts.map +1 -0
- package/dist/plugins/builtin/github.js +800 -0
- package/dist/plugins/builtin/github.js.map +1 -0
- package/dist/plugins/builtin/gmail.d.ts +50 -0
- package/dist/plugins/builtin/gmail.d.ts.map +1 -0
- package/dist/plugins/builtin/gmail.js +445 -0
- package/dist/plugins/builtin/gmail.js.map +1 -0
- package/dist/plugins/builtin/hash.d.ts +11 -0
- package/dist/plugins/builtin/hash.d.ts.map +1 -0
- package/dist/plugins/builtin/hash.js +95 -0
- package/dist/plugins/builtin/hash.js.map +1 -0
- package/dist/plugins/builtin/homekit.d.ts +53 -0
- package/dist/plugins/builtin/homekit.d.ts.map +1 -0
- package/dist/plugins/builtin/homekit.js +341 -0
- package/dist/plugins/builtin/homekit.js.map +1 -0
- package/dist/plugins/builtin/index.d.ts +4 -0
- package/dist/plugins/builtin/index.d.ts.map +1 -0
- package/dist/plugins/builtin/index.js +96 -0
- package/dist/plugins/builtin/index.js.map +1 -0
- package/dist/plugins/builtin/jira.d.ts +50 -0
- package/dist/plugins/builtin/jira.d.ts.map +1 -0
- package/dist/plugins/builtin/jira.js +353 -0
- package/dist/plugins/builtin/jira.js.map +1 -0
- package/dist/plugins/builtin/linear.d.ts +35 -0
- package/dist/plugins/builtin/linear.d.ts.map +1 -0
- package/dist/plugins/builtin/linear.js +397 -0
- package/dist/plugins/builtin/linear.js.map +1 -0
- package/dist/plugins/builtin/lumen.d.ts +21 -0
- package/dist/plugins/builtin/lumen.d.ts.map +1 -0
- package/dist/plugins/builtin/lumen.js +404 -0
- package/dist/plugins/builtin/lumen.js.map +1 -0
- package/dist/plugins/builtin/memory.d.ts +22 -0
- package/dist/plugins/builtin/memory.d.ts.map +1 -0
- package/dist/plugins/builtin/memory.js +184 -0
- package/dist/plugins/builtin/memory.js.map +1 -0
- package/dist/plugins/builtin/n8n.d.ts +60 -0
- package/dist/plugins/builtin/n8n.d.ts.map +1 -0
- package/dist/plugins/builtin/n8n.js +519 -0
- package/dist/plugins/builtin/n8n.js.map +1 -0
- package/dist/plugins/builtin/network.d.ts +11 -0
- package/dist/plugins/builtin/network.d.ts.map +1 -0
- package/dist/plugins/builtin/network.js +88 -0
- package/dist/plugins/builtin/network.js.map +1 -0
- package/dist/plugins/builtin/notes.d.ts +47 -0
- package/dist/plugins/builtin/notes.d.ts.map +1 -0
- package/dist/plugins/builtin/notes.js +641 -0
- package/dist/plugins/builtin/notes.js.map +1 -0
- package/dist/plugins/builtin/notion.d.ts +47 -0
- package/dist/plugins/builtin/notion.d.ts.map +1 -0
- package/dist/plugins/builtin/notion.js +317 -0
- package/dist/plugins/builtin/notion.js.map +1 -0
- package/dist/plugins/builtin/shell.d.ts +12 -0
- package/dist/plugins/builtin/shell.d.ts.map +1 -0
- package/dist/plugins/builtin/shell.js +310 -0
- package/dist/plugins/builtin/shell.js.map +1 -0
- package/dist/plugins/builtin/slack.d.ts +31 -0
- package/dist/plugins/builtin/slack.d.ts.map +1 -0
- package/dist/plugins/builtin/slack.js +295 -0
- package/dist/plugins/builtin/slack.js.map +1 -0
- package/dist/plugins/builtin/spotify.d.ts +55 -0
- package/dist/plugins/builtin/spotify.d.ts.map +1 -0
- package/dist/plugins/builtin/spotify.js +623 -0
- package/dist/plugins/builtin/spotify.js.map +1 -0
- package/dist/plugins/builtin/stripe.d.ts +35 -0
- package/dist/plugins/builtin/stripe.d.ts.map +1 -0
- package/dist/plugins/builtin/stripe.js +376 -0
- package/dist/plugins/builtin/stripe.js.map +1 -0
- package/dist/plugins/builtin/system.d.ts +11 -0
- package/dist/plugins/builtin/system.d.ts.map +1 -0
- package/dist/plugins/builtin/system.js +91 -0
- package/dist/plugins/builtin/system.js.map +1 -0
- package/dist/plugins/builtin/text-tools.d.ts +11 -0
- package/dist/plugins/builtin/text-tools.d.ts.map +1 -0
- package/dist/plugins/builtin/text-tools.js +146 -0
- package/dist/plugins/builtin/text-tools.js.map +1 -0
- package/dist/plugins/builtin/timezone.d.ts +13 -0
- package/dist/plugins/builtin/timezone.d.ts.map +1 -0
- package/dist/plugins/builtin/timezone.js +164 -0
- package/dist/plugins/builtin/timezone.js.map +1 -0
- package/dist/plugins/builtin/todoist.d.ts +49 -0
- package/dist/plugins/builtin/todoist.d.ts.map +1 -0
- package/dist/plugins/builtin/todoist.js +540 -0
- package/dist/plugins/builtin/todoist.js.map +1 -0
- package/dist/plugins/builtin/translate.d.ts +11 -0
- package/dist/plugins/builtin/translate.d.ts.map +1 -0
- package/dist/plugins/builtin/translate.js +42 -0
- package/dist/plugins/builtin/translate.js.map +1 -0
- package/dist/plugins/builtin/url-tools.d.ts +11 -0
- package/dist/plugins/builtin/url-tools.d.ts.map +1 -0
- package/dist/plugins/builtin/url-tools.js +70 -0
- package/dist/plugins/builtin/url-tools.js.map +1 -0
- package/dist/plugins/builtin/vercel.d.ts +55 -0
- package/dist/plugins/builtin/vercel.d.ts.map +1 -0
- package/dist/plugins/builtin/vercel.js +514 -0
- package/dist/plugins/builtin/vercel.js.map +1 -0
- package/dist/plugins/builtin/weather.d.ts +13 -0
- package/dist/plugins/builtin/weather.d.ts.map +1 -0
- package/dist/plugins/builtin/weather.js +103 -0
- package/dist/plugins/builtin/weather.js.map +1 -0
- package/dist/plugins/builtin/x.d.ts +54 -0
- package/dist/plugins/builtin/x.d.ts.map +1 -0
- package/dist/plugins/builtin/x.js +402 -0
- package/dist/plugins/builtin/x.js.map +1 -0
- package/dist/plugins/manager.d.ts +77 -0
- package/dist/plugins/manager.d.ts.map +1 -0
- package/dist/plugins/manager.js +141 -0
- package/dist/plugins/manager.js.map +1 -0
- package/dist/plugins/validation.d.ts +18 -0
- package/dist/plugins/validation.d.ts.map +1 -0
- package/dist/plugins/validation.js +81 -0
- package/dist/plugins/validation.js.map +1 -0
- package/dist/security/auth.d.ts +23 -0
- package/dist/security/auth.d.ts.map +1 -0
- package/dist/security/auth.js +56 -0
- package/dist/security/auth.js.map +1 -0
- package/dist/security/keychain.d.ts +60 -0
- package/dist/security/keychain.d.ts.map +1 -0
- package/dist/security/keychain.js +213 -0
- package/dist/security/keychain.js.map +1 -0
- package/dist/utils/google-auth.d.ts +21 -0
- package/dist/utils/google-auth.d.ts.map +1 -0
- package/dist/utils/google-auth.js +135 -0
- package/dist/utils/google-auth.js.map +1 -0
- package/dist/utils/retry.d.ts +5 -0
- package/dist/utils/retry.d.ts.map +1 -0
- package/dist/utils/retry.js +34 -0
- package/dist/utils/retry.js.map +1 -0
- package/docs/README.md +13 -0
- package/docs/api.md +210 -0
- package/docs/getting-started.md +100 -0
- package/docs/plugins.md +306 -0
- package/docs-site/.vitepress/config.ts +59 -0
- package/docs-site/README.md +12 -0
- package/docs-site/index.md +30 -0
- package/eslint.config.js +29 -0
- package/install.ps1 +334 -0
- package/install.sh +1119 -0
- package/local-install.sh +304 -0
- package/package.json +90 -0
- package/packages/README.md +11 -0
- package/packages/plugin-sdk/README.md +12 -0
- package/packages/plugin-sdk/package.json +22 -0
- package/packages/plugin-sdk/src/README.md +11 -0
- package/packages/plugin-sdk/src/index.ts +191 -0
- package/sdks/README.md +26 -0
- package/sdks/csharp/ConductorClient.cs +65 -0
- package/sdks/csharp/README.md +11 -0
- package/sdks/go/README.md +11 -0
- package/sdks/go/conductor.go +257 -0
- package/sdks/java/ConductorClient.java +27 -0
- package/sdks/java/README.md +11 -0
- package/sdks/php/README.md +11 -0
- package/sdks/php/src/Client.php +72 -0
- package/sdks/python/README.md +12 -0
- package/sdks/python/conductor/__init__.py +227 -0
- package/sdks/python/pyproject.toml +30 -0
- package/sdks/ruby/README.md +11 -0
- package/sdks/ruby/lib/conductor.rb +46 -0
- package/sdks/rust/Cargo.toml +14 -0
- package/sdks/rust/README.md +11 -0
- package/sdks/swift/README.md +11 -0
- package/sdks/swift/Sources/Conductor/ConductorClient.swift +65 -0
- package/skills/conductor-mcp/SKILL.md +38 -0
- package/src/README.md +20 -0
- package/src/ai/README.md +18 -0
- package/src/ai/base.ts +93 -0
- package/src/ai/claude.ts +162 -0
- package/src/ai/gemini.ts +188 -0
- package/src/ai/maestro.ts +168 -0
- package/src/ai/manager.ts +537 -0
- package/src/ai/ollama.ts +186 -0
- package/src/ai/openai.ts +147 -0
- package/src/ai/openrouter.ts +152 -0
- package/src/bot/README.md +12 -0
- package/src/bot/slack.ts +164 -0
- package/src/bot/telegram.ts +185 -0
- package/src/cli/README.md +24 -0
- package/src/cli/commands/README.md +20 -0
- package/src/cli/commands/ai.ts +170 -0
- package/src/cli/commands/doctor.ts +221 -0
- package/src/cli/commands/init.ts +348 -0
- package/src/cli/commands/install.ts +792 -0
- package/src/cli/commands/lifecycle.ts +95 -0
- package/src/cli/commands/marketplace.ts +253 -0
- package/src/cli/commands/mcp.ts +92 -0
- package/src/cli/commands/onboard.ts +248 -0
- package/src/cli/commands/plugin-create.ts +130 -0
- package/src/cli/commands/plugins.ts +36 -0
- package/src/cli/commands/release.ts +251 -0
- package/src/cli/commands/telegram.ts +25 -0
- package/src/cli/index.ts +450 -0
- package/src/config/README.md +11 -0
- package/src/config/oauth.ts +26 -0
- package/src/core/README.md +22 -0
- package/src/core/audit.ts +291 -0
- package/src/core/circuit-breaker.ts +129 -0
- package/src/core/conductor.ts +240 -0
- package/src/core/config.ts +149 -0
- package/src/core/database.ts +411 -0
- package/src/core/errors.ts +275 -0
- package/src/core/health.ts +159 -0
- package/src/core/interfaces.ts +75 -0
- package/src/core/logger.ts +33 -0
- package/src/core/rbac.ts +321 -0
- package/src/core/retry.ts +61 -0
- package/src/core/webhooks.ts +234 -0
- package/src/core/zero-config.ts +72 -0
- package/src/dashboard/README.md +15 -0
- package/src/dashboard/cli.ts +48 -0
- package/src/dashboard/index.html +3426 -0
- package/src/dashboard/server.ts +1544 -0
- package/src/mcp/README.md +20 -0
- package/src/mcp/server.ts +475 -0
- package/src/mcp/tools/README.md +11 -0
- package/src/mcp/tools/misc.ts +61 -0
- package/src/plugins/README.md +28 -0
- package/src/plugins/builtin/README.md +23 -0
- package/src/plugins/builtin/calculator.ts +178 -0
- package/src/plugins/builtin/colors.ts +201 -0
- package/src/plugins/builtin/cron.ts +649 -0
- package/src/plugins/builtin/crypto.ts +85 -0
- package/src/plugins/builtin/database.ts +235 -0
- package/src/plugins/builtin/docker.ts +426 -0
- package/src/plugins/builtin/fun.ts +118 -0
- package/src/plugins/builtin/gcal.ts +305 -0
- package/src/plugins/builtin/gdrive.ts +326 -0
- package/src/plugins/builtin/github-actions.ts +666 -0
- package/src/plugins/builtin/github.ts +912 -0
- package/src/plugins/builtin/gmail.ts +492 -0
- package/src/plugins/builtin/hash.ts +98 -0
- package/src/plugins/builtin/homekit.ts +389 -0
- package/src/plugins/builtin/index.ts +116 -0
- package/src/plugins/builtin/jira.ts +380 -0
- package/src/plugins/builtin/linear.ts +448 -0
- package/src/plugins/builtin/lumen.ts +497 -0
- package/src/plugins/builtin/memory.ts +200 -0
- package/src/plugins/builtin/n8n.ts +565 -0
- package/src/plugins/builtin/network.ts +92 -0
- package/src/plugins/builtin/notes.ts +689 -0
- package/src/plugins/builtin/notion.ts +348 -0
- package/src/plugins/builtin/shell.ts +334 -0
- package/src/plugins/builtin/slack.ts +327 -0
- package/src/plugins/builtin/spotify.ts +665 -0
- package/src/plugins/builtin/stripe.ts +388 -0
- package/src/plugins/builtin/system.ts +93 -0
- package/src/plugins/builtin/text-tools.ts +150 -0
- package/src/plugins/builtin/timezone.ts +173 -0
- package/src/plugins/builtin/todoist.ts +625 -0
- package/src/plugins/builtin/translate.ts +47 -0
- package/src/plugins/builtin/url-tools.ts +73 -0
- package/src/plugins/builtin/vercel.ts +546 -0
- package/src/plugins/builtin/weather.ts +112 -0
- package/src/plugins/builtin/x.ts +440 -0
- package/src/plugins/manager.ts +213 -0
- package/src/plugins/validation.ts +94 -0
- package/src/security/README.md +12 -0
- package/src/security/auth.ts +72 -0
- package/src/security/keychain.ts +226 -0
- package/src/utils/README.md +12 -0
- package/src/utils/google-auth.ts +159 -0
- package/src/utils/retry.ts +41 -0
- package/test-all.mjs +1256 -0
- package/test.mjs +633 -0
- package/tests/README.md +19 -0
- package/tests/calculator.test.ts +54 -0
- package/tests/docker.test.ts +42 -0
- package/tests/load.test.ts +129 -0
- package/tests/mcp.test.ts +14 -0
- package/tests/shell.test.ts +42 -0
- package/tsconfig.json +21 -0
- package/vitest.config.ts +14 -0
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
using System;
|
|
2
|
+
using System.Diagnostics;
|
|
3
|
+
using System.Text;
|
|
4
|
+
using System.Text.Json;
|
|
5
|
+
using System.Threading;
|
|
6
|
+
using System.Threading.Tasks;
|
|
7
|
+
|
|
8
|
+
namespace Conductor;
|
|
9
|
+
|
|
10
|
+
/// <summary>
|
|
11
|
+
/// Conductor .NET SDK — The AI Tool Hub
|
|
12
|
+
///
|
|
13
|
+
/// dotnet add package Conductor.NET
|
|
14
|
+
///
|
|
15
|
+
/// var client = new ConductorClient();
|
|
16
|
+
/// var result = await client.Tools.CallAsync("shell_list_dir", new { path = "." });
|
|
17
|
+
/// Console.WriteLine(result.Data);
|
|
18
|
+
/// </summary>
|
|
19
|
+
public class ConductorClient : IAsyncDisposable
|
|
20
|
+
{
|
|
21
|
+
private readonly string _command;
|
|
22
|
+
private readonly string[] _args;
|
|
23
|
+
private readonly TimeSpan _timeout;
|
|
24
|
+
private readonly int _maxRetries;
|
|
25
|
+
private Process? _process;
|
|
26
|
+
private int _requestId;
|
|
27
|
+
private readonly object _lock = new();
|
|
28
|
+
|
|
29
|
+
public ConductorClient(
|
|
30
|
+
string command = "conductor",
|
|
31
|
+
string[]? args = null,
|
|
32
|
+
TimeSpan? timeout = null,
|
|
33
|
+
int maxRetries = 3)
|
|
34
|
+
{
|
|
35
|
+
_command = command;
|
|
36
|
+
_args = args ?? new[] { "mcp", "start" };
|
|
37
|
+
_timeout = timeout ?? TimeSpan.FromSeconds(60);
|
|
38
|
+
_maxRetries = maxRetries;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
public ToolClient Tools => new(this);
|
|
42
|
+
|
|
43
|
+
public async ValueTask DisposeAsync()
|
|
44
|
+
{
|
|
45
|
+
if (_process != null && !_process.HasExited)
|
|
46
|
+
{
|
|
47
|
+
_process.Kill();
|
|
48
|
+
await _process.WaitForExitAsync();
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
public class ToolClient
|
|
54
|
+
{
|
|
55
|
+
private readonly ConductorClient _client;
|
|
56
|
+
internal ToolClient(ConductorClient client) => _client = client;
|
|
57
|
+
|
|
58
|
+
public async Task<ToolResult> CallAsync(string name, object? args = null, CancellationToken ct = default)
|
|
59
|
+
{
|
|
60
|
+
// TODO: Implement stdio MCP protocol client
|
|
61
|
+
throw new NotImplementedException();
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
public record ToolResult(bool Success, object? Data, string? Error = null, int? LatencyMs = null);
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# sdks/csharp
|
|
2
|
+
|
|
3
|
+
C# SDK for Conductor. Provides a .NET client for interacting with the Conductor MCP server.
|
|
4
|
+
|
|
5
|
+
## Contents
|
|
6
|
+
|
|
7
|
+
- `ConductorClient.cs` - C# client implementation
|
|
8
|
+
|
|
9
|
+
## Architecture
|
|
10
|
+
|
|
11
|
+
This SDK enables .NET applications to communicate with Conductor via the MCP protocol. Use the client class to invoke Conductor tools from C# services, ASP.NET applications, or Blazor apps.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# sdks/go
|
|
2
|
+
|
|
3
|
+
Go SDK for Conductor. Provides a Go client for interacting with the Conductor MCP server.
|
|
4
|
+
|
|
5
|
+
## Contents
|
|
6
|
+
|
|
7
|
+
- `conductor.go` - Go client implementation
|
|
8
|
+
|
|
9
|
+
## Architecture
|
|
10
|
+
|
|
11
|
+
This SDK enables Go applications to communicate with Conductor via the MCP protocol. Import the package to use Conductor tools from Go services and CLI applications.
|
|
@@ -0,0 +1,257 @@
|
|
|
1
|
+
// Package conductor provides a Go client for the Conductor AI Tool Hub.
|
|
2
|
+
//
|
|
3
|
+
// Conductor is a single MCP server that gives any AI agent access to 100+ tools.
|
|
4
|
+
// This SDK allows Go programs to call Conductor tools programmatically.
|
|
5
|
+
//
|
|
6
|
+
// Installation:
|
|
7
|
+
//
|
|
8
|
+
// go get github.com/conductor/conductor/sdks/go
|
|
9
|
+
//
|
|
10
|
+
// Usage:
|
|
11
|
+
//
|
|
12
|
+
// client, err := conductor.New()
|
|
13
|
+
// if err != nil {
|
|
14
|
+
// log.Fatal(err)
|
|
15
|
+
// }
|
|
16
|
+
// defer client.Close()
|
|
17
|
+
//
|
|
18
|
+
// result, err := client.Tools.Call(ctx, "shell_list_dir", map[string]any{"path": "."})
|
|
19
|
+
// if err != nil {
|
|
20
|
+
// log.Fatal(err)
|
|
21
|
+
// }
|
|
22
|
+
// fmt.Println(result)
|
|
23
|
+
package conductor
|
|
24
|
+
|
|
25
|
+
import (
|
|
26
|
+
"bufio"
|
|
27
|
+
"context"
|
|
28
|
+
"encoding/json"
|
|
29
|
+
"fmt"
|
|
30
|
+
"io"
|
|
31
|
+
"os/exec"
|
|
32
|
+
"sync"
|
|
33
|
+
"time"
|
|
34
|
+
)
|
|
35
|
+
|
|
36
|
+
// Client is a Conductor MCP client.
|
|
37
|
+
type Client struct {
|
|
38
|
+
command string
|
|
39
|
+
args []string
|
|
40
|
+
timeout time.Duration
|
|
41
|
+
maxRetries int
|
|
42
|
+
|
|
43
|
+
mu sync.Mutex
|
|
44
|
+
cmd *exec.Cmd
|
|
45
|
+
stdin io.WriteCloser
|
|
46
|
+
stdout *bufio.Reader
|
|
47
|
+
reqID int
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
// ToolResult is the result of a tool call.
|
|
51
|
+
type ToolResult struct {
|
|
52
|
+
Success bool
|
|
53
|
+
Data any
|
|
54
|
+
Error string
|
|
55
|
+
LatencyMs int
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
// New creates a new Conductor client.
|
|
59
|
+
func New(opts ...Option) (*Client, error) {
|
|
60
|
+
c := &Client{
|
|
61
|
+
command: "conductor",
|
|
62
|
+
args: []string{"mcp", "start"},
|
|
63
|
+
timeout: 60 * time.Second,
|
|
64
|
+
maxRetries: 3,
|
|
65
|
+
}
|
|
66
|
+
for _, opt := range opts {
|
|
67
|
+
opt(c)
|
|
68
|
+
}
|
|
69
|
+
return c, nil
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
// Option configures a Client.
|
|
73
|
+
type Option func(*Client)
|
|
74
|
+
|
|
75
|
+
// WithCommand sets the conductor binary path.
|
|
76
|
+
func WithCommand(cmd string) Option {
|
|
77
|
+
return func(c *Client) { c.command = cmd }
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
// WithTimeout sets the default timeout.
|
|
81
|
+
func WithTimeout(d time.Duration) Option {
|
|
82
|
+
return func(c *Client) { c.timeout = d }
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
// WithMaxRetries sets the maximum retry attempts.
|
|
86
|
+
func WithMaxRetries(n int) Option {
|
|
87
|
+
return func(c *Client) { c.maxRetries = n }
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
// ensureProcess starts the Conductor subprocess if not already running.
|
|
91
|
+
func (c *Client) ensureProcess() error {
|
|
92
|
+
if c.cmd != nil && c.cmd.Process != nil && c.cmd.ProcessState == nil {
|
|
93
|
+
return nil
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
cmd := exec.Command(c.command, c.args...)
|
|
97
|
+
stdin, err := cmd.StdinPipe()
|
|
98
|
+
if err != nil {
|
|
99
|
+
return err
|
|
100
|
+
}
|
|
101
|
+
stdout, err := cmd.StdoutPipe()
|
|
102
|
+
if err != nil {
|
|
103
|
+
return err
|
|
104
|
+
}
|
|
105
|
+
cmd.Stderr = nil // MCP protocol uses stdout; stderr is for logs
|
|
106
|
+
|
|
107
|
+
if err := cmd.Start(); err != nil {
|
|
108
|
+
return fmt.Errorf("conductor: failed to start: %w", err)
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
c.cmd = cmd
|
|
112
|
+
c.stdin = stdin
|
|
113
|
+
c.stdout = bufio.NewReader(stdout)
|
|
114
|
+
return nil
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
// sendRequest sends a JSON-RPC request and returns the result.
|
|
118
|
+
func (c *Client) sendRequest(ctx context.Context, method string, params map[string]any) (any, error) {
|
|
119
|
+
var lastErr error
|
|
120
|
+
|
|
121
|
+
for attempt := 0; attempt < c.maxRetries; attempt++ {
|
|
122
|
+
if attempt > 0 {
|
|
123
|
+
delay := time.Duration(1<<uint(attempt-1)) * 500 * time.Millisecond
|
|
124
|
+
if delay > 5*time.Second {
|
|
125
|
+
delay = 5 * time.Second
|
|
126
|
+
}
|
|
127
|
+
select {
|
|
128
|
+
case <-ctx.Done():
|
|
129
|
+
return nil, ctx.Err()
|
|
130
|
+
case <-time.After(delay):
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
c.mu.Lock()
|
|
135
|
+
if err := c.ensureProcess(); err != nil {
|
|
136
|
+
c.mu.Unlock()
|
|
137
|
+
lastErr = err
|
|
138
|
+
continue
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
c.reqID++
|
|
142
|
+
reqID := c.reqID
|
|
143
|
+
c.mu.Unlock()
|
|
144
|
+
|
|
145
|
+
start := time.Now()
|
|
146
|
+
ctx, cancel := context.WithTimeout(ctx, c.timeout)
|
|
147
|
+
defer cancel()
|
|
148
|
+
|
|
149
|
+
req := map[string]any{
|
|
150
|
+
"jsonrpc": "2.0",
|
|
151
|
+
"id": reqID,
|
|
152
|
+
"method": method,
|
|
153
|
+
"params": params,
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
data, err := json.Marshal(req)
|
|
157
|
+
if err != nil {
|
|
158
|
+
lastErr = err
|
|
159
|
+
continue
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
if _, err := c.stdin.Write(append(data, '\n')); err != nil {
|
|
163
|
+
c.mu.Lock()
|
|
164
|
+
c.cmd = nil
|
|
165
|
+
c.mu.Unlock()
|
|
166
|
+
lastErr = fmt.Errorf("conductor: write failed: %w", err)
|
|
167
|
+
continue
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
done := make(chan any, 1)
|
|
171
|
+
go func() {
|
|
172
|
+
line, err := c.stdout.ReadString('\n')
|
|
173
|
+
if err != nil {
|
|
174
|
+
done <- err
|
|
175
|
+
return
|
|
176
|
+
}
|
|
177
|
+
var resp map[string]any
|
|
178
|
+
if err := json.Unmarshal([]byte(line), &resp); err != nil {
|
|
179
|
+
done <- err
|
|
180
|
+
return
|
|
181
|
+
}
|
|
182
|
+
if errVal, ok := resp["error"]; ok {
|
|
183
|
+
if errMap, ok := errVal.(map[string]any); ok {
|
|
184
|
+
done <- fmt.Errorf("conductor: %v", errMap["message"])
|
|
185
|
+
return
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
done <- resp["result"]
|
|
189
|
+
}()
|
|
190
|
+
|
|
191
|
+
select {
|
|
192
|
+
case <-ctx.Done():
|
|
193
|
+
lastErr = ctx.Err()
|
|
194
|
+
case result := <-done:
|
|
195
|
+
if err, ok := result.(error); ok {
|
|
196
|
+
lastErr = err
|
|
197
|
+
continue
|
|
198
|
+
}
|
|
199
|
+
_ = time.Since(start).Milliseconds() // latency tracked
|
|
200
|
+
return result, nil
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
return nil, fmt.Errorf("conductor: failed after %d retries: %w", c.maxRetries, lastErr)
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
// Close stops the Conductor subprocess.
|
|
208
|
+
func (c *Client) Close() error {
|
|
209
|
+
c.mu.Lock()
|
|
210
|
+
defer c.mu.Unlock()
|
|
211
|
+
if c.cmd != nil && c.cmd.Process != nil {
|
|
212
|
+
return c.cmd.Process.Kill()
|
|
213
|
+
}
|
|
214
|
+
return nil
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
// Tools provides access to Conductor tools.
|
|
218
|
+
func (c *Client) Tools() *ToolClient {
|
|
219
|
+
return &ToolClient{client: c}
|
|
220
|
+
}
|
|
221
|
+
|
|
222
|
+
// ToolClient calls Conductor tools.
|
|
223
|
+
type ToolClient struct {
|
|
224
|
+
client *Client
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
// Call calls a named tool with the given arguments.
|
|
228
|
+
func (t *ToolClient) Call(ctx context.Context, name string, args map[string]any) (*ToolResult, error) {
|
|
229
|
+
result, err := t.client.sendRequest(ctx, "tools/call", map[string]any{
|
|
230
|
+
"name": name,
|
|
231
|
+
"arguments": args,
|
|
232
|
+
})
|
|
233
|
+
if err != nil {
|
|
234
|
+
return &ToolResult{Success: false, Error: err.Error()}, err
|
|
235
|
+
}
|
|
236
|
+
return &ToolResult{Success: true, Data: result}, nil
|
|
237
|
+
}
|
|
238
|
+
|
|
239
|
+
// List returns all available tools.
|
|
240
|
+
func (t *ToolClient) List(ctx context.Context) ([]map[string]any, error) {
|
|
241
|
+
result, err := t.client.sendRequest(ctx, "tools/list", nil)
|
|
242
|
+
if err != nil {
|
|
243
|
+
return nil, err
|
|
244
|
+
}
|
|
245
|
+
if m, ok := result.(map[string]any); ok {
|
|
246
|
+
if tools, ok := m["tools"].([]any); ok {
|
|
247
|
+
out := make([]map[string]any, len(tools))
|
|
248
|
+
for i, tool := range tools {
|
|
249
|
+
if m, ok := tool.(map[string]any); ok {
|
|
250
|
+
out[i] = m
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
return out, nil
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
return nil, nil
|
|
257
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
package com.conductor;
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Conductor Java SDK — The AI Tool Hub
|
|
5
|
+
*
|
|
6
|
+
* Connect to Conductor MCP server and call 100+ tools from Java.
|
|
7
|
+
*
|
|
8
|
+
* Maven:
|
|
9
|
+
* <dependency>
|
|
10
|
+
* <groupId>dev.conductor</groupId>
|
|
11
|
+
* <artifactId>conductor-java</artifactId>
|
|
12
|
+
* <version>1.0.0</version>
|
|
13
|
+
* </dependency>
|
|
14
|
+
*
|
|
15
|
+
* Usage:
|
|
16
|
+
* ConductorClient client = new ConductorClient();
|
|
17
|
+
* ToolResult result = client.tools().call("shell_list_dir", Map.of("path", "."));
|
|
18
|
+
* System.out.println(result.getData());
|
|
19
|
+
*/
|
|
20
|
+
public class ConductorClient {
|
|
21
|
+
// TODO: Implement stdio MCP protocol client
|
|
22
|
+
// - Use ProcessBuilder to start "conductor mcp start"
|
|
23
|
+
// - Send JSON-RPC requests over stdin
|
|
24
|
+
// - Read JSON-RPC responses from stdout
|
|
25
|
+
// - Implement retry with exponential backoff
|
|
26
|
+
// - Implement circuit breaker pattern
|
|
27
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# sdks/java
|
|
2
|
+
|
|
3
|
+
Java SDK for Conductor. Provides a Java client for interacting with the Conductor MCP server.
|
|
4
|
+
|
|
5
|
+
## Contents
|
|
6
|
+
|
|
7
|
+
- `ConductorClient.java` - Java client implementation
|
|
8
|
+
|
|
9
|
+
## Architecture
|
|
10
|
+
|
|
11
|
+
This SDK enables Java applications to communicate with Conductor via the MCP protocol. Use the client class to invoke Conductor tools from Java services, Spring Boot applications, or Android apps.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# sdks/php
|
|
2
|
+
|
|
3
|
+
PHP SDK for Conductor. Provides a PHP client for interacting with the Conductor MCP server.
|
|
4
|
+
|
|
5
|
+
## Contents
|
|
6
|
+
|
|
7
|
+
- `src/` - PHP package source code
|
|
8
|
+
|
|
9
|
+
## Architecture
|
|
10
|
+
|
|
11
|
+
This SDK enables PHP applications to communicate with Conductor via the MCP protocol. Use as a Composer package to invoke Conductor tools from PHP scripts, Laravel applications, or Symfony services.
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
<?php
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Conductor PHP SDK — The AI Tool Hub
|
|
5
|
+
*
|
|
6
|
+
* composer require conductor/conductor-php
|
|
7
|
+
*
|
|
8
|
+
* use Conductor\Client;
|
|
9
|
+
*
|
|
10
|
+
* $client = new Client();
|
|
11
|
+
* $result = $client->tools()->call('shell_list_dir', ['path' => '.']);
|
|
12
|
+
* echo json_encode($result->data);
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
namespace Conductor;
|
|
16
|
+
|
|
17
|
+
class Client {
|
|
18
|
+
private string $command;
|
|
19
|
+
private array $args;
|
|
20
|
+
private int $timeout;
|
|
21
|
+
private int $maxRetries;
|
|
22
|
+
private $process;
|
|
23
|
+
|
|
24
|
+
public function __construct(
|
|
25
|
+
string $command = 'conductor',
|
|
26
|
+
array $args = ['mcp', 'start'],
|
|
27
|
+
int $timeout = 60,
|
|
28
|
+
int $maxRetries = 3
|
|
29
|
+
) {
|
|
30
|
+
$this->command = $command;
|
|
31
|
+
$this->args = $args;
|
|
32
|
+
$this->timeout = $timeout;
|
|
33
|
+
$this->maxRetries = $maxRetries;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
public function tools(): ToolClient {
|
|
37
|
+
return new ToolClient($this);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
public function close(): void {
|
|
41
|
+
if ($this->process) {
|
|
42
|
+
proc_terminate($this->process);
|
|
43
|
+
$this->process = null;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
public function __destruct() {
|
|
48
|
+
$this->close();
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
class ToolClient {
|
|
53
|
+
private Client $client;
|
|
54
|
+
|
|
55
|
+
public function __construct(Client $client) {
|
|
56
|
+
$this->client = $client;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
public function call(string $name, array $args = []): ToolResult {
|
|
60
|
+
// TODO: Implement stdio MCP protocol client
|
|
61
|
+
throw new \RuntimeException('Not implemented yet');
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
class ToolResult {
|
|
66
|
+
public function __construct(
|
|
67
|
+
public readonly bool $success,
|
|
68
|
+
public readonly mixed $data = null,
|
|
69
|
+
public readonly ?string $error = null,
|
|
70
|
+
public readonly ?int $latencyMs = null,
|
|
71
|
+
) {}
|
|
72
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# sdks/python
|
|
2
|
+
|
|
3
|
+
Python SDK for Conductor. Provides a Python client for interacting with the Conductor MCP server.
|
|
4
|
+
|
|
5
|
+
## Contents
|
|
6
|
+
|
|
7
|
+
- `pyproject.toml` - Python package manifest and dependencies
|
|
8
|
+
- `conductor/` - Python package source code
|
|
9
|
+
|
|
10
|
+
## Architecture
|
|
11
|
+
|
|
12
|
+
This SDK enables Python applications to communicate with Conductor via the MCP protocol. Install as a pip package to use Conductor tools from Python scripts, Jupyter notebooks, or AI agent frameworks.
|