@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 @@
|
|
|
1
|
+
{"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../../src/tools/message.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,IAAI,EAA2B,MAAM,WAAW,CAAC;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAE/D,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,QAAQ,CAAC,EAAE,eAAe,CAAC;CAC5B;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,eAAe,GAAG,IAAI,EAAE,CAiNhE"}
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Message tool — channel management and messaging operations.
|
|
3
|
+
*
|
|
4
|
+
* Provides the agent with the ability to:
|
|
5
|
+
* - Send messages to Discord/Telegram channels
|
|
6
|
+
* - Create, edit, and delete Discord channels
|
|
7
|
+
* - Create threads in Discord channels
|
|
8
|
+
* - React to messages with emoji
|
|
9
|
+
*
|
|
10
|
+
* This is the tool for all messaging and channel management operations.
|
|
11
|
+
* Do NOT confuse with skill-creator (which creates skills) or agents_add (which creates agents).
|
|
12
|
+
*/
|
|
13
|
+
/**
|
|
14
|
+
* Create the message tool bound to channel adapters.
|
|
15
|
+
*/
|
|
16
|
+
export function createMessageTools(deps) {
|
|
17
|
+
const { discord, telegram } = deps;
|
|
18
|
+
const messageTool = {
|
|
19
|
+
name: 'message',
|
|
20
|
+
description: 'Send messages and manage channels on Discord and Telegram. Use this for all messaging operations: sending messages, creating/editing/deleting Discord channels, creating threads, and reacting to messages. This is NOT for creating agents (use agents_add) or skills (use skill-creator).',
|
|
21
|
+
group: 'messaging',
|
|
22
|
+
parameters: {
|
|
23
|
+
type: 'object',
|
|
24
|
+
properties: {
|
|
25
|
+
action: {
|
|
26
|
+
type: 'string',
|
|
27
|
+
enum: [
|
|
28
|
+
'send',
|
|
29
|
+
'channel-create',
|
|
30
|
+
'channel-edit',
|
|
31
|
+
'channel-delete',
|
|
32
|
+
'thread-create',
|
|
33
|
+
'react',
|
|
34
|
+
],
|
|
35
|
+
description: 'The messaging action to perform',
|
|
36
|
+
},
|
|
37
|
+
platform: {
|
|
38
|
+
type: 'string',
|
|
39
|
+
enum: ['discord', 'telegram'],
|
|
40
|
+
description: 'Target platform (discord or telegram)',
|
|
41
|
+
},
|
|
42
|
+
target: {
|
|
43
|
+
type: 'string',
|
|
44
|
+
description: 'Channel ID, chat ID, or guild ID (depends on action)',
|
|
45
|
+
},
|
|
46
|
+
message: {
|
|
47
|
+
type: 'string',
|
|
48
|
+
description: 'Message content to send (for "send" action)',
|
|
49
|
+
},
|
|
50
|
+
name: {
|
|
51
|
+
type: 'string',
|
|
52
|
+
description: 'Name for new channel or thread (for "channel-create" and "thread-create")',
|
|
53
|
+
},
|
|
54
|
+
topic: {
|
|
55
|
+
type: 'string',
|
|
56
|
+
description: 'Channel topic (for "channel-create" and "channel-edit")',
|
|
57
|
+
},
|
|
58
|
+
guildId: {
|
|
59
|
+
type: 'string',
|
|
60
|
+
description: 'Discord guild/server ID (required for "channel-create")',
|
|
61
|
+
},
|
|
62
|
+
parentId: {
|
|
63
|
+
type: 'string',
|
|
64
|
+
description: 'Parent category ID for channel creation',
|
|
65
|
+
},
|
|
66
|
+
messageId: {
|
|
67
|
+
type: 'string',
|
|
68
|
+
description: 'Message ID (for "react" and optionally "thread-create")',
|
|
69
|
+
},
|
|
70
|
+
emoji: {
|
|
71
|
+
type: 'string',
|
|
72
|
+
description: 'Emoji to react with (for "react" action)',
|
|
73
|
+
},
|
|
74
|
+
},
|
|
75
|
+
required: ['action', 'platform'],
|
|
76
|
+
},
|
|
77
|
+
async execute(params, _ctx) {
|
|
78
|
+
const p = params;
|
|
79
|
+
// Validate platform availability
|
|
80
|
+
if (p.platform === 'discord' && !discord) {
|
|
81
|
+
return { output: '', success: false, error: 'Discord channel is not configured or connected.' };
|
|
82
|
+
}
|
|
83
|
+
if (p.platform === 'telegram' && !telegram) {
|
|
84
|
+
return { output: '', success: false, error: 'Telegram channel is not configured or connected.' };
|
|
85
|
+
}
|
|
86
|
+
try {
|
|
87
|
+
switch (p.action) {
|
|
88
|
+
// ─── send ──────────────────────────────────────────────
|
|
89
|
+
case 'send': {
|
|
90
|
+
if (!p.target)
|
|
91
|
+
return { output: '', success: false, error: 'target (channel/chat ID) is required for send' };
|
|
92
|
+
if (!p.message)
|
|
93
|
+
return { output: '', success: false, error: 'message content is required for send' };
|
|
94
|
+
if (p.platform === 'discord') {
|
|
95
|
+
const msgId = await discord.sendToChannel(p.target, p.message);
|
|
96
|
+
return {
|
|
97
|
+
output: JSON.stringify({ sent: true, platform: 'discord', channelId: p.target, messageId: msgId }),
|
|
98
|
+
success: true,
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
const msgId = await telegram.sendToChat(p.target, p.message);
|
|
103
|
+
return {
|
|
104
|
+
output: JSON.stringify({ sent: true, platform: 'telegram', chatId: p.target, messageId: msgId }),
|
|
105
|
+
success: true,
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
// ─── channel-create ────────────────────────────────────
|
|
110
|
+
case 'channel-create': {
|
|
111
|
+
if (p.platform !== 'discord') {
|
|
112
|
+
return { output: '', success: false, error: 'channel-create is only supported on Discord' };
|
|
113
|
+
}
|
|
114
|
+
if (!p.guildId)
|
|
115
|
+
return { output: '', success: false, error: 'guildId is required for channel-create' };
|
|
116
|
+
if (!p.name)
|
|
117
|
+
return { output: '', success: false, error: 'name is required for channel-create' };
|
|
118
|
+
const channel = await discord.createChannel(p.guildId, p.name, {
|
|
119
|
+
topic: p.topic,
|
|
120
|
+
parentId: p.parentId,
|
|
121
|
+
});
|
|
122
|
+
return {
|
|
123
|
+
output: JSON.stringify({ created: true, platform: 'discord', channelId: channel.id, channelName: channel.name }),
|
|
124
|
+
success: true,
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
// ─── channel-edit ──────────────────────────────────────
|
|
128
|
+
case 'channel-edit': {
|
|
129
|
+
if (p.platform !== 'discord') {
|
|
130
|
+
return { output: '', success: false, error: 'channel-edit is only supported on Discord' };
|
|
131
|
+
}
|
|
132
|
+
if (!p.target)
|
|
133
|
+
return { output: '', success: false, error: 'target (channel ID) is required for channel-edit' };
|
|
134
|
+
await discord.editChannel(p.target, {
|
|
135
|
+
name: p.name,
|
|
136
|
+
topic: p.topic,
|
|
137
|
+
});
|
|
138
|
+
return {
|
|
139
|
+
output: JSON.stringify({ edited: true, platform: 'discord', channelId: p.target }),
|
|
140
|
+
success: true,
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
// ─── channel-delete ────────────────────────────────────
|
|
144
|
+
case 'channel-delete': {
|
|
145
|
+
if (p.platform !== 'discord') {
|
|
146
|
+
return { output: '', success: false, error: 'channel-delete is only supported on Discord' };
|
|
147
|
+
}
|
|
148
|
+
if (!p.target)
|
|
149
|
+
return { output: '', success: false, error: 'target (channel ID) is required for channel-delete' };
|
|
150
|
+
await discord.deleteChannel(p.target);
|
|
151
|
+
return {
|
|
152
|
+
output: JSON.stringify({ deleted: true, platform: 'discord', channelId: p.target }),
|
|
153
|
+
success: true,
|
|
154
|
+
};
|
|
155
|
+
}
|
|
156
|
+
// ─── thread-create ─────────────────────────────────────
|
|
157
|
+
case 'thread-create': {
|
|
158
|
+
if (p.platform !== 'discord') {
|
|
159
|
+
return { output: '', success: false, error: 'thread-create is only supported on Discord' };
|
|
160
|
+
}
|
|
161
|
+
if (!p.target)
|
|
162
|
+
return { output: '', success: false, error: 'target (channel ID) is required for thread-create' };
|
|
163
|
+
if (!p.name)
|
|
164
|
+
return { output: '', success: false, error: 'name is required for thread-create' };
|
|
165
|
+
const thread = await discord.createThread(p.target, p.name, {
|
|
166
|
+
messageId: p.messageId,
|
|
167
|
+
});
|
|
168
|
+
return {
|
|
169
|
+
output: JSON.stringify({ created: true, platform: 'discord', threadId: thread.id, threadName: thread.name }),
|
|
170
|
+
success: true,
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
// ─── react ─────────────────────────────────────────────
|
|
174
|
+
case 'react': {
|
|
175
|
+
if (p.platform !== 'discord') {
|
|
176
|
+
return { output: '', success: false, error: 'react is only supported on Discord' };
|
|
177
|
+
}
|
|
178
|
+
if (!p.target)
|
|
179
|
+
return { output: '', success: false, error: 'target (channel ID) is required for react' };
|
|
180
|
+
if (!p.messageId)
|
|
181
|
+
return { output: '', success: false, error: 'messageId is required for react' };
|
|
182
|
+
if (!p.emoji)
|
|
183
|
+
return { output: '', success: false, error: 'emoji is required for react' };
|
|
184
|
+
await discord.react(p.target, p.messageId, p.emoji);
|
|
185
|
+
return {
|
|
186
|
+
output: JSON.stringify({ reacted: true, platform: 'discord', channelId: p.target, messageId: p.messageId, emoji: p.emoji }),
|
|
187
|
+
success: true,
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
default:
|
|
191
|
+
return { output: '', success: false, error: `Unknown action: ${p.action}. Supported: send, channel-create, channel-edit, channel-delete, thread-create, react` };
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
catch (err) {
|
|
195
|
+
return {
|
|
196
|
+
output: '',
|
|
197
|
+
success: false,
|
|
198
|
+
error: err instanceof Error ? err.message : String(err),
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
},
|
|
202
|
+
};
|
|
203
|
+
return [messageTool];
|
|
204
|
+
}
|
|
205
|
+
//# sourceMappingURL=message.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"message.js","sourceRoot":"","sources":["../../src/tools/message.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAWH;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,IAAqB;IACtD,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;IAEnC,MAAM,WAAW,GAAS;QACxB,IAAI,EAAE,SAAS;QACf,WAAW,EACT,6RAA6R;QAC/R,KAAK,EAAE,WAAW;QAClB,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,MAAM,EAAE;oBACN,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE;wBACJ,MAAM;wBACN,gBAAgB;wBAChB,cAAc;wBACd,gBAAgB;wBAChB,eAAe;wBACf,OAAO;qBACR;oBACD,WAAW,EAAE,iCAAiC;iBAC/C;gBACD,QAAQ,EAAE;oBACR,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC;oBAC7B,WAAW,EAAE,uCAAuC;iBACrD;gBACD,MAAM,EAAE;oBACN,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,sDAAsD;iBACpE;gBACD,OAAO,EAAE;oBACP,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,6CAA6C;iBAC3D;gBACD,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,2EAA2E;iBACzF;gBACD,KAAK,EAAE;oBACL,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,yDAAyD;iBACvE;gBACD,OAAO,EAAE;oBACP,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,yDAAyD;iBACvE;gBACD,QAAQ,EAAE;oBACR,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,yCAAyC;iBACvD;gBACD,SAAS,EAAE;oBACT,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,yDAAyD;iBACvE;gBACD,KAAK,EAAE;oBACL,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,0CAA0C;iBACxD;aACF;YACD,QAAQ,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC;SACjC;QAED,KAAK,CAAC,OAAO,CAAC,MAAe,EAAE,IAAiB;YAC9C,MAAM,CAAC,GAAG,MAWT,CAAC;YAEF,iCAAiC;YACjC,IAAI,CAAC,CAAC,QAAQ,KAAK,SAAS,IAAI,CAAC,OAAO,EAAE,CAAC;gBACzC,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,iDAAiD,EAAE,CAAC;YAClG,CAAC;YACD,IAAI,CAAC,CAAC,QAAQ,KAAK,UAAU,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAC3C,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,kDAAkD,EAAE,CAAC;YACnG,CAAC;YAED,IAAI,CAAC;gBACH,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAC;oBACjB,0DAA0D;oBAC1D,KAAK,MAAM,CAAC,CAAC,CAAC;wBACZ,IAAI,CAAC,CAAC,CAAC,MAAM;4BAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,+CAA+C,EAAE,CAAC;wBAC7G,IAAI,CAAC,CAAC,CAAC,OAAO;4BAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,sCAAsC,EAAE,CAAC;wBAErG,IAAI,CAAC,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;4BAC7B,MAAM,KAAK,GAAG,MAAM,OAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;4BAChE,OAAO;gCACL,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;gCAClG,OAAO,EAAE,IAAI;6BACd,CAAC;wBACJ,CAAC;6BAAM,CAAC;4BACN,MAAM,KAAK,GAAG,MAAM,QAAS,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;4BAC9D,OAAO;gCACL,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;gCAChG,OAAO,EAAE,IAAI;6BACd,CAAC;wBACJ,CAAC;oBACH,CAAC;oBAED,0DAA0D;oBAC1D,KAAK,gBAAgB,CAAC,CAAC,CAAC;wBACtB,IAAI,CAAC,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;4BAC7B,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,6CAA6C,EAAE,CAAC;wBAC9F,CAAC;wBACD,IAAI,CAAC,CAAC,CAAC,OAAO;4BAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,wCAAwC,EAAE,CAAC;wBACvG,IAAI,CAAC,CAAC,CAAC,IAAI;4BAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,qCAAqC,EAAE,CAAC;wBAEjG,MAAM,OAAO,GAAG,MAAM,OAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE;4BAC9D,KAAK,EAAE,CAAC,CAAC,KAAK;4BACd,QAAQ,EAAE,CAAC,CAAC,QAAQ;yBACrB,CAAC,CAAC;wBAEH,OAAO;4BACL,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE,WAAW,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;4BAChH,OAAO,EAAE,IAAI;yBACd,CAAC;oBACJ,CAAC;oBAED,0DAA0D;oBAC1D,KAAK,cAAc,CAAC,CAAC,CAAC;wBACpB,IAAI,CAAC,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;4BAC7B,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,2CAA2C,EAAE,CAAC;wBAC5F,CAAC;wBACD,IAAI,CAAC,CAAC,CAAC,MAAM;4BAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,kDAAkD,EAAE,CAAC;wBAEhH,MAAM,OAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,EAAE;4BACnC,IAAI,EAAE,CAAC,CAAC,IAAI;4BACZ,KAAK,EAAE,CAAC,CAAC,KAAK;yBACf,CAAC,CAAC;wBAEH,OAAO;4BACL,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;4BAClF,OAAO,EAAE,IAAI;yBACd,CAAC;oBACJ,CAAC;oBAED,0DAA0D;oBAC1D,KAAK,gBAAgB,CAAC,CAAC,CAAC;wBACtB,IAAI,CAAC,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;4BAC7B,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,6CAA6C,EAAE,CAAC;wBAC9F,CAAC;wBACD,IAAI,CAAC,CAAC,CAAC,MAAM;4BAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,oDAAoD,EAAE,CAAC;wBAElH,MAAM,OAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;wBAEvC,OAAO;4BACL,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC;4BACnF,OAAO,EAAE,IAAI;yBACd,CAAC;oBACJ,CAAC;oBAED,0DAA0D;oBAC1D,KAAK,eAAe,CAAC,CAAC,CAAC;wBACrB,IAAI,CAAC,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;4BAC7B,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,4CAA4C,EAAE,CAAC;wBAC7F,CAAC;wBACD,IAAI,CAAC,CAAC,CAAC,MAAM;4BAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,mDAAmD,EAAE,CAAC;wBACjH,IAAI,CAAC,CAAC,CAAC,IAAI;4BAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,oCAAoC,EAAE,CAAC;wBAEhG,MAAM,MAAM,GAAG,MAAM,OAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE;4BAC3D,SAAS,EAAE,CAAC,CAAC,SAAS;yBACvB,CAAC,CAAC;wBAEH,OAAO;4BACL,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;4BAC5G,OAAO,EAAE,IAAI;yBACd,CAAC;oBACJ,CAAC;oBAED,0DAA0D;oBAC1D,KAAK,OAAO,CAAC,CAAC,CAAC;wBACb,IAAI,CAAC,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;4BAC7B,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,oCAAoC,EAAE,CAAC;wBACrF,CAAC;wBACD,IAAI,CAAC,CAAC,CAAC,MAAM;4BAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,2CAA2C,EAAE,CAAC;wBACzG,IAAI,CAAC,CAAC,CAAC,SAAS;4BAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,iCAAiC,EAAE,CAAC;wBAClG,IAAI,CAAC,CAAC,CAAC,KAAK;4BAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,6BAA6B,EAAE,CAAC;wBAE1F,MAAM,OAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC;wBAErD,OAAO;4BACL,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;4BAC3H,OAAO,EAAE,IAAI;yBACd,CAAC;oBACJ,CAAC;oBAED;wBACE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,mBAAmB,CAAC,CAAC,MAAM,uFAAuF,EAAE,CAAC;gBACrK,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO;oBACL,MAAM,EAAE,EAAE;oBACV,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;iBACxD,CAAC;YACJ,CAAC;QACH,CAAC;KACF,CAAC;IAEF,OAAO,CAAC,WAAW,CAAC,CAAC;AACvB,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* set_model — agent tool for switching the active LLM model at runtime.
|
|
3
|
+
*/
|
|
4
|
+
import type { Tool } from './tool.js';
|
|
5
|
+
/**
|
|
6
|
+
* Create the set_model tool.
|
|
7
|
+
* Requires a reference to the agent loop's setModel function
|
|
8
|
+
* so it can update the runtime model.
|
|
9
|
+
*/
|
|
10
|
+
export declare function createModelTool(deps: {
|
|
11
|
+
setModel: (modelRef: string) => void;
|
|
12
|
+
getModel: () => string;
|
|
13
|
+
}): Tool;
|
|
14
|
+
//# sourceMappingURL=model.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model.d.ts","sourceRoot":"","sources":["../../src/tools/model.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,OAAO,KAAK,EAAE,IAAI,EAA2B,MAAM,WAAW,CAAC;AAE/D;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE;IACpC,QAAQ,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC,QAAQ,EAAE,MAAM,MAAM,CAAC;CACxB,GAAG,IAAI,CAqDP"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* set_model — agent tool for switching the active LLM model at runtime.
|
|
3
|
+
*/
|
|
4
|
+
import { readFile, writeFile } from 'node:fs/promises';
|
|
5
|
+
import { join } from 'node:path';
|
|
6
|
+
import { homedir } from 'node:os';
|
|
7
|
+
import { existsSync } from 'node:fs';
|
|
8
|
+
/**
|
|
9
|
+
* Create the set_model tool.
|
|
10
|
+
* Requires a reference to the agent loop's setModel function
|
|
11
|
+
* so it can update the runtime model.
|
|
12
|
+
*/
|
|
13
|
+
export function createModelTool(deps) {
|
|
14
|
+
return {
|
|
15
|
+
name: 'set_model',
|
|
16
|
+
description: 'Switch the active LLM model. Use when the user asks to change models or when a task needs a specific model.',
|
|
17
|
+
group: 'runtime',
|
|
18
|
+
parameters: {
|
|
19
|
+
type: 'object',
|
|
20
|
+
properties: {
|
|
21
|
+
model: {
|
|
22
|
+
type: 'string',
|
|
23
|
+
description: 'Model reference (e.g. anthropic/claude-opus-4-6, openai/gpt-5.2, litellm/gemini-3-pro-preview)',
|
|
24
|
+
},
|
|
25
|
+
},
|
|
26
|
+
required: ['model'],
|
|
27
|
+
},
|
|
28
|
+
async execute(params, _ctx) {
|
|
29
|
+
const { model } = params;
|
|
30
|
+
if (!model || typeof model !== 'string') {
|
|
31
|
+
return { output: 'Error: model parameter is required', success: false };
|
|
32
|
+
}
|
|
33
|
+
if (!model.includes('/')) {
|
|
34
|
+
return {
|
|
35
|
+
output: 'Error: model reference must be in format provider/model (e.g. anthropic/claude-opus-4-6)',
|
|
36
|
+
success: false,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
const previousModel = deps.getModel();
|
|
40
|
+
// Update runtime model
|
|
41
|
+
deps.setModel(model);
|
|
42
|
+
// Persist to tako.json
|
|
43
|
+
const configPath = join(homedir(), '.tako', 'tako.json');
|
|
44
|
+
if (existsSync(configPath)) {
|
|
45
|
+
try {
|
|
46
|
+
const raw = await readFile(configPath, 'utf-8');
|
|
47
|
+
const config = JSON.parse(raw);
|
|
48
|
+
config.providers = { ...config.providers, primary: model };
|
|
49
|
+
await writeFile(configPath, JSON.stringify(config, null, 2) + '\n', 'utf-8');
|
|
50
|
+
}
|
|
51
|
+
catch {
|
|
52
|
+
// Config write failed — runtime switch still applied
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
return {
|
|
56
|
+
output: `Model switched from ${previousModel} to ${model}`,
|
|
57
|
+
success: true,
|
|
58
|
+
};
|
|
59
|
+
},
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=model.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model.js","sourceRoot":"","sources":["../../src/tools/model.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAGrC;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,IAG/B;IACC,OAAO;QACL,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,6GAA6G;QAC1H,KAAK,EAAE,SAAS;QAChB,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,KAAK,EAAE;oBACL,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,gGAAgG;iBAC9G;aACF;YACD,QAAQ,EAAE,CAAC,OAAO,CAAC;SACpB;QACD,KAAK,CAAC,OAAO,CAAC,MAAe,EAAE,IAAiB;YAC9C,MAAM,EAAE,KAAK,EAAE,GAAG,MAA2B,CAAC;YAE9C,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBACxC,OAAO,EAAE,MAAM,EAAE,oCAAoC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;YAC1E,CAAC;YAED,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBACzB,OAAO;oBACL,MAAM,EAAE,0FAA0F;oBAClG,OAAO,EAAE,KAAK;iBACf,CAAC;YACJ,CAAC;YAED,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAEtC,uBAAuB;YACvB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAErB,uBAAuB;YACvB,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;YACzD,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC3B,IAAI,CAAC;oBACH,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;oBAChD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBAC/B,MAAM,CAAC,SAAS,GAAG,EAAE,GAAG,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;oBAC3D,MAAM,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC;gBAC/E,CAAC;gBAAC,MAAM,CAAC;oBACP,qDAAqD;gBACvD,CAAC;YACH,CAAC;YAED,OAAO;gBACL,MAAM,EAAE,uBAAuB,aAAa,OAAO,KAAK,EAAE;gBAC1D,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool policy — allow/deny lists with group expansion and layered resolution.
|
|
3
|
+
*
|
|
4
|
+
* Policy layers (evaluated in order, deny always wins):
|
|
5
|
+
* 1. Global deny list (always blocks)
|
|
6
|
+
* 2. Global allow list
|
|
7
|
+
* 3. Profile-based group activation
|
|
8
|
+
* 4. Sandbox-specific overrides (when running inside a sandbox)
|
|
9
|
+
*
|
|
10
|
+
* Tool groups expand to individual tool names:
|
|
11
|
+
* group:runtime → exec, process
|
|
12
|
+
* group:fs → read, write, edit, apply_patch
|
|
13
|
+
* group:search → glob_search, content_search
|
|
14
|
+
* group:git → git_status, git_diff, git_commit
|
|
15
|
+
* group:memory → memory_search, memory_get, memory_store
|
|
16
|
+
* group:web → web_search, web_fetch
|
|
17
|
+
* group:sessions → session_status, session_list, session_send, session_spawn
|
|
18
|
+
* group:image → vision
|
|
19
|
+
*/
|
|
20
|
+
import type { ToolProfile } from './tool.js';
|
|
21
|
+
/** Expand a list of tool names and group references into individual tool names. */
|
|
22
|
+
export declare function expandToolNames(names: string[]): Set<string>;
|
|
23
|
+
/** How command execution is controlled. */
|
|
24
|
+
export type ExecSecurity = 'deny' | 'allowlist' | 'full';
|
|
25
|
+
/** When to ask for approval before executing. */
|
|
26
|
+
export type ExecAskMode = 'off' | 'on-miss' | 'always';
|
|
27
|
+
/** Exec-specific policy config. */
|
|
28
|
+
export interface ExecPolicyConfig {
|
|
29
|
+
/** Security mode: deny all, allowlist only, or full access. */
|
|
30
|
+
security: ExecSecurity;
|
|
31
|
+
/** When to prompt for approval. */
|
|
32
|
+
askMode?: ExecAskMode;
|
|
33
|
+
/** Patterns for pre-approved commands (regex strings). */
|
|
34
|
+
allowlist?: string[];
|
|
35
|
+
/** Max execution timeout in ms (default: 30000). */
|
|
36
|
+
timeout?: number;
|
|
37
|
+
/** Max output size in bytes (default: 1MB). */
|
|
38
|
+
maxOutputSize?: number;
|
|
39
|
+
}
|
|
40
|
+
/** Tool policy configuration. */
|
|
41
|
+
export interface ToolPolicyConfig {
|
|
42
|
+
/** Base profile for group activation. */
|
|
43
|
+
profile: ToolProfile;
|
|
44
|
+
/** Explicitly allowed tools or groups (overrides profile). */
|
|
45
|
+
allow?: string[];
|
|
46
|
+
/** Explicitly denied tools or groups (always wins). */
|
|
47
|
+
deny?: string[];
|
|
48
|
+
/** Sandbox-specific tool policy overrides. */
|
|
49
|
+
sandbox?: {
|
|
50
|
+
tools?: {
|
|
51
|
+
allow?: string[];
|
|
52
|
+
deny?: string[];
|
|
53
|
+
};
|
|
54
|
+
};
|
|
55
|
+
/** Exec-specific policy. */
|
|
56
|
+
exec?: ExecPolicyConfig;
|
|
57
|
+
}
|
|
58
|
+
/** Result of a policy check. */
|
|
59
|
+
export interface PolicyDecision {
|
|
60
|
+
allowed: boolean;
|
|
61
|
+
reason: string;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* ToolPolicy — resolves allow/deny decisions for tools.
|
|
65
|
+
*
|
|
66
|
+
* Supports layered resolution: global policy, then optional sandbox overlay.
|
|
67
|
+
* Deny always wins over allow at each layer.
|
|
68
|
+
*/
|
|
69
|
+
export declare class ToolPolicy {
|
|
70
|
+
private globalAllow;
|
|
71
|
+
private globalDeny;
|
|
72
|
+
private sandboxAllow;
|
|
73
|
+
private sandboxDeny;
|
|
74
|
+
private execPolicy;
|
|
75
|
+
private compiledAllowlist;
|
|
76
|
+
constructor(config: ToolPolicyConfig);
|
|
77
|
+
/**
|
|
78
|
+
* Check if a tool is allowed under the current policy.
|
|
79
|
+
*
|
|
80
|
+
* @param toolName - The tool to check
|
|
81
|
+
* @param inSandbox - Whether the tool is executing inside a sandbox
|
|
82
|
+
*/
|
|
83
|
+
check(toolName: string, inSandbox?: boolean): PolicyDecision;
|
|
84
|
+
/**
|
|
85
|
+
* Check if a specific command is allowed by the exec policy.
|
|
86
|
+
*
|
|
87
|
+
* @param command - Shell command string to check
|
|
88
|
+
*/
|
|
89
|
+
checkExec(command: string): PolicyDecision;
|
|
90
|
+
/** Get exec policy config. */
|
|
91
|
+
getExecPolicy(): Readonly<ExecPolicyConfig>;
|
|
92
|
+
/** Get the exec timeout (ms). */
|
|
93
|
+
getExecTimeout(): number;
|
|
94
|
+
/** Get the max output size (bytes). */
|
|
95
|
+
getMaxOutputSize(): number;
|
|
96
|
+
/**
|
|
97
|
+
* Produce a human-readable explanation of why a tool is allowed or denied.
|
|
98
|
+
*/
|
|
99
|
+
explain(toolName: string, inSandbox?: boolean): string;
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=policy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"policy.d.ts","sourceRoot":"","sources":["../../src/tools/policy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAa,WAAW,EAAE,MAAM,WAAW,CAAC;AAkBxD,mFAAmF;AACnF,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,CAc5D;AAID,2CAA2C;AAC3C,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,WAAW,GAAG,MAAM,CAAC;AAEzD,iDAAiD;AACjD,MAAM,MAAM,WAAW,GAAG,KAAK,GAAG,SAAS,GAAG,QAAQ,CAAC;AAEvD,mCAAmC;AACnC,MAAM,WAAW,gBAAgB;IAC/B,+DAA+D;IAC/D,QAAQ,EAAE,YAAY,CAAC;IACvB,mCAAmC;IACnC,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,0DAA0D;IAC1D,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,oDAAoD;IACpD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,+CAA+C;IAC/C,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAID,iCAAiC;AACjC,MAAM,WAAW,gBAAgB;IAC/B,yCAAyC;IACzC,OAAO,EAAE,WAAW,CAAC;IACrB,8DAA8D;IAC9D,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,uDAAuD;IACvD,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,8CAA8C;IAC9C,OAAO,CAAC,EAAE;QACR,KAAK,CAAC,EAAE;YACN,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;YACjB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;SACjB,CAAC;KACH,CAAC;IACF,4BAA4B;IAC5B,IAAI,CAAC,EAAE,gBAAgB,CAAC;CACzB;AAID,gCAAgC;AAChC,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAID;;;;;GAKG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,UAAU,CAAc;IAChC,OAAO,CAAC,YAAY,CAAc;IAClC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,UAAU,CAAmB;IACrC,OAAO,CAAC,iBAAiB,CAAyB;gBAEtC,MAAM,EAAE,gBAAgB;IAapC;;;;;OAKG;IACH,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,GAAE,OAAe,GAAG,cAAc;IAyBnE;;;;OAIG;IACH,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,cAAc;IAwB1C,8BAA8B;IAC9B,aAAa,IAAI,QAAQ,CAAC,gBAAgB,CAAC;IAI3C,iCAAiC;IACjC,cAAc,IAAI,MAAM;IAIxB,uCAAuC;IACvC,gBAAgB,IAAI,MAAM;IAI1B;;OAEG;IACH,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,GAAE,OAAe,GAAG,MAAM;CA0B9D"}
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool policy — allow/deny lists with group expansion and layered resolution.
|
|
3
|
+
*
|
|
4
|
+
* Policy layers (evaluated in order, deny always wins):
|
|
5
|
+
* 1. Global deny list (always blocks)
|
|
6
|
+
* 2. Global allow list
|
|
7
|
+
* 3. Profile-based group activation
|
|
8
|
+
* 4. Sandbox-specific overrides (when running inside a sandbox)
|
|
9
|
+
*
|
|
10
|
+
* Tool groups expand to individual tool names:
|
|
11
|
+
* group:runtime → exec, process
|
|
12
|
+
* group:fs → read, write, edit, apply_patch
|
|
13
|
+
* group:search → glob_search, content_search
|
|
14
|
+
* group:git → git_status, git_diff, git_commit
|
|
15
|
+
* group:memory → memory_search, memory_get, memory_store
|
|
16
|
+
* group:web → web_search, web_fetch
|
|
17
|
+
* group:sessions → session_status, session_list, session_send, session_spawn
|
|
18
|
+
* group:image → vision
|
|
19
|
+
*/
|
|
20
|
+
// ─── Group expansion ─────────────────────────────────────────────────
|
|
21
|
+
/** Maps group names to the individual tools they contain. */
|
|
22
|
+
const GROUP_TOOLS = {
|
|
23
|
+
runtime: ['exec', 'process'],
|
|
24
|
+
fs: ['read', 'write', 'edit', 'apply_patch'],
|
|
25
|
+
search: ['glob_search', 'content_search'],
|
|
26
|
+
git: ['git_status', 'git_diff', 'git_commit'],
|
|
27
|
+
memory: ['memory_search', 'memory_get', 'memory_store'],
|
|
28
|
+
web: ['web_search', 'web_fetch'],
|
|
29
|
+
sessions: ['session_status', 'sessions_list', 'sessions_send'],
|
|
30
|
+
image: ['vision'],
|
|
31
|
+
agents: ['agents_list', 'agents_add', 'agents_remove', 'sessions_spawn', 'sessions_history', 'subagents'],
|
|
32
|
+
messaging: ['message'],
|
|
33
|
+
};
|
|
34
|
+
/** Expand a list of tool names and group references into individual tool names. */
|
|
35
|
+
export function expandToolNames(names) {
|
|
36
|
+
const result = new Set();
|
|
37
|
+
for (const name of names) {
|
|
38
|
+
if (name.startsWith('group:')) {
|
|
39
|
+
const groupName = name.slice(6);
|
|
40
|
+
const tools = GROUP_TOOLS[groupName];
|
|
41
|
+
if (tools) {
|
|
42
|
+
for (const t of tools)
|
|
43
|
+
result.add(t);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
result.add(name);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return result;
|
|
51
|
+
}
|
|
52
|
+
// ─── ToolPolicy class ────────────────────────────────────────────────
|
|
53
|
+
/**
|
|
54
|
+
* ToolPolicy — resolves allow/deny decisions for tools.
|
|
55
|
+
*
|
|
56
|
+
* Supports layered resolution: global policy, then optional sandbox overlay.
|
|
57
|
+
* Deny always wins over allow at each layer.
|
|
58
|
+
*/
|
|
59
|
+
export class ToolPolicy {
|
|
60
|
+
globalAllow;
|
|
61
|
+
globalDeny;
|
|
62
|
+
sandboxAllow;
|
|
63
|
+
sandboxDeny;
|
|
64
|
+
execPolicy;
|
|
65
|
+
compiledAllowlist = null;
|
|
66
|
+
constructor(config) {
|
|
67
|
+
this.globalAllow = expandToolNames(config.allow ?? []);
|
|
68
|
+
this.globalDeny = expandToolNames(config.deny ?? []);
|
|
69
|
+
this.sandboxAllow = expandToolNames(config.sandbox?.tools?.allow ?? []);
|
|
70
|
+
this.sandboxDeny = expandToolNames(config.sandbox?.tools?.deny ?? []);
|
|
71
|
+
this.execPolicy = config.exec ?? { security: 'full' };
|
|
72
|
+
// Pre-compile exec allowlist patterns
|
|
73
|
+
if (this.execPolicy.allowlist) {
|
|
74
|
+
this.compiledAllowlist = this.execPolicy.allowlist.map((p) => new RegExp(p));
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Check if a tool is allowed under the current policy.
|
|
79
|
+
*
|
|
80
|
+
* @param toolName - The tool to check
|
|
81
|
+
* @param inSandbox - Whether the tool is executing inside a sandbox
|
|
82
|
+
*/
|
|
83
|
+
check(toolName, inSandbox = false) {
|
|
84
|
+
// Global deny always wins
|
|
85
|
+
if (this.globalDeny.has(toolName)) {
|
|
86
|
+
return { allowed: false, reason: `"${toolName}" is in the global deny list` };
|
|
87
|
+
}
|
|
88
|
+
// Sandbox deny layer
|
|
89
|
+
if (inSandbox && this.sandboxDeny.has(toolName)) {
|
|
90
|
+
return { allowed: false, reason: `"${toolName}" is denied in sandbox mode` };
|
|
91
|
+
}
|
|
92
|
+
// Global allow overrides profile
|
|
93
|
+
if (this.globalAllow.has(toolName)) {
|
|
94
|
+
return { allowed: true, reason: `"${toolName}" is in the global allow list` };
|
|
95
|
+
}
|
|
96
|
+
// Sandbox allow
|
|
97
|
+
if (inSandbox && this.sandboxAllow.has(toolName)) {
|
|
98
|
+
return { allowed: true, reason: `"${toolName}" is explicitly allowed in sandbox mode` };
|
|
99
|
+
}
|
|
100
|
+
// Fall through — let the ToolRegistry's profile-based check handle it
|
|
101
|
+
return { allowed: true, reason: 'Allowed by default (profile-based)' };
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Check if a specific command is allowed by the exec policy.
|
|
105
|
+
*
|
|
106
|
+
* @param command - Shell command string to check
|
|
107
|
+
*/
|
|
108
|
+
checkExec(command) {
|
|
109
|
+
if (this.execPolicy.security === 'deny') {
|
|
110
|
+
return { allowed: false, reason: 'Exec is denied by security policy' };
|
|
111
|
+
}
|
|
112
|
+
if (this.execPolicy.security === 'full') {
|
|
113
|
+
return { allowed: true, reason: 'Exec is in full-access mode' };
|
|
114
|
+
}
|
|
115
|
+
// Allowlist mode — check against patterns
|
|
116
|
+
if (this.compiledAllowlist) {
|
|
117
|
+
for (const pattern of this.compiledAllowlist) {
|
|
118
|
+
if (pattern.test(command)) {
|
|
119
|
+
return { allowed: true, reason: `Command matches allowlist pattern: ${pattern.source}` };
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
return {
|
|
124
|
+
allowed: false,
|
|
125
|
+
reason: 'Command not in exec allowlist',
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
/** Get exec policy config. */
|
|
129
|
+
getExecPolicy() {
|
|
130
|
+
return { ...this.execPolicy };
|
|
131
|
+
}
|
|
132
|
+
/** Get the exec timeout (ms). */
|
|
133
|
+
getExecTimeout() {
|
|
134
|
+
return this.execPolicy.timeout ?? 30_000;
|
|
135
|
+
}
|
|
136
|
+
/** Get the max output size (bytes). */
|
|
137
|
+
getMaxOutputSize() {
|
|
138
|
+
return this.execPolicy.maxOutputSize ?? 1024 * 1024;
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Produce a human-readable explanation of why a tool is allowed or denied.
|
|
142
|
+
*/
|
|
143
|
+
explain(toolName, inSandbox = false) {
|
|
144
|
+
const decision = this.check(toolName, inSandbox);
|
|
145
|
+
const lines = [
|
|
146
|
+
`Tool: ${toolName}`,
|
|
147
|
+
`Sandbox: ${inSandbox ? 'yes' : 'no'}`,
|
|
148
|
+
`Decision: ${decision.allowed ? 'ALLOWED' : 'DENIED'}`,
|
|
149
|
+
`Reason: ${decision.reason}`,
|
|
150
|
+
];
|
|
151
|
+
if (this.globalDeny.has(toolName)) {
|
|
152
|
+
lines.push(`Global deny list: contains "${toolName}"`);
|
|
153
|
+
}
|
|
154
|
+
if (this.globalAllow.has(toolName)) {
|
|
155
|
+
lines.push(`Global allow list: contains "${toolName}"`);
|
|
156
|
+
}
|
|
157
|
+
if (inSandbox) {
|
|
158
|
+
if (this.sandboxDeny.has(toolName)) {
|
|
159
|
+
lines.push(`Sandbox deny list: contains "${toolName}"`);
|
|
160
|
+
}
|
|
161
|
+
if (this.sandboxAllow.has(toolName)) {
|
|
162
|
+
lines.push(`Sandbox allow list: contains "${toolName}"`);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
return lines.join('\n');
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
//# sourceMappingURL=policy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"policy.js","sourceRoot":"","sources":["../../src/tools/policy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool registry — registration, policy enforcement, grouping, and profiles.
|
|
3
|
+
*
|
|
4
|
+
* Now integrates with ToolPolicy for layered allow/deny resolution
|
|
5
|
+
* and sandbox-aware tool filtering.
|
|
6
|
+
*/
|
|
7
|
+
import type { Tool, ToolGroup, ToolProfile } from './tool.js';
|
|
8
|
+
import { ToolPolicy, type ToolPolicyConfig } from './policy.js';
|
|
9
|
+
export declare class ToolRegistry {
|
|
10
|
+
private tools;
|
|
11
|
+
private profile;
|
|
12
|
+
private denyList;
|
|
13
|
+
private allowList;
|
|
14
|
+
private toolPolicy;
|
|
15
|
+
private inSandbox;
|
|
16
|
+
/** Set the active tool profile. */
|
|
17
|
+
setProfile(profile: ToolProfile): void;
|
|
18
|
+
/** Set the deny list (tool names that are always blocked). */
|
|
19
|
+
setDenyList(names: string[]): void;
|
|
20
|
+
/** Set the allow list (overrides profile restrictions). */
|
|
21
|
+
setAllowList(names: string[]): void;
|
|
22
|
+
/** Set the ToolPolicy for layered allow/deny resolution. */
|
|
23
|
+
setToolPolicy(policy: ToolPolicy): void;
|
|
24
|
+
/** Create and set a ToolPolicy from config. */
|
|
25
|
+
setToolPolicyFromConfig(config: ToolPolicyConfig): void;
|
|
26
|
+
/** Set whether tools are executing inside a sandbox. */
|
|
27
|
+
setSandboxMode(inSandbox: boolean): void;
|
|
28
|
+
/** Get the current ToolPolicy (if set). */
|
|
29
|
+
getToolPolicy(): ToolPolicy | null;
|
|
30
|
+
/** Register a tool. */
|
|
31
|
+
register(tool: Tool): void;
|
|
32
|
+
/** Register multiple tools at once. */
|
|
33
|
+
registerAll(tools: Tool[]): void;
|
|
34
|
+
/** Unregister a tool by name. */
|
|
35
|
+
unregister(name: string): boolean;
|
|
36
|
+
/** Get a tool by name (returns undefined if not found or denied). */
|
|
37
|
+
getTool(name: string): Tool | undefined;
|
|
38
|
+
/** Check if a tool is active under the current profile + policy. */
|
|
39
|
+
private isToolActive;
|
|
40
|
+
/** Get all currently active tools (respecting profile + policy). */
|
|
41
|
+
getActiveTools(): Tool[];
|
|
42
|
+
/** Get all registered tools (ignoring policy). */
|
|
43
|
+
getAllTools(): Tool[];
|
|
44
|
+
/** Get tools in a specific group. */
|
|
45
|
+
getToolsByGroup(group: ToolGroup): Tool[];
|
|
46
|
+
/**
|
|
47
|
+
* Explain why a tool is allowed or blocked.
|
|
48
|
+
* Returns a human-readable explanation string.
|
|
49
|
+
*/
|
|
50
|
+
explainTool(name: string): string;
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/tools/registry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,KAAK,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAShE,qBAAa,YAAY;IACvB,OAAO,CAAC,KAAK,CAA2B;IACxC,OAAO,CAAC,OAAO,CAAuB;IACtC,OAAO,CAAC,QAAQ,CAAqB;IACrC,OAAO,CAAC,SAAS,CAAqB;IACtC,OAAO,CAAC,UAAU,CAA2B;IAC7C,OAAO,CAAC,SAAS,CAAkB;IAEnC,mCAAmC;IACnC,UAAU,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;IAItC,8DAA8D;IAC9D,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI;IAIlC,2DAA2D;IAC3D,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI;IAInC,4DAA4D;IAC5D,aAAa,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI;IAIvC,+CAA+C;IAC/C,uBAAuB,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI;IAIvD,wDAAwD;IACxD,cAAc,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI;IAIxC,2CAA2C;IAC3C,aAAa,IAAI,UAAU,GAAG,IAAI;IAIlC,uBAAuB;IACvB,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAI1B,uCAAuC;IACvC,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI;IAMhC,iCAAiC;IACjC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAIjC,qEAAqE;IACrE,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS;IAevC,oEAAoE;IACpE,OAAO,CAAC,YAAY;IAQpB,oEAAoE;IACpE,cAAc,IAAI,IAAI,EAAE;IAWxB,kDAAkD;IAClD,WAAW,IAAI,IAAI,EAAE;IAIrB,qCAAqC;IACrC,eAAe,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,EAAE;IAIzC;;;OAGG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;CA6ClC"}
|