@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,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Doctor — kernel health checker and repair tool.
|
|
3
|
+
*
|
|
4
|
+
* Runs a series of health checks and optionally auto-repairs issues.
|
|
5
|
+
*
|
|
6
|
+
* Usage:
|
|
7
|
+
* tako doctor # Interactive health check
|
|
8
|
+
* tako doctor --yes # Auto-accept repairs
|
|
9
|
+
* tako doctor --deep # Full system scan
|
|
10
|
+
*/
|
|
11
|
+
export class Doctor {
|
|
12
|
+
checks = [];
|
|
13
|
+
/** Register a health check. */
|
|
14
|
+
addCheck(check) {
|
|
15
|
+
this.checks.push(check);
|
|
16
|
+
}
|
|
17
|
+
/** Run all health checks. */
|
|
18
|
+
async run(config, opts) {
|
|
19
|
+
const results = [];
|
|
20
|
+
for (const check of this.checks) {
|
|
21
|
+
try {
|
|
22
|
+
const result = await check(config);
|
|
23
|
+
results.push(result);
|
|
24
|
+
}
|
|
25
|
+
catch (err) {
|
|
26
|
+
results.push({
|
|
27
|
+
name: 'unknown',
|
|
28
|
+
status: 'error',
|
|
29
|
+
message: `Check threw: ${err}`,
|
|
30
|
+
repairable: false,
|
|
31
|
+
});
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return results;
|
|
35
|
+
}
|
|
36
|
+
/** Print results to stdout. */
|
|
37
|
+
printResults(results) {
|
|
38
|
+
const icons = {
|
|
39
|
+
ok: '[OK]',
|
|
40
|
+
warn: '[WARN]',
|
|
41
|
+
error: '[ERR]',
|
|
42
|
+
};
|
|
43
|
+
for (const r of results) {
|
|
44
|
+
console.log(` ${icons[r.status]} ${r.name}: ${r.message}`);
|
|
45
|
+
}
|
|
46
|
+
const errors = results.filter((r) => r.status === 'error');
|
|
47
|
+
const warns = results.filter((r) => r.status === 'warn');
|
|
48
|
+
console.log(`\n ${results.length} checks, ${errors.length} errors, ${warns.length} warnings`);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=doctor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/doctor/doctor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAsBH,MAAM,OAAO,MAAM;IACT,MAAM,GAAkB,EAAE,CAAC;IAEnC,+BAA+B;IAC/B,QAAQ,CAAC,KAAkB;QACzB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;IAED,6BAA6B;IAC7B,KAAK,CAAC,GAAG,CAAC,MAAkB,EAAE,IAA0B;QACtD,MAAM,OAAO,GAAkB,EAAE,CAAC;QAElC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChC,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,CAAC;gBACnC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACvB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,OAAO,CAAC,IAAI,CAAC;oBACX,IAAI,EAAE,SAAS;oBACf,MAAM,EAAE,OAAO;oBACf,OAAO,EAAE,gBAAgB,GAAG,EAAE;oBAC9B,UAAU,EAAE,KAAK;iBAClB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,+BAA+B;IAC/B,YAAY,CAAC,OAAsB;QACjC,MAAM,KAAK,GAAgC;YACzC,EAAE,EAAE,MAAM;YACV,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,OAAO;SACf,CAAC;QAEF,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QAC9D,CAAC;QAED,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC;QAC3D,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;QACzD,OAAO,CAAC,GAAG,CACT,OAAO,OAAO,CAAC,MAAM,YAAY,MAAM,CAAC,MAAM,YAAY,KAAK,CAAC,MAAM,WAAW,CAClF,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auto-repair actions for the doctor.
|
|
3
|
+
*/
|
|
4
|
+
/** Ensure a directory exists with correct permissions. */
|
|
5
|
+
export declare function ensureDir(path: string, mode?: number): Promise<void>;
|
|
6
|
+
/** Create a missing workspace file with default content. */
|
|
7
|
+
export declare function createDefaultFile(workspacePath: string, filename: string, content: string): Promise<void>;
|
|
8
|
+
/** Fix file permissions (e.g. config should be 600). */
|
|
9
|
+
export declare function fixPermissions(path: string, mode: number): Promise<void>;
|
|
10
|
+
/** Rebuild a corrupted vector index. */
|
|
11
|
+
export declare function rebuildVectorIndex(_workspacePath: string): Promise<void>;
|
|
12
|
+
/** Generate a random auth token. */
|
|
13
|
+
export declare function generateAuthToken(): string;
|
|
14
|
+
//# sourceMappingURL=repairs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repairs.d.ts","sourceRoot":"","sources":["../../src/doctor/repairs.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,0DAA0D;AAC1D,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAK1E;AAED,4DAA4D;AAC5D,wBAAsB,iBAAiB,CACrC,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC,CAGf;AAED,wDAAwD;AACxD,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE9E;AAED,wCAAwC;AACxC,wBAAsB,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE9E;AAED,oCAAoC;AACpC,wBAAgB,iBAAiB,IAAI,MAAM,CAM1C"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auto-repair actions for the doctor.
|
|
3
|
+
*/
|
|
4
|
+
import { mkdir, writeFile, chmod } from 'node:fs/promises';
|
|
5
|
+
import { join } from 'node:path';
|
|
6
|
+
/** Ensure a directory exists with correct permissions. */
|
|
7
|
+
export async function ensureDir(path, mode) {
|
|
8
|
+
await mkdir(path, { recursive: true });
|
|
9
|
+
if (mode !== undefined) {
|
|
10
|
+
await chmod(path, mode);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
/** Create a missing workspace file with default content. */
|
|
14
|
+
export async function createDefaultFile(workspacePath, filename, content) {
|
|
15
|
+
const filePath = join(workspacePath, filename);
|
|
16
|
+
await writeFile(filePath, content, 'utf-8');
|
|
17
|
+
}
|
|
18
|
+
/** Fix file permissions (e.g. config should be 600). */
|
|
19
|
+
export async function fixPermissions(path, mode) {
|
|
20
|
+
await chmod(path, mode);
|
|
21
|
+
}
|
|
22
|
+
/** Rebuild a corrupted vector index. */
|
|
23
|
+
export async function rebuildVectorIndex(_workspacePath) {
|
|
24
|
+
// TODO: Clear and re-index all workspace files
|
|
25
|
+
}
|
|
26
|
+
/** Generate a random auth token. */
|
|
27
|
+
export function generateAuthToken() {
|
|
28
|
+
const bytes = new Uint8Array(32);
|
|
29
|
+
crypto.getRandomValues(bytes);
|
|
30
|
+
return Array.from(bytes)
|
|
31
|
+
.map((b) => b.toString(16).padStart(2, '0'))
|
|
32
|
+
.join('');
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=repairs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repairs.js","sourceRoot":"","sources":["../../src/doctor/repairs.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,0DAA0D;AAC1D,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAY,EAAE,IAAa;IACzD,MAAM,KAAK,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACvC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,MAAM,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC1B,CAAC;AACH,CAAC;AAED,4DAA4D;AAC5D,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,aAAqB,EACrB,QAAgB,EAChB,OAAe;IAEf,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;IAC/C,MAAM,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AAC9C,CAAC;AAED,wDAAwD;AACxD,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAAY,EAAE,IAAY;IAC7D,MAAM,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,wCAAwC;AACxC,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,cAAsB;IAC7D,+CAA+C;AACjD,CAAC;AAED,oCAAoC;AACpC,MAAM,UAAU,iBAAiB;IAC/B,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;IACjC,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;IAC9B,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;SACrB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;SAC3C,IAAI,CAAC,EAAE,CAAC,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session compaction — auto-compact sessions when context gets large.
|
|
3
|
+
*
|
|
4
|
+
* Implements the reference runtime compaction pattern:
|
|
5
|
+
* - Token estimation with configurable threshold
|
|
6
|
+
* - Summarize older messages before replacing them
|
|
7
|
+
* - Memory flush before compaction (save important context)
|
|
8
|
+
* - Integrates with ContextManager for token counting
|
|
9
|
+
*/
|
|
10
|
+
import type { SessionConfig } from '../config/schema.js';
|
|
11
|
+
import type { Session, SessionManager } from './session.js';
|
|
12
|
+
import type { ContextManager } from '../core/context.js';
|
|
13
|
+
import type { Provider } from '../providers/provider.js';
|
|
14
|
+
import type { HookSystem } from '../hooks/types.js';
|
|
15
|
+
export interface CompactionResult {
|
|
16
|
+
sessionId: string;
|
|
17
|
+
messagesBefore: number;
|
|
18
|
+
messagesAfter: number;
|
|
19
|
+
estimatedTokensBefore: number;
|
|
20
|
+
estimatedTokensAfter: number;
|
|
21
|
+
compactionCount: number;
|
|
22
|
+
timestamp: Date;
|
|
23
|
+
}
|
|
24
|
+
export declare class SessionCompactor {
|
|
25
|
+
private config;
|
|
26
|
+
private contextManager;
|
|
27
|
+
private sessions;
|
|
28
|
+
private provider;
|
|
29
|
+
private hooks;
|
|
30
|
+
constructor(config: SessionConfig, contextManager: ContextManager, sessions: SessionManager, provider?: Provider, hooks?: HookSystem);
|
|
31
|
+
/**
|
|
32
|
+
* Check if a session needs compaction based on token threshold.
|
|
33
|
+
* Uses the context manager's token estimation.
|
|
34
|
+
*/
|
|
35
|
+
needsCompaction(session: Session): boolean;
|
|
36
|
+
/**
|
|
37
|
+
* Build a summary of messages being compacted.
|
|
38
|
+
* Extracts key topics and tool calls from the conversation.
|
|
39
|
+
*/
|
|
40
|
+
private buildSummary;
|
|
41
|
+
/**
|
|
42
|
+
* Build a rich summary using the LLM itself.
|
|
43
|
+
* Falls back to heuristic summary if provider is unavailable.
|
|
44
|
+
*/
|
|
45
|
+
private buildSmartSummary;
|
|
46
|
+
/**
|
|
47
|
+
* Compact a session by summarizing older messages.
|
|
48
|
+
* Keeps the most recent messages intact and replaces older ones
|
|
49
|
+
* with a structured summary.
|
|
50
|
+
*/
|
|
51
|
+
compact(session: Session, keepLast?: number): Promise<CompactionResult>;
|
|
52
|
+
/**
|
|
53
|
+
* Run compaction check before sending to the model.
|
|
54
|
+
* Called from the agent loop before each inference cycle.
|
|
55
|
+
*/
|
|
56
|
+
checkAndCompact(session: Session): Promise<CompactionResult | null>;
|
|
57
|
+
/**
|
|
58
|
+
* Prune old completed sub-agent sessions.
|
|
59
|
+
* Removes sessions marked as completed that are older than pruneAfterDays.
|
|
60
|
+
*/
|
|
61
|
+
pruneOldSessions(): Promise<number>;
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=compaction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compaction.d.ts","sourceRoot":"","sources":["../../src/gateway/compaction.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAe,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,IAAI,CAAC;CACjB;AAED,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,QAAQ,CAAiB;IACjC,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,KAAK,CAAoB;gBAG/B,MAAM,EAAE,aAAa,EACrB,cAAc,EAAE,cAAc,EAC9B,QAAQ,EAAE,cAAc,EACxB,QAAQ,CAAC,EAAE,QAAQ,EACnB,KAAK,CAAC,EAAE,UAAU;IASpB;;;OAGG;IACH,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO;IAK1C;;;OAGG;IACH,OAAO,CAAC,YAAY;IAgDpB;;;OAGG;YACW,iBAAiB;IAwD/B;;;;OAIG;IACG,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,SAAK,GAAG,OAAO,CAAC,gBAAgB,CAAC;IA8EzE;;;OAGG;IACG,eAAe,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAKzE;;;OAGG;IACG,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC;CAsB1C"}
|
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session compaction — auto-compact sessions when context gets large.
|
|
3
|
+
*
|
|
4
|
+
* Implements the reference runtime compaction pattern:
|
|
5
|
+
* - Token estimation with configurable threshold
|
|
6
|
+
* - Summarize older messages before replacing them
|
|
7
|
+
* - Memory flush before compaction (save important context)
|
|
8
|
+
* - Integrates with ContextManager for token counting
|
|
9
|
+
*/
|
|
10
|
+
export class SessionCompactor {
|
|
11
|
+
config;
|
|
12
|
+
contextManager;
|
|
13
|
+
sessions;
|
|
14
|
+
provider;
|
|
15
|
+
hooks;
|
|
16
|
+
constructor(config, contextManager, sessions, provider, hooks) {
|
|
17
|
+
this.config = config;
|
|
18
|
+
this.contextManager = contextManager;
|
|
19
|
+
this.sessions = sessions;
|
|
20
|
+
this.provider = provider ?? null;
|
|
21
|
+
this.hooks = hooks ?? null;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Check if a session needs compaction based on token threshold.
|
|
25
|
+
* Uses the context manager's token estimation.
|
|
26
|
+
*/
|
|
27
|
+
needsCompaction(session) {
|
|
28
|
+
if (!this.config.compaction.auto)
|
|
29
|
+
return false;
|
|
30
|
+
return this.contextManager.needsCompaction(session.messages);
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Build a summary of messages being compacted.
|
|
34
|
+
* Extracts key topics and tool calls from the conversation.
|
|
35
|
+
*/
|
|
36
|
+
buildSummary(messages) {
|
|
37
|
+
const topics = [];
|
|
38
|
+
const toolsUsed = new Set();
|
|
39
|
+
let userQuestions = 0;
|
|
40
|
+
let assistantReplies = 0;
|
|
41
|
+
for (const msg of messages) {
|
|
42
|
+
if (msg.role === 'user') {
|
|
43
|
+
userQuestions++;
|
|
44
|
+
const text = typeof msg.content === 'string'
|
|
45
|
+
? msg.content
|
|
46
|
+
: msg.content.filter((p) => p.type === 'text').map((p) => p.text).join(' ');
|
|
47
|
+
// Capture first 80 chars of each user message as a topic hint
|
|
48
|
+
if (text.trim()) {
|
|
49
|
+
topics.push(text.trim().slice(0, 80));
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
else if (msg.role === 'assistant') {
|
|
53
|
+
assistantReplies++;
|
|
54
|
+
if (Array.isArray(msg.content)) {
|
|
55
|
+
for (const part of msg.content) {
|
|
56
|
+
if (part.type === 'tool_use') {
|
|
57
|
+
toolsUsed.add(part.name);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
const lines = [
|
|
64
|
+
`[Context compacted: ${messages.length} messages summarized]`,
|
|
65
|
+
`Exchanges: ${userQuestions} user messages, ${assistantReplies} assistant replies.`,
|
|
66
|
+
];
|
|
67
|
+
if (toolsUsed.size > 0) {
|
|
68
|
+
lines.push(`Tools used: ${[...toolsUsed].join(', ')}.`);
|
|
69
|
+
}
|
|
70
|
+
if (topics.length > 0) {
|
|
71
|
+
const topicSummary = topics.slice(0, 5).map((t) => `- ${t}`).join('\n');
|
|
72
|
+
lines.push(`Topics discussed:\n${topicSummary}`);
|
|
73
|
+
if (topics.length > 5) {
|
|
74
|
+
lines.push(` ...and ${topics.length - 5} more.`);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
return lines.join('\n');
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Build a rich summary using the LLM itself.
|
|
81
|
+
* Falls back to heuristic summary if provider is unavailable.
|
|
82
|
+
*/
|
|
83
|
+
async buildSmartSummary(messages) {
|
|
84
|
+
if (!this.provider) {
|
|
85
|
+
return this.buildSummary(messages);
|
|
86
|
+
}
|
|
87
|
+
try {
|
|
88
|
+
const conversationText = messages
|
|
89
|
+
.filter(m => m.role !== 'system')
|
|
90
|
+
.map(m => {
|
|
91
|
+
const content = typeof m.content === 'string'
|
|
92
|
+
? m.content
|
|
93
|
+
: m.content.filter(p => p.type === 'text').map(p => p.text).join(' ');
|
|
94
|
+
return `[${m.role}]: ${content.slice(0, 500)}`;
|
|
95
|
+
})
|
|
96
|
+
.join('\n');
|
|
97
|
+
// Truncate to avoid using too many tokens for the summary itself
|
|
98
|
+
const truncated = conversationText.slice(0, 8000);
|
|
99
|
+
const summaryMessages = [
|
|
100
|
+
{
|
|
101
|
+
role: 'system',
|
|
102
|
+
content: `You are a conversation summarizer. Produce a structured summary preserving:
|
|
103
|
+
- Key decisions made and their reasoning
|
|
104
|
+
- Files created, modified, or deleted (with paths)
|
|
105
|
+
- User preferences and requirements discovered
|
|
106
|
+
- Unresolved issues, bugs, or TODOs
|
|
107
|
+
- Technical context needed for future sessions
|
|
108
|
+
- Tools used and their outcomes
|
|
109
|
+
|
|
110
|
+
Format as a structured markdown summary. Be concise but preserve critical details.
|
|
111
|
+
Maximum 500 words.`,
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
role: 'user',
|
|
115
|
+
content: `Summarize this conversation:\n\n${truncated}`,
|
|
116
|
+
},
|
|
117
|
+
];
|
|
118
|
+
let summaryText = '';
|
|
119
|
+
for await (const chunk of this.provider.chat({
|
|
120
|
+
model: '',
|
|
121
|
+
messages: summaryMessages,
|
|
122
|
+
stream: true,
|
|
123
|
+
max_tokens: 1000,
|
|
124
|
+
})) {
|
|
125
|
+
if (chunk.text)
|
|
126
|
+
summaryText += chunk.text;
|
|
127
|
+
}
|
|
128
|
+
return `[Compaction Summary — LLM-generated]\n${summaryText}`;
|
|
129
|
+
}
|
|
130
|
+
catch (err) {
|
|
131
|
+
console.warn('[compaction] LLM summary failed, falling back to heuristic:', err);
|
|
132
|
+
return this.buildSummary(messages);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Compact a session by summarizing older messages.
|
|
137
|
+
* Keeps the most recent messages intact and replaces older ones
|
|
138
|
+
* with a structured summary.
|
|
139
|
+
*/
|
|
140
|
+
async compact(session, keepLast = 20) {
|
|
141
|
+
const messagesBefore = session.messages.length;
|
|
142
|
+
const estimatedTokensBefore = this.contextManager.estimateTokens(session.messages);
|
|
143
|
+
if (messagesBefore <= keepLast) {
|
|
144
|
+
return {
|
|
145
|
+
sessionId: session.id,
|
|
146
|
+
messagesBefore,
|
|
147
|
+
messagesAfter: messagesBefore,
|
|
148
|
+
estimatedTokensBefore,
|
|
149
|
+
estimatedTokensAfter: estimatedTokensBefore,
|
|
150
|
+
compactionCount: session.metadata.compactionCount ?? 0,
|
|
151
|
+
timestamp: new Date(),
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
// Emit before_compaction hook
|
|
155
|
+
if (this.hooks) {
|
|
156
|
+
await this.hooks.emit('before_compaction', {
|
|
157
|
+
event: 'before_compaction',
|
|
158
|
+
sessionId: session.id,
|
|
159
|
+
timestamp: Date.now(),
|
|
160
|
+
data: { session, messageCount: messagesBefore },
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
// Build summary from messages being trimmed
|
|
164
|
+
const messagesToTrim = session.messages.slice(0, messagesBefore - keepLast);
|
|
165
|
+
const summary = await this.buildSmartSummary(messagesToTrim);
|
|
166
|
+
// Replace old messages with summary + recent messages
|
|
167
|
+
const kept = session.messages.slice(-keepLast);
|
|
168
|
+
session.messages = [
|
|
169
|
+
{ role: 'system', content: summary },
|
|
170
|
+
...kept,
|
|
171
|
+
];
|
|
172
|
+
// Track compaction count
|
|
173
|
+
const compactionCount = (session.metadata.compactionCount ?? 0) + 1;
|
|
174
|
+
session.metadata.compactionCount = compactionCount;
|
|
175
|
+
session.metadata.lastCompactedAt = new Date().toISOString();
|
|
176
|
+
session.metadata.compactedMessageCount =
|
|
177
|
+
(session.metadata.compactedMessageCount ?? 0) + messagesToTrim.length;
|
|
178
|
+
// Persist via session manager
|
|
179
|
+
await this.sessions.compact(session.id, keepLast);
|
|
180
|
+
const estimatedTokensAfter = this.contextManager.estimateTokens(session.messages);
|
|
181
|
+
const result = {
|
|
182
|
+
sessionId: session.id,
|
|
183
|
+
messagesBefore,
|
|
184
|
+
messagesAfter: session.messages.length,
|
|
185
|
+
estimatedTokensBefore,
|
|
186
|
+
estimatedTokensAfter,
|
|
187
|
+
compactionCount,
|
|
188
|
+
timestamp: new Date(),
|
|
189
|
+
};
|
|
190
|
+
console.log(`[compaction] Session ${session.id} (#${compactionCount}): ` +
|
|
191
|
+
`${messagesBefore} → ${result.messagesAfter} messages, ` +
|
|
192
|
+
`~${estimatedTokensBefore} → ~${estimatedTokensAfter} tokens`);
|
|
193
|
+
// Emit after_compaction hook
|
|
194
|
+
if (this.hooks) {
|
|
195
|
+
await this.hooks.emit('after_compaction', {
|
|
196
|
+
event: 'after_compaction',
|
|
197
|
+
sessionId: session.id,
|
|
198
|
+
timestamp: Date.now(),
|
|
199
|
+
data: { session, result },
|
|
200
|
+
});
|
|
201
|
+
}
|
|
202
|
+
return result;
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Run compaction check before sending to the model.
|
|
206
|
+
* Called from the agent loop before each inference cycle.
|
|
207
|
+
*/
|
|
208
|
+
async checkAndCompact(session) {
|
|
209
|
+
if (!this.needsCompaction(session))
|
|
210
|
+
return null;
|
|
211
|
+
return this.compact(session);
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Prune old completed sub-agent sessions.
|
|
215
|
+
* Removes sessions marked as completed that are older than pruneAfterDays.
|
|
216
|
+
*/
|
|
217
|
+
async pruneOldSessions() {
|
|
218
|
+
const cutoff = new Date();
|
|
219
|
+
cutoff.setDate(cutoff.getDate() - this.config.pruneAfterDays);
|
|
220
|
+
let pruned = 0;
|
|
221
|
+
for (const session of this.sessions.list()) {
|
|
222
|
+
if (session.metadata.isSubAgent &&
|
|
223
|
+
session.metadata.completed &&
|
|
224
|
+
session.lastActiveAt < cutoff) {
|
|
225
|
+
this.sessions.delete(session.id);
|
|
226
|
+
pruned++;
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
if (pruned > 0) {
|
|
230
|
+
console.log(`[compaction] Pruned ${pruned} old sub-agent sessions`);
|
|
231
|
+
}
|
|
232
|
+
return pruned;
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
//# sourceMappingURL=compaction.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compaction.js","sourceRoot":"","sources":["../../src/gateway/compaction.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Gateway — WebSocket server + control plane.
|
|
3
|
+
*
|
|
4
|
+
* Single long-lived daemon process that manages all client connections,
|
|
5
|
+
* routes messages to the agent loop, and handles session lifecycle.
|
|
6
|
+
* Streams agent responses back through WebSocket as chunks.
|
|
7
|
+
*/
|
|
8
|
+
import type { GatewayConfig, HeartbeatConfig, SessionConfig } from '../config/schema.js';
|
|
9
|
+
import type { Channel, MessageHandler } from '../channels/channel.js';
|
|
10
|
+
import type { GatewayEvent, EventHandler } from './protocol.js';
|
|
11
|
+
import type { SessionManager } from './session.js';
|
|
12
|
+
import type { AgentLoop } from '../core/agent-loop.js';
|
|
13
|
+
import type { HookSystem } from '../hooks/types.js';
|
|
14
|
+
import type { SandboxManager } from '../sandbox/sandbox.js';
|
|
15
|
+
import { HeartbeatManager } from '../core/heartbeat.js';
|
|
16
|
+
import { SessionCompactor } from './compaction.js';
|
|
17
|
+
import type { ContextManager } from '../core/context.js';
|
|
18
|
+
import type { RetryQueue } from '../core/retry-queue.js';
|
|
19
|
+
import { ProgressTracker } from '../core/progress.js';
|
|
20
|
+
import type { Provider } from '../providers/provider.js';
|
|
21
|
+
export interface GatewayDeps {
|
|
22
|
+
sessions: SessionManager;
|
|
23
|
+
agentLoop?: AgentLoop;
|
|
24
|
+
hooks?: HookSystem;
|
|
25
|
+
sandboxManager?: SandboxManager;
|
|
26
|
+
contextManager?: ContextManager;
|
|
27
|
+
heartbeatConfig?: HeartbeatConfig;
|
|
28
|
+
sessionConfig?: SessionConfig;
|
|
29
|
+
workspaceRoot?: string;
|
|
30
|
+
retryQueue?: RetryQueue;
|
|
31
|
+
provider?: Provider;
|
|
32
|
+
}
|
|
33
|
+
export declare class Gateway {
|
|
34
|
+
private config;
|
|
35
|
+
private deps;
|
|
36
|
+
private lock;
|
|
37
|
+
private handlers;
|
|
38
|
+
private clients;
|
|
39
|
+
private wss;
|
|
40
|
+
private httpServer;
|
|
41
|
+
private running;
|
|
42
|
+
private heartbeatManager;
|
|
43
|
+
private compactor;
|
|
44
|
+
private progressTracker;
|
|
45
|
+
private statusInfo;
|
|
46
|
+
private dynamicChannels;
|
|
47
|
+
private defaultMessageRouter;
|
|
48
|
+
constructor(config: GatewayConfig, deps: GatewayDeps);
|
|
49
|
+
/** Get the heartbeat manager instance. */
|
|
50
|
+
getHeartbeatManager(): HeartbeatManager | null;
|
|
51
|
+
/** Get the session compactor instance. */
|
|
52
|
+
getCompactor(): SessionCompactor | null;
|
|
53
|
+
/** Get the progress tracker instance. */
|
|
54
|
+
getProgressTracker(): ProgressTracker | null;
|
|
55
|
+
/** Set the default message router for dynamic channels. */
|
|
56
|
+
setMessageRouter(router: MessageHandler): void;
|
|
57
|
+
/** Dynamically register a channel adapter (called by skills via hooks). */
|
|
58
|
+
registerChannel(channel: Channel, messageRouter: MessageHandler): Promise<void>;
|
|
59
|
+
/** Unregister and disconnect a dynamically loaded channel. */
|
|
60
|
+
unregisterChannel(channelId: string): Promise<void>;
|
|
61
|
+
/** List all dynamic channels. */
|
|
62
|
+
getDynamicChannels(): Channel[];
|
|
63
|
+
/** Start the WebSocket server. */
|
|
64
|
+
start(): Promise<void>;
|
|
65
|
+
/** Stop the gateway cleanly. */
|
|
66
|
+
stop(): Promise<void>;
|
|
67
|
+
isRunning(): boolean;
|
|
68
|
+
getSessions(): SessionManager;
|
|
69
|
+
/** Set runtime status info for TUI clients requesting status. */
|
|
70
|
+
setStatusInfo(info: {
|
|
71
|
+
model: string;
|
|
72
|
+
tools: number;
|
|
73
|
+
skills: number;
|
|
74
|
+
channels: string[];
|
|
75
|
+
}): void;
|
|
76
|
+
setAgentLoop(agentLoop: AgentLoop): void;
|
|
77
|
+
private handleClientMessage;
|
|
78
|
+
/** Stream agent response chunks back through WebSocket. */
|
|
79
|
+
private handleChat;
|
|
80
|
+
private sendToClient;
|
|
81
|
+
emitEvent(event: GatewayEvent): void;
|
|
82
|
+
on(eventType: string, handler: EventHandler): void;
|
|
83
|
+
/**
|
|
84
|
+
* Schedule a graceful restart.
|
|
85
|
+
*
|
|
86
|
+
* Behavior:
|
|
87
|
+
* 1) Persist restart note for post-restart delivery.
|
|
88
|
+
* 2) Spawn a detached `tako restart` equivalent via the current runtime
|
|
89
|
+
* (bun/node + current entrypoint), so relaunch is reliable and quick.
|
|
90
|
+
* 3) Exit current process with SIGTERM as a fallback and to flush state.
|
|
91
|
+
*/
|
|
92
|
+
private scheduleRestart;
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=gateway.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gateway.d.ts","sourceRoot":"","sources":["../../src/gateway/gateway.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAQH,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,aAAa,EAAc,MAAM,qBAAqB,CAAC;AACrG,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACtE,OAAO,KAAK,EAAgC,YAAY,EAAE,YAAY,EAAe,MAAM,eAAe,CAAC;AAC3G,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAUzD,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,cAAc,CAAC;IACzB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAED,qBAAa,OAAO;IAClB,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,IAAI,CAAc;IAC1B,OAAO,CAAC,IAAI,CAAc;IAC1B,OAAO,CAAC,QAAQ,CAAwC;IACxD,OAAO,CAAC,OAAO,CAAsC;IACrD,OAAO,CAAC,GAAG,CAAgC;IAC3C,OAAO,CAAC,UAAU,CAA2B;IAC7C,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,gBAAgB,CAAiC;IACzD,OAAO,CAAC,SAAS,CAAiC;IAClD,OAAO,CAAC,eAAe,CAAgC;IACvD,OAAO,CAAC,UAAU,CAAqF;IACvG,OAAO,CAAC,eAAe,CAAiB;IACxC,OAAO,CAAC,oBAAoB,CAA+B;gBAE/C,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,WAAW;IA2BpD,0CAA0C;IAC1C,mBAAmB,IAAI,gBAAgB,GAAG,IAAI;IAI9C,0CAA0C;IAC1C,YAAY,IAAI,gBAAgB,GAAG,IAAI;IAIvC,yCAAyC;IACzC,kBAAkB,IAAI,eAAe,GAAG,IAAI;IAI5C,2DAA2D;IAC3D,gBAAgB,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI;IAI9C,2EAA2E;IACrE,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;IAOrF,8DAA8D;IACxD,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUzD,iCAAiC;IACjC,kBAAkB,IAAI,OAAO,EAAE;IAI/B,kCAAkC;IAC5B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAuG5B,gCAAgC;IAC1B,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAoD3B,SAAS,IAAI,OAAO;IAIpB,WAAW,IAAI,cAAc;IAI7B,iEAAiE;IACjE,aAAa,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,IAAI;IAI/F,YAAY,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI;YAa1B,mBAAmB;IA6FjC,2DAA2D;YAC7C,UAAU;IAsFxB,OAAO,CAAC,YAAY;IAMpB,SAAS,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI;IASpC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,GAAG,IAAI;IAOlD;;;;;;;;OAQG;IACH,OAAO,CAAC,eAAe;CA8BxB"}
|