@shuyhere/takotako 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CONTRIBUTING.md +84 -0
- package/LICENSE +21 -0
- package/README.md +171 -0
- package/dist/agents/communication.d.ts +48 -0
- package/dist/agents/communication.d.ts.map +1 -0
- package/dist/agents/communication.js +123 -0
- package/dist/agents/communication.js.map +1 -0
- package/dist/agents/config.d.ts +52 -0
- package/dist/agents/config.d.ts.map +1 -0
- package/dist/agents/config.js +65 -0
- package/dist/agents/config.js.map +1 -0
- package/dist/agents/model-catalog.d.ts +49 -0
- package/dist/agents/model-catalog.d.ts.map +1 -0
- package/dist/agents/model-catalog.js +79 -0
- package/dist/agents/model-catalog.js.map +1 -0
- package/dist/agents/registry.d.ts +71 -0
- package/dist/agents/registry.d.ts.map +1 -0
- package/dist/agents/registry.js +297 -0
- package/dist/agents/registry.js.map +1 -0
- package/dist/agents/roles.d.ts +79 -0
- package/dist/agents/roles.d.ts.map +1 -0
- package/dist/agents/roles.js +174 -0
- package/dist/agents/roles.js.map +1 -0
- package/dist/agents/subagent.d.ts +124 -0
- package/dist/agents/subagent.d.ts.map +1 -0
- package/dist/agents/subagent.js +352 -0
- package/dist/agents/subagent.js.map +1 -0
- package/dist/agents/templates.d.ts +18 -0
- package/dist/agents/templates.d.ts.map +1 -0
- package/dist/agents/templates.js +341 -0
- package/dist/agents/templates.js.map +1 -0
- package/dist/agents/thread-binding.d.ts +77 -0
- package/dist/agents/thread-binding.d.ts.map +1 -0
- package/dist/agents/thread-binding.js +167 -0
- package/dist/agents/thread-binding.js.map +1 -0
- package/dist/auth/agent-profiles.d.ts +46 -0
- package/dist/auth/agent-profiles.d.ts.map +1 -0
- package/dist/auth/agent-profiles.js +97 -0
- package/dist/auth/agent-profiles.js.map +1 -0
- package/dist/auth/allow-from.d.ts +27 -0
- package/dist/auth/allow-from.d.ts.map +1 -0
- package/dist/auth/allow-from.js +118 -0
- package/dist/auth/allow-from.js.map +1 -0
- package/dist/auth/oauth.d.ts +66 -0
- package/dist/auth/oauth.d.ts.map +1 -0
- package/dist/auth/oauth.js +253 -0
- package/dist/auth/oauth.js.map +1 -0
- package/dist/auth/storage.d.ts +69 -0
- package/dist/auth/storage.d.ts.map +1 -0
- package/dist/auth/storage.js +157 -0
- package/dist/auth/storage.js.map +1 -0
- package/dist/cache/file-cache.d.ts +68 -0
- package/dist/cache/file-cache.d.ts.map +1 -0
- package/dist/cache/file-cache.js +176 -0
- package/dist/cache/file-cache.js.map +1 -0
- package/dist/cache/manager.d.ts +69 -0
- package/dist/cache/manager.d.ts.map +1 -0
- package/dist/cache/manager.js +117 -0
- package/dist/cache/manager.js.map +1 -0
- package/dist/cache/symbol-index.d.ts +75 -0
- package/dist/cache/symbol-index.d.ts.map +1 -0
- package/dist/cache/symbol-index.js +267 -0
- package/dist/cache/symbol-index.js.map +1 -0
- package/dist/cache/tool-cache.d.ts +75 -0
- package/dist/cache/tool-cache.d.ts.map +1 -0
- package/dist/cache/tool-cache.js +173 -0
- package/dist/cache/tool-cache.js.map +1 -0
- package/dist/channels/channel.d.ts +156 -0
- package/dist/channels/channel.d.ts.map +1 -0
- package/dist/channels/channel.js +25 -0
- package/dist/channels/channel.js.map +1 -0
- package/dist/channels/cli.d.ts +35 -0
- package/dist/channels/cli.d.ts.map +1 -0
- package/dist/channels/cli.js +94 -0
- package/dist/channels/cli.js.map +1 -0
- package/dist/channels/delivery-queue.d.ts +31 -0
- package/dist/channels/delivery-queue.d.ts.map +1 -0
- package/dist/channels/delivery-queue.js +127 -0
- package/dist/channels/delivery-queue.js.map +1 -0
- package/dist/channels/discord.d.ts +124 -0
- package/dist/channels/discord.d.ts.map +1 -0
- package/dist/channels/discord.js +664 -0
- package/dist/channels/discord.js.map +1 -0
- package/dist/channels/retry.d.ts +31 -0
- package/dist/channels/retry.d.ts.map +1 -0
- package/dist/channels/retry.js +94 -0
- package/dist/channels/retry.js.map +1 -0
- package/dist/channels/telegram.d.ts +69 -0
- package/dist/channels/telegram.d.ts.map +1 -0
- package/dist/channels/telegram.js +499 -0
- package/dist/channels/telegram.js.map +1 -0
- package/dist/channels/tui.d.ts +42 -0
- package/dist/channels/tui.d.ts.map +1 -0
- package/dist/channels/tui.js +126 -0
- package/dist/channels/tui.js.map +1 -0
- package/dist/cli/acp.d.ts +10 -0
- package/dist/cli/acp.d.ts.map +1 -0
- package/dist/cli/acp.js +69 -0
- package/dist/cli/acp.js.map +1 -0
- package/dist/cli/audit.d.ts +11 -0
- package/dist/cli/audit.d.ts.map +1 -0
- package/dist/cli/audit.js +55 -0
- package/dist/cli/audit.js.map +1 -0
- package/dist/cli/cache.d.ts +10 -0
- package/dist/cli/cache.d.ts.map +1 -0
- package/dist/cli/cache.js +77 -0
- package/dist/cli/cache.js.map +1 -0
- package/dist/cli/config.d.ts +5 -0
- package/dist/cli/config.d.ts.map +1 -0
- package/dist/cli/config.js +168 -0
- package/dist/cli/config.js.map +1 -0
- package/dist/cli/cron.d.ts +5 -0
- package/dist/cli/cron.d.ts.map +1 -0
- package/dist/cli/cron.js +192 -0
- package/dist/cli/cron.js.map +1 -0
- package/dist/cli/extensions.d.ts +5 -0
- package/dist/cli/extensions.d.ts.map +1 -0
- package/dist/cli/extensions.js +53 -0
- package/dist/cli/extensions.js.map +1 -0
- package/dist/cli/logs.d.ts +5 -0
- package/dist/cli/logs.d.ts.map +1 -0
- package/dist/cli/logs.js +49 -0
- package/dist/cli/logs.js.map +1 -0
- package/dist/cli/memory.d.ts +5 -0
- package/dist/cli/memory.d.ts.map +1 -0
- package/dist/cli/memory.js +78 -0
- package/dist/cli/memory.js.map +1 -0
- package/dist/cli/message.d.ts +5 -0
- package/dist/cli/message.d.ts.map +1 -0
- package/dist/cli/message.js +69 -0
- package/dist/cli/message.js.map +1 -0
- package/dist/cli/service.d.ts +14 -0
- package/dist/cli/service.d.ts.map +1 -0
- package/dist/cli/service.js +181 -0
- package/dist/cli/service.js.map +1 -0
- package/dist/cli/symphony.d.ts +5 -0
- package/dist/cli/symphony.d.ts.map +1 -0
- package/dist/cli/symphony.js +114 -0
- package/dist/cli/symphony.js.map +1 -0
- package/dist/cli/update.d.ts +5 -0
- package/dist/cli/update.d.ts.map +1 -0
- package/dist/cli/update.js +48 -0
- package/dist/cli/update.js.map +1 -0
- package/dist/commands/channel-setup.d.ts +31 -0
- package/dist/commands/channel-setup.d.ts.map +1 -0
- package/dist/commands/channel-setup.js +138 -0
- package/dist/commands/channel-setup.js.map +1 -0
- package/dist/commands/dispatch.d.ts +48 -0
- package/dist/commands/dispatch.d.ts.map +1 -0
- package/dist/commands/dispatch.js +68 -0
- package/dist/commands/dispatch.js.map +1 -0
- package/dist/commands/model-picker.d.ts +16 -0
- package/dist/commands/model-picker.d.ts.map +1 -0
- package/dist/commands/model-picker.js +120 -0
- package/dist/commands/model-picker.js.map +1 -0
- package/dist/commands/parser.d.ts +32 -0
- package/dist/commands/parser.d.ts.map +1 -0
- package/dist/commands/parser.js +39 -0
- package/dist/commands/parser.js.map +1 -0
- package/dist/commands/registry.d.ts +76 -0
- package/dist/commands/registry.d.ts.map +1 -0
- package/dist/commands/registry.js +351 -0
- package/dist/commands/registry.js.map +1 -0
- package/dist/commands/skill-commands.d.ts +35 -0
- package/dist/commands/skill-commands.d.ts.map +1 -0
- package/dist/commands/skill-commands.js +61 -0
- package/dist/commands/skill-commands.js.map +1 -0
- package/dist/config/resolve.d.ts +25 -0
- package/dist/config/resolve.d.ts.map +1 -0
- package/dist/config/resolve.js +289 -0
- package/dist/config/resolve.js.map +1 -0
- package/dist/config/schema.d.ts +520 -0
- package/dist/config/schema.d.ts.map +1 -0
- package/dist/config/schema.js +123 -0
- package/dist/config/schema.js.map +1 -0
- package/dist/core/agent-loop.d.ts +137 -0
- package/dist/core/agent-loop.d.ts.map +1 -0
- package/dist/core/agent-loop.js +700 -0
- package/dist/core/agent-loop.js.map +1 -0
- package/dist/core/audit.d.ts +87 -0
- package/dist/core/audit.d.ts.map +1 -0
- package/dist/core/audit.js +224 -0
- package/dist/core/audit.js.map +1 -0
- package/dist/core/bootstrap.d.ts +23 -0
- package/dist/core/bootstrap.d.ts.map +1 -0
- package/dist/core/bootstrap.js +162 -0
- package/dist/core/bootstrap.js.map +1 -0
- package/dist/core/context.d.ts +44 -0
- package/dist/core/context.d.ts.map +1 -0
- package/dist/core/context.js +65 -0
- package/dist/core/context.js.map +1 -0
- package/dist/core/cron.d.ts +111 -0
- package/dist/core/cron.d.ts.map +1 -0
- package/dist/core/cron.js +284 -0
- package/dist/core/cron.js.map +1 -0
- package/dist/core/exec-approvals.d.ts +50 -0
- package/dist/core/exec-approvals.d.ts.map +1 -0
- package/dist/core/exec-approvals.js +187 -0
- package/dist/core/exec-approvals.js.map +1 -0
- package/dist/core/heartbeat.d.ts +71 -0
- package/dist/core/heartbeat.d.ts.map +1 -0
- package/dist/core/heartbeat.js +214 -0
- package/dist/core/heartbeat.js.map +1 -0
- package/dist/core/message-queue.d.ts +60 -0
- package/dist/core/message-queue.d.ts.map +1 -0
- package/dist/core/message-queue.js +182 -0
- package/dist/core/message-queue.js.map +1 -0
- package/dist/core/network-policy.d.ts +39 -0
- package/dist/core/network-policy.d.ts.map +1 -0
- package/dist/core/network-policy.js +121 -0
- package/dist/core/network-policy.js.map +1 -0
- package/dist/core/progress.d.ts +48 -0
- package/dist/core/progress.d.ts.map +1 -0
- package/dist/core/progress.js +81 -0
- package/dist/core/progress.js.map +1 -0
- package/dist/core/prompt.d.ts +105 -0
- package/dist/core/prompt.d.ts.map +1 -0
- package/dist/core/prompt.js +411 -0
- package/dist/core/prompt.js.map +1 -0
- package/dist/core/pruning.d.ts +40 -0
- package/dist/core/pruning.d.ts.map +1 -0
- package/dist/core/pruning.js +165 -0
- package/dist/core/pruning.js.map +1 -0
- package/dist/core/rate-limiter.d.ts +64 -0
- package/dist/core/rate-limiter.d.ts.map +1 -0
- package/dist/core/rate-limiter.js +142 -0
- package/dist/core/rate-limiter.js.map +1 -0
- package/dist/core/reactions.d.ts +31 -0
- package/dist/core/reactions.d.ts.map +1 -0
- package/dist/core/reactions.js +67 -0
- package/dist/core/reactions.js.map +1 -0
- package/dist/core/retry-queue.d.ts +56 -0
- package/dist/core/retry-queue.d.ts.map +1 -0
- package/dist/core/retry-queue.js +106 -0
- package/dist/core/retry-queue.js.map +1 -0
- package/dist/core/sanitizer.d.ts +38 -0
- package/dist/core/sanitizer.d.ts.map +1 -0
- package/dist/core/sanitizer.js +181 -0
- package/dist/core/sanitizer.js.map +1 -0
- package/dist/core/secret-scanner.d.ts +39 -0
- package/dist/core/secret-scanner.d.ts.map +1 -0
- package/dist/core/secret-scanner.js +96 -0
- package/dist/core/secret-scanner.js.map +1 -0
- package/dist/core/secrets.d.ts +38 -0
- package/dist/core/secrets.d.ts.map +1 -0
- package/dist/core/secrets.js +137 -0
- package/dist/core/secrets.js.map +1 -0
- package/dist/core/security.d.ts +58 -0
- package/dist/core/security.d.ts.map +1 -0
- package/dist/core/security.js +120 -0
- package/dist/core/security.js.map +1 -0
- package/dist/core/self-awareness.d.ts +19 -0
- package/dist/core/self-awareness.d.ts.map +1 -0
- package/dist/core/self-awareness.js +124 -0
- package/dist/core/self-awareness.js.map +1 -0
- package/dist/core/session-init.d.ts +34 -0
- package/dist/core/session-init.d.ts.map +1 -0
- package/dist/core/session-init.js +68 -0
- package/dist/core/session-init.js.map +1 -0
- package/dist/core/streaming.d.ts +82 -0
- package/dist/core/streaming.d.ts.map +1 -0
- package/dist/core/streaming.js +264 -0
- package/dist/core/streaming.js.map +1 -0
- package/dist/core/symphony/orchestrator.d.ts +61 -0
- package/dist/core/symphony/orchestrator.d.ts.map +1 -0
- package/dist/core/symphony/orchestrator.js +476 -0
- package/dist/core/symphony/orchestrator.js.map +1 -0
- package/dist/core/symphony/status.d.ts +11 -0
- package/dist/core/symphony/status.d.ts.map +1 -0
- package/dist/core/symphony/status.js +133 -0
- package/dist/core/symphony/status.js.map +1 -0
- package/dist/core/symphony/types.d.ts +84 -0
- package/dist/core/symphony/types.d.ts.map +1 -0
- package/dist/core/symphony/types.js +5 -0
- package/dist/core/symphony/types.js.map +1 -0
- package/dist/core/symphony/workflow.d.ts +18 -0
- package/dist/core/symphony/workflow.d.ts.map +1 -0
- package/dist/core/symphony/workflow.js +149 -0
- package/dist/core/symphony/workflow.js.map +1 -0
- package/dist/core/symphony/workspace.d.ts +24 -0
- package/dist/core/symphony/workspace.d.ts.map +1 -0
- package/dist/core/symphony/workspace.js +94 -0
- package/dist/core/symphony/workspace.js.map +1 -0
- package/dist/core/thinking.d.ts +27 -0
- package/dist/core/thinking.d.ts.map +1 -0
- package/dist/core/thinking.js +83 -0
- package/dist/core/thinking.js.map +1 -0
- package/dist/core/thread-bindings.d.ts +47 -0
- package/dist/core/thread-bindings.d.ts.map +1 -0
- package/dist/core/thread-bindings.js +94 -0
- package/dist/core/thread-bindings.js.map +1 -0
- package/dist/core/timezone.d.ts +28 -0
- package/dist/core/timezone.d.ts.map +1 -0
- package/dist/core/timezone.js +72 -0
- package/dist/core/timezone.js.map +1 -0
- package/dist/core/tool-loop-detector.d.ts +41 -0
- package/dist/core/tool-loop-detector.d.ts.map +1 -0
- package/dist/core/tool-loop-detector.js +83 -0
- package/dist/core/tool-loop-detector.js.map +1 -0
- package/dist/core/tool-validator.d.ts +44 -0
- package/dist/core/tool-validator.d.ts.map +1 -0
- package/dist/core/tool-validator.js +175 -0
- package/dist/core/tool-validator.js.map +1 -0
- package/dist/core/typing.d.ts +25 -0
- package/dist/core/typing.d.ts.map +1 -0
- package/dist/core/typing.js +48 -0
- package/dist/core/typing.js.map +1 -0
- package/dist/core/usage-tracker.d.ts +66 -0
- package/dist/core/usage-tracker.d.ts.map +1 -0
- package/dist/core/usage-tracker.js +163 -0
- package/dist/core/usage-tracker.js.map +1 -0
- package/dist/daemon/commands.d.ts +16 -0
- package/dist/daemon/commands.d.ts.map +1 -0
- package/dist/daemon/commands.js +445 -0
- package/dist/daemon/commands.js.map +1 -0
- package/dist/daemon/pid.d.ts +30 -0
- package/dist/daemon/pid.d.ts.map +1 -0
- package/dist/daemon/pid.js +62 -0
- package/dist/daemon/pid.js.map +1 -0
- package/dist/doctor/checks/browser.d.ts +9 -0
- package/dist/doctor/checks/browser.d.ts.map +1 -0
- package/dist/doctor/checks/browser.js +54 -0
- package/dist/doctor/checks/browser.js.map +1 -0
- package/dist/doctor/checks/channels.d.ts +9 -0
- package/dist/doctor/checks/channels.d.ts.map +1 -0
- package/dist/doctor/checks/channels.js +90 -0
- package/dist/doctor/checks/channels.js.map +1 -0
- package/dist/doctor/checks/config.d.ts +10 -0
- package/dist/doctor/checks/config.d.ts.map +1 -0
- package/dist/doctor/checks/config.js +89 -0
- package/dist/doctor/checks/config.js.map +1 -0
- package/dist/doctor/checks/memory.d.ts +10 -0
- package/dist/doctor/checks/memory.d.ts.map +1 -0
- package/dist/doctor/checks/memory.js +82 -0
- package/dist/doctor/checks/memory.js.map +1 -0
- package/dist/doctor/checks/permissions.d.ts +9 -0
- package/dist/doctor/checks/permissions.d.ts.map +1 -0
- package/dist/doctor/checks/permissions.js +53 -0
- package/dist/doctor/checks/permissions.js.map +1 -0
- package/dist/doctor/checks/providers.d.ts +10 -0
- package/dist/doctor/checks/providers.d.ts.map +1 -0
- package/dist/doctor/checks/providers.js +93 -0
- package/dist/doctor/checks/providers.js.map +1 -0
- package/dist/doctor/checks/sessions.d.ts +10 -0
- package/dist/doctor/checks/sessions.d.ts.map +1 -0
- package/dist/doctor/checks/sessions.js +86 -0
- package/dist/doctor/checks/sessions.js.map +1 -0
- package/dist/doctor/doctor.d.ts +35 -0
- package/dist/doctor/doctor.d.ts.map +1 -0
- package/dist/doctor/doctor.js +51 -0
- package/dist/doctor/doctor.js.map +1 -0
- package/dist/doctor/repairs.d.ts +14 -0
- package/dist/doctor/repairs.d.ts.map +1 -0
- package/dist/doctor/repairs.js +34 -0
- package/dist/doctor/repairs.js.map +1 -0
- package/dist/gateway/compaction.d.ts +63 -0
- package/dist/gateway/compaction.d.ts.map +1 -0
- package/dist/gateway/compaction.js +235 -0
- package/dist/gateway/compaction.js.map +1 -0
- package/dist/gateway/gateway.d.ts +94 -0
- package/dist/gateway/gateway.d.ts.map +1 -0
- package/dist/gateway/gateway.js +466 -0
- package/dist/gateway/gateway.js.map +1 -0
- package/dist/gateway/lock.d.ts +24 -0
- package/dist/gateway/lock.d.ts.map +1 -0
- package/dist/gateway/lock.js +88 -0
- package/dist/gateway/lock.js.map +1 -0
- package/dist/gateway/protocol.d.ts +117 -0
- package/dist/gateway/protocol.d.ts.map +1 -0
- package/dist/gateway/protocol.js +5 -0
- package/dist/gateway/protocol.js.map +1 -0
- package/dist/gateway/session.d.ts +123 -0
- package/dist/gateway/session.d.ts.map +1 -0
- package/dist/gateway/session.js +573 -0
- package/dist/gateway/session.js.map +1 -0
- package/dist/hooks/hooks.d.ts +18 -0
- package/dist/hooks/hooks.d.ts.map +1 -0
- package/dist/hooks/hooks.js +45 -0
- package/dist/hooks/hooks.js.map +1 -0
- package/dist/hooks/types.d.ts +112 -0
- package/dist/hooks/types.d.ts.map +1 -0
- package/dist/hooks/types.js +23 -0
- package/dist/hooks/types.js.map +1 -0
- package/dist/index.d.ts +27 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2900 -0
- package/dist/index.js.map +1 -0
- package/dist/media/storage.d.ts +25 -0
- package/dist/media/storage.d.ts.map +1 -0
- package/dist/media/storage.js +97 -0
- package/dist/media/storage.js.map +1 -0
- package/dist/memory/embeddings.d.ts +46 -0
- package/dist/memory/embeddings.d.ts.map +1 -0
- package/dist/memory/embeddings.js +118 -0
- package/dist/memory/embeddings.js.map +1 -0
- package/dist/memory/hybrid.d.ts +35 -0
- package/dist/memory/hybrid.d.ts.map +1 -0
- package/dist/memory/hybrid.js +156 -0
- package/dist/memory/hybrid.js.map +1 -0
- package/dist/memory/markdown.d.ts +48 -0
- package/dist/memory/markdown.d.ts.map +1 -0
- package/dist/memory/markdown.js +228 -0
- package/dist/memory/markdown.js.map +1 -0
- package/dist/memory/store.d.ts +88 -0
- package/dist/memory/store.d.ts.map +1 -0
- package/dist/memory/store.js +21 -0
- package/dist/memory/store.js.map +1 -0
- package/dist/memory/vector.d.ts +24 -0
- package/dist/memory/vector.d.ts.map +1 -0
- package/dist/memory/vector.js +63 -0
- package/dist/memory/vector.js.map +1 -0
- package/dist/mods/mod.d.ts +100 -0
- package/dist/mods/mod.d.ts.map +1 -0
- package/dist/mods/mod.js +242 -0
- package/dist/mods/mod.js.map +1 -0
- package/dist/onboard/channels.d.ts +12 -0
- package/dist/onboard/channels.d.ts.map +1 -0
- package/dist/onboard/channels.js +283 -0
- package/dist/onboard/channels.js.map +1 -0
- package/dist/onboard/models.d.ts +13 -0
- package/dist/onboard/models.d.ts.map +1 -0
- package/dist/onboard/models.js +491 -0
- package/dist/onboard/models.js.map +1 -0
- package/dist/onboard/onboard.d.ts +12 -0
- package/dist/onboard/onboard.d.ts.map +1 -0
- package/dist/onboard/onboard.js +1137 -0
- package/dist/onboard/onboard.js.map +1 -0
- package/dist/providers/anthropic.d.ts +83 -0
- package/dist/providers/anthropic.d.ts.map +1 -0
- package/dist/providers/anthropic.js +583 -0
- package/dist/providers/anthropic.js.map +1 -0
- package/dist/providers/failover.d.ts +46 -0
- package/dist/providers/failover.d.ts.map +1 -0
- package/dist/providers/failover.js +149 -0
- package/dist/providers/failover.js.map +1 -0
- package/dist/providers/litellm.d.ts +38 -0
- package/dist/providers/litellm.d.ts.map +1 -0
- package/dist/providers/litellm.js +349 -0
- package/dist/providers/litellm.js.map +1 -0
- package/dist/providers/openai.d.ts +28 -0
- package/dist/providers/openai.d.ts.map +1 -0
- package/dist/providers/openai.js +321 -0
- package/dist/providers/openai.js.map +1 -0
- package/dist/providers/prompt-cache.d.ts +50 -0
- package/dist/providers/prompt-cache.d.ts.map +1 -0
- package/dist/providers/prompt-cache.js +96 -0
- package/dist/providers/prompt-cache.js.map +1 -0
- package/dist/providers/provider.d.ts +173 -0
- package/dist/providers/provider.d.ts.map +1 -0
- package/dist/providers/provider.js +22 -0
- package/dist/providers/provider.js.map +1 -0
- package/dist/sandbox/config.d.ts +42 -0
- package/dist/sandbox/config.d.ts.map +1 -0
- package/dist/sandbox/config.js +20 -0
- package/dist/sandbox/config.js.map +1 -0
- package/dist/sandbox/container.d.ts +71 -0
- package/dist/sandbox/container.d.ts.map +1 -0
- package/dist/sandbox/container.js +193 -0
- package/dist/sandbox/container.js.map +1 -0
- package/dist/sandbox/sandbox.d.ts +82 -0
- package/dist/sandbox/sandbox.d.ts.map +1 -0
- package/dist/sandbox/sandbox.js +176 -0
- package/dist/sandbox/sandbox.js.map +1 -0
- package/dist/skills/channel-loader.d.ts +18 -0
- package/dist/skills/channel-loader.d.ts.map +1 -0
- package/dist/skills/channel-loader.js +35 -0
- package/dist/skills/channel-loader.js.map +1 -0
- package/dist/skills/extension-loader.d.ts +15 -0
- package/dist/skills/extension-loader.d.ts.map +1 -0
- package/dist/skills/extension-loader.js +63 -0
- package/dist/skills/extension-loader.js.map +1 -0
- package/dist/skills/extension-registry.d.ts +32 -0
- package/dist/skills/extension-registry.d.ts.map +1 -0
- package/dist/skills/extension-registry.js +57 -0
- package/dist/skills/extension-registry.js.map +1 -0
- package/dist/skills/extensions.d.ts +91 -0
- package/dist/skills/extensions.d.ts.map +1 -0
- package/dist/skills/extensions.js +14 -0
- package/dist/skills/extensions.js.map +1 -0
- package/dist/skills/loader.d.ts +64 -0
- package/dist/skills/loader.d.ts.map +1 -0
- package/dist/skills/loader.js +382 -0
- package/dist/skills/loader.js.map +1 -0
- package/dist/skills/marketplace.d.ts +56 -0
- package/dist/skills/marketplace.d.ts.map +1 -0
- package/dist/skills/marketplace.js +183 -0
- package/dist/skills/marketplace.js.map +1 -0
- package/dist/skills/types.d.ts +94 -0
- package/dist/skills/types.d.ts.map +1 -0
- package/dist/skills/types.js +9 -0
- package/dist/skills/types.js.map +1 -0
- package/dist/tools/acp-sessions.d.ts +89 -0
- package/dist/tools/acp-sessions.d.ts.map +1 -0
- package/dist/tools/acp-sessions.js +391 -0
- package/dist/tools/acp-sessions.js.map +1 -0
- package/dist/tools/acp.d.ts +18 -0
- package/dist/tools/acp.d.ts.map +1 -0
- package/dist/tools/acp.js +102 -0
- package/dist/tools/acp.js.map +1 -0
- package/dist/tools/agent-tools.d.ts +24 -0
- package/dist/tools/agent-tools.d.ts.map +1 -0
- package/dist/tools/agent-tools.js +611 -0
- package/dist/tools/agent-tools.js.map +1 -0
- package/dist/tools/browser.d.ts +26 -0
- package/dist/tools/browser.d.ts.map +1 -0
- package/dist/tools/browser.js +242 -0
- package/dist/tools/browser.js.map +1 -0
- package/dist/tools/comms.d.ts +8 -0
- package/dist/tools/comms.d.ts.map +1 -0
- package/dist/tools/comms.js +39 -0
- package/dist/tools/comms.js.map +1 -0
- package/dist/tools/cron-tools.d.ts +9 -0
- package/dist/tools/cron-tools.d.ts.map +1 -0
- package/dist/tools/cron-tools.js +117 -0
- package/dist/tools/cron-tools.js.map +1 -0
- package/dist/tools/exec-safety.d.ts +71 -0
- package/dist/tools/exec-safety.d.ts.map +1 -0
- package/dist/tools/exec-safety.js +141 -0
- package/dist/tools/exec-safety.js.map +1 -0
- package/dist/tools/exec.d.ts +24 -0
- package/dist/tools/exec.d.ts.map +1 -0
- package/dist/tools/exec.js +191 -0
- package/dist/tools/exec.js.map +1 -0
- package/dist/tools/fs.d.ts +15 -0
- package/dist/tools/fs.d.ts.map +1 -0
- package/dist/tools/fs.js +249 -0
- package/dist/tools/fs.js.map +1 -0
- package/dist/tools/git.d.ts +9 -0
- package/dist/tools/git.d.ts.map +1 -0
- package/dist/tools/git.js +56 -0
- package/dist/tools/git.js.map +1 -0
- package/dist/tools/image.d.ts +15 -0
- package/dist/tools/image.d.ts.map +1 -0
- package/dist/tools/image.js +106 -0
- package/dist/tools/image.js.map +1 -0
- package/dist/tools/introspect.d.ts +22 -0
- package/dist/tools/introspect.d.ts.map +1 -0
- package/dist/tools/introspect.js +223 -0
- package/dist/tools/introspect.js.map +1 -0
- package/dist/tools/memory.d.ts +11 -0
- package/dist/tools/memory.d.ts.map +1 -0
- package/dist/tools/memory.js +101 -0
- package/dist/tools/memory.js.map +1 -0
- package/dist/tools/message.d.ts +24 -0
- package/dist/tools/message.d.ts.map +1 -0
- package/dist/tools/message.js +205 -0
- package/dist/tools/message.js.map +1 -0
- package/dist/tools/model.d.ts +14 -0
- package/dist/tools/model.d.ts.map +1 -0
- package/dist/tools/model.js +62 -0
- package/dist/tools/model.js.map +1 -0
- package/dist/tools/policy.d.ts +101 -0
- package/dist/tools/policy.d.ts.map +1 -0
- package/dist/tools/policy.js +168 -0
- package/dist/tools/policy.js.map +1 -0
- package/dist/tools/registry.d.ts +52 -0
- package/dist/tools/registry.d.ts.map +1 -0
- package/dist/tools/registry.js +154 -0
- package/dist/tools/registry.js.map +1 -0
- package/dist/tools/search.d.ts +10 -0
- package/dist/tools/search.d.ts.map +1 -0
- package/dist/tools/search.js +78 -0
- package/dist/tools/search.js.map +1 -0
- package/dist/tools/session.d.ts +13 -0
- package/dist/tools/session.d.ts.map +1 -0
- package/dist/tools/session.js +142 -0
- package/dist/tools/session.js.map +1 -0
- package/dist/tools/spawn.d.ts +10 -0
- package/dist/tools/spawn.d.ts.map +1 -0
- package/dist/tools/spawn.js +72 -0
- package/dist/tools/spawn.js.map +1 -0
- package/dist/tools/symphony.d.ts +12 -0
- package/dist/tools/symphony.d.ts.map +1 -0
- package/dist/tools/symphony.js +142 -0
- package/dist/tools/symphony.js.map +1 -0
- package/dist/tools/system-tools.d.ts +11 -0
- package/dist/tools/system-tools.d.ts.map +1 -0
- package/dist/tools/system-tools.js +39 -0
- package/dist/tools/system-tools.js.map +1 -0
- package/dist/tools/tool.d.ts +119 -0
- package/dist/tools/tool.d.ts.map +1 -0
- package/dist/tools/tool.js +29 -0
- package/dist/tools/tool.js.map +1 -0
- package/dist/tools/web.d.ts +10 -0
- package/dist/tools/web.d.ts.map +1 -0
- package/dist/tools/web.js +105 -0
- package/dist/tools/web.js.map +1 -0
- package/dist/tui/App.d.ts +43 -0
- package/dist/tui/App.d.ts.map +1 -0
- package/dist/tui/App.js +265 -0
- package/dist/tui/App.js.map +1 -0
- package/dist/tui/bridge.d.ts +40 -0
- package/dist/tui/bridge.d.ts.map +1 -0
- package/dist/tui/bridge.js +29 -0
- package/dist/tui/bridge.js.map +1 -0
- package/dist/tui/components/Header.d.ts +14 -0
- package/dist/tui/components/Header.d.ts.map +1 -0
- package/dist/tui/components/Header.js +7 -0
- package/dist/tui/components/Header.js.map +1 -0
- package/dist/tui/components/InputBar.d.ts +10 -0
- package/dist/tui/components/InputBar.d.ts.map +1 -0
- package/dist/tui/components/InputBar.js +121 -0
- package/dist/tui/components/InputBar.js.map +1 -0
- package/dist/tui/components/MessageList.d.ts +18 -0
- package/dist/tui/components/MessageList.d.ts.map +1 -0
- package/dist/tui/components/MessageList.js +34 -0
- package/dist/tui/components/MessageList.js.map +1 -0
- package/dist/tui/components/Spinner.d.ts +9 -0
- package/dist/tui/components/Spinner.d.ts.map +1 -0
- package/dist/tui/components/Spinner.js +18 -0
- package/dist/tui/components/Spinner.js.map +1 -0
- package/dist/tui/components/StatusBar.d.ts +16 -0
- package/dist/tui/components/StatusBar.d.ts.map +1 -0
- package/dist/tui/components/StatusBar.js +15 -0
- package/dist/tui/components/StatusBar.js.map +1 -0
- package/dist/tui/components/ToolCallBox.d.ts +12 -0
- package/dist/tui/components/ToolCallBox.d.ts.map +1 -0
- package/dist/tui/components/ToolCallBox.js +12 -0
- package/dist/tui/components/ToolCallBox.js.map +1 -0
- package/dist/tui/theme.d.ts +58 -0
- package/dist/tui/theme.d.ts.map +1 -0
- package/dist/tui/theme.js +80 -0
- package/dist/tui/theme.js.map +1 -0
- package/dist/utils/logger.d.ts +16 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +70 -0
- package/dist/utils/logger.js.map +1 -0
- package/docs/DEVELOPMENT.md +74 -0
- package/docs/INSTALL.md +161 -0
- package/docs/USAGE.md +94 -0
- package/docs/architecture.md +128 -0
- package/docs/channels.md +140 -0
- package/docs/configuration.md +209 -0
- package/docs/io-system.md +430 -0
- package/docs/providers.md +99 -0
- package/docs/skill-channels.md +113 -0
- package/docs/skills.md +246 -0
- package/package.json +89 -0
- package/skills/acp-router/SKILL.md +41 -0
- package/skills/acp-router/tools/acp-router.mjs +239 -0
- package/skills/find-skills/SKILL.md +133 -0
- package/skills/security-audit/SKILL.md +181 -0
- package/skills/security-audit/audit.sh +67 -0
- package/skills/skill-creator/SKILL.md +479 -0
- package/skills/skill-security-audit/.clawhub/origin.json +7 -0
- package/skills/skill-security-audit/SKILL.md +196 -0
- package/skills/skill-security-audit/_meta.json +6 -0
- package/skills/skill-security-audit/references/prompt-injection-patterns.md +276 -0
- package/skills/skill-security-audit/references/vulnerability-patterns.md +348 -0
- package/skills/symphony/README.md +53 -0
- package/skills/symphony/SKILL.md +75 -0
- package/skills/symphony/tools/symphony-orchestrator.ts +8 -0
- package/tako.example.json +33 -0
|
@@ -0,0 +1,321 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenAI provider — native OpenAI API adapter with streaming support.
|
|
3
|
+
*
|
|
4
|
+
* Supports authentication via:
|
|
5
|
+
* - OPENAI_API_KEY env var (API key)
|
|
6
|
+
* - ~/.tako/auth/openai.json (API key or OAuth token)
|
|
7
|
+
* - ~/.tako/auth/openai-codex.json (OAuth token for Codex)
|
|
8
|
+
*/
|
|
9
|
+
import { resolveAuthToken } from '../auth/storage.js';
|
|
10
|
+
import { getValidOAuthToken } from '../auth/oauth.js';
|
|
11
|
+
export class OpenAIProvider {
|
|
12
|
+
id = 'openai';
|
|
13
|
+
apiKey;
|
|
14
|
+
authResolved = false;
|
|
15
|
+
baseUrl;
|
|
16
|
+
constructor(opts) {
|
|
17
|
+
this.apiKey = opts?.apiKey ?? process.env.OPENAI_API_KEY ?? '';
|
|
18
|
+
this.baseUrl = opts?.baseUrl ?? 'https://api.openai.com';
|
|
19
|
+
}
|
|
20
|
+
async ensureAuth() {
|
|
21
|
+
if (this.authResolved)
|
|
22
|
+
return;
|
|
23
|
+
this.authResolved = true;
|
|
24
|
+
if (!this.apiKey) {
|
|
25
|
+
// Try OAuth token (openai-codex)
|
|
26
|
+
const oauthToken = await getValidOAuthToken('openai-codex');
|
|
27
|
+
if (oauthToken) {
|
|
28
|
+
this.apiKey = oauthToken;
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
// Try auth file (api_key)
|
|
32
|
+
const token = await resolveAuthToken('openai');
|
|
33
|
+
if (token) {
|
|
34
|
+
this.apiKey = token;
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
console.warn('[openai] No API key found. Set OPENAI_API_KEY or run `tako models auth login --provider openai`.');
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
extractModelId(model) {
|
|
42
|
+
const slash = model.indexOf('/');
|
|
43
|
+
return slash >= 0 ? model.slice(slash + 1) : model;
|
|
44
|
+
}
|
|
45
|
+
async *chat(req) {
|
|
46
|
+
await this.ensureAuth();
|
|
47
|
+
const model = this.extractModelId(req.model);
|
|
48
|
+
const messages = this.convertMessages(req.messages);
|
|
49
|
+
const tools = req.tools?.map((t) => this.convertTool(t));
|
|
50
|
+
const shouldStream = req.stream !== false;
|
|
51
|
+
const body = {
|
|
52
|
+
model,
|
|
53
|
+
messages,
|
|
54
|
+
stream: shouldStream,
|
|
55
|
+
...(req.temperature !== undefined ? { temperature: req.temperature } : {}),
|
|
56
|
+
...(req.max_tokens !== undefined ? { max_tokens: req.max_tokens } : {}),
|
|
57
|
+
...(req.stop ? { stop: req.stop } : {}),
|
|
58
|
+
...(tools && tools.length > 0 ? { tools, tool_choice: 'auto' } : {}),
|
|
59
|
+
};
|
|
60
|
+
if (shouldStream) {
|
|
61
|
+
body.stream_options = { include_usage: true };
|
|
62
|
+
}
|
|
63
|
+
const res = await fetch(`${this.baseUrl}/v1/chat/completions`, {
|
|
64
|
+
method: 'POST',
|
|
65
|
+
headers: {
|
|
66
|
+
'Content-Type': 'application/json',
|
|
67
|
+
'Authorization': `Bearer ${this.apiKey}`,
|
|
68
|
+
},
|
|
69
|
+
body: JSON.stringify(body),
|
|
70
|
+
});
|
|
71
|
+
if (!res.ok) {
|
|
72
|
+
const errBody = await res.text();
|
|
73
|
+
if (res.status === 401 || res.status === 403) {
|
|
74
|
+
throw new Error(`[openai] Authentication failed (HTTP ${res.status}). Check your API key.`);
|
|
75
|
+
}
|
|
76
|
+
throw new Error(`[openai] API error (${res.status}): ${errBody}`);
|
|
77
|
+
}
|
|
78
|
+
if (shouldStream) {
|
|
79
|
+
yield* this.parseSSEStream(res);
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
const data = await res.json();
|
|
83
|
+
const choice = data.choices?.[0];
|
|
84
|
+
const msg = choice?.message;
|
|
85
|
+
const toolCalls = (msg?.tool_calls ?? []).map((tc) => ({
|
|
86
|
+
id: tc.id,
|
|
87
|
+
name: tc.function.name,
|
|
88
|
+
input: JSON.parse(tc.function.arguments || '{}'),
|
|
89
|
+
}));
|
|
90
|
+
yield {
|
|
91
|
+
text: msg?.content ?? undefined,
|
|
92
|
+
tool_calls: toolCalls.length > 0 ? toolCalls : undefined,
|
|
93
|
+
done: true,
|
|
94
|
+
usage: data.usage ? {
|
|
95
|
+
prompt_tokens: data.usage.prompt_tokens,
|
|
96
|
+
completion_tokens: data.usage.completion_tokens,
|
|
97
|
+
total_tokens: data.usage.total_tokens,
|
|
98
|
+
} : undefined,
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
async *parseSSEStream(res) {
|
|
103
|
+
const reader = res.body.getReader();
|
|
104
|
+
const decoder = new TextDecoder();
|
|
105
|
+
let buffer = '';
|
|
106
|
+
const toolCallAccum = new Map();
|
|
107
|
+
let usage;
|
|
108
|
+
try {
|
|
109
|
+
while (true) {
|
|
110
|
+
const { done, value } = await reader.read();
|
|
111
|
+
if (done)
|
|
112
|
+
break;
|
|
113
|
+
buffer += decoder.decode(value, { stream: true });
|
|
114
|
+
const lines = buffer.split('\n');
|
|
115
|
+
buffer = lines.pop();
|
|
116
|
+
for (const line of lines) {
|
|
117
|
+
const trimmed = line.trim();
|
|
118
|
+
if (!trimmed || trimmed === 'data: [DONE]') {
|
|
119
|
+
if (trimmed === 'data: [DONE]') {
|
|
120
|
+
// Emit final chunk
|
|
121
|
+
const parsedToolCalls = [];
|
|
122
|
+
for (const [, tc] of toolCallAccum) {
|
|
123
|
+
parsedToolCalls.push({
|
|
124
|
+
id: tc.id,
|
|
125
|
+
name: tc.name,
|
|
126
|
+
input: tc.args ? JSON.parse(tc.args) : {},
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
yield {
|
|
130
|
+
tool_calls: parsedToolCalls.length > 0 ? parsedToolCalls : undefined,
|
|
131
|
+
done: true,
|
|
132
|
+
usage,
|
|
133
|
+
};
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
continue;
|
|
137
|
+
}
|
|
138
|
+
if (!trimmed.startsWith('data: '))
|
|
139
|
+
continue;
|
|
140
|
+
const jsonStr = trimmed.slice(6);
|
|
141
|
+
let chunk;
|
|
142
|
+
try {
|
|
143
|
+
chunk = JSON.parse(jsonStr);
|
|
144
|
+
}
|
|
145
|
+
catch {
|
|
146
|
+
continue;
|
|
147
|
+
}
|
|
148
|
+
// Capture usage from the final chunk
|
|
149
|
+
if (chunk.usage) {
|
|
150
|
+
usage = {
|
|
151
|
+
prompt_tokens: chunk.usage.prompt_tokens,
|
|
152
|
+
completion_tokens: chunk.usage.completion_tokens,
|
|
153
|
+
total_tokens: chunk.usage.total_tokens,
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
const delta = chunk.choices?.[0]?.delta;
|
|
157
|
+
if (!delta)
|
|
158
|
+
continue;
|
|
159
|
+
// Text content
|
|
160
|
+
if (delta.content) {
|
|
161
|
+
yield { text: delta.content, done: false };
|
|
162
|
+
}
|
|
163
|
+
// Tool call deltas
|
|
164
|
+
if (delta.tool_calls) {
|
|
165
|
+
for (const tc of delta.tool_calls) {
|
|
166
|
+
const existing = toolCallAccum.get(tc.index);
|
|
167
|
+
if (!existing) {
|
|
168
|
+
toolCallAccum.set(tc.index, {
|
|
169
|
+
id: tc.id ?? '',
|
|
170
|
+
name: tc.function?.name ?? '',
|
|
171
|
+
args: tc.function?.arguments ?? '',
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
else {
|
|
175
|
+
if (tc.id)
|
|
176
|
+
existing.id = tc.id;
|
|
177
|
+
if (tc.function?.name)
|
|
178
|
+
existing.name = tc.function.name;
|
|
179
|
+
if (tc.function?.arguments)
|
|
180
|
+
existing.args += tc.function.arguments;
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
finally {
|
|
188
|
+
reader.releaseLock();
|
|
189
|
+
}
|
|
190
|
+
// If we exit the loop without [DONE], emit a final chunk
|
|
191
|
+
const parsedToolCalls = [];
|
|
192
|
+
for (const [, tc] of toolCallAccum) {
|
|
193
|
+
parsedToolCalls.push({
|
|
194
|
+
id: tc.id,
|
|
195
|
+
name: tc.name,
|
|
196
|
+
input: tc.args ? JSON.parse(tc.args) : {},
|
|
197
|
+
});
|
|
198
|
+
}
|
|
199
|
+
yield {
|
|
200
|
+
tool_calls: parsedToolCalls.length > 0 ? parsedToolCalls : undefined,
|
|
201
|
+
done: true,
|
|
202
|
+
usage,
|
|
203
|
+
};
|
|
204
|
+
}
|
|
205
|
+
models() {
|
|
206
|
+
return [
|
|
207
|
+
{
|
|
208
|
+
id: 'gpt-5.2',
|
|
209
|
+
name: 'GPT-5.2',
|
|
210
|
+
provider: 'openai',
|
|
211
|
+
context_window: 200_000,
|
|
212
|
+
max_output_tokens: 32_000,
|
|
213
|
+
capabilities: ['text', 'vision', 'tools', 'streaming'],
|
|
214
|
+
},
|
|
215
|
+
{
|
|
216
|
+
id: 'gpt-5-mini',
|
|
217
|
+
name: 'GPT-5 Mini',
|
|
218
|
+
provider: 'openai',
|
|
219
|
+
context_window: 200_000,
|
|
220
|
+
max_output_tokens: 16_384,
|
|
221
|
+
capabilities: ['text', 'vision', 'tools', 'streaming'],
|
|
222
|
+
},
|
|
223
|
+
{
|
|
224
|
+
id: 'gpt-oss-120b',
|
|
225
|
+
name: 'GPT-OSS 120B',
|
|
226
|
+
provider: 'openai',
|
|
227
|
+
context_window: 128_000,
|
|
228
|
+
max_output_tokens: 16_384,
|
|
229
|
+
capabilities: ['text', 'vision', 'tools', 'streaming'],
|
|
230
|
+
},
|
|
231
|
+
{
|
|
232
|
+
id: 'gpt-5.3-codex',
|
|
233
|
+
name: 'GPT-5.3 Codex',
|
|
234
|
+
provider: 'openai-codex',
|
|
235
|
+
context_window: 200_000,
|
|
236
|
+
max_output_tokens: 32_000,
|
|
237
|
+
capabilities: ['text', 'vision', 'tools', 'streaming'],
|
|
238
|
+
},
|
|
239
|
+
{
|
|
240
|
+
id: 'gpt-5.2-codex',
|
|
241
|
+
name: 'GPT-5.2 Codex',
|
|
242
|
+
provider: 'openai-codex',
|
|
243
|
+
context_window: 200_000,
|
|
244
|
+
max_output_tokens: 32_000,
|
|
245
|
+
capabilities: ['text', 'vision', 'tools', 'streaming'],
|
|
246
|
+
},
|
|
247
|
+
];
|
|
248
|
+
}
|
|
249
|
+
supports(capability) {
|
|
250
|
+
return ['text', 'vision', 'tools', 'streaming'].includes(capability);
|
|
251
|
+
}
|
|
252
|
+
convertMessages(msgs) {
|
|
253
|
+
const result = [];
|
|
254
|
+
for (const msg of msgs) {
|
|
255
|
+
if (msg.role === 'system') {
|
|
256
|
+
const text = typeof msg.content === 'string'
|
|
257
|
+
? msg.content
|
|
258
|
+
: msg.content.filter((p) => p.type === 'text').map((p) => p.text).join('\n');
|
|
259
|
+
result.push({ role: 'system', content: text });
|
|
260
|
+
continue;
|
|
261
|
+
}
|
|
262
|
+
if (msg.role === 'tool') {
|
|
263
|
+
result.push({
|
|
264
|
+
role: 'tool',
|
|
265
|
+
content: typeof msg.content === 'string' ? msg.content : JSON.stringify(msg.content),
|
|
266
|
+
tool_call_id: msg.tool_call_id ?? '',
|
|
267
|
+
});
|
|
268
|
+
continue;
|
|
269
|
+
}
|
|
270
|
+
if (msg.role === 'assistant') {
|
|
271
|
+
if (typeof msg.content === 'string') {
|
|
272
|
+
result.push({ role: 'assistant', content: msg.content });
|
|
273
|
+
}
|
|
274
|
+
else {
|
|
275
|
+
let text = '';
|
|
276
|
+
const toolCalls = [];
|
|
277
|
+
for (const part of msg.content) {
|
|
278
|
+
if (part.type === 'text') {
|
|
279
|
+
text += part.text;
|
|
280
|
+
}
|
|
281
|
+
else if (part.type === 'tool_use') {
|
|
282
|
+
toolCalls.push({
|
|
283
|
+
id: part.id,
|
|
284
|
+
type: 'function',
|
|
285
|
+
function: {
|
|
286
|
+
name: part.name,
|
|
287
|
+
arguments: JSON.stringify(part.input),
|
|
288
|
+
},
|
|
289
|
+
});
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
result.push({
|
|
293
|
+
role: 'assistant',
|
|
294
|
+
content: text || null,
|
|
295
|
+
tool_calls: toolCalls.length > 0 ? toolCalls : undefined,
|
|
296
|
+
});
|
|
297
|
+
}
|
|
298
|
+
continue;
|
|
299
|
+
}
|
|
300
|
+
if (msg.role === 'user') {
|
|
301
|
+
const text = typeof msg.content === 'string'
|
|
302
|
+
? msg.content
|
|
303
|
+
: msg.content.filter((p) => p.type === 'text').map((p) => p.text).join('\n');
|
|
304
|
+
result.push({ role: 'user', content: text });
|
|
305
|
+
continue;
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
return result;
|
|
309
|
+
}
|
|
310
|
+
convertTool(tool) {
|
|
311
|
+
return {
|
|
312
|
+
type: 'function',
|
|
313
|
+
function: {
|
|
314
|
+
name: tool.name,
|
|
315
|
+
description: tool.description,
|
|
316
|
+
parameters: tool.parameters,
|
|
317
|
+
},
|
|
318
|
+
};
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
//# sourceMappingURL=openai.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openai.js","sourceRoot":"","sources":["../../src/providers/openai.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Prompt caching — mark static content for provider-level caching.
|
|
3
|
+
*
|
|
4
|
+
* Anthropic supports cache_control breakpoints on system prompts.
|
|
5
|
+
* This module identifies cacheable content and adds cache markers.
|
|
6
|
+
*
|
|
7
|
+
* Benefits: ~90% cost reduction on cached system prompt tokens.
|
|
8
|
+
*/
|
|
9
|
+
import type { ChatMessage } from './provider.js';
|
|
10
|
+
export interface PromptCacheConfig {
|
|
11
|
+
/** Enable prompt caching (default: true) */
|
|
12
|
+
enabled: boolean;
|
|
13
|
+
/** Min tokens for content to be cache-worthy (default: 1024) */
|
|
14
|
+
minTokens: number;
|
|
15
|
+
/** Provider support map */
|
|
16
|
+
providers: {
|
|
17
|
+
anthropic: boolean;
|
|
18
|
+
openai: boolean;
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
export interface PromptCacheStats {
|
|
22
|
+
cacheHits: number;
|
|
23
|
+
cacheMisses: number;
|
|
24
|
+
cachedTokens: number;
|
|
25
|
+
savedTokens: number;
|
|
26
|
+
hitRate: number;
|
|
27
|
+
}
|
|
28
|
+
export declare class PromptCacheManager {
|
|
29
|
+
private config;
|
|
30
|
+
private stats;
|
|
31
|
+
constructor(config?: Partial<PromptCacheConfig>);
|
|
32
|
+
/**
|
|
33
|
+
* Add cache control markers to messages for Anthropic API.
|
|
34
|
+
* Only marks system messages that exceed the minTokens threshold.
|
|
35
|
+
* Non-Anthropic providers are returned unchanged.
|
|
36
|
+
*/
|
|
37
|
+
applyCacheMarkers(messages: ChatMessage[], provider: string): ChatMessage[];
|
|
38
|
+
/** Update stats from provider response usage data. */
|
|
39
|
+
updateStats(usage: {
|
|
40
|
+
cache_creation_input_tokens?: number;
|
|
41
|
+
cache_read_input_tokens?: number;
|
|
42
|
+
}): void;
|
|
43
|
+
/** Get current cache stats. */
|
|
44
|
+
getStats(): PromptCacheStats;
|
|
45
|
+
/** Reset stats. */
|
|
46
|
+
resetStats(): void;
|
|
47
|
+
/** Format stats for display. */
|
|
48
|
+
formatStats(): string;
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=prompt-cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt-cache.d.ts","sourceRoot":"","sources":["../../src/providers/prompt-cache.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjD,MAAM,WAAW,iBAAiB;IAChC,4CAA4C;IAC5C,OAAO,EAAE,OAAO,CAAC;IACjB,gEAAgE;IAChE,SAAS,EAAE,MAAM,CAAC;IAClB,2BAA2B;IAC3B,SAAS,EAAE;QACT,SAAS,EAAE,OAAO,CAAC;QACnB,MAAM,EAAE,OAAO,CAAC;KACjB,CAAC;CACH;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB;AAWD,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,KAAK,CAAmB;gBAEpB,MAAM,GAAE,OAAO,CAAC,iBAAiB,CAAM;IAQnD;;;;OAIG;IACH,iBAAiB,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,WAAW,EAAE;IA2B3E,sDAAsD;IACtD,WAAW,CAAC,KAAK,EAAE;QAAE,2BAA2B,CAAC,EAAE,MAAM,CAAC;QAAC,uBAAuB,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI;IAgBpG,+BAA+B;IAC/B,QAAQ,IAAI,gBAAgB;IAI5B,mBAAmB;IACnB,UAAU,IAAI,IAAI;IAIlB,gCAAgC;IAChC,WAAW,IAAI,MAAM;CAatB"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Prompt caching — mark static content for provider-level caching.
|
|
3
|
+
*
|
|
4
|
+
* Anthropic supports cache_control breakpoints on system prompts.
|
|
5
|
+
* This module identifies cacheable content and adds cache markers.
|
|
6
|
+
*
|
|
7
|
+
* Benefits: ~90% cost reduction on cached system prompt tokens.
|
|
8
|
+
*/
|
|
9
|
+
const DEFAULT_CACHE_CONFIG = {
|
|
10
|
+
enabled: true,
|
|
11
|
+
minTokens: 1024,
|
|
12
|
+
providers: {
|
|
13
|
+
anthropic: true,
|
|
14
|
+
openai: false,
|
|
15
|
+
},
|
|
16
|
+
};
|
|
17
|
+
export class PromptCacheManager {
|
|
18
|
+
config;
|
|
19
|
+
stats;
|
|
20
|
+
constructor(config = {}) {
|
|
21
|
+
this.config = { ...DEFAULT_CACHE_CONFIG, ...config };
|
|
22
|
+
if (config.providers) {
|
|
23
|
+
this.config.providers = { ...DEFAULT_CACHE_CONFIG.providers, ...config.providers };
|
|
24
|
+
}
|
|
25
|
+
this.stats = { cacheHits: 0, cacheMisses: 0, cachedTokens: 0, savedTokens: 0, hitRate: 0 };
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Add cache control markers to messages for Anthropic API.
|
|
29
|
+
* Only marks system messages that exceed the minTokens threshold.
|
|
30
|
+
* Non-Anthropic providers are returned unchanged.
|
|
31
|
+
*/
|
|
32
|
+
applyCacheMarkers(messages, provider) {
|
|
33
|
+
if (!this.config.enabled)
|
|
34
|
+
return messages;
|
|
35
|
+
if (provider !== 'anthropic' || !this.config.providers.anthropic)
|
|
36
|
+
return messages;
|
|
37
|
+
return messages.map((msg) => {
|
|
38
|
+
if (msg.role !== 'system')
|
|
39
|
+
return msg;
|
|
40
|
+
const text = typeof msg.content === 'string'
|
|
41
|
+
? msg.content
|
|
42
|
+
: msg.content.filter((p) => p.type === 'text').map((p) => p.text).join('\n');
|
|
43
|
+
// Rough token estimate: ~4 chars per token
|
|
44
|
+
const estimatedTokens = Math.ceil(text.length / 4);
|
|
45
|
+
if (estimatedTokens < this.config.minTokens)
|
|
46
|
+
return msg;
|
|
47
|
+
// Return message with content structured for cache_control.
|
|
48
|
+
// The cache_control field is a runtime extension accepted by the Anthropic API
|
|
49
|
+
// but not present in the ChatMessage ContentPart type, so we cast through unknown.
|
|
50
|
+
return {
|
|
51
|
+
...msg,
|
|
52
|
+
content: [
|
|
53
|
+
{ type: 'text', text, cache_control: { type: 'ephemeral' } },
|
|
54
|
+
],
|
|
55
|
+
};
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
/** Update stats from provider response usage data. */
|
|
59
|
+
updateStats(usage) {
|
|
60
|
+
const creation = usage.cache_creation_input_tokens ?? 0;
|
|
61
|
+
const read = usage.cache_read_input_tokens ?? 0;
|
|
62
|
+
if (read > 0) {
|
|
63
|
+
this.stats.cacheHits++;
|
|
64
|
+
this.stats.savedTokens += read;
|
|
65
|
+
}
|
|
66
|
+
else if (creation > 0) {
|
|
67
|
+
this.stats.cacheMisses++;
|
|
68
|
+
}
|
|
69
|
+
this.stats.cachedTokens += creation + read;
|
|
70
|
+
const total = this.stats.cacheHits + this.stats.cacheMisses;
|
|
71
|
+
this.stats.hitRate = total > 0 ? this.stats.cacheHits / total : 0;
|
|
72
|
+
}
|
|
73
|
+
/** Get current cache stats. */
|
|
74
|
+
getStats() {
|
|
75
|
+
return { ...this.stats };
|
|
76
|
+
}
|
|
77
|
+
/** Reset stats. */
|
|
78
|
+
resetStats() {
|
|
79
|
+
this.stats = { cacheHits: 0, cacheMisses: 0, cachedTokens: 0, savedTokens: 0, hitRate: 0 };
|
|
80
|
+
}
|
|
81
|
+
/** Format stats for display. */
|
|
82
|
+
formatStats() {
|
|
83
|
+
const s = this.stats;
|
|
84
|
+
const total = s.cacheHits + s.cacheMisses;
|
|
85
|
+
if (total === 0)
|
|
86
|
+
return 'Prompt cache: no data yet.';
|
|
87
|
+
const hitPct = (s.hitRate * 100).toFixed(1);
|
|
88
|
+
return [
|
|
89
|
+
`**Prompt Cache**`,
|
|
90
|
+
`Hits: ${s.cacheHits} / ${total} (${hitPct}%)`,
|
|
91
|
+
`Cached tokens: ${s.cachedTokens.toLocaleString()}`,
|
|
92
|
+
`Saved tokens: ${s.savedTokens.toLocaleString()}`,
|
|
93
|
+
].join('\n');
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=prompt-cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt-cache.js","sourceRoot":"","sources":["../../src/providers/prompt-cache.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Provider — inference engine trait.
|
|
3
|
+
*
|
|
4
|
+
* Every LLM backend (Anthropic, OpenAI, LiteLLM, etc.) implements this
|
|
5
|
+
* interface. The agent loop calls `chat()` and streams back `ChatChunk`s.
|
|
6
|
+
*
|
|
7
|
+
* Providers handle:
|
|
8
|
+
* - Model routing via `provider/model` refs (e.g. 'anthropic/claude-sonnet-4-6')
|
|
9
|
+
* - API key rotation and failover
|
|
10
|
+
* - Streaming-first responses via AsyncIterable
|
|
11
|
+
* - Message format conversion to/from provider-specific APIs
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```typescript
|
|
15
|
+
* const provider = new AnthropicProvider();
|
|
16
|
+
* for await (const chunk of provider.chat({ model: 'claude-sonnet-4-6', messages, stream: true })) {
|
|
17
|
+
* if (chunk.text) process.stdout.write(chunk.text);
|
|
18
|
+
* }
|
|
19
|
+
* ```
|
|
20
|
+
*/
|
|
21
|
+
/** A single message in the conversation history. */
|
|
22
|
+
export interface ChatMessage {
|
|
23
|
+
/** Message role: system prompt, user input, assistant response, or tool result */
|
|
24
|
+
role: 'system' | 'user' | 'assistant' | 'tool';
|
|
25
|
+
/** Content as plain text or structured content parts (for tool_use blocks) */
|
|
26
|
+
content: string | ContentPart[];
|
|
27
|
+
/** Optional display name for the message author */
|
|
28
|
+
name?: string;
|
|
29
|
+
/** For tool-role messages: the ID of the tool_use block this result corresponds to */
|
|
30
|
+
tool_call_id?: string;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* A structured content part within a message.
|
|
34
|
+
* Used for multi-modal messages (text + images) and tool interactions.
|
|
35
|
+
*/
|
|
36
|
+
export type ContentPart = {
|
|
37
|
+
type: 'text';
|
|
38
|
+
text: string;
|
|
39
|
+
} | {
|
|
40
|
+
type: 'image_url';
|
|
41
|
+
image_url: {
|
|
42
|
+
url: string;
|
|
43
|
+
};
|
|
44
|
+
} | {
|
|
45
|
+
type: 'image_base64';
|
|
46
|
+
media_type: string;
|
|
47
|
+
data: string;
|
|
48
|
+
} | {
|
|
49
|
+
type: 'tool_use';
|
|
50
|
+
id: string;
|
|
51
|
+
name: string;
|
|
52
|
+
input: unknown;
|
|
53
|
+
} | {
|
|
54
|
+
type: 'tool_result';
|
|
55
|
+
tool_use_id: string;
|
|
56
|
+
content: string;
|
|
57
|
+
};
|
|
58
|
+
/** A tool definition sent to the model for function calling. */
|
|
59
|
+
export interface ToolDefinition {
|
|
60
|
+
/** Unique tool name */
|
|
61
|
+
name: string;
|
|
62
|
+
/** Human-readable description of what the tool does */
|
|
63
|
+
description: string;
|
|
64
|
+
/** JSON Schema describing the tool's input parameters */
|
|
65
|
+
parameters: Record<string, unknown>;
|
|
66
|
+
}
|
|
67
|
+
/** Request payload for a chat completion. */
|
|
68
|
+
export interface ChatRequest {
|
|
69
|
+
/** Model identifier (e.g. 'claude-sonnet-4-6' or 'anthropic/claude-sonnet-4-6') */
|
|
70
|
+
model: string;
|
|
71
|
+
/** Conversation history including system prompt */
|
|
72
|
+
messages: ChatMessage[];
|
|
73
|
+
/** Available tools for function calling */
|
|
74
|
+
tools?: ToolDefinition[];
|
|
75
|
+
/** Sampling temperature (0.0 = deterministic, 1.0 = creative) */
|
|
76
|
+
temperature?: number;
|
|
77
|
+
/** Maximum tokens to generate */
|
|
78
|
+
max_tokens?: number;
|
|
79
|
+
/** Stop sequences that halt generation */
|
|
80
|
+
stop?: string[];
|
|
81
|
+
/** Whether to stream the response (default: true) */
|
|
82
|
+
stream?: boolean;
|
|
83
|
+
/** Anthropic prompt cache retention mode (passed through to provider). */
|
|
84
|
+
cacheRetention?: 'none' | 'short' | 'long';
|
|
85
|
+
}
|
|
86
|
+
/** A tool call requested by the model during generation. */
|
|
87
|
+
export interface ToolCall {
|
|
88
|
+
/** Unique ID for this tool call (used to match results) */
|
|
89
|
+
id: string;
|
|
90
|
+
/** Name of the tool to invoke */
|
|
91
|
+
name: string;
|
|
92
|
+
/** Parsed input parameters for the tool */
|
|
93
|
+
input: unknown;
|
|
94
|
+
}
|
|
95
|
+
/** A single chunk in a streaming chat response. */
|
|
96
|
+
export interface ChatChunk {
|
|
97
|
+
/** Incremental text delta (may be empty on tool-call-only chunks) */
|
|
98
|
+
text?: string;
|
|
99
|
+
/** Tool calls emitted by the model (accumulated across chunks) */
|
|
100
|
+
tool_calls?: ToolCall[];
|
|
101
|
+
/** True on the final chunk — signals end of generation */
|
|
102
|
+
done: boolean;
|
|
103
|
+
/** Token usage statistics (populated on the final chunk only) */
|
|
104
|
+
usage?: UsageStats;
|
|
105
|
+
}
|
|
106
|
+
/** Token usage statistics for a chat completion. */
|
|
107
|
+
export interface UsageStats {
|
|
108
|
+
/** Number of tokens in the input (system + messages + tools) */
|
|
109
|
+
prompt_tokens: number;
|
|
110
|
+
/** Number of tokens generated by the model */
|
|
111
|
+
completion_tokens: number;
|
|
112
|
+
/** Total tokens consumed (prompt + completion) */
|
|
113
|
+
total_tokens: number;
|
|
114
|
+
/** Tokens written to cache on this request (Anthropic prompt caching). */
|
|
115
|
+
cache_creation_input_tokens?: number;
|
|
116
|
+
/** Tokens read from cache on this request (Anthropic prompt caching). */
|
|
117
|
+
cache_read_input_tokens?: number;
|
|
118
|
+
}
|
|
119
|
+
/** Information about an available model. */
|
|
120
|
+
export interface ModelInfo {
|
|
121
|
+
/** Model identifier (e.g. 'claude-sonnet-4-6') */
|
|
122
|
+
id: string;
|
|
123
|
+
/** Human-readable model name */
|
|
124
|
+
name: string;
|
|
125
|
+
/** Provider that serves this model */
|
|
126
|
+
provider: string;
|
|
127
|
+
/** Maximum input context window in tokens */
|
|
128
|
+
context_window: number;
|
|
129
|
+
/** Maximum output tokens the model can generate */
|
|
130
|
+
max_output_tokens: number;
|
|
131
|
+
/** Supported capabilities (e.g. 'vision', 'tools', 'streaming') */
|
|
132
|
+
capabilities: string[];
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Provider — the inference engine trait.
|
|
136
|
+
*
|
|
137
|
+
* Implementations adapt a specific LLM API (Anthropic, OpenAI, LiteLLM)
|
|
138
|
+
* into Tako's unified streaming interface. The agent loop depends only
|
|
139
|
+
* on this interface, making providers fully swappable.
|
|
140
|
+
*
|
|
141
|
+
* Built-in implementations:
|
|
142
|
+
* - {@link AnthropicProvider} — native Anthropic API with key rotation
|
|
143
|
+
* - {@link OpenAIProvider} — OpenAI-compatible API
|
|
144
|
+
* - {@link LiteLLMProvider} — proxy to 100+ providers
|
|
145
|
+
*/
|
|
146
|
+
export interface Provider {
|
|
147
|
+
/** Unique provider identifier (e.g. 'anthropic', 'openai', 'litellm') */
|
|
148
|
+
id: string;
|
|
149
|
+
/**
|
|
150
|
+
* Stream a chat completion.
|
|
151
|
+
*
|
|
152
|
+
* Always returns an async iterable of chunks, even for non-streaming requests.
|
|
153
|
+
* The final chunk has `done: true` and includes usage statistics.
|
|
154
|
+
*
|
|
155
|
+
* @param req - The chat request including model, messages, and tools
|
|
156
|
+
* @returns Async iterable of response chunks
|
|
157
|
+
*/
|
|
158
|
+
chat(req: ChatRequest): AsyncIterable<ChatChunk>;
|
|
159
|
+
/**
|
|
160
|
+
* List models available through this provider.
|
|
161
|
+
*
|
|
162
|
+
* @returns Array of model information objects
|
|
163
|
+
*/
|
|
164
|
+
models(): ModelInfo[];
|
|
165
|
+
/**
|
|
166
|
+
* Check if this provider supports a given capability.
|
|
167
|
+
*
|
|
168
|
+
* @param capability - Capability name (e.g. 'vision', 'tools', 'streaming')
|
|
169
|
+
* @returns True if the capability is supported
|
|
170
|
+
*/
|
|
171
|
+
supports(capability: string): boolean;
|
|
172
|
+
}
|
|
173
|
+
//# sourceMappingURL=provider.d.ts.map
|