@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,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Per-agent model catalog — cache available models with metadata.
|
|
3
|
+
*
|
|
4
|
+
* Stored at: ~/.tako/agents/<id>/agent/models.json
|
|
5
|
+
*
|
|
6
|
+
* Populated during onboard or when the agent first queries models.
|
|
7
|
+
* Used by Model Picker and /models command.
|
|
8
|
+
* Refresh on demand via `tako models --refresh`.
|
|
9
|
+
*/
|
|
10
|
+
import { homedir } from 'node:os';
|
|
11
|
+
import { join } from 'node:path';
|
|
12
|
+
import { mkdir, readFile, writeFile } from 'node:fs/promises';
|
|
13
|
+
import { existsSync } from 'node:fs';
|
|
14
|
+
// ─── Paths ──────────────────────────────────────────────────────────
|
|
15
|
+
function getCatalogPath(agentId) {
|
|
16
|
+
return join(homedir(), '.tako', 'agents', agentId, 'agent', 'models.json');
|
|
17
|
+
}
|
|
18
|
+
// ─── Read / Write ───────────────────────────────────────────────────
|
|
19
|
+
export async function loadModelCatalog(agentId) {
|
|
20
|
+
const filePath = getCatalogPath(agentId);
|
|
21
|
+
if (!existsSync(filePath)) {
|
|
22
|
+
return { providers: {} };
|
|
23
|
+
}
|
|
24
|
+
try {
|
|
25
|
+
const raw = await readFile(filePath, 'utf-8');
|
|
26
|
+
return JSON.parse(raw);
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
return { providers: {} };
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
export async function saveModelCatalog(agentId, catalog) {
|
|
33
|
+
const filePath = getCatalogPath(agentId);
|
|
34
|
+
const dir = join(filePath, '..');
|
|
35
|
+
await mkdir(dir, { recursive: true });
|
|
36
|
+
await writeFile(filePath, JSON.stringify(catalog, null, 2) + '\n', 'utf-8');
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Update a single provider's model list in the catalog.
|
|
40
|
+
*/
|
|
41
|
+
export async function updateProviderModels(agentId, provider, models) {
|
|
42
|
+
const catalog = await loadModelCatalog(agentId);
|
|
43
|
+
catalog.providers[provider] = {
|
|
44
|
+
models,
|
|
45
|
+
lastRefreshed: new Date().toISOString(),
|
|
46
|
+
};
|
|
47
|
+
await saveModelCatalog(agentId, catalog);
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Get all models across all providers for an agent.
|
|
51
|
+
*/
|
|
52
|
+
export async function getAllModels(agentId) {
|
|
53
|
+
const catalog = await loadModelCatalog(agentId);
|
|
54
|
+
const result = [];
|
|
55
|
+
for (const [provider, data] of Object.entries(catalog.providers)) {
|
|
56
|
+
for (const model of data.models) {
|
|
57
|
+
result.push({ provider, model });
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
return result;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Find a specific model by ID across all providers.
|
|
64
|
+
*/
|
|
65
|
+
export async function findModel(agentId, modelId) {
|
|
66
|
+
const all = await getAllModels(agentId);
|
|
67
|
+
return all.find((m) => m.model.id === modelId) ?? null;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Seed the catalog with well-known Anthropic models.
|
|
71
|
+
*/
|
|
72
|
+
export function getDefaultAnthropicModels() {
|
|
73
|
+
return [
|
|
74
|
+
{ id: 'claude-sonnet-4-6', contextWindow: 200000, maxTokens: 8192, reasoning: false, input: ['text', 'image'] },
|
|
75
|
+
{ id: 'claude-haiku-4-5-20251001', contextWindow: 200000, maxTokens: 8192, reasoning: false, input: ['text', 'image'] },
|
|
76
|
+
{ id: 'claude-opus-4-6', contextWindow: 200000, maxTokens: 8192, reasoning: false, input: ['text', 'image'] },
|
|
77
|
+
];
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=model-catalog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-catalog.js","sourceRoot":"","sources":["../../src/agents/model-catalog.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent registry — manages multiple isolated agent brains.
|
|
3
|
+
*
|
|
4
|
+
* Each agent has its own workspace, state directory, session store,
|
|
5
|
+
* and config overrides. The "main" agent always exists.
|
|
6
|
+
*/
|
|
7
|
+
import type { AgentsConfig, AgentEntry } from '../config/schema.js';
|
|
8
|
+
import type { AgentDescriptor } from './config.js';
|
|
9
|
+
export declare class AgentRegistry {
|
|
10
|
+
private agents;
|
|
11
|
+
private baseDir;
|
|
12
|
+
private defaultModel;
|
|
13
|
+
private defaultWorkspace;
|
|
14
|
+
constructor(config: AgentsConfig, defaultModel: string);
|
|
15
|
+
/** Discover agents on disk that aren't in the config. */
|
|
16
|
+
private scanDiskAgents;
|
|
17
|
+
/** Build a resolved AgentDescriptor from a config entry. */
|
|
18
|
+
private buildDescriptor;
|
|
19
|
+
/** Initialize directories for all agents. */
|
|
20
|
+
initialize(): Promise<void>;
|
|
21
|
+
/**
|
|
22
|
+
* Bootstrap a full agent workspace with rich templates.
|
|
23
|
+
* Creates workspace directory, memory subdirectory, sessions directory,
|
|
24
|
+
* and writes all template files (AGENTS.md, SOUL.md, IDENTITY.md,
|
|
25
|
+
* USER.md, TOOLS.md, HEARTBEAT.md, BOOTSTRAP.md, memory/MEMORY.md).
|
|
26
|
+
* Never overwrites existing files.
|
|
27
|
+
*/
|
|
28
|
+
private ensureWorkspaceAndSessions;
|
|
29
|
+
/** Get an agent descriptor by ID. */
|
|
30
|
+
get(id: string): AgentDescriptor | undefined;
|
|
31
|
+
/** Get the main agent. */
|
|
32
|
+
getMain(): AgentDescriptor;
|
|
33
|
+
/** List all registered agents. */
|
|
34
|
+
list(): AgentDescriptor[];
|
|
35
|
+
/** Check if an agent exists. */
|
|
36
|
+
has(id: string): boolean;
|
|
37
|
+
/**
|
|
38
|
+
* Add a new agent at runtime.
|
|
39
|
+
* Creates workspace and state directories.
|
|
40
|
+
*/
|
|
41
|
+
add(entry: AgentEntry): Promise<AgentDescriptor>;
|
|
42
|
+
/**
|
|
43
|
+
* Remove an agent.
|
|
44
|
+
* Removes state directory but preserves workspace (user data).
|
|
45
|
+
*/
|
|
46
|
+
remove(id: string): Promise<boolean>;
|
|
47
|
+
/**
|
|
48
|
+
* Change an agent's role at runtime.
|
|
49
|
+
* Persists the change to agent.json.
|
|
50
|
+
*/
|
|
51
|
+
setRole(id: string, role: string): Promise<void>;
|
|
52
|
+
/** Get agent info as a summary object. */
|
|
53
|
+
info(id: string): Record<string, unknown> | undefined;
|
|
54
|
+
/**
|
|
55
|
+
* Load dynamically-added agents from the state directory.
|
|
56
|
+
* Agents added via `add()` persist an agent.json file.
|
|
57
|
+
*/
|
|
58
|
+
loadDynamic(): Promise<void>;
|
|
59
|
+
/**
|
|
60
|
+
* Save channel configuration for an agent.
|
|
61
|
+
* Stored in ~/.tako/agents/<id>/channels.json with restricted permissions (0600).
|
|
62
|
+
* Merges with existing config so multiple channel types can coexist.
|
|
63
|
+
*/
|
|
64
|
+
saveChannelConfig(agentId: string, channelType: string, config: Record<string, unknown>): Promise<void>;
|
|
65
|
+
/**
|
|
66
|
+
* Load channel configuration for an agent.
|
|
67
|
+
* Returns the parsed channels.json or null if not found.
|
|
68
|
+
*/
|
|
69
|
+
loadChannelConfig(agentId: string): Promise<Record<string, unknown> | null>;
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/agents/registry.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACpE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAWnD,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAsC;IACpD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,gBAAgB,CAAS;gBAErB,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM;IAuBtD,yDAAyD;IACzD,OAAO,CAAC,cAAc;IAiBtB,4DAA4D;IAC5D,OAAO,CAAC,eAAe;IAoBvB,6CAA6C;IACvC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAcjC;;;;;;OAMG;YACW,0BAA0B;IA8BxC,qCAAqC;IACrC,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS;IAI5C,0BAA0B;IAC1B,OAAO,IAAI,eAAe;IAI1B,kCAAkC;IAClC,IAAI,IAAI,eAAe,EAAE;IAIzB,gCAAgC;IAChC,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAIxB;;;OAGG;IACG,GAAG,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAAC,eAAe,CAAC;IAyBtD;;;OAGG;IACG,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAiB1C;;;OAGG;IACG,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqBtD,0CAA0C;IAC1C,IAAI,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS;IAiBrD;;;OAGG;IACG,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IA2BlC;;;;OAIG;IACG,iBAAiB,CACrB,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,OAAO,CAAC,IAAI,CAAC;IAuBhB;;;OAGG;IACG,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;CAclF"}
|
|
@@ -0,0 +1,297 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent registry — manages multiple isolated agent brains.
|
|
3
|
+
*
|
|
4
|
+
* Each agent has its own workspace, state directory, session store,
|
|
5
|
+
* and config overrides. The "main" agent always exists.
|
|
6
|
+
*/
|
|
7
|
+
import { mkdir, rm, readdir, writeFile, readFile, chmod } from 'node:fs/promises';
|
|
8
|
+
import { existsSync } from 'node:fs';
|
|
9
|
+
import { join } from 'node:path';
|
|
10
|
+
import { homedir } from 'node:os';
|
|
11
|
+
import { generateWorkspaceTemplates } from './templates.js';
|
|
12
|
+
/** Expand ~ to home directory. */
|
|
13
|
+
function expandHome(p) {
|
|
14
|
+
if (p.startsWith('~/') || p === '~') {
|
|
15
|
+
return join(homedir(), p.slice(1));
|
|
16
|
+
}
|
|
17
|
+
return p;
|
|
18
|
+
}
|
|
19
|
+
export class AgentRegistry {
|
|
20
|
+
agents = new Map();
|
|
21
|
+
baseDir;
|
|
22
|
+
defaultModel;
|
|
23
|
+
defaultWorkspace;
|
|
24
|
+
constructor(config, defaultModel) {
|
|
25
|
+
this.baseDir = expandHome('~/.tako/agents');
|
|
26
|
+
this.defaultModel = defaultModel;
|
|
27
|
+
this.defaultWorkspace = expandHome(config.defaults.workspace);
|
|
28
|
+
// Always register the "main" agent
|
|
29
|
+
this.agents.set('main', this.buildDescriptor({
|
|
30
|
+
id: 'main',
|
|
31
|
+
workspace: config.defaults.workspace,
|
|
32
|
+
model: config.defaults.model,
|
|
33
|
+
description: 'Primary Tako agent',
|
|
34
|
+
}, true));
|
|
35
|
+
// Register agents from config
|
|
36
|
+
for (const entry of config.list) {
|
|
37
|
+
if (entry.id === 'main')
|
|
38
|
+
continue; // Don't override main
|
|
39
|
+
this.agents.set(entry.id, this.buildDescriptor(entry, false));
|
|
40
|
+
}
|
|
41
|
+
// Scan ~/.tako/agents/ for agents created at runtime but not in config
|
|
42
|
+
this.scanDiskAgents();
|
|
43
|
+
}
|
|
44
|
+
/** Discover agents on disk that aren't in the config. */
|
|
45
|
+
scanDiskAgents() {
|
|
46
|
+
try {
|
|
47
|
+
const { readdirSync, readFileSync } = require('fs');
|
|
48
|
+
const entries = readdirSync(this.baseDir, { withFileTypes: true });
|
|
49
|
+
for (const entry of entries) {
|
|
50
|
+
if (!entry.isDirectory() || entry.name === 'main' || this.agents.has(entry.name))
|
|
51
|
+
continue;
|
|
52
|
+
const agentJsonPath = join(this.baseDir, entry.name, 'agent.json');
|
|
53
|
+
try {
|
|
54
|
+
const raw = readFileSync(agentJsonPath, 'utf-8');
|
|
55
|
+
const agentData = JSON.parse(raw);
|
|
56
|
+
agentData.id = agentData.id || entry.name;
|
|
57
|
+
this.agents.set(agentData.id, this.buildDescriptor(agentData, false));
|
|
58
|
+
}
|
|
59
|
+
catch { /* no agent.json or malformed */ }
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
catch { /* baseDir doesn't exist yet */ }
|
|
63
|
+
}
|
|
64
|
+
/** Build a resolved AgentDescriptor from a config entry. */
|
|
65
|
+
buildDescriptor(entry, isMain) {
|
|
66
|
+
const workspace = expandHome(entry.workspace ?? this.defaultWorkspace);
|
|
67
|
+
const stateDir = join(this.baseDir, entry.id);
|
|
68
|
+
const sessionDir = join(stateDir, 'sessions');
|
|
69
|
+
return {
|
|
70
|
+
id: entry.id,
|
|
71
|
+
workspace: isMain ? this.defaultWorkspace : workspace,
|
|
72
|
+
stateDir,
|
|
73
|
+
sessionDir,
|
|
74
|
+
model: entry.model?.primary ?? this.defaultModel,
|
|
75
|
+
bindings: entry.bindings ?? {},
|
|
76
|
+
canSpawn: entry.canSpawn ?? [],
|
|
77
|
+
description: entry.description ?? '',
|
|
78
|
+
isMain,
|
|
79
|
+
role: isMain ? 'admin' : (entry.role ?? 'standard'),
|
|
80
|
+
skills: entry.skills,
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
/** Initialize directories for all agents. */
|
|
84
|
+
async initialize() {
|
|
85
|
+
await mkdir(this.baseDir, { recursive: true });
|
|
86
|
+
for (const agent of this.agents.values()) {
|
|
87
|
+
await mkdir(agent.stateDir, { recursive: true });
|
|
88
|
+
await mkdir(agent.sessionDir, { recursive: true });
|
|
89
|
+
// Bootstrap workspace for non-main agents
|
|
90
|
+
if (!agent.isMain) {
|
|
91
|
+
await this.ensureWorkspaceAndSessions(agent);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Bootstrap a full agent workspace with rich templates.
|
|
97
|
+
* Creates workspace directory, memory subdirectory, sessions directory,
|
|
98
|
+
* and writes all template files (AGENTS.md, SOUL.md, IDENTITY.md,
|
|
99
|
+
* USER.md, TOOLS.md, HEARTBEAT.md, BOOTSTRAP.md, memory/MEMORY.md).
|
|
100
|
+
* Never overwrites existing files.
|
|
101
|
+
*/
|
|
102
|
+
async ensureWorkspaceAndSessions(agent) {
|
|
103
|
+
// Create workspace + memory + sessions dirs
|
|
104
|
+
await mkdir(agent.workspace, { recursive: true });
|
|
105
|
+
await mkdir(join(agent.workspace, 'memory'), { recursive: true });
|
|
106
|
+
await mkdir(agent.sessionDir, { recursive: true });
|
|
107
|
+
// Generate workspace templates for the new agent
|
|
108
|
+
const templates = generateWorkspaceTemplates({
|
|
109
|
+
agentId: agent.id,
|
|
110
|
+
description: agent.description || undefined,
|
|
111
|
+
model: agent.model,
|
|
112
|
+
role: agent.role,
|
|
113
|
+
});
|
|
114
|
+
// Write each template file (never overwrite existing)
|
|
115
|
+
for (const [relativePath, content] of Object.entries(templates)) {
|
|
116
|
+
const filePath = join(agent.workspace, relativePath);
|
|
117
|
+
if (!existsSync(filePath)) {
|
|
118
|
+
await writeFile(filePath, content, 'utf-8');
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
// Create today's daily log
|
|
122
|
+
const today = new Date().toISOString().slice(0, 10);
|
|
123
|
+
const dailyPath = join(agent.workspace, 'memory', `${today}.md`);
|
|
124
|
+
if (!existsSync(dailyPath)) {
|
|
125
|
+
await writeFile(dailyPath, `# Daily Log — ${today}\n\nAgent: ${agent.id}\n\n`, 'utf-8');
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
/** Get an agent descriptor by ID. */
|
|
129
|
+
get(id) {
|
|
130
|
+
return this.agents.get(id);
|
|
131
|
+
}
|
|
132
|
+
/** Get the main agent. */
|
|
133
|
+
getMain() {
|
|
134
|
+
return this.agents.get('main');
|
|
135
|
+
}
|
|
136
|
+
/** List all registered agents. */
|
|
137
|
+
list() {
|
|
138
|
+
return Array.from(this.agents.values());
|
|
139
|
+
}
|
|
140
|
+
/** Check if an agent exists. */
|
|
141
|
+
has(id) {
|
|
142
|
+
return this.agents.has(id);
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Add a new agent at runtime.
|
|
146
|
+
* Creates workspace and state directories.
|
|
147
|
+
*/
|
|
148
|
+
async add(entry) {
|
|
149
|
+
if (this.agents.has(entry.id)) {
|
|
150
|
+
throw new Error(`Agent already exists: ${entry.id}`);
|
|
151
|
+
}
|
|
152
|
+
if (entry.id === 'main') {
|
|
153
|
+
throw new Error('Cannot create an agent with reserved ID "main"');
|
|
154
|
+
}
|
|
155
|
+
const descriptor = this.buildDescriptor(entry, false);
|
|
156
|
+
// Create state directory + full workspace with rich templates
|
|
157
|
+
await mkdir(descriptor.stateDir, { recursive: true });
|
|
158
|
+
await this.ensureWorkspaceAndSessions(descriptor);
|
|
159
|
+
// Persist agent entry to state dir
|
|
160
|
+
await writeFile(join(descriptor.stateDir, 'agent.json'), JSON.stringify(entry, null, 2), 'utf-8');
|
|
161
|
+
this.agents.set(entry.id, descriptor);
|
|
162
|
+
return descriptor;
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Remove an agent.
|
|
166
|
+
* Removes state directory but preserves workspace (user data).
|
|
167
|
+
*/
|
|
168
|
+
async remove(id) {
|
|
169
|
+
if (id === 'main') {
|
|
170
|
+
throw new Error('Cannot remove the main agent');
|
|
171
|
+
}
|
|
172
|
+
const agent = this.agents.get(id);
|
|
173
|
+
if (!agent)
|
|
174
|
+
return false;
|
|
175
|
+
// Remove state directory (sessions, config)
|
|
176
|
+
if (existsSync(agent.stateDir)) {
|
|
177
|
+
await rm(agent.stateDir, { recursive: true, force: true });
|
|
178
|
+
}
|
|
179
|
+
this.agents.delete(id);
|
|
180
|
+
return true;
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Change an agent's role at runtime.
|
|
184
|
+
* Persists the change to agent.json.
|
|
185
|
+
*/
|
|
186
|
+
async setRole(id, role) {
|
|
187
|
+
if (id === 'main') {
|
|
188
|
+
throw new Error('Cannot change the main agent\'s role');
|
|
189
|
+
}
|
|
190
|
+
const agent = this.agents.get(id);
|
|
191
|
+
if (!agent) {
|
|
192
|
+
throw new Error(`Agent not found: ${id}`);
|
|
193
|
+
}
|
|
194
|
+
agent.role = role;
|
|
195
|
+
// Persist to agent.json
|
|
196
|
+
const agentJsonPath = join(agent.stateDir, 'agent.json');
|
|
197
|
+
if (existsSync(agentJsonPath)) {
|
|
198
|
+
const raw = await readFile(agentJsonPath, 'utf-8');
|
|
199
|
+
const entry = JSON.parse(raw);
|
|
200
|
+
entry.role = role;
|
|
201
|
+
await writeFile(agentJsonPath, JSON.stringify(entry, null, 2), 'utf-8');
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
/** Get agent info as a summary object. */
|
|
205
|
+
info(id) {
|
|
206
|
+
const agent = this.agents.get(id);
|
|
207
|
+
if (!agent)
|
|
208
|
+
return undefined;
|
|
209
|
+
return {
|
|
210
|
+
id: agent.id,
|
|
211
|
+
workspace: agent.workspace,
|
|
212
|
+
stateDir: agent.stateDir,
|
|
213
|
+
sessionDir: agent.sessionDir,
|
|
214
|
+
model: agent.model,
|
|
215
|
+
bindings: agent.bindings,
|
|
216
|
+
canSpawn: agent.canSpawn,
|
|
217
|
+
description: agent.description,
|
|
218
|
+
isMain: agent.isMain,
|
|
219
|
+
};
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Load dynamically-added agents from the state directory.
|
|
223
|
+
* Agents added via `add()` persist an agent.json file.
|
|
224
|
+
*/
|
|
225
|
+
async loadDynamic() {
|
|
226
|
+
if (!existsSync(this.baseDir))
|
|
227
|
+
return;
|
|
228
|
+
let dirs;
|
|
229
|
+
try {
|
|
230
|
+
dirs = await readdir(this.baseDir);
|
|
231
|
+
}
|
|
232
|
+
catch {
|
|
233
|
+
return;
|
|
234
|
+
}
|
|
235
|
+
for (const dir of dirs) {
|
|
236
|
+
if (this.agents.has(dir))
|
|
237
|
+
continue;
|
|
238
|
+
if (dir === 'main')
|
|
239
|
+
continue;
|
|
240
|
+
const agentJsonPath = join(this.baseDir, dir, 'agent.json');
|
|
241
|
+
if (!existsSync(agentJsonPath))
|
|
242
|
+
continue;
|
|
243
|
+
try {
|
|
244
|
+
const raw = await readFile(agentJsonPath, 'utf-8');
|
|
245
|
+
const entry = JSON.parse(raw);
|
|
246
|
+
this.agents.set(entry.id, this.buildDescriptor(entry, false));
|
|
247
|
+
}
|
|
248
|
+
catch {
|
|
249
|
+
// Corrupt agent.json — skip
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* Save channel configuration for an agent.
|
|
255
|
+
* Stored in ~/.tako/agents/<id>/channels.json with restricted permissions (0600).
|
|
256
|
+
* Merges with existing config so multiple channel types can coexist.
|
|
257
|
+
*/
|
|
258
|
+
async saveChannelConfig(agentId, channelType, config) {
|
|
259
|
+
const agent = this.agents.get(agentId);
|
|
260
|
+
if (!agent) {
|
|
261
|
+
throw new Error(`Agent not found: ${agentId}`);
|
|
262
|
+
}
|
|
263
|
+
const channelsPath = join(agent.stateDir, 'channels.json');
|
|
264
|
+
// Load existing config or start fresh
|
|
265
|
+
let existing = {};
|
|
266
|
+
if (existsSync(channelsPath)) {
|
|
267
|
+
try {
|
|
268
|
+
const raw = await readFile(channelsPath, 'utf-8');
|
|
269
|
+
existing = JSON.parse(raw);
|
|
270
|
+
}
|
|
271
|
+
catch { /* start fresh */ }
|
|
272
|
+
}
|
|
273
|
+
existing[channelType] = config;
|
|
274
|
+
await writeFile(channelsPath, JSON.stringify(existing, null, 2), 'utf-8');
|
|
275
|
+
await chmod(channelsPath, 0o600);
|
|
276
|
+
}
|
|
277
|
+
/**
|
|
278
|
+
* Load channel configuration for an agent.
|
|
279
|
+
* Returns the parsed channels.json or null if not found.
|
|
280
|
+
*/
|
|
281
|
+
async loadChannelConfig(agentId) {
|
|
282
|
+
const agent = this.agents.get(agentId);
|
|
283
|
+
if (!agent)
|
|
284
|
+
return null;
|
|
285
|
+
const channelsPath = join(agent.stateDir, 'channels.json');
|
|
286
|
+
if (!existsSync(channelsPath))
|
|
287
|
+
return null;
|
|
288
|
+
try {
|
|
289
|
+
const raw = await readFile(channelsPath, 'utf-8');
|
|
290
|
+
return JSON.parse(raw);
|
|
291
|
+
}
|
|
292
|
+
catch {
|
|
293
|
+
return null;
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
}
|
|
297
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/agents/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent permission roles for Tako.
|
|
3
|
+
*
|
|
4
|
+
* The root agent (created at first onboarding) has admin permissions.
|
|
5
|
+
* Sub-agents are created with a specific role that limits what they can do.
|
|
6
|
+
*
|
|
7
|
+
* Predefined roles:
|
|
8
|
+
* admin — full control: create/delete agents, manage roles, all tools, config
|
|
9
|
+
* operator — manage agents and run all tools, but can't change roles or config
|
|
10
|
+
* editor — read/write files, safe commands, no exec or config changes
|
|
11
|
+
* standard — use all tools, can spawn sub-agents from its allowlist
|
|
12
|
+
* viewer — read-only access, search and memory tools
|
|
13
|
+
* restricted — limited tools (no exec, no file write outside workspace)
|
|
14
|
+
* readonly — can only read files and respond, no side effects
|
|
15
|
+
*
|
|
16
|
+
* Per-user role overrides: map platform user IDs to specific roles.
|
|
17
|
+
* Config: agents.list[].roles: { default: RoleName; users?: Record<string, RoleName> }
|
|
18
|
+
*
|
|
19
|
+
* Custom roles can be created by the root agent at runtime.
|
|
20
|
+
*/
|
|
21
|
+
export type RoleName = 'admin' | 'operator' | 'editor' | 'standard' | 'viewer' | 'restricted' | 'readonly';
|
|
22
|
+
export interface AgentRole {
|
|
23
|
+
/** Role identifier. */
|
|
24
|
+
name: string;
|
|
25
|
+
/** Human-readable description. */
|
|
26
|
+
description: string;
|
|
27
|
+
/** Tool allowlist (empty = all tools). Checked at execution time. */
|
|
28
|
+
allowTools: string[];
|
|
29
|
+
/** Tool denylist (takes priority over allow). */
|
|
30
|
+
denyTools: string[];
|
|
31
|
+
/** Can this agent create other agents? */
|
|
32
|
+
canCreateAgents: boolean;
|
|
33
|
+
/** Can this agent delete other agents? */
|
|
34
|
+
canDeleteAgents: boolean;
|
|
35
|
+
/** Can this agent change roles of other agents? */
|
|
36
|
+
canManageRoles: boolean;
|
|
37
|
+
/** Can this agent modify Tako config? */
|
|
38
|
+
canEditConfig: boolean;
|
|
39
|
+
/** Can this agent use exec/shell tools? */
|
|
40
|
+
canExec: boolean;
|
|
41
|
+
/** Can this agent write files outside its workspace? */
|
|
42
|
+
canWriteGlobal: boolean;
|
|
43
|
+
/** Can this agent connect to channels? */
|
|
44
|
+
canBindChannels: boolean;
|
|
45
|
+
}
|
|
46
|
+
/** Per-agent role configuration with per-user overrides. */
|
|
47
|
+
export interface AgentRoleConfig {
|
|
48
|
+
/** Default role for this agent. */
|
|
49
|
+
default: RoleName;
|
|
50
|
+
/** Per-user role overrides (keyed by platform user ID, e.g. Discord or Telegram ID). */
|
|
51
|
+
users?: Record<string, RoleName>;
|
|
52
|
+
}
|
|
53
|
+
/** Predefined roles. */
|
|
54
|
+
export declare const PREDEFINED_ROLES: Record<string, AgentRole>;
|
|
55
|
+
/** Check if a tool call is allowed for a given role. */
|
|
56
|
+
export declare function isToolAllowed(role: AgentRole, toolName: string): boolean;
|
|
57
|
+
/** Get a role by name (predefined or custom). */
|
|
58
|
+
export declare function getRole(name: string, customRoles?: Record<string, AgentRole>): AgentRole | null;
|
|
59
|
+
/** List all available role names. */
|
|
60
|
+
export declare function listRoles(customRoles?: Record<string, AgentRole>): string[];
|
|
61
|
+
/**
|
|
62
|
+
* Resolve the effective role for a user interacting with an agent.
|
|
63
|
+
*
|
|
64
|
+
* Resolution order:
|
|
65
|
+
* 1. Per-user override in AgentRoleConfig.users
|
|
66
|
+
* 2. Agent's default role (AgentRoleConfig.default)
|
|
67
|
+
* 3. Fallback to 'standard'
|
|
68
|
+
*/
|
|
69
|
+
export declare function resolveUserRole(roleConfig: AgentRoleConfig | undefined, userId?: string, customRoles?: Record<string, AgentRole>): AgentRole;
|
|
70
|
+
/**
|
|
71
|
+
* Check if a tool call is allowed for a specific user on a specific agent.
|
|
72
|
+
* Convenience function that resolves the role and checks in one call.
|
|
73
|
+
*/
|
|
74
|
+
export declare function checkToolPermission(toolName: string, roleConfig: AgentRoleConfig | undefined, userId?: string, customRoles?: Record<string, AgentRole>): {
|
|
75
|
+
allowed: boolean;
|
|
76
|
+
role: AgentRole;
|
|
77
|
+
reason?: string;
|
|
78
|
+
};
|
|
79
|
+
//# sourceMappingURL=roles.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"roles.d.ts","sourceRoot":"","sources":["../../src/agents/roles.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,UAAU,GAAG,QAAQ,GAAG,UAAU,GAAG,QAAQ,GAAG,YAAY,GAAG,UAAU,CAAC;AAE3G,MAAM,WAAW,SAAS;IACxB,uBAAuB;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,kCAAkC;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,qEAAqE;IACrE,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,iDAAiD;IACjD,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,0CAA0C;IAC1C,eAAe,EAAE,OAAO,CAAC;IACzB,0CAA0C;IAC1C,eAAe,EAAE,OAAO,CAAC;IACzB,mDAAmD;IACnD,cAAc,EAAE,OAAO,CAAC;IACxB,yCAAyC;IACzC,aAAa,EAAE,OAAO,CAAC;IACvB,2CAA2C;IAC3C,OAAO,EAAE,OAAO,CAAC;IACjB,wDAAwD;IACxD,cAAc,EAAE,OAAO,CAAC;IACxB,0CAA0C;IAC1C,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED,4DAA4D;AAC5D,MAAM,WAAW,eAAe;IAC9B,mCAAmC;IACnC,OAAO,EAAE,QAAQ,CAAC;IAClB,wFAAwF;IACxF,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;CAClC;AAED,wBAAwB;AACxB,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CA+FtD,CAAC;AAEF,wDAAwD;AACxD,wBAAgB,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAOxE;AAED,iDAAiD;AACjD,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,SAAS,GAAG,IAAI,CAE/F;AAED,qCAAqC;AACrC,wBAAgB,SAAS,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,MAAM,EAAE,CAE3E;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,UAAU,EAAE,eAAe,GAAG,SAAS,EACvC,MAAM,CAAC,EAAE,MAAM,EACf,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GACtC,SAAS,CAcX;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,eAAe,GAAG,SAAS,EACvC,MAAM,CAAC,EAAE,MAAM,EACf,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GACtC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,IAAI,EAAE,SAAS,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAYxD"}
|