@su-record/vibe 2.7.6 → 2.7.8
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/.env.example +37 -37
- package/CLAUDE.md +222 -222
- package/LICENSE +21 -21
- package/README.md +580 -580
- package/agents/architect-low.md +41 -41
- package/agents/architect-medium.md +59 -59
- package/agents/architect.md +80 -80
- package/agents/build-error-resolver.md +115 -115
- package/agents/compounder.md +261 -261
- package/agents/diagrammer.md +178 -178
- package/agents/docs/api-documenter.md +99 -99
- package/agents/docs/changelog-writer.md +93 -93
- package/agents/e2e-tester.md +266 -266
- package/agents/explorer-low.md +42 -42
- package/agents/explorer-medium.md +59 -59
- package/agents/explorer.md +48 -48
- package/agents/implementer-low.md +43 -43
- package/agents/implementer-medium.md +52 -52
- package/agents/implementer.md +54 -54
- package/agents/junior-mentor.md +141 -141
- package/agents/planning/requirements-analyst.md +84 -84
- package/agents/planning/ux-advisor.md +83 -83
- package/agents/qa/acceptance-tester.md +86 -86
- package/agents/qa/edge-case-finder.md +93 -93
- package/agents/refactor-cleaner.md +143 -143
- package/agents/research/best-practices-agent.md +199 -199
- package/agents/research/codebase-patterns-agent.md +157 -157
- package/agents/research/framework-docs-agent.md +188 -188
- package/agents/research/security-advisory-agent.md +213 -213
- package/agents/review/architecture-reviewer.md +107 -107
- package/agents/review/complexity-reviewer.md +116 -116
- package/agents/review/data-integrity-reviewer.md +88 -88
- package/agents/review/git-history-reviewer.md +103 -103
- package/agents/review/performance-reviewer.md +86 -86
- package/agents/review/python-reviewer.md +150 -150
- package/agents/review/rails-reviewer.md +139 -139
- package/agents/review/react-reviewer.md +144 -144
- package/agents/review/security-reviewer.md +80 -80
- package/agents/review/simplicity-reviewer.md +140 -140
- package/agents/review/test-coverage-reviewer.md +116 -116
- package/agents/review/typescript-reviewer.md +127 -127
- package/agents/searcher.md +54 -54
- package/agents/simplifier.md +120 -120
- package/agents/tester.md +49 -49
- package/agents/ui/ui-a11y-auditor.md +93 -93
- package/agents/ui/ui-antipattern-detector.md +94 -94
- package/agents/ui/ui-dataviz-advisor.md +69 -69
- package/agents/ui/ui-design-system-gen.md +57 -57
- package/agents/ui/ui-industry-analyzer.md +49 -49
- package/agents/ui/ui-layout-architect.md +65 -65
- package/agents/ui/ui-stack-implementer.md +68 -68
- package/agents/ui/ux-compliance-reviewer.md +81 -81
- package/agents/ui-previewer.md +260 -260
- package/commands/vibe.spec.review.md +558 -558
- package/commands/vibe.utils.md +413 -413
- package/commands/vibe.voice.md +79 -79
- package/dist/agent/AgentLoop.d.ts +97 -0
- package/dist/agent/AgentLoop.d.ts.map +1 -0
- package/dist/agent/AgentLoop.js +546 -0
- package/dist/agent/AgentLoop.js.map +1 -0
- package/dist/agent/ConversationState.d.ts +29 -0
- package/dist/agent/ConversationState.d.ts.map +1 -0
- package/dist/agent/ConversationState.js +107 -0
- package/dist/agent/ConversationState.js.map +1 -0
- package/dist/agent/ConversationStore.d.ts +31 -0
- package/dist/agent/ConversationStore.d.ts.map +1 -0
- package/dist/agent/ConversationStore.integration.test.d.ts +2 -0
- package/dist/agent/ConversationStore.integration.test.d.ts.map +1 -0
- package/dist/agent/ConversationStore.integration.test.js +162 -0
- package/dist/agent/ConversationStore.integration.test.js.map +1 -0
- package/dist/agent/ConversationStore.js +126 -0
- package/dist/agent/ConversationStore.js.map +1 -0
- package/dist/agent/ConversationStore.test.d.ts +2 -0
- package/dist/agent/ConversationStore.test.d.ts.map +1 -0
- package/dist/agent/ConversationStore.test.js +93 -0
- package/dist/agent/ConversationStore.test.js.map +1 -0
- package/dist/agent/HeadModelSelector.d.ts +36 -0
- package/dist/agent/HeadModelSelector.d.ts.map +1 -0
- package/dist/agent/HeadModelSelector.js +124 -0
- package/dist/agent/HeadModelSelector.js.map +1 -0
- package/dist/agent/RateLimiter.d.ts +44 -0
- package/dist/agent/RateLimiter.d.ts.map +1 -0
- package/dist/agent/RateLimiter.js +71 -0
- package/dist/agent/RateLimiter.js.map +1 -0
- package/dist/agent/SystemPrompt.d.ts +35 -0
- package/dist/agent/SystemPrompt.d.ts.map +1 -0
- package/dist/agent/SystemPrompt.js +151 -0
- package/dist/agent/SystemPrompt.js.map +1 -0
- package/dist/agent/ToolExecutor.d.ts +33 -0
- package/dist/agent/ToolExecutor.d.ts.map +1 -0
- package/dist/agent/ToolExecutor.js +123 -0
- package/dist/agent/ToolExecutor.js.map +1 -0
- package/dist/agent/ToolRegistry.d.ts +37 -0
- package/dist/agent/ToolRegistry.d.ts.map +1 -0
- package/dist/agent/ToolRegistry.js +125 -0
- package/dist/agent/ToolRegistry.js.map +1 -0
- package/dist/agent/__tests__/AgentLoop.test.d.ts +6 -0
- package/dist/agent/__tests__/AgentLoop.test.d.ts.map +1 -0
- package/dist/agent/__tests__/AgentLoop.test.js +208 -0
- package/dist/agent/__tests__/AgentLoop.test.js.map +1 -0
- package/dist/agent/__tests__/ConversationState.test.d.ts +6 -0
- package/dist/agent/__tests__/ConversationState.test.d.ts.map +1 -0
- package/dist/agent/__tests__/ConversationState.test.js +102 -0
- package/dist/agent/__tests__/ConversationState.test.js.map +1 -0
- package/dist/agent/__tests__/HeadModelSelector.test.d.ts +6 -0
- package/dist/agent/__tests__/HeadModelSelector.test.d.ts.map +1 -0
- package/dist/agent/__tests__/HeadModelSelector.test.js +132 -0
- package/dist/agent/__tests__/HeadModelSelector.test.js.map +1 -0
- package/dist/agent/__tests__/JobManager.test.d.ts +6 -0
- package/dist/agent/__tests__/JobManager.test.d.ts.map +1 -0
- package/dist/agent/__tests__/JobManager.test.js +197 -0
- package/dist/agent/__tests__/JobManager.test.js.map +1 -0
- package/dist/agent/__tests__/MediaPreprocessor.test.d.ts +6 -0
- package/dist/agent/__tests__/MediaPreprocessor.test.d.ts.map +1 -0
- package/dist/agent/__tests__/MediaPreprocessor.test.js +163 -0
- package/dist/agent/__tests__/MediaPreprocessor.test.js.map +1 -0
- package/dist/agent/__tests__/ToolExecutor.test.d.ts +6 -0
- package/dist/agent/__tests__/ToolExecutor.test.d.ts.map +1 -0
- package/dist/agent/__tests__/ToolExecutor.test.js +140 -0
- package/dist/agent/__tests__/ToolExecutor.test.js.map +1 -0
- package/dist/agent/__tests__/ToolRegistry.test.d.ts +6 -0
- package/dist/agent/__tests__/ToolRegistry.test.d.ts.map +1 -0
- package/dist/agent/__tests__/ToolRegistry.test.js +172 -0
- package/dist/agent/__tests__/ToolRegistry.test.js.map +1 -0
- package/dist/agent/__tests__/tools.test.d.ts +6 -0
- package/dist/agent/__tests__/tools.test.d.ts.map +1 -0
- package/dist/agent/__tests__/tools.test.js +177 -0
- package/dist/agent/__tests__/tools.test.js.map +1 -0
- package/dist/agent/index.d.ts +19 -0
- package/dist/agent/index.d.ts.map +1 -0
- package/dist/agent/index.js +18 -0
- package/dist/agent/index.js.map +1 -0
- package/dist/agent/jobs/JobManager.d.ts +46 -0
- package/dist/agent/jobs/JobManager.d.ts.map +1 -0
- package/dist/agent/jobs/JobManager.js +213 -0
- package/dist/agent/jobs/JobManager.js.map +1 -0
- package/dist/agent/jobs/ProgressReporter.d.ts +32 -0
- package/dist/agent/jobs/ProgressReporter.d.ts.map +1 -0
- package/dist/agent/jobs/ProgressReporter.js +82 -0
- package/dist/agent/jobs/ProgressReporter.js.map +1 -0
- package/dist/agent/jobs/types.d.ts +32 -0
- package/dist/agent/jobs/types.d.ts.map +1 -0
- package/dist/agent/jobs/types.js +6 -0
- package/dist/agent/jobs/types.js.map +1 -0
- package/dist/agent/policy-integration.test.d.ts +6 -0
- package/dist/agent/policy-integration.test.d.ts.map +1 -0
- package/dist/agent/policy-integration.test.js +148 -0
- package/dist/agent/policy-integration.test.js.map +1 -0
- package/dist/agent/preprocessors/MediaPreprocessor.d.ts +63 -0
- package/dist/agent/preprocessors/MediaPreprocessor.d.ts.map +1 -0
- package/dist/agent/preprocessors/MediaPreprocessor.js +320 -0
- package/dist/agent/preprocessors/MediaPreprocessor.js.map +1 -0
- package/dist/agent/providers/claude-head.d.ts +17 -0
- package/dist/agent/providers/claude-head.d.ts.map +1 -0
- package/dist/agent/providers/claude-head.js +124 -0
- package/dist/agent/providers/claude-head.js.map +1 -0
- package/dist/agent/providers/gpt-head.d.ts +30 -0
- package/dist/agent/providers/gpt-head.d.ts.map +1 -0
- package/dist/agent/providers/gpt-head.js +359 -0
- package/dist/agent/providers/gpt-head.js.map +1 -0
- package/dist/agent/tools/claude-code.d.ts +11 -0
- package/dist/agent/tools/claude-code.d.ts.map +1 -0
- package/dist/agent/tools/claude-code.js +148 -0
- package/dist/agent/tools/claude-code.js.map +1 -0
- package/dist/agent/tools/dm-pair.d.ts +23 -0
- package/dist/agent/tools/dm-pair.d.ts.map +1 -0
- package/dist/agent/tools/dm-pair.js +70 -0
- package/dist/agent/tools/dm-pair.js.map +1 -0
- package/dist/agent/tools/dm-pair.test.d.ts +6 -0
- package/dist/agent/tools/dm-pair.test.d.ts.map +1 -0
- package/dist/agent/tools/dm-pair.test.js +106 -0
- package/dist/agent/tools/dm-pair.test.js.map +1 -0
- package/dist/agent/tools/gemini-stt.d.ts +9 -0
- package/dist/agent/tools/gemini-stt.d.ts.map +1 -0
- package/dist/agent/tools/gemini-stt.js +33 -0
- package/dist/agent/tools/gemini-stt.js.map +1 -0
- package/dist/agent/tools/google-search.d.ts +9 -0
- package/dist/agent/tools/google-search.d.ts.map +1 -0
- package/dist/agent/tools/google-search.js +38 -0
- package/dist/agent/tools/google-search.js.map +1 -0
- package/dist/agent/tools/index.d.ts +22 -0
- package/dist/agent/tools/index.d.ts.map +1 -0
- package/dist/agent/tools/index.js +37 -0
- package/dist/agent/tools/index.js.map +1 -0
- package/dist/agent/tools/kimi-analyze.d.ts +9 -0
- package/dist/agent/tools/kimi-analyze.d.ts.map +1 -0
- package/dist/agent/tools/kimi-analyze.js +49 -0
- package/dist/agent/tools/kimi-analyze.js.map +1 -0
- package/dist/agent/tools/manage-memory.d.ts +10 -0
- package/dist/agent/tools/manage-memory.d.ts.map +1 -0
- package/dist/agent/tools/manage-memory.js +70 -0
- package/dist/agent/tools/manage-memory.js.map +1 -0
- package/dist/agent/tools/send-imessage.d.ts +19 -0
- package/dist/agent/tools/send-imessage.d.ts.map +1 -0
- package/dist/agent/tools/send-imessage.js +67 -0
- package/dist/agent/tools/send-imessage.js.map +1 -0
- package/dist/agent/tools/send-slack.d.ts +21 -0
- package/dist/agent/tools/send-slack.d.ts.map +1 -0
- package/dist/agent/tools/send-slack.js +63 -0
- package/dist/agent/tools/send-slack.js.map +1 -0
- package/dist/agent/tools/send-telegram.d.ts +20 -0
- package/dist/agent/tools/send-telegram.d.ts.map +1 -0
- package/dist/agent/tools/send-telegram.js +58 -0
- package/dist/agent/tools/send-telegram.js.map +1 -0
- package/dist/agent/tools/vision-analyze.d.ts +11 -0
- package/dist/agent/tools/vision-analyze.d.ts.map +1 -0
- package/dist/agent/tools/vision-analyze.js +103 -0
- package/dist/agent/tools/vision-analyze.js.map +1 -0
- package/dist/agent/tools/vision-capture.d.ts +13 -0
- package/dist/agent/tools/vision-capture.d.ts.map +1 -0
- package/dist/agent/tools/vision-capture.js +87 -0
- package/dist/agent/tools/vision-capture.js.map +1 -0
- package/dist/agent/tools/web-browse.d.ts +20 -0
- package/dist/agent/tools/web-browse.d.ts.map +1 -0
- package/dist/agent/tools/web-browse.js +196 -0
- package/dist/agent/tools/web-browse.js.map +1 -0
- package/dist/agent/types.d.ts +151 -0
- package/dist/agent/types.d.ts.map +1 -0
- package/dist/agent/types.js +6 -0
- package/dist/agent/types.js.map +1 -0
- package/dist/bridge/telegram-assistant-bridge.d.ts +10 -0
- package/dist/bridge/telegram-assistant-bridge.d.ts.map +1 -0
- package/dist/bridge/telegram-assistant-bridge.js +274 -0
- package/dist/bridge/telegram-assistant-bridge.js.map +1 -0
- package/dist/bridge/telegram-bridge.d.ts +10 -0
- package/dist/bridge/telegram-bridge.d.ts.map +1 -0
- package/dist/bridge/telegram-bridge.js +154 -0
- package/dist/bridge/telegram-bridge.js.map +1 -0
- package/dist/cli/collaborator.js +52 -52
- package/dist/cli/commands/autostart.d.ts +19 -0
- package/dist/cli/commands/autostart.d.ts.map +1 -0
- package/dist/cli/commands/autostart.js +213 -0
- package/dist/cli/commands/autostart.js.map +1 -0
- package/dist/cli/commands/browser.d.ts +12 -0
- package/dist/cli/commands/browser.d.ts.map +1 -0
- package/dist/cli/commands/browser.js +50 -0
- package/dist/cli/commands/browser.js.map +1 -0
- package/dist/cli/commands/daemon.d.ts +16 -0
- package/dist/cli/commands/daemon.d.ts.map +1 -0
- package/dist/cli/commands/daemon.js +277 -0
- package/dist/cli/commands/daemon.js.map +1 -0
- package/dist/cli/commands/device.d.ts +9 -0
- package/dist/cli/commands/device.d.ts.map +1 -0
- package/dist/cli/commands/device.js +56 -0
- package/dist/cli/commands/device.js.map +1 -0
- package/dist/cli/commands/evolution.js +12 -12
- package/dist/cli/commands/google.d.ts +12 -0
- package/dist/cli/commands/google.d.ts.map +1 -0
- package/dist/cli/commands/google.js +83 -0
- package/dist/cli/commands/google.js.map +1 -0
- package/dist/cli/commands/imessage.d.ts +11 -0
- package/dist/cli/commands/imessage.d.ts.map +1 -0
- package/dist/cli/commands/imessage.js +85 -0
- package/dist/cli/commands/imessage.js.map +1 -0
- package/dist/cli/commands/info.js +54 -54
- package/dist/cli/commands/init.d.ts +5 -0
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +42 -8
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/interface.d.ts +15 -0
- package/dist/cli/commands/interface.d.ts.map +1 -0
- package/dist/cli/commands/interface.js +167 -0
- package/dist/cli/commands/interface.js.map +1 -0
- package/dist/cli/commands/job.d.ts +14 -0
- package/dist/cli/commands/job.d.ts.map +1 -0
- package/dist/cli/commands/job.js +170 -0
- package/dist/cli/commands/job.js.map +1 -0
- package/dist/cli/commands/pc.d.ts +12 -0
- package/dist/cli/commands/pc.d.ts.map +1 -0
- package/dist/cli/commands/pc.js +75 -0
- package/dist/cli/commands/pc.js.map +1 -0
- package/dist/cli/commands/policy.d.ts +10 -0
- package/dist/cli/commands/policy.d.ts.map +1 -0
- package/dist/cli/commands/policy.js +75 -0
- package/dist/cli/commands/policy.js.map +1 -0
- package/dist/cli/commands/remove.js +14 -14
- package/dist/cli/commands/sandbox.d.ts +10 -0
- package/dist/cli/commands/sandbox.d.ts.map +1 -0
- package/dist/cli/commands/sandbox.js +53 -0
- package/dist/cli/commands/sandbox.js.map +1 -0
- package/dist/cli/commands/sentinel.js +27 -27
- package/dist/cli/commands/slack.js +10 -10
- package/dist/cli/commands/sync.d.ts +9 -0
- package/dist/cli/commands/sync.d.ts.map +1 -0
- package/dist/cli/commands/sync.js +167 -0
- package/dist/cli/commands/sync.js.map +1 -0
- package/dist/cli/commands/telegram.js +12 -12
- package/dist/cli/commands/update.d.ts.map +1 -1
- package/dist/cli/commands/update.js +3 -1
- package/dist/cli/commands/update.js.map +1 -1
- package/dist/cli/commands/vision.d.ts +12 -0
- package/dist/cli/commands/vision.d.ts.map +1 -0
- package/dist/cli/commands/vision.js +74 -0
- package/dist/cli/commands/vision.js.map +1 -0
- package/dist/cli/commands/voice.d.ts +12 -0
- package/dist/cli/commands/voice.d.ts.map +1 -0
- package/dist/cli/commands/voice.js +67 -0
- package/dist/cli/commands/voice.js.map +1 -0
- package/dist/cli/commands/webhook.d.ts +9 -0
- package/dist/cli/commands/webhook.d.ts.map +1 -0
- package/dist/cli/commands/webhook.js +85 -0
- package/dist/cli/commands/webhook.js.map +1 -0
- package/dist/cli/detect.js +32 -32
- package/dist/cli/hud.d.ts +46 -0
- package/dist/cli/hud.d.ts.map +1 -0
- package/dist/cli/hud.js +392 -0
- package/dist/cli/hud.js.map +1 -0
- package/dist/cli/index.js +46 -46
- package/dist/cli/llm/az-commands.d.ts +12 -0
- package/dist/cli/llm/az-commands.d.ts.map +1 -0
- package/dist/cli/llm/az-commands.js +99 -0
- package/dist/cli/llm/az-commands.js.map +1 -0
- package/dist/cli/llm/claude-commands.js +16 -16
- package/dist/cli/llm/config.js +18 -18
- package/dist/cli/llm/gemini-commands.js +47 -47
- package/dist/cli/llm/gpt-commands.js +19 -19
- package/dist/cli/llm/help.js +21 -21
- package/dist/cli/llm/kimi-commands.d.ts +12 -0
- package/dist/cli/llm/kimi-commands.d.ts.map +1 -0
- package/dist/cli/llm/kimi-commands.js +100 -0
- package/dist/cli/llm/kimi-commands.js.map +1 -0
- package/dist/cli/llm/nvidia-commands.d.ts +16 -0
- package/dist/cli/llm/nvidia-commands.d.ts.map +1 -0
- package/dist/cli/llm/nvidia-commands.js +105 -0
- package/dist/cli/llm/nvidia-commands.js.map +1 -0
- package/dist/cli/llm/priority-commands.d.ts +18 -0
- package/dist/cli/llm/priority-commands.d.ts.map +1 -0
- package/dist/cli/llm/priority-commands.js +69 -0
- package/dist/cli/llm/priority-commands.js.map +1 -0
- package/dist/cli/postinstall/cursor-agents.js +32 -32
- package/dist/cli/postinstall/cursor-rules.js +83 -83
- package/dist/cli/postinstall/cursor-skills.js +743 -743
- package/dist/cli/postinstall/npmrc.d.ts +9 -0
- package/dist/cli/postinstall/npmrc.d.ts.map +1 -0
- package/dist/cli/postinstall/npmrc.js +80 -0
- package/dist/cli/postinstall/npmrc.js.map +1 -0
- package/dist/cli/setup/Provisioner.js +42 -42
- package/dist/daemon/DaemonIPC.d.ts +40 -0
- package/dist/daemon/DaemonIPC.d.ts.map +1 -0
- package/dist/daemon/DaemonIPC.js +327 -0
- package/dist/daemon/DaemonIPC.js.map +1 -0
- package/dist/daemon/InterfaceManager.d.ts +62 -0
- package/dist/daemon/InterfaceManager.d.ts.map +1 -0
- package/dist/daemon/InterfaceManager.js +785 -0
- package/dist/daemon/InterfaceManager.js.map +1 -0
- package/dist/daemon/SessionPool.d.ts +80 -0
- package/dist/daemon/SessionPool.d.ts.map +1 -0
- package/dist/daemon/SessionPool.js +414 -0
- package/dist/daemon/SessionPool.js.map +1 -0
- package/dist/daemon/VibeDaemon.d.ts +69 -0
- package/dist/daemon/VibeDaemon.d.ts.map +1 -0
- package/dist/daemon/VibeDaemon.js +400 -0
- package/dist/daemon/VibeDaemon.js.map +1 -0
- package/dist/daemon/daemon.test.d.ts +6 -0
- package/dist/daemon/daemon.test.d.ts.map +1 -0
- package/dist/daemon/daemon.test.js +348 -0
- package/dist/daemon/daemon.test.js.map +1 -0
- package/dist/daemon/index.d.ts +10 -0
- package/dist/daemon/index.d.ts.map +1 -0
- package/dist/daemon/index.js +9 -0
- package/dist/daemon/index.js.map +1 -0
- package/dist/daemon/pipeline.test.d.ts +6 -0
- package/dist/daemon/pipeline.test.d.ts.map +1 -0
- package/dist/daemon/pipeline.test.js +258 -0
- package/dist/daemon/pipeline.test.js.map +1 -0
- package/dist/daemon/preflight.d.ts +23 -0
- package/dist/daemon/preflight.d.ts.map +1 -0
- package/dist/daemon/preflight.js +204 -0
- package/dist/daemon/preflight.js.map +1 -0
- package/dist/daemon/preflight.test.d.ts +6 -0
- package/dist/daemon/preflight.test.d.ts.map +1 -0
- package/dist/daemon/preflight.test.js +88 -0
- package/dist/daemon/preflight.test.js.map +1 -0
- package/dist/daemon/types.d.ts +117 -0
- package/dist/daemon/types.d.ts.map +1 -0
- package/dist/daemon/types.js +15 -0
- package/dist/daemon/types.js.map +1 -0
- package/dist/infra/lib/DeepInit.js +24 -24
- package/dist/infra/lib/IterationTracker.js +11 -11
- package/dist/infra/lib/PythonParser.js +108 -108
- package/dist/infra/lib/ReviewRace.js +96 -96
- package/dist/infra/lib/SkillFrontmatter.js +28 -28
- package/dist/infra/lib/SkillQualityGate.js +9 -9
- package/dist/infra/lib/SkillRepository.js +159 -159
- package/dist/infra/lib/UltraQA.js +99 -99
- package/dist/infra/lib/autonomy/AuditStore.js +41 -41
- package/dist/infra/lib/autonomy/ConfirmationStore.js +30 -30
- package/dist/infra/lib/autonomy/EventOutbox.js +38 -38
- package/dist/infra/lib/autonomy/PolicyEngine.js +18 -18
- package/dist/infra/lib/autonomy/SecuritySentinel.js +1 -1
- package/dist/infra/lib/autonomy/SuggestionStore.js +33 -33
- package/dist/infra/lib/az/auth.d.ts +15 -0
- package/dist/infra/lib/az/auth.d.ts.map +1 -0
- package/dist/infra/lib/az/auth.js +67 -0
- package/dist/infra/lib/az/auth.js.map +1 -0
- package/dist/infra/lib/az/chat.d.ts +26 -0
- package/dist/infra/lib/az/chat.d.ts.map +1 -0
- package/dist/infra/lib/az/chat.js +116 -0
- package/dist/infra/lib/az/chat.js.map +1 -0
- package/dist/infra/lib/az/embedding.d.ts +13 -0
- package/dist/infra/lib/az/embedding.d.ts.map +1 -0
- package/dist/infra/lib/az/embedding.js +60 -0
- package/dist/infra/lib/az/embedding.js.map +1 -0
- package/dist/infra/lib/az/index.d.ts +9 -0
- package/dist/infra/lib/az/index.d.ts.map +1 -0
- package/dist/infra/lib/az/index.js +9 -0
- package/dist/infra/lib/az/index.js.map +1 -0
- package/dist/infra/lib/az/orchestration.d.ts +11 -0
- package/dist/infra/lib/az/orchestration.d.ts.map +1 -0
- package/dist/infra/lib/az/orchestration.js +24 -0
- package/dist/infra/lib/az/orchestration.js.map +1 -0
- package/dist/infra/lib/az/types.d.ts +35 -0
- package/dist/infra/lib/az/types.d.ts.map +1 -0
- package/dist/infra/lib/az/types.js +5 -0
- package/dist/infra/lib/az/types.js.map +1 -0
- package/dist/infra/lib/az-api.d.ts +5 -0
- package/dist/infra/lib/az-api.d.ts.map +1 -0
- package/dist/infra/lib/az-api.js +5 -0
- package/dist/infra/lib/az-api.js.map +1 -0
- package/dist/infra/lib/az-constants.d.ts +44 -0
- package/dist/infra/lib/az-constants.d.ts.map +1 -0
- package/dist/infra/lib/az-constants.js +58 -0
- package/dist/infra/lib/az-constants.js.map +1 -0
- package/dist/infra/lib/az-storage.d.ts +12 -0
- package/dist/infra/lib/az-storage.d.ts.map +1 -0
- package/dist/infra/lib/az-storage.js +59 -0
- package/dist/infra/lib/az-storage.js.map +1 -0
- package/dist/infra/lib/claude-storage.d.ts +12 -0
- package/dist/infra/lib/claude-storage.d.ts.map +1 -0
- package/dist/infra/lib/claude-storage.js +59 -0
- package/dist/infra/lib/claude-storage.js.map +1 -0
- package/dist/infra/lib/embedding/VectorStore.js +22 -22
- package/dist/infra/lib/evolution/AgentAnalyzer.js +10 -10
- package/dist/infra/lib/evolution/GenerationRegistry.js +36 -36
- package/dist/infra/lib/evolution/InsightStore.js +90 -90
- package/dist/infra/lib/evolution/RollbackManager.js +5 -5
- package/dist/infra/lib/evolution/SkillGapDetector.js +10 -10
- package/dist/infra/lib/evolution/UsageTracker.js +28 -28
- package/dist/infra/lib/gemini/constants.js +14 -14
- package/dist/infra/lib/gemini/orchestration.js +5 -5
- package/dist/infra/lib/gemini-api.d.ts +13 -0
- package/dist/infra/lib/gemini-api.d.ts.map +1 -0
- package/dist/infra/lib/gemini-api.js +13 -0
- package/dist/infra/lib/gemini-api.js.map +1 -0
- package/dist/infra/lib/gemini-constants.d.ts +19 -0
- package/dist/infra/lib/gemini-constants.d.ts.map +1 -0
- package/dist/infra/lib/gemini-constants.js +34 -0
- package/dist/infra/lib/gemini-constants.js.map +1 -0
- package/dist/infra/lib/gemini-oauth.d.ts +60 -0
- package/dist/infra/lib/gemini-oauth.d.ts.map +1 -0
- package/dist/infra/lib/gemini-oauth.js +386 -0
- package/dist/infra/lib/gemini-oauth.js.map +1 -0
- package/dist/infra/lib/gemini-storage.d.ts +64 -0
- package/dist/infra/lib/gemini-storage.d.ts.map +1 -0
- package/dist/infra/lib/gemini-storage.js +177 -0
- package/dist/infra/lib/gemini-storage.js.map +1 -0
- package/dist/infra/lib/gpt/oauth.js +44 -44
- package/dist/infra/lib/gpt/orchestration.js +4 -4
- package/dist/infra/lib/gpt-api.d.ts +13 -0
- package/dist/infra/lib/gpt-api.d.ts.map +1 -0
- package/dist/infra/lib/gpt-api.js +13 -0
- package/dist/infra/lib/gpt-api.js.map +1 -0
- package/dist/infra/lib/gpt-constants.d.ts +12 -0
- package/dist/infra/lib/gpt-constants.d.ts.map +1 -0
- package/dist/infra/lib/gpt-constants.js +18 -0
- package/dist/infra/lib/gpt-constants.js.map +1 -0
- package/dist/infra/lib/gpt-oauth.d.ts +66 -0
- package/dist/infra/lib/gpt-oauth.d.ts.map +1 -0
- package/dist/infra/lib/gpt-oauth.js +389 -0
- package/dist/infra/lib/gpt-oauth.js.map +1 -0
- package/dist/infra/lib/gpt-storage.d.ts +64 -0
- package/dist/infra/lib/gpt-storage.d.ts.map +1 -0
- package/dist/infra/lib/gpt-storage.js +180 -0
- package/dist/infra/lib/gpt-storage.js.map +1 -0
- package/dist/infra/lib/kimi/auth.d.ts +10 -0
- package/dist/infra/lib/kimi/auth.d.ts.map +1 -0
- package/dist/infra/lib/kimi/auth.js +45 -0
- package/dist/infra/lib/kimi/auth.js.map +1 -0
- package/dist/infra/lib/kimi/chat.d.ts +26 -0
- package/dist/infra/lib/kimi/chat.d.ts.map +1 -0
- package/dist/infra/lib/kimi/chat.js +115 -0
- package/dist/infra/lib/kimi/chat.js.map +1 -0
- package/dist/infra/lib/kimi/index.d.ts +8 -0
- package/dist/infra/lib/kimi/index.d.ts.map +1 -0
- package/dist/infra/lib/kimi/index.js +8 -0
- package/dist/infra/lib/kimi/index.js.map +1 -0
- package/dist/infra/lib/kimi/orchestration.d.ts +10 -0
- package/dist/infra/lib/kimi/orchestration.d.ts.map +1 -0
- package/dist/infra/lib/kimi/orchestration.js +22 -0
- package/dist/infra/lib/kimi/orchestration.js.map +1 -0
- package/dist/infra/lib/kimi/types.d.ts +30 -0
- package/dist/infra/lib/kimi/types.d.ts.map +1 -0
- package/dist/infra/lib/kimi/types.js +5 -0
- package/dist/infra/lib/kimi/types.js.map +1 -0
- package/dist/infra/lib/kimi-api.d.ts +5 -0
- package/dist/infra/lib/kimi-api.d.ts.map +1 -0
- package/dist/infra/lib/kimi-api.js +5 -0
- package/dist/infra/lib/kimi-api.js.map +1 -0
- package/dist/infra/lib/kimi-constants.d.ts +27 -0
- package/dist/infra/lib/kimi-constants.d.ts.map +1 -0
- package/dist/infra/lib/kimi-constants.js +31 -0
- package/dist/infra/lib/kimi-constants.js.map +1 -0
- package/dist/infra/lib/kimi-storage.d.ts +12 -0
- package/dist/infra/lib/kimi-storage.d.ts.map +1 -0
- package/dist/infra/lib/kimi-storage.js +59 -0
- package/dist/infra/lib/kimi-storage.js.map +1 -0
- package/dist/infra/lib/memory/KnowledgeGraph.js +4 -4
- package/dist/infra/lib/memory/MemorySearch.js +57 -57
- package/dist/infra/lib/memory/MemoryStorage.js +181 -181
- package/dist/infra/lib/memory/ObservationStore.js +28 -28
- package/dist/infra/lib/memory/ReflectionStore.js +30 -30
- package/dist/infra/lib/memory/SessionRAGRetriever.js +7 -7
- package/dist/infra/lib/memory/SessionRAGStore.js +225 -225
- package/dist/infra/lib/memory/SessionSummarizer.js +9 -9
- package/dist/infra/lib/priority-config.d.ts +39 -0
- package/dist/infra/lib/priority-config.d.ts.map +1 -0
- package/dist/infra/lib/priority-config.js +137 -0
- package/dist/infra/lib/priority-config.js.map +1 -0
- package/dist/infra/lib/sync/constants.d.ts +21 -0
- package/dist/infra/lib/sync/constants.d.ts.map +1 -0
- package/dist/infra/lib/sync/constants.js +78 -0
- package/dist/infra/lib/sync/constants.js.map +1 -0
- package/dist/infra/lib/sync/crypto.d.ts +23 -0
- package/dist/infra/lib/sync/crypto.d.ts.map +1 -0
- package/dist/infra/lib/sync/crypto.js +55 -0
- package/dist/infra/lib/sync/crypto.js.map +1 -0
- package/dist/infra/lib/sync/drive.d.ts +22 -0
- package/dist/infra/lib/sync/drive.d.ts.map +1 -0
- package/dist/infra/lib/sync/drive.js +99 -0
- package/dist/infra/lib/sync/drive.js.map +1 -0
- package/dist/infra/lib/sync/index.d.ts +9 -0
- package/dist/infra/lib/sync/index.d.ts.map +1 -0
- package/dist/infra/lib/sync/index.js +9 -0
- package/dist/infra/lib/sync/index.js.map +1 -0
- package/dist/infra/lib/sync/oauth.d.ts +12 -0
- package/dist/infra/lib/sync/oauth.d.ts.map +1 -0
- package/dist/infra/lib/sync/oauth.js +157 -0
- package/dist/infra/lib/sync/oauth.js.map +1 -0
- package/dist/infra/lib/sync/storage.d.ts +21 -0
- package/dist/infra/lib/sync/storage.d.ts.map +1 -0
- package/dist/infra/lib/sync/storage.js +32 -0
- package/dist/infra/lib/sync/storage.js.map +1 -0
- package/dist/infra/orchestrator/AgentManager.js +12 -12
- package/dist/infra/orchestrator/AgentRegistry.js +65 -65
- package/dist/infra/orchestrator/MultiLlmResearch.js +8 -8
- package/dist/infra/orchestrator/SwarmOrchestrator.test.js +16 -16
- package/dist/infra/orchestrator/parallelResearch.js +24 -24
- package/dist/infra/policy/Evidence.d.ts +30 -0
- package/dist/infra/policy/Evidence.d.ts.map +1 -0
- package/dist/infra/policy/Evidence.js +134 -0
- package/dist/infra/policy/Evidence.js.map +1 -0
- package/dist/infra/policy/PolicyEngine.d.ts +34 -0
- package/dist/infra/policy/PolicyEngine.d.ts.map +1 -0
- package/dist/infra/policy/PolicyEngine.js +219 -0
- package/dist/infra/policy/PolicyEngine.js.map +1 -0
- package/dist/infra/policy/PolicyStore.d.ts +36 -0
- package/dist/infra/policy/PolicyStore.d.ts.map +1 -0
- package/dist/infra/policy/PolicyStore.js +160 -0
- package/dist/infra/policy/PolicyStore.js.map +1 -0
- package/dist/infra/policy/RiskCalculator.d.ts +20 -0
- package/dist/infra/policy/RiskCalculator.d.ts.map +1 -0
- package/dist/infra/policy/RiskCalculator.js +64 -0
- package/dist/infra/policy/RiskCalculator.js.map +1 -0
- package/dist/infra/policy/default-policies.d.ts +13 -0
- package/dist/infra/policy/default-policies.d.ts.map +1 -0
- package/dist/infra/policy/default-policies.js +99 -0
- package/dist/infra/policy/default-policies.js.map +1 -0
- package/dist/infra/policy/index.d.ts +11 -0
- package/dist/infra/policy/index.d.ts.map +1 -0
- package/dist/infra/policy/index.js +10 -0
- package/dist/infra/policy/index.js.map +1 -0
- package/dist/infra/policy/policy.test.d.ts +5 -0
- package/dist/infra/policy/policy.test.d.ts.map +1 -0
- package/dist/infra/policy/policy.test.js +628 -0
- package/dist/infra/policy/policy.test.js.map +1 -0
- package/dist/infra/policy/types.d.ts +71 -0
- package/dist/infra/policy/types.d.ts.map +1 -0
- package/dist/infra/policy/types.js +18 -0
- package/dist/infra/policy/types.js.map +1 -0
- package/dist/interface/BaseInterface.d.ts +37 -0
- package/dist/interface/BaseInterface.d.ts.map +1 -0
- package/dist/interface/BaseInterface.js +105 -0
- package/dist/interface/BaseInterface.js.map +1 -0
- package/dist/interface/ClaudeCodeBridge.d.ts +38 -0
- package/dist/interface/ClaudeCodeBridge.d.ts.map +1 -0
- package/dist/interface/ClaudeCodeBridge.js +216 -0
- package/dist/interface/ClaudeCodeBridge.js.map +1 -0
- package/dist/interface/imessage/IMessageBot.d.ts +33 -0
- package/dist/interface/imessage/IMessageBot.d.ts.map +1 -0
- package/dist/interface/imessage/IMessageBot.js +222 -0
- package/dist/interface/imessage/IMessageBot.js.map +1 -0
- package/dist/interface/imessage/IMessageFormatter.d.ts +15 -0
- package/dist/interface/imessage/IMessageFormatter.d.ts.map +1 -0
- package/dist/interface/imessage/IMessageFormatter.js +81 -0
- package/dist/interface/imessage/IMessageFormatter.js.map +1 -0
- package/dist/interface/imessage/IMessageRpcClient.d.ts +39 -0
- package/dist/interface/imessage/IMessageRpcClient.d.ts.map +1 -0
- package/dist/interface/imessage/IMessageRpcClient.js +174 -0
- package/dist/interface/imessage/IMessageRpcClient.js.map +1 -0
- package/dist/interface/imessage/IMessageSender.d.ts +19 -0
- package/dist/interface/imessage/IMessageSender.d.ts.map +1 -0
- package/dist/interface/imessage/IMessageSender.js +136 -0
- package/dist/interface/imessage/IMessageSender.js.map +1 -0
- package/dist/interface/imessage/__tests__/IMessageBot.test.d.ts +5 -0
- package/dist/interface/imessage/__tests__/IMessageBot.test.d.ts.map +1 -0
- package/dist/interface/imessage/__tests__/IMessageBot.test.js +60 -0
- package/dist/interface/imessage/__tests__/IMessageBot.test.js.map +1 -0
- package/dist/interface/imessage/__tests__/IMessageFormatter.test.d.ts +5 -0
- package/dist/interface/imessage/__tests__/IMessageFormatter.test.d.ts.map +1 -0
- package/dist/interface/imessage/__tests__/IMessageFormatter.test.js +110 -0
- package/dist/interface/imessage/__tests__/IMessageFormatter.test.js.map +1 -0
- package/dist/interface/imessage/__tests__/IMessageSender.test.d.ts +5 -0
- package/dist/interface/imessage/__tests__/IMessageSender.test.d.ts.map +1 -0
- package/dist/interface/imessage/__tests__/IMessageSender.test.js +67 -0
- package/dist/interface/imessage/__tests__/IMessageSender.test.js.map +1 -0
- package/dist/interface/imessage/index.d.ts +8 -0
- package/dist/interface/imessage/index.d.ts.map +1 -0
- package/dist/interface/imessage/index.js +8 -0
- package/dist/interface/imessage/index.js.map +1 -0
- package/dist/interface/index.d.ts +26 -0
- package/dist/interface/index.d.ts.map +1 -0
- package/dist/interface/index.js +26 -0
- package/dist/interface/index.js.map +1 -0
- package/dist/interface/interface.test.d.ts +5 -0
- package/dist/interface/interface.test.d.ts.map +1 -0
- package/dist/interface/interface.test.js +442 -0
- package/dist/interface/interface.test.js.map +1 -0
- package/dist/interface/slack/SlackBot.d.ts +83 -0
- package/dist/interface/slack/SlackBot.d.ts.map +1 -0
- package/dist/interface/slack/SlackBot.js +563 -0
- package/dist/interface/slack/SlackBot.js.map +1 -0
- package/dist/interface/slack/SlackFormatter.d.ts +19 -0
- package/dist/interface/slack/SlackFormatter.d.ts.map +1 -0
- package/dist/interface/slack/SlackFormatter.js +76 -0
- package/dist/interface/slack/SlackFormatter.js.map +1 -0
- package/dist/interface/slack/__tests__/SlackBot.test.d.ts +5 -0
- package/dist/interface/slack/__tests__/SlackBot.test.d.ts.map +1 -0
- package/dist/interface/slack/__tests__/SlackBot.test.js +37 -0
- package/dist/interface/slack/__tests__/SlackBot.test.js.map +1 -0
- package/dist/interface/slack/__tests__/SlackFormatter.test.d.ts +5 -0
- package/dist/interface/slack/__tests__/SlackFormatter.test.d.ts.map +1 -0
- package/dist/interface/slack/__tests__/SlackFormatter.test.js +93 -0
- package/dist/interface/slack/__tests__/SlackFormatter.test.js.map +1 -0
- package/dist/interface/slack/index.d.ts +7 -0
- package/dist/interface/slack/index.d.ts.map +1 -0
- package/dist/interface/slack/index.js +7 -0
- package/dist/interface/slack/index.js.map +1 -0
- package/dist/interface/telegram/TelegramBot.d.ts +60 -0
- package/dist/interface/telegram/TelegramBot.d.ts.map +1 -0
- package/dist/interface/telegram/TelegramBot.js +400 -0
- package/dist/interface/telegram/TelegramBot.js.map +1 -0
- package/dist/interface/telegram/TelegramFormatter.d.ts +19 -0
- package/dist/interface/telegram/TelegramFormatter.d.ts.map +1 -0
- package/dist/interface/telegram/TelegramFormatter.js +66 -0
- package/dist/interface/telegram/TelegramFormatter.js.map +1 -0
- package/dist/interface/types.d.ts +167 -0
- package/dist/interface/types.d.ts.map +1 -0
- package/dist/interface/types.js +6 -0
- package/dist/interface/types.js.map +1 -0
- package/dist/interface/utils/MessageCombiner.d.ts +14 -0
- package/dist/interface/utils/MessageCombiner.d.ts.map +1 -0
- package/dist/interface/utils/MessageCombiner.js +48 -0
- package/dist/interface/utils/MessageCombiner.js.map +1 -0
- package/dist/interface/vision/AdaptiveFrameSampler.d.ts +44 -0
- package/dist/interface/vision/AdaptiveFrameSampler.d.ts.map +1 -0
- package/dist/interface/vision/AdaptiveFrameSampler.js +109 -0
- package/dist/interface/vision/AdaptiveFrameSampler.js.map +1 -0
- package/dist/interface/vision/AdaptiveFrameSampler.test.d.ts +7 -0
- package/dist/interface/vision/AdaptiveFrameSampler.test.d.ts.map +1 -0
- package/dist/interface/vision/AdaptiveFrameSampler.test.js +113 -0
- package/dist/interface/vision/AdaptiveFrameSampler.test.js.map +1 -0
- package/dist/interface/vision/GeminiLive.d.ts +37 -0
- package/dist/interface/vision/GeminiLive.d.ts.map +1 -0
- package/dist/interface/vision/GeminiLive.js +272 -0
- package/dist/interface/vision/GeminiLive.js.map +1 -0
- package/dist/interface/vision/GeminiLive.test.d.ts +6 -0
- package/dist/interface/vision/GeminiLive.test.d.ts.map +1 -0
- package/dist/interface/vision/GeminiLive.test.js +40 -0
- package/dist/interface/vision/GeminiLive.test.js.map +1 -0
- package/dist/interface/vision/GeminiLiveStream.d.ts +55 -0
- package/dist/interface/vision/GeminiLiveStream.d.ts.map +1 -0
- package/dist/interface/vision/GeminiLiveStream.js +213 -0
- package/dist/interface/vision/GeminiLiveStream.js.map +1 -0
- package/dist/interface/vision/GeminiVision.d.ts +25 -0
- package/dist/interface/vision/GeminiVision.d.ts.map +1 -0
- package/dist/interface/vision/GeminiVision.js +202 -0
- package/dist/interface/vision/GeminiVision.js.map +1 -0
- package/dist/interface/vision/ScreenCapture.d.ts +77 -0
- package/dist/interface/vision/ScreenCapture.d.ts.map +1 -0
- package/dist/interface/vision/ScreenCapture.js +314 -0
- package/dist/interface/vision/ScreenCapture.js.map +1 -0
- package/dist/interface/vision/ScreenCaptureEngine.d.ts +55 -0
- package/dist/interface/vision/ScreenCaptureEngine.d.ts.map +1 -0
- package/dist/interface/vision/ScreenCaptureEngine.js +223 -0
- package/dist/interface/vision/ScreenCaptureEngine.js.map +1 -0
- package/dist/interface/vision/ScreenCaptureEngine.test.d.ts +8 -0
- package/dist/interface/vision/ScreenCaptureEngine.test.d.ts.map +1 -0
- package/dist/interface/vision/ScreenCaptureEngine.test.js +175 -0
- package/dist/interface/vision/ScreenCaptureEngine.test.js.map +1 -0
- package/dist/interface/vision/VisionInterface.d.ts +26 -0
- package/dist/interface/vision/VisionInterface.d.ts.map +1 -0
- package/dist/interface/vision/VisionInterface.js +105 -0
- package/dist/interface/vision/VisionInterface.js.map +1 -0
- package/dist/interface/vision/VisionSession.d.ts +66 -0
- package/dist/interface/vision/VisionSession.d.ts.map +1 -0
- package/dist/interface/vision/VisionSession.js +274 -0
- package/dist/interface/vision/VisionSession.js.map +1 -0
- package/dist/interface/vision/VisionSession.test.d.ts +7 -0
- package/dist/interface/vision/VisionSession.test.d.ts.map +1 -0
- package/dist/interface/vision/VisionSession.test.js +218 -0
- package/dist/interface/vision/VisionSession.test.js.map +1 -0
- package/dist/interface/vision/__tests__/GeminiVision.test.d.ts +5 -0
- package/dist/interface/vision/__tests__/GeminiVision.test.d.ts.map +1 -0
- package/dist/interface/vision/__tests__/GeminiVision.test.js +92 -0
- package/dist/interface/vision/__tests__/GeminiVision.test.js.map +1 -0
- package/dist/interface/vision/__tests__/ScreenCapture.test.d.ts +5 -0
- package/dist/interface/vision/__tests__/ScreenCapture.test.d.ts.map +1 -0
- package/dist/interface/vision/__tests__/ScreenCapture.test.js +24 -0
- package/dist/interface/vision/__tests__/ScreenCapture.test.js.map +1 -0
- package/dist/interface/vision/__tests__/VisionInterface.test.d.ts +5 -0
- package/dist/interface/vision/__tests__/VisionInterface.test.d.ts.map +1 -0
- package/dist/interface/vision/__tests__/VisionInterface.test.js +59 -0
- package/dist/interface/vision/__tests__/VisionInterface.test.js.map +1 -0
- package/dist/interface/vision/index.d.ts +20 -0
- package/dist/interface/vision/index.d.ts.map +1 -0
- package/dist/interface/vision/index.js +16 -0
- package/dist/interface/vision/index.js.map +1 -0
- package/dist/interface/vision/types.d.ts +79 -0
- package/dist/interface/vision/types.d.ts.map +1 -0
- package/dist/interface/vision/types.js +22 -0
- package/dist/interface/vision/types.js.map +1 -0
- package/dist/interface/voice/STTProvider.d.ts +48 -0
- package/dist/interface/voice/STTProvider.d.ts.map +1 -0
- package/dist/interface/voice/STTProvider.js +254 -0
- package/dist/interface/voice/STTProvider.js.map +1 -0
- package/dist/interface/voice/STTProvider.test.d.ts +8 -0
- package/dist/interface/voice/STTProvider.test.d.ts.map +1 -0
- package/dist/interface/voice/STTProvider.test.js +144 -0
- package/dist/interface/voice/STTProvider.test.js.map +1 -0
- package/dist/interface/voice/TTSProvider.d.ts +44 -0
- package/dist/interface/voice/TTSProvider.d.ts.map +1 -0
- package/dist/interface/voice/TTSProvider.js +252 -0
- package/dist/interface/voice/TTSProvider.js.map +1 -0
- package/dist/interface/voice/TTSProvider.test.d.ts +8 -0
- package/dist/interface/voice/TTSProvider.test.d.ts.map +1 -0
- package/dist/interface/voice/TTSProvider.test.js +143 -0
- package/dist/interface/voice/TTSProvider.test.js.map +1 -0
- package/dist/interface/voice/VADProcessor.d.ts +34 -0
- package/dist/interface/voice/VADProcessor.d.ts.map +1 -0
- package/dist/interface/voice/VADProcessor.js +116 -0
- package/dist/interface/voice/VADProcessor.js.map +1 -0
- package/dist/interface/voice/VADProcessor.test.d.ts +8 -0
- package/dist/interface/voice/VADProcessor.test.d.ts.map +1 -0
- package/dist/interface/voice/VADProcessor.test.js +159 -0
- package/dist/interface/voice/VADProcessor.test.js.map +1 -0
- package/dist/interface/voice/VoiceSession.d.ts +77 -0
- package/dist/interface/voice/VoiceSession.d.ts.map +1 -0
- package/dist/interface/voice/VoiceSession.js +249 -0
- package/dist/interface/voice/VoiceSession.js.map +1 -0
- package/dist/interface/voice/VoiceSession.test.d.ts +8 -0
- package/dist/interface/voice/VoiceSession.test.d.ts.map +1 -0
- package/dist/interface/voice/VoiceSession.test.js +260 -0
- package/dist/interface/voice/VoiceSession.test.js.map +1 -0
- package/dist/interface/voice/VoiceWebSocket.d.ts +52 -0
- package/dist/interface/voice/VoiceWebSocket.d.ts.map +1 -0
- package/dist/interface/voice/VoiceWebSocket.js +165 -0
- package/dist/interface/voice/VoiceWebSocket.js.map +1 -0
- package/dist/interface/voice/types.d.ts +144 -0
- package/dist/interface/voice/types.d.ts.map +1 -0
- package/dist/interface/voice/types.js +23 -0
- package/dist/interface/voice/types.js.map +1 -0
- package/dist/interface/voice/types.test.d.ts +8 -0
- package/dist/interface/voice/types.test.d.ts.map +1 -0
- package/dist/interface/voice/types.test.js +90 -0
- package/dist/interface/voice/types.test.js.map +1 -0
- package/dist/interface/web/WebServer.d.ts +80 -0
- package/dist/interface/web/WebServer.d.ts.map +1 -0
- package/dist/interface/web/WebServer.js +999 -0
- package/dist/interface/web/WebServer.js.map +1 -0
- package/dist/interface/web/__tests__/WebServer.test.d.ts +5 -0
- package/dist/interface/web/__tests__/WebServer.test.d.ts.map +1 -0
- package/dist/interface/web/__tests__/WebServer.test.js +345 -0
- package/dist/interface/web/__tests__/WebServer.test.js.map +1 -0
- package/dist/interface/web/types.d.ts +109 -0
- package/dist/interface/web/types.d.ts.map +1 -0
- package/dist/interface/web/types.js +67 -0
- package/dist/interface/web/types.js.map +1 -0
- package/dist/interface/webhook/WebhookHandler.d.ts +45 -0
- package/dist/interface/webhook/WebhookHandler.d.ts.map +1 -0
- package/dist/interface/webhook/WebhookHandler.js +273 -0
- package/dist/interface/webhook/WebhookHandler.js.map +1 -0
- package/dist/job/ActionPlanGenerator.d.ts +21 -0
- package/dist/job/ActionPlanGenerator.d.ts.map +1 -0
- package/dist/job/ActionPlanGenerator.js +153 -0
- package/dist/job/ActionPlanGenerator.js.map +1 -0
- package/dist/job/AgentJobManager.d.ts +46 -0
- package/dist/job/AgentJobManager.d.ts.map +1 -0
- package/dist/job/AgentJobManager.js +213 -0
- package/dist/job/AgentJobManager.js.map +1 -0
- package/dist/job/AgentJobManager.test.d.ts +6 -0
- package/dist/job/AgentJobManager.test.d.ts.map +1 -0
- package/dist/job/AgentJobManager.test.js +197 -0
- package/dist/job/AgentJobManager.test.js.map +1 -0
- package/dist/job/IntentParser.d.ts +21 -0
- package/dist/job/IntentParser.d.ts.map +1 -0
- package/dist/job/IntentParser.js +142 -0
- package/dist/job/IntentParser.js.map +1 -0
- package/dist/job/JobManager.d.ts +54 -0
- package/dist/job/JobManager.d.ts.map +1 -0
- package/dist/job/JobManager.js +220 -0
- package/dist/job/JobManager.js.map +1 -0
- package/dist/job/JobQueue.d.ts +41 -0
- package/dist/job/JobQueue.d.ts.map +1 -0
- package/dist/job/JobQueue.js +153 -0
- package/dist/job/JobQueue.js.map +1 -0
- package/dist/job/JobStore.d.ts +36 -0
- package/dist/job/JobStore.d.ts.map +1 -0
- package/dist/job/JobStore.js +260 -0
- package/dist/job/JobStore.js.map +1 -0
- package/dist/job/ProgressReporter.d.ts +32 -0
- package/dist/job/ProgressReporter.d.ts.map +1 -0
- package/dist/job/ProgressReporter.js +82 -0
- package/dist/job/ProgressReporter.js.map +1 -0
- package/dist/job/agent-job-types.d.ts +32 -0
- package/dist/job/agent-job-types.d.ts.map +1 -0
- package/dist/job/agent-job-types.js +6 -0
- package/dist/job/agent-job-types.js.map +1 -0
- package/dist/job/index.d.ts +15 -0
- package/dist/job/index.d.ts.map +1 -0
- package/dist/job/index.js +15 -0
- package/dist/job/index.js.map +1 -0
- package/dist/job/job.test.d.ts +5 -0
- package/dist/job/job.test.d.ts.map +1 -0
- package/dist/job/job.test.js +303 -0
- package/dist/job/job.test.js.map +1 -0
- package/dist/job/types.d.ts +82 -0
- package/dist/job/types.d.ts.map +1 -0
- package/dist/job/types.js +40 -0
- package/dist/job/types.js.map +1 -0
- package/dist/orchestrator/AgentAnnouncer.d.ts +64 -0
- package/dist/orchestrator/AgentAnnouncer.d.ts.map +1 -0
- package/dist/orchestrator/AgentAnnouncer.js +127 -0
- package/dist/orchestrator/AgentAnnouncer.js.map +1 -0
- package/dist/orchestrator/AgentAnnouncer.test.d.ts +5 -0
- package/dist/orchestrator/AgentAnnouncer.test.d.ts.map +1 -0
- package/dist/orchestrator/AgentAnnouncer.test.js +119 -0
- package/dist/orchestrator/AgentAnnouncer.test.js.map +1 -0
- package/dist/orchestrator/AgentExecutor.d.ts +23 -0
- package/dist/orchestrator/AgentExecutor.d.ts.map +1 -0
- package/dist/orchestrator/AgentExecutor.js +231 -0
- package/dist/orchestrator/AgentExecutor.js.map +1 -0
- package/dist/orchestrator/AgentManager.d.ts +73 -0
- package/dist/orchestrator/AgentManager.d.ts.map +1 -0
- package/dist/orchestrator/AgentManager.js +184 -0
- package/dist/orchestrator/AgentManager.js.map +1 -0
- package/dist/orchestrator/AgentRegistry.d.ts +76 -0
- package/dist/orchestrator/AgentRegistry.d.ts.map +1 -0
- package/dist/orchestrator/AgentRegistry.js +217 -0
- package/dist/orchestrator/AgentRegistry.js.map +1 -0
- package/dist/orchestrator/AgentRegistry.test.d.ts +5 -0
- package/dist/orchestrator/AgentRegistry.test.d.ts.map +1 -0
- package/dist/orchestrator/AgentRegistry.test.js +122 -0
- package/dist/orchestrator/AgentRegistry.test.js.map +1 -0
- package/dist/orchestrator/BackgroundManager.d.ts +114 -0
- package/dist/orchestrator/BackgroundManager.d.ts.map +1 -0
- package/dist/orchestrator/BackgroundManager.js +517 -0
- package/dist/orchestrator/BackgroundManager.js.map +1 -0
- package/dist/orchestrator/BackgroundManager.test.d.ts +6 -0
- package/dist/orchestrator/BackgroundManager.test.d.ts.map +1 -0
- package/dist/orchestrator/BackgroundManager.test.js +162 -0
- package/dist/orchestrator/BackgroundManager.test.js.map +1 -0
- package/dist/orchestrator/CheckpointManager.d.ts +54 -0
- package/dist/orchestrator/CheckpointManager.d.ts.map +1 -0
- package/dist/orchestrator/CheckpointManager.js +121 -0
- package/dist/orchestrator/CheckpointManager.js.map +1 -0
- package/dist/orchestrator/LLMCluster.d.ts +91 -0
- package/dist/orchestrator/LLMCluster.d.ts.map +1 -0
- package/dist/orchestrator/LLMCluster.js +124 -0
- package/dist/orchestrator/LLMCluster.js.map +1 -0
- package/dist/orchestrator/MultiLlmResearch.d.ts +27 -0
- package/dist/orchestrator/MultiLlmResearch.d.ts.map +1 -0
- package/dist/orchestrator/MultiLlmResearch.js +145 -0
- package/dist/orchestrator/MultiLlmResearch.js.map +1 -0
- package/dist/orchestrator/PhasePipeline.d.ts +123 -0
- package/dist/orchestrator/PhasePipeline.d.ts.map +1 -0
- package/dist/orchestrator/PhasePipeline.js +382 -0
- package/dist/orchestrator/PhasePipeline.js.map +1 -0
- package/dist/orchestrator/PhaseResultStore.d.ts +39 -0
- package/dist/orchestrator/PhaseResultStore.d.ts.map +1 -0
- package/dist/orchestrator/PhaseResultStore.js +151 -0
- package/dist/orchestrator/PhaseResultStore.js.map +1 -0
- package/dist/orchestrator/SessionStore.d.ts +41 -0
- package/dist/orchestrator/SessionStore.d.ts.map +1 -0
- package/dist/orchestrator/SessionStore.js +117 -0
- package/dist/orchestrator/SessionStore.js.map +1 -0
- package/dist/orchestrator/SmartRouter.d.ts +77 -0
- package/dist/orchestrator/SmartRouter.d.ts.map +1 -0
- package/dist/orchestrator/SmartRouter.js +305 -0
- package/dist/orchestrator/SmartRouter.js.map +1 -0
- package/dist/orchestrator/SwarmOrchestrator.d.ts +144 -0
- package/dist/orchestrator/SwarmOrchestrator.d.ts.map +1 -0
- package/dist/orchestrator/SwarmOrchestrator.js +361 -0
- package/dist/orchestrator/SwarmOrchestrator.js.map +1 -0
- package/dist/orchestrator/SwarmOrchestrator.test.d.ts +5 -0
- package/dist/orchestrator/SwarmOrchestrator.test.d.ts.map +1 -0
- package/dist/orchestrator/SwarmOrchestrator.test.js +95 -0
- package/dist/orchestrator/SwarmOrchestrator.test.js.map +1 -0
- package/dist/orchestrator/agentDiscovery.d.ts +18 -0
- package/dist/orchestrator/agentDiscovery.d.ts.map +1 -0
- package/dist/orchestrator/agentDiscovery.js +175 -0
- package/dist/orchestrator/agentDiscovery.js.map +1 -0
- package/dist/orchestrator/backgroundAgent.d.ts +15 -0
- package/dist/orchestrator/backgroundAgent.d.ts.map +1 -0
- package/dist/orchestrator/backgroundAgent.js +16 -0
- package/dist/orchestrator/backgroundAgent.js.map +1 -0
- package/dist/orchestrator/index.d.ts +213 -0
- package/dist/orchestrator/index.d.ts.map +1 -0
- package/dist/orchestrator/index.js +391 -0
- package/dist/orchestrator/index.js.map +1 -0
- package/dist/orchestrator/orchestrator.d.ts +63 -0
- package/dist/orchestrator/orchestrator.d.ts.map +1 -0
- package/dist/orchestrator/orchestrator.js +217 -0
- package/dist/orchestrator/orchestrator.js.map +1 -0
- package/dist/orchestrator/parallelResearch.d.ts +30 -0
- package/dist/orchestrator/parallelResearch.d.ts.map +1 -0
- package/dist/orchestrator/parallelResearch.js +247 -0
- package/dist/orchestrator/parallelResearch.js.map +1 -0
- package/dist/orchestrator/types.d.ts +185 -0
- package/dist/orchestrator/types.d.ts.map +1 -0
- package/dist/orchestrator/types.js +21 -0
- package/dist/orchestrator/types.js.map +1 -0
- package/dist/pc/CommandDispatcher.d.ts +31 -0
- package/dist/pc/CommandDispatcher.d.ts.map +1 -0
- package/dist/pc/CommandDispatcher.js +132 -0
- package/dist/pc/CommandDispatcher.js.map +1 -0
- package/dist/pc/CommandDispatcher.test.d.ts +2 -0
- package/dist/pc/CommandDispatcher.test.d.ts.map +1 -0
- package/dist/pc/CommandDispatcher.test.js +360 -0
- package/dist/pc/CommandDispatcher.test.js.map +1 -0
- package/dist/pc/ModuleRegistry.d.ts +40 -0
- package/dist/pc/ModuleRegistry.d.ts.map +1 -0
- package/dist/pc/ModuleRegistry.js +163 -0
- package/dist/pc/ModuleRegistry.js.map +1 -0
- package/dist/pc/ResultFormatter.d.ts +27 -0
- package/dist/pc/ResultFormatter.d.ts.map +1 -0
- package/dist/pc/ResultFormatter.js +128 -0
- package/dist/pc/ResultFormatter.js.map +1 -0
- package/dist/pc/ResultFormatter.test.d.ts +2 -0
- package/dist/pc/ResultFormatter.test.d.ts.map +1 -0
- package/dist/pc/ResultFormatter.test.js +115 -0
- package/dist/pc/ResultFormatter.test.js.map +1 -0
- package/dist/pc/SecurityGate.d.ts +53 -0
- package/dist/pc/SecurityGate.d.ts.map +1 -0
- package/dist/pc/SecurityGate.js +142 -0
- package/dist/pc/SecurityGate.js.map +1 -0
- package/dist/pc/SecurityGate.test.d.ts +2 -0
- package/dist/pc/SecurityGate.test.d.ts.map +1 -0
- package/dist/pc/SecurityGate.test.js +160 -0
- package/dist/pc/SecurityGate.test.js.map +1 -0
- package/dist/pc/SessionContext.d.ts +31 -0
- package/dist/pc/SessionContext.d.ts.map +1 -0
- package/dist/pc/SessionContext.js +108 -0
- package/dist/pc/SessionContext.js.map +1 -0
- package/dist/pc/browser/BrowserActions.d.ts +22 -0
- package/dist/pc/browser/BrowserActions.d.ts.map +1 -0
- package/dist/pc/browser/BrowserActions.js +223 -0
- package/dist/pc/browser/BrowserActions.js.map +1 -0
- package/dist/pc/browser/BrowserActions.test.d.ts +7 -0
- package/dist/pc/browser/BrowserActions.test.d.ts.map +1 -0
- package/dist/pc/browser/BrowserActions.test.js +150 -0
- package/dist/pc/browser/BrowserActions.test.js.map +1 -0
- package/dist/pc/browser/BrowserService.d.ts +66 -0
- package/dist/pc/browser/BrowserService.d.ts.map +1 -0
- package/dist/pc/browser/BrowserService.js +319 -0
- package/dist/pc/browser/BrowserService.js.map +1 -0
- package/dist/pc/browser/BrowserService.test.d.ts +7 -0
- package/dist/pc/browser/BrowserService.test.d.ts.map +1 -0
- package/dist/pc/browser/BrowserService.test.js +160 -0
- package/dist/pc/browser/BrowserService.test.js.map +1 -0
- package/dist/pc/browser/RefLocator.d.ts +39 -0
- package/dist/pc/browser/RefLocator.d.ts.map +1 -0
- package/dist/pc/browser/RefLocator.js +88 -0
- package/dist/pc/browser/RefLocator.js.map +1 -0
- package/dist/pc/browser/RoleSnapshotManager.d.ts +22 -0
- package/dist/pc/browser/RoleSnapshotManager.d.ts.map +1 -0
- package/dist/pc/browser/RoleSnapshotManager.js +143 -0
- package/dist/pc/browser/RoleSnapshotManager.js.map +1 -0
- package/dist/pc/browser/RoleSnapshotManager.test.d.ts +7 -0
- package/dist/pc/browser/RoleSnapshotManager.test.d.ts.map +1 -0
- package/dist/pc/browser/RoleSnapshotManager.test.js +152 -0
- package/dist/pc/browser/RoleSnapshotManager.test.js.map +1 -0
- package/dist/pc/browser/Security.test.d.ts +7 -0
- package/dist/pc/browser/Security.test.d.ts.map +1 -0
- package/dist/pc/browser/Security.test.js +171 -0
- package/dist/pc/browser/Security.test.js.map +1 -0
- package/dist/pc/browser/types.d.ts +142 -0
- package/dist/pc/browser/types.d.ts.map +1 -0
- package/dist/pc/browser/types.js +60 -0
- package/dist/pc/browser/types.js.map +1 -0
- package/dist/pc/google/OAuthFlow.d.ts +58 -0
- package/dist/pc/google/OAuthFlow.d.ts.map +1 -0
- package/dist/pc/google/OAuthFlow.js +322 -0
- package/dist/pc/google/OAuthFlow.js.map +1 -0
- package/dist/pc/google/OAuthFlow.test.d.ts +7 -0
- package/dist/pc/google/OAuthFlow.test.d.ts.map +1 -0
- package/dist/pc/google/OAuthFlow.test.js +178 -0
- package/dist/pc/google/OAuthFlow.test.js.map +1 -0
- package/dist/pc/google/ScopeManager.d.ts +28 -0
- package/dist/pc/google/ScopeManager.d.ts.map +1 -0
- package/dist/pc/google/ScopeManager.js +75 -0
- package/dist/pc/google/ScopeManager.js.map +1 -0
- package/dist/pc/google/TokenStore.d.ts +49 -0
- package/dist/pc/google/TokenStore.d.ts.map +1 -0
- package/dist/pc/google/TokenStore.js +324 -0
- package/dist/pc/google/TokenStore.js.map +1 -0
- package/dist/pc/google/TokenStore.test.d.ts +7 -0
- package/dist/pc/google/TokenStore.test.d.ts.map +1 -0
- package/dist/pc/google/TokenStore.test.js +134 -0
- package/dist/pc/google/TokenStore.test.js.map +1 -0
- package/dist/pc/google/services/CalendarService.d.ts +45 -0
- package/dist/pc/google/services/CalendarService.d.ts.map +1 -0
- package/dist/pc/google/services/CalendarService.js +148 -0
- package/dist/pc/google/services/CalendarService.js.map +1 -0
- package/dist/pc/google/services/DriveService.d.ts +33 -0
- package/dist/pc/google/services/DriveService.d.ts.map +1 -0
- package/dist/pc/google/services/DriveService.js +199 -0
- package/dist/pc/google/services/DriveService.js.map +1 -0
- package/dist/pc/google/services/GmailService.d.ts +50 -0
- package/dist/pc/google/services/GmailService.d.ts.map +1 -0
- package/dist/pc/google/services/GmailService.js +177 -0
- package/dist/pc/google/services/GmailService.js.map +1 -0
- package/dist/pc/google/services/Services.test.d.ts +8 -0
- package/dist/pc/google/services/Services.test.d.ts.map +1 -0
- package/dist/pc/google/services/Services.test.js +148 -0
- package/dist/pc/google/services/Services.test.js.map +1 -0
- package/dist/pc/google/services/SheetsService.d.ts +27 -0
- package/dist/pc/google/services/SheetsService.d.ts.map +1 -0
- package/dist/pc/google/services/SheetsService.js +107 -0
- package/dist/pc/google/services/SheetsService.js.map +1 -0
- package/dist/pc/google/types.d.ts +97 -0
- package/dist/pc/google/types.d.ts.map +1 -0
- package/dist/pc/google/types.js +39 -0
- package/dist/pc/google/types.js.map +1 -0
- package/dist/pc/google/types.test.d.ts +8 -0
- package/dist/pc/google/types.test.d.ts.map +1 -0
- package/dist/pc/google/types.test.js +131 -0
- package/dist/pc/google/types.test.js.map +1 -0
- package/dist/pc/sandbox/ContainerConfig.d.ts +24 -0
- package/dist/pc/sandbox/ContainerConfig.d.ts.map +1 -0
- package/dist/pc/sandbox/ContainerConfig.js +103 -0
- package/dist/pc/sandbox/ContainerConfig.js.map +1 -0
- package/dist/pc/sandbox/ContainerManager.d.ts +31 -0
- package/dist/pc/sandbox/ContainerManager.d.ts.map +1 -0
- package/dist/pc/sandbox/ContainerManager.js +245 -0
- package/dist/pc/sandbox/ContainerManager.js.map +1 -0
- package/dist/pc/sandbox/ContainerManager.test.d.ts +2 -0
- package/dist/pc/sandbox/ContainerManager.test.d.ts.map +1 -0
- package/dist/pc/sandbox/ContainerManager.test.js +249 -0
- package/dist/pc/sandbox/ContainerManager.test.js.map +1 -0
- package/dist/pc/sandbox/ExecAllowlist.d.ts +35 -0
- package/dist/pc/sandbox/ExecAllowlist.d.ts.map +1 -0
- package/dist/pc/sandbox/ExecAllowlist.js +148 -0
- package/dist/pc/sandbox/ExecAllowlist.js.map +1 -0
- package/dist/pc/sandbox/ExecAllowlist.test.d.ts +2 -0
- package/dist/pc/sandbox/ExecAllowlist.test.d.ts.map +1 -0
- package/dist/pc/sandbox/ExecAllowlist.test.js +210 -0
- package/dist/pc/sandbox/ExecAllowlist.test.js.map +1 -0
- package/dist/pc/sandbox/SandboxBrowser.d.ts +29 -0
- package/dist/pc/sandbox/SandboxBrowser.d.ts.map +1 -0
- package/dist/pc/sandbox/SandboxBrowser.js +72 -0
- package/dist/pc/sandbox/SandboxBrowser.js.map +1 -0
- package/dist/pc/sandbox/ToolPolicy.d.ts +24 -0
- package/dist/pc/sandbox/ToolPolicy.d.ts.map +1 -0
- package/dist/pc/sandbox/ToolPolicy.js +127 -0
- package/dist/pc/sandbox/ToolPolicy.js.map +1 -0
- package/dist/pc/sandbox/ToolPolicy.test.d.ts +2 -0
- package/dist/pc/sandbox/ToolPolicy.test.d.ts.map +1 -0
- package/dist/pc/sandbox/ToolPolicy.test.js +189 -0
- package/dist/pc/sandbox/ToolPolicy.test.js.map +1 -0
- package/dist/pc/sandbox/types.d.ts +109 -0
- package/dist/pc/sandbox/types.d.ts.map +1 -0
- package/dist/pc/sandbox/types.js +26 -0
- package/dist/pc/sandbox/types.js.map +1 -0
- package/dist/pc/types.d.ts +84 -0
- package/dist/pc/types.d.ts.map +1 -0
- package/dist/pc/types.js +7 -0
- package/dist/pc/types.js.map +1 -0
- package/dist/policy/Evidence.d.ts +30 -0
- package/dist/policy/Evidence.d.ts.map +1 -0
- package/dist/policy/Evidence.js +134 -0
- package/dist/policy/Evidence.js.map +1 -0
- package/dist/policy/PolicyEngine.d.ts +34 -0
- package/dist/policy/PolicyEngine.d.ts.map +1 -0
- package/dist/policy/PolicyEngine.js +219 -0
- package/dist/policy/PolicyEngine.js.map +1 -0
- package/dist/policy/PolicyStore.d.ts +36 -0
- package/dist/policy/PolicyStore.d.ts.map +1 -0
- package/dist/policy/PolicyStore.js +160 -0
- package/dist/policy/PolicyStore.js.map +1 -0
- package/dist/policy/RiskCalculator.d.ts +20 -0
- package/dist/policy/RiskCalculator.d.ts.map +1 -0
- package/dist/policy/RiskCalculator.js +64 -0
- package/dist/policy/RiskCalculator.js.map +1 -0
- package/dist/policy/default-policies.d.ts +13 -0
- package/dist/policy/default-policies.d.ts.map +1 -0
- package/dist/policy/default-policies.js +99 -0
- package/dist/policy/default-policies.js.map +1 -0
- package/dist/policy/index.d.ts +11 -0
- package/dist/policy/index.d.ts.map +1 -0
- package/dist/policy/index.js +10 -0
- package/dist/policy/index.js.map +1 -0
- package/dist/policy/policy.test.d.ts +5 -0
- package/dist/policy/policy.test.d.ts.map +1 -0
- package/dist/policy/policy.test.js +628 -0
- package/dist/policy/policy.test.js.map +1 -0
- package/dist/policy/types.d.ts +71 -0
- package/dist/policy/types.d.ts.map +1 -0
- package/dist/policy/types.js +18 -0
- package/dist/policy/types.js.map +1 -0
- package/dist/router/ModelARouter.d.ts +79 -0
- package/dist/router/ModelARouter.d.ts.map +1 -0
- package/dist/router/ModelARouter.js +325 -0
- package/dist/router/ModelARouter.js.map +1 -0
- package/dist/router/ModelARouter.test.d.ts +6 -0
- package/dist/router/ModelARouter.test.d.ts.map +1 -0
- package/dist/router/ModelARouter.test.js +100 -0
- package/dist/router/ModelARouter.test.js.map +1 -0
- package/dist/router/MultiChannelRouter.d.ts +54 -0
- package/dist/router/MultiChannelRouter.d.ts.map +1 -0
- package/dist/router/MultiChannelRouter.js +138 -0
- package/dist/router/MultiChannelRouter.js.map +1 -0
- package/dist/router/RouteRegistry.d.ts +23 -0
- package/dist/router/RouteRegistry.d.ts.map +1 -0
- package/dist/router/RouteRegistry.js +42 -0
- package/dist/router/RouteRegistry.js.map +1 -0
- package/dist/router/browser/BrowserAgent.d.ts +30 -0
- package/dist/router/browser/BrowserAgent.d.ts.map +1 -0
- package/dist/router/browser/BrowserAgent.js +232 -0
- package/dist/router/browser/BrowserAgent.js.map +1 -0
- package/dist/router/browser/BrowserManager.d.ts +36 -0
- package/dist/router/browser/BrowserManager.d.ts.map +1 -0
- package/dist/router/browser/BrowserManager.js +106 -0
- package/dist/router/browser/BrowserManager.js.map +1 -0
- package/dist/router/browser/BrowserPool.d.ts +37 -0
- package/dist/router/browser/BrowserPool.d.ts.map +1 -0
- package/dist/router/browser/BrowserPool.js +114 -0
- package/dist/router/browser/BrowserPool.js.map +1 -0
- package/dist/router/handlers/GitOpsHandler.d.ts +24 -0
- package/dist/router/handlers/GitOpsHandler.d.ts.map +1 -0
- package/dist/router/handlers/GitOpsHandler.js +66 -0
- package/dist/router/handlers/GitOpsHandler.js.map +1 -0
- package/dist/router/index.d.ts +22 -0
- package/dist/router/index.d.ts.map +1 -0
- package/dist/router/index.js +29 -0
- package/dist/router/index.js.map +1 -0
- package/dist/router/index.test.d.ts +2 -0
- package/dist/router/index.test.d.ts.map +1 -0
- package/dist/router/index.test.js +78 -0
- package/dist/router/index.test.js.map +1 -0
- package/dist/router/notifications/NotificationManager.d.ts +37 -0
- package/dist/router/notifications/NotificationManager.d.ts.map +1 -0
- package/dist/router/notifications/NotificationManager.js +118 -0
- package/dist/router/notifications/NotificationManager.js.map +1 -0
- package/dist/router/planner/TaskExecutor.d.ts +48 -0
- package/dist/router/planner/TaskExecutor.d.ts.map +1 -0
- package/dist/router/planner/TaskExecutor.js +160 -0
- package/dist/router/planner/TaskExecutor.js.map +1 -0
- package/dist/router/planner/TaskExecutor.test.d.ts +6 -0
- package/dist/router/planner/TaskExecutor.test.d.ts.map +1 -0
- package/dist/router/planner/TaskExecutor.test.js +121 -0
- package/dist/router/planner/TaskExecutor.test.js.map +1 -0
- package/dist/router/planner/TaskPlanner.d.ts +37 -0
- package/dist/router/planner/TaskPlanner.d.ts.map +1 -0
- package/dist/router/planner/TaskPlanner.js +176 -0
- package/dist/router/planner/TaskPlanner.js.map +1 -0
- package/dist/router/planner/TaskPlanner.test.d.ts +6 -0
- package/dist/router/planner/TaskPlanner.test.d.ts.map +1 -0
- package/dist/router/planner/TaskPlanner.test.js +119 -0
- package/dist/router/planner/TaskPlanner.test.js.map +1 -0
- package/dist/router/qa/TelegramQABridge.d.ts +37 -0
- package/dist/router/qa/TelegramQABridge.d.ts.map +1 -0
- package/dist/router/qa/TelegramQABridge.js +147 -0
- package/dist/router/qa/TelegramQABridge.js.map +1 -0
- package/dist/router/qa/TelegramQABridge.test.d.ts +6 -0
- package/dist/router/qa/TelegramQABridge.test.d.ts.map +1 -0
- package/dist/router/qa/TelegramQABridge.test.js +143 -0
- package/dist/router/qa/TelegramQABridge.test.js.map +1 -0
- package/dist/router/resolvers/RepoResolver.d.ts +29 -0
- package/dist/router/resolvers/RepoResolver.d.ts.map +1 -0
- package/dist/router/resolvers/RepoResolver.js +105 -0
- package/dist/router/resolvers/RepoResolver.js.map +1 -0
- package/dist/router/resolvers/RepoResolver.test.d.ts +6 -0
- package/dist/router/resolvers/RepoResolver.test.d.ts.map +1 -0
- package/dist/router/resolvers/RepoResolver.test.js +92 -0
- package/dist/router/resolvers/RepoResolver.test.js.map +1 -0
- package/dist/router/routes/BaseRoute.d.ts +22 -0
- package/dist/router/routes/BaseRoute.d.ts.map +1 -0
- package/dist/router/routes/BaseRoute.js +55 -0
- package/dist/router/routes/BaseRoute.js.map +1 -0
- package/dist/router/routes/BrowseRoute.d.ts +21 -0
- package/dist/router/routes/BrowseRoute.d.ts.map +1 -0
- package/dist/router/routes/BrowseRoute.js +121 -0
- package/dist/router/routes/BrowseRoute.js.map +1 -0
- package/dist/router/routes/CompositeRoute.d.ts +28 -0
- package/dist/router/routes/CompositeRoute.d.ts.map +1 -0
- package/dist/router/routes/CompositeRoute.js +125 -0
- package/dist/router/routes/CompositeRoute.js.map +1 -0
- package/dist/router/routes/CompositeRoute.test.d.ts +6 -0
- package/dist/router/routes/CompositeRoute.test.d.ts.map +1 -0
- package/dist/router/routes/CompositeRoute.test.js +82 -0
- package/dist/router/routes/CompositeRoute.test.js.map +1 -0
- package/dist/router/routes/DevRoute.d.ts +26 -0
- package/dist/router/routes/DevRoute.d.ts.map +1 -0
- package/dist/router/routes/DevRoute.js +118 -0
- package/dist/router/routes/DevRoute.js.map +1 -0
- package/dist/router/routes/GoogleRoute.d.ts +46 -0
- package/dist/router/routes/GoogleRoute.d.ts.map +1 -0
- package/dist/router/routes/GoogleRoute.js +293 -0
- package/dist/router/routes/GoogleRoute.js.map +1 -0
- package/dist/router/routes/GoogleRoute.test.d.ts +6 -0
- package/dist/router/routes/GoogleRoute.test.d.ts.map +1 -0
- package/dist/router/routes/GoogleRoute.test.js +171 -0
- package/dist/router/routes/GoogleRoute.test.js.map +1 -0
- package/dist/router/routes/MonitorRoute.d.ts +25 -0
- package/dist/router/routes/MonitorRoute.d.ts.map +1 -0
- package/dist/router/routes/MonitorRoute.js +112 -0
- package/dist/router/routes/MonitorRoute.js.map +1 -0
- package/dist/router/routes/MonitorRoute.test.d.ts +6 -0
- package/dist/router/routes/MonitorRoute.test.d.ts.map +1 -0
- package/dist/router/routes/MonitorRoute.test.js +97 -0
- package/dist/router/routes/MonitorRoute.test.js.map +1 -0
- package/dist/router/routes/ResearchRoute.d.ts +25 -0
- package/dist/router/routes/ResearchRoute.d.ts.map +1 -0
- package/dist/router/routes/ResearchRoute.js +113 -0
- package/dist/router/routes/ResearchRoute.js.map +1 -0
- package/dist/router/routes/ResearchRoute.test.d.ts +6 -0
- package/dist/router/routes/ResearchRoute.test.d.ts.map +1 -0
- package/dist/router/routes/ResearchRoute.test.js +104 -0
- package/dist/router/routes/ResearchRoute.test.js.map +1 -0
- package/dist/router/routes/UtilityRoute.d.ts +32 -0
- package/dist/router/routes/UtilityRoute.d.ts.map +1 -0
- package/dist/router/routes/UtilityRoute.js +144 -0
- package/dist/router/routes/UtilityRoute.js.map +1 -0
- package/dist/router/routes/UtilityRoute.test.d.ts +6 -0
- package/dist/router/routes/UtilityRoute.test.d.ts.map +1 -0
- package/dist/router/routes/UtilityRoute.test.js +134 -0
- package/dist/router/routes/UtilityRoute.test.js.map +1 -0
- package/dist/router/services/BookmarkService.d.ts +34 -0
- package/dist/router/services/BookmarkService.d.ts.map +1 -0
- package/dist/router/services/BookmarkService.js +86 -0
- package/dist/router/services/BookmarkService.js.map +1 -0
- package/dist/router/services/BookmarkService.test.d.ts +6 -0
- package/dist/router/services/BookmarkService.test.d.ts.map +1 -0
- package/dist/router/services/BookmarkService.test.js +82 -0
- package/dist/router/services/BookmarkService.test.js.map +1 -0
- package/dist/router/services/CalendarService.d.ts +30 -0
- package/dist/router/services/CalendarService.d.ts.map +1 -0
- package/dist/router/services/CalendarService.js +168 -0
- package/dist/router/services/CalendarService.js.map +1 -0
- package/dist/router/services/CalendarService.test.d.ts +6 -0
- package/dist/router/services/CalendarService.test.d.ts.map +1 -0
- package/dist/router/services/CalendarService.test.js +107 -0
- package/dist/router/services/CalendarService.test.js.map +1 -0
- package/dist/router/services/ContentSummarizer.d.ts +32 -0
- package/dist/router/services/ContentSummarizer.d.ts.map +1 -0
- package/dist/router/services/ContentSummarizer.js +108 -0
- package/dist/router/services/ContentSummarizer.js.map +1 -0
- package/dist/router/services/ContentSummarizer.test.d.ts +6 -0
- package/dist/router/services/ContentSummarizer.test.d.ts.map +1 -0
- package/dist/router/services/ContentSummarizer.test.js +82 -0
- package/dist/router/services/ContentSummarizer.test.js.map +1 -0
- package/dist/router/services/DailyReportGenerator.d.ts +34 -0
- package/dist/router/services/DailyReportGenerator.d.ts.map +1 -0
- package/dist/router/services/DailyReportGenerator.js +110 -0
- package/dist/router/services/DailyReportGenerator.js.map +1 -0
- package/dist/router/services/DocumentGenerator.d.ts +20 -0
- package/dist/router/services/DocumentGenerator.d.ts.map +1 -0
- package/dist/router/services/DocumentGenerator.js +34 -0
- package/dist/router/services/DocumentGenerator.js.map +1 -0
- package/dist/router/services/DriveService.d.ts +29 -0
- package/dist/router/services/DriveService.d.ts.map +1 -0
- package/dist/router/services/DriveService.js +176 -0
- package/dist/router/services/DriveService.js.map +1 -0
- package/dist/router/services/DriveService.test.d.ts +6 -0
- package/dist/router/services/DriveService.test.d.ts.map +1 -0
- package/dist/router/services/DriveService.test.js +83 -0
- package/dist/router/services/DriveService.test.js.map +1 -0
- package/dist/router/services/FileAnalyzer.d.ts +26 -0
- package/dist/router/services/FileAnalyzer.d.ts.map +1 -0
- package/dist/router/services/FileAnalyzer.js +82 -0
- package/dist/router/services/FileAnalyzer.js.map +1 -0
- package/dist/router/services/GitHubMonitor.d.ts +38 -0
- package/dist/router/services/GitHubMonitor.d.ts.map +1 -0
- package/dist/router/services/GitHubMonitor.js +82 -0
- package/dist/router/services/GitHubMonitor.js.map +1 -0
- package/dist/router/services/GitHubMonitor.test.d.ts +6 -0
- package/dist/router/services/GitHubMonitor.test.d.ts.map +1 -0
- package/dist/router/services/GitHubMonitor.test.js +103 -0
- package/dist/router/services/GitHubMonitor.test.js.map +1 -0
- package/dist/router/services/GmailService.d.ts +28 -0
- package/dist/router/services/GmailService.d.ts.map +1 -0
- package/dist/router/services/GmailService.js +169 -0
- package/dist/router/services/GmailService.js.map +1 -0
- package/dist/router/services/GmailService.test.d.ts +6 -0
- package/dist/router/services/GmailService.test.d.ts.map +1 -0
- package/dist/router/services/GmailService.test.js +113 -0
- package/dist/router/services/GmailService.test.js.map +1 -0
- package/dist/router/services/GoogleAuthManager.d.ts +31 -0
- package/dist/router/services/GoogleAuthManager.d.ts.map +1 -0
- package/dist/router/services/GoogleAuthManager.js +219 -0
- package/dist/router/services/GoogleAuthManager.js.map +1 -0
- package/dist/router/services/GoogleAuthManager.test.d.ts +6 -0
- package/dist/router/services/GoogleAuthManager.test.d.ts.map +1 -0
- package/dist/router/services/GoogleAuthManager.test.js +153 -0
- package/dist/router/services/GoogleAuthManager.test.js.map +1 -0
- package/dist/router/services/ImageGenerator.d.ts +20 -0
- package/dist/router/services/ImageGenerator.d.ts.map +1 -0
- package/dist/router/services/ImageGenerator.js +41 -0
- package/dist/router/services/ImageGenerator.js.map +1 -0
- package/dist/router/services/NoteService.d.ts +36 -0
- package/dist/router/services/NoteService.d.ts.map +1 -0
- package/dist/router/services/NoteService.js +125 -0
- package/dist/router/services/NoteService.js.map +1 -0
- package/dist/router/services/NoteService.test.d.ts +6 -0
- package/dist/router/services/NoteService.test.d.ts.map +1 -0
- package/dist/router/services/NoteService.test.js +90 -0
- package/dist/router/services/NoteService.test.js.map +1 -0
- package/dist/router/services/ProgressReporter.d.ts +32 -0
- package/dist/router/services/ProgressReporter.d.ts.map +1 -0
- package/dist/router/services/ProgressReporter.js +81 -0
- package/dist/router/services/ProgressReporter.js.map +1 -0
- package/dist/router/services/SchedulerEngine.d.ts +55 -0
- package/dist/router/services/SchedulerEngine.d.ts.map +1 -0
- package/dist/router/services/SchedulerEngine.js +215 -0
- package/dist/router/services/SchedulerEngine.js.map +1 -0
- package/dist/router/services/SchedulerEngine.test.d.ts +6 -0
- package/dist/router/services/SchedulerEngine.test.d.ts.map +1 -0
- package/dist/router/services/SchedulerEngine.test.js +102 -0
- package/dist/router/services/SchedulerEngine.test.js.map +1 -0
- package/dist/router/services/ScreenshotService.d.ts +22 -0
- package/dist/router/services/ScreenshotService.d.ts.map +1 -0
- package/dist/router/services/ScreenshotService.js +39 -0
- package/dist/router/services/ScreenshotService.js.map +1 -0
- package/dist/router/services/SheetsService.d.ts +27 -0
- package/dist/router/services/SheetsService.d.ts.map +1 -0
- package/dist/router/services/SheetsService.js +91 -0
- package/dist/router/services/SheetsService.js.map +1 -0
- package/dist/router/services/SheetsService.test.d.ts +6 -0
- package/dist/router/services/SheetsService.test.d.ts.map +1 -0
- package/dist/router/services/SheetsService.test.js +86 -0
- package/dist/router/services/SheetsService.test.js.map +1 -0
- package/dist/router/services/TranslationService.d.ts +21 -0
- package/dist/router/services/TranslationService.d.ts.map +1 -0
- package/dist/router/services/TranslationService.js +76 -0
- package/dist/router/services/TranslationService.js.map +1 -0
- package/dist/router/services/TranslationService.test.d.ts +6 -0
- package/dist/router/services/TranslationService.test.d.ts.map +1 -0
- package/dist/router/services/TranslationService.test.js +61 -0
- package/dist/router/services/TranslationService.test.js.map +1 -0
- package/dist/router/services/WebSearchService.d.ts +24 -0
- package/dist/router/services/WebSearchService.d.ts.map +1 -0
- package/dist/router/services/WebSearchService.js +78 -0
- package/dist/router/services/WebSearchService.js.map +1 -0
- package/dist/router/services/WebSearchService.test.d.ts +6 -0
- package/dist/router/services/WebSearchService.test.d.ts.map +1 -0
- package/dist/router/services/WebSearchService.test.js +75 -0
- package/dist/router/services/WebSearchService.test.js.map +1 -0
- package/dist/router/services/YouTubeService.d.ts +30 -0
- package/dist/router/services/YouTubeService.d.ts.map +1 -0
- package/dist/router/services/YouTubeService.js +145 -0
- package/dist/router/services/YouTubeService.js.map +1 -0
- package/dist/router/services/YouTubeService.test.d.ts +6 -0
- package/dist/router/services/YouTubeService.test.d.ts.map +1 -0
- package/dist/router/services/YouTubeService.test.js +128 -0
- package/dist/router/services/YouTubeService.test.js.map +1 -0
- package/dist/router/services/google-types.d.ts +222 -0
- package/dist/router/services/google-types.d.ts.map +1 -0
- package/dist/router/services/google-types.js +6 -0
- package/dist/router/services/google-types.js.map +1 -0
- package/dist/router/sessions/DevSessionManager.d.ts +39 -0
- package/dist/router/sessions/DevSessionManager.d.ts.map +1 -0
- package/dist/router/sessions/DevSessionManager.js +151 -0
- package/dist/router/sessions/DevSessionManager.js.map +1 -0
- package/dist/router/types.d.ts +117 -0
- package/dist/router/types.d.ts.map +1 -0
- package/dist/router/types.js +25 -0
- package/dist/router/types.js.map +1 -0
- package/dist/sync/ConflictResolver.d.ts +29 -0
- package/dist/sync/ConflictResolver.d.ts.map +1 -0
- package/dist/sync/ConflictResolver.js +106 -0
- package/dist/sync/ConflictResolver.js.map +1 -0
- package/dist/sync/DataSerializer.d.ts +33 -0
- package/dist/sync/DataSerializer.d.ts.map +1 -0
- package/dist/sync/DataSerializer.js +207 -0
- package/dist/sync/DataSerializer.js.map +1 -0
- package/dist/sync/DeviceManager.d.ts +31 -0
- package/dist/sync/DeviceManager.d.ts.map +1 -0
- package/dist/sync/DeviceManager.js +141 -0
- package/dist/sync/DeviceManager.js.map +1 -0
- package/dist/sync/SyncEngine.d.ts +56 -0
- package/dist/sync/SyncEngine.d.ts.map +1 -0
- package/dist/sync/SyncEngine.js +172 -0
- package/dist/sync/SyncEngine.js.map +1 -0
- package/dist/sync/SyncStore.d.ts +46 -0
- package/dist/sync/SyncStore.d.ts.map +1 -0
- package/dist/sync/SyncStore.js +219 -0
- package/dist/sync/SyncStore.js.map +1 -0
- package/dist/sync/index.d.ts +12 -0
- package/dist/sync/index.d.ts.map +1 -0
- package/dist/sync/index.js +11 -0
- package/dist/sync/index.js.map +1 -0
- package/dist/sync/sync.test.d.ts +5 -0
- package/dist/sync/sync.test.d.ts.map +1 -0
- package/dist/sync/sync.test.js +416 -0
- package/dist/sync/sync.test.js.map +1 -0
- package/dist/sync/types.d.ts +80 -0
- package/dist/sync/types.d.ts.map +1 -0
- package/dist/sync/types.js +12 -0
- package/dist/sync/types.js.map +1 -0
- package/dist/tools/browser/index.d.ts +47 -0
- package/dist/tools/browser/index.d.ts.map +1 -0
- package/dist/tools/browser/index.js +413 -0
- package/dist/tools/browser/index.js.map +1 -0
- package/dist/tools/convention/analyzeComplexity.test.js +115 -115
- package/dist/tools/convention/validateCodeQuality.test.js +104 -104
- package/dist/tools/google/index.d.ts +84 -0
- package/dist/tools/google/index.d.ts.map +1 -0
- package/dist/tools/google/index.js +508 -0
- package/dist/tools/google/index.js.map +1 -0
- package/dist/tools/integration/index.d.ts +24 -0
- package/dist/tools/integration/index.d.ts.map +1 -0
- package/dist/tools/integration/index.js +223 -0
- package/dist/tools/integration/index.js.map +1 -0
- package/dist/tools/memory/createMemoryTimeline.js +10 -10
- package/dist/tools/memory/getMemoryGraph.js +12 -12
- package/dist/tools/memory/getSessionContext.js +9 -9
- package/dist/tools/memory/linkMemories.js +14 -14
- package/dist/tools/memory/listMemories.js +4 -4
- package/dist/tools/memory/recallMemory.js +4 -4
- package/dist/tools/memory/saveMemory.js +4 -4
- package/dist/tools/memory/searchMemoriesAdvanced.js +23 -23
- package/dist/tools/sandbox/index.d.ts +25 -0
- package/dist/tools/sandbox/index.d.ts.map +1 -0
- package/dist/tools/sandbox/index.js +255 -0
- package/dist/tools/sandbox/index.js.map +1 -0
- package/dist/tools/semantic/analyzeDependencyGraph.js +12 -12
- package/dist/tools/semantic/astGrep.test.js +6 -6
- package/dist/tools/spec/prdParser.test.js +171 -171
- package/dist/tools/spec/specGenerator.js +169 -169
- package/dist/tools/spec/traceabilityMatrix.js +64 -64
- package/dist/tools/spec/traceabilityMatrix.test.js +28 -28
- package/dist/tools/vision/index.d.ts +45 -0
- package/dist/tools/vision/index.d.ts.map +1 -0
- package/dist/tools/vision/index.js +328 -0
- package/dist/tools/vision/index.js.map +1 -0
- package/dist/tools/voice/index.d.ts +24 -0
- package/dist/tools/voice/index.d.ts.map +1 -0
- package/dist/tools/voice/index.js +204 -0
- package/dist/tools/voice/index.js.map +1 -0
- package/dist/types/tool.d.ts +64 -0
- package/dist/types/tool.d.ts.map +1 -0
- package/dist/types/tool.js +3 -0
- package/dist/types/tool.js.map +1 -0
- package/hooks/hooks.json +137 -137
- package/hooks/scripts/code-check.js +70 -70
- package/hooks/scripts/context-save.js +212 -212
- package/hooks/scripts/hud-status.js +291 -291
- package/hooks/scripts/keyword-detector.js +214 -214
- package/hooks/scripts/llm-orchestrate.js +646 -646
- package/hooks/scripts/post-edit.js +32 -32
- package/hooks/scripts/pre-tool-guard.js +125 -125
- package/hooks/scripts/prompt-dispatcher.js +185 -185
- package/hooks/scripts/sentinel-guard.js +104 -104
- package/hooks/scripts/session-start.js +106 -106
- package/hooks/scripts/stop-notify.js +209 -209
- package/hooks/scripts/utils.js +100 -100
- package/languages/csharp-unity.md +515 -515
- package/languages/gdscript-godot.md +470 -470
- package/languages/ruby-rails.md +489 -489
- package/languages/typescript-angular.md +433 -433
- package/languages/typescript-astro.md +416 -416
- package/languages/typescript-electron.md +406 -406
- package/languages/typescript-nestjs.md +524 -524
- package/languages/typescript-svelte.md +407 -407
- package/languages/typescript-tauri.md +365 -365
- package/package.json +121 -121
- package/skills/brand-assets/SKILL.md +138 -138
- package/skills/characterization-test/SKILL.md +202 -202
- package/skills/commerce-patterns/SKILL.md +361 -361
- package/skills/commit-push-pr/SKILL.md +118 -118
- package/skills/context7-usage/SKILL.md +105 -105
- package/skills/e2e-commerce/SKILL.md +304 -304
- package/skills/frontend-design/SKILL.md +92 -92
- package/skills/git-worktree/SKILL.md +184 -184
- package/skills/handoff/SKILL.md +101 -101
- package/skills/priority-todos/SKILL.md +242 -242
- package/skills/seo-checklist/SKILL.md +244 -244
- package/skills/techdebt/SKILL.md +122 -122
- package/skills/tool-fallback/SKILL.md +193 -193
- package/skills/typescript-advanced-types/SKILL.md +720 -720
- package/skills/ui-ux-pro-max/SKILL.md +386 -386
- package/skills/vercel-react-best-practices/SKILL.md +304 -304
- package/skills/video-production/SKILL.md +222 -222
- package/vibe/config.json +29 -29
- package/vibe/constitution.md +227 -227
- package/vibe/rules/principles/communication-guide.md +98 -98
- package/vibe/rules/principles/development-philosophy.md +52 -52
- package/vibe/rules/principles/quick-start.md +102 -102
- package/vibe/rules/quality/bdd-contract-testing.md +393 -393
- package/vibe/rules/quality/checklist.md +276 -276
- package/vibe/rules/quality/performance.md +236 -236
- package/vibe/rules/quality/testing-strategy.md +440 -440
- package/vibe/rules/standards/anti-patterns.md +541 -541
- package/vibe/rules/standards/code-structure.md +291 -291
- package/vibe/rules/standards/complexity-metrics.md +313 -313
- package/vibe/rules/standards/git-workflow.md +237 -237
- package/vibe/rules/standards/naming-conventions.md +198 -198
- package/vibe/rules/standards/security.md +305 -305
- package/vibe/rules/writing/document-style.md +74 -74
- package/vibe/setup.sh +31 -31
- package/vibe/templates/constitution-template.md +252 -252
- package/vibe/templates/contract-backend-template.md +526 -526
- package/vibe/templates/contract-frontend-template.md +599 -599
- package/vibe/templates/feature-template.md +96 -96
- package/vibe/templates/spec-template.md +221 -221
- package/vibe/ui-ux-data/charts.csv +26 -26
- package/vibe/ui-ux-data/colors.csv +97 -97
- package/vibe/ui-ux-data/icons.csv +101 -101
- package/vibe/ui-ux-data/landing.csv +31 -31
- package/vibe/ui-ux-data/products.csv +96 -96
- package/vibe/ui-ux-data/react-performance.csv +45 -45
- package/vibe/ui-ux-data/stacks/astro.csv +54 -54
- package/vibe/ui-ux-data/stacks/flutter.csv +53 -53
- package/vibe/ui-ux-data/stacks/html-tailwind.csv +56 -56
- package/vibe/ui-ux-data/stacks/jetpack-compose.csv +53 -53
- package/vibe/ui-ux-data/stacks/nextjs.csv +53 -53
- package/vibe/ui-ux-data/stacks/nuxt-ui.csv +51 -51
- package/vibe/ui-ux-data/stacks/nuxtjs.csv +59 -59
- package/vibe/ui-ux-data/stacks/react-native.csv +52 -52
- package/vibe/ui-ux-data/stacks/react.csv +54 -54
- package/vibe/ui-ux-data/stacks/shadcn.csv +61 -61
- package/vibe/ui-ux-data/stacks/svelte.csv +54 -54
- package/vibe/ui-ux-data/stacks/swiftui.csv +51 -51
- package/vibe/ui-ux-data/stacks/vue.csv +50 -50
- package/vibe/ui-ux-data/styles.csv +68 -68
- package/vibe/ui-ux-data/typography.csv +57 -57
- package/vibe/ui-ux-data/ui-reasoning.csv +101 -101
- package/vibe/ui-ux-data/ux-guidelines.csv +99 -99
- package/vibe/ui-ux-data/version.json +31 -31
- package/vibe/ui-ux-data/web-interface.csv +31 -31
|
@@ -1,720 +1,720 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: "TypeScript advanced type system master guide. Covers Generics, Conditional Types, Mapped Types, Template Literals, Utility Types. Activates for complex type logic, reusable type utilities, and compile-time type safety."
|
|
3
|
-
sections:
|
|
4
|
-
- name: "Core Concepts"
|
|
5
|
-
triggers: [generic, generics, constraint, conditional, infer, mapped, utility, Pick, Omit, Partial, Required, Record, Exclude, Extract, readonly]
|
|
6
|
-
- name: "Advanced Patterns"
|
|
7
|
-
triggers: [template literal, branded, opaque, phantom, discriminated union, exhaustive, builder pattern, recursive type, variadic tuple]
|
|
8
|
-
- name: "Type Inference"
|
|
9
|
-
triggers: [inference, infer, type narrowing, type guard, satisfies, const assertion]
|
|
10
|
-
- name: "Best Practices"
|
|
11
|
-
triggers: [best practice, type safety, convention]
|
|
12
|
-
- name: "Type Testing"
|
|
13
|
-
triggers: [type test, type assertion, expectType, tsd]
|
|
14
|
-
- name: "Common Mistakes"
|
|
15
|
-
triggers: [mistake, pitfall, error, wrong]
|
|
16
|
-
- name: "Performance"
|
|
17
|
-
triggers: [performance, compile time, type complexity, depth limit]
|
|
18
|
-
---
|
|
19
|
-
|
|
20
|
-
# TypeScript Advanced Types
|
|
21
|
-
|
|
22
|
-
Comprehensive guide for building type-safe applications using TypeScript's advanced type system. Covers Generics, Conditional Types, Mapped Types, Template Literal Types, and Utility Types.
|
|
23
|
-
|
|
24
|
-
## When to Apply
|
|
25
|
-
|
|
26
|
-
- Building type-safe libraries/frameworks
|
|
27
|
-
- Creating reusable generic components
|
|
28
|
-
- Implementing complex type inference logic
|
|
29
|
-
- Designing type-safe API clients
|
|
30
|
-
- Building form validation systems
|
|
31
|
-
- Creating strongly-typed configuration objects
|
|
32
|
-
- Implementing type-safe state management
|
|
33
|
-
- Migrating JavaScript to TypeScript
|
|
34
|
-
|
|
35
|
-
## VIBE TypeScript Rule Integration
|
|
36
|
-
|
|
37
|
-
> VIBE blocks `any` type usage. The patterns in this skill provide alternatives for type safety without `any`.
|
|
38
|
-
|
|
39
|
-
| Forbidden Pattern | Alternative (from this skill) |
|
|
40
|
-
|-------------------|-------------------------------|
|
|
41
|
-
| `any` | `unknown` + type guards |
|
|
42
|
-
| `as any` | Define proper interfaces |
|
|
43
|
-
| `@ts-ignore` | Fix type issues directly |
|
|
44
|
-
| Raw generic types | Specify type parameters |
|
|
45
|
-
|
|
46
|
-
## Core Concepts
|
|
47
|
-
|
|
48
|
-
### 1. Generics
|
|
49
|
-
|
|
50
|
-
The key tool for creating reusable yet type-safe components.
|
|
51
|
-
|
|
52
|
-
**Basic Generic Function:**
|
|
53
|
-
|
|
54
|
-
```typescript
|
|
55
|
-
function identity<T>(value: T): T {
|
|
56
|
-
return value;
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
const num = identity<number>(42); // Type: number
|
|
60
|
-
const str = identity<string>("hello"); // Type: string
|
|
61
|
-
const auto = identity(true); // Type: boolean (inferred)
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
**Generic Constraints:**
|
|
65
|
-
|
|
66
|
-
```typescript
|
|
67
|
-
interface HasLength {
|
|
68
|
-
length: number;
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
function logLength<T extends HasLength>(item: T): T {
|
|
72
|
-
console.log(item.length);
|
|
73
|
-
return item;
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
logLength("hello"); // OK: string has length
|
|
77
|
-
logLength([1, 2, 3]); // OK: array has length
|
|
78
|
-
// logLength(42); // Error: number has no length
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
**Multiple Type Parameters:**
|
|
82
|
-
|
|
83
|
-
```typescript
|
|
84
|
-
function merge<T, U>(obj1: T, obj2: U): T & U {
|
|
85
|
-
return { ...obj1, ...obj2 };
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
const merged = merge({ name: "John" }, { age: 30 });
|
|
89
|
-
// Type: { name: string } & { age: number }
|
|
90
|
-
```
|
|
91
|
-
|
|
92
|
-
### 2. Conditional Types
|
|
93
|
-
|
|
94
|
-
Sophisticated type logic where types are determined by conditions.
|
|
95
|
-
|
|
96
|
-
**Basic Conditional Type:**
|
|
97
|
-
|
|
98
|
-
```typescript
|
|
99
|
-
type IsString<T> = T extends string ? true : false;
|
|
100
|
-
|
|
101
|
-
type A = IsString<string>; // true
|
|
102
|
-
type B = IsString<number>; // false
|
|
103
|
-
```
|
|
104
|
-
|
|
105
|
-
**Return Type Extraction:**
|
|
106
|
-
|
|
107
|
-
```typescript
|
|
108
|
-
type ReturnType<T> = T extends (...args: unknown[]) => infer R ? R : never;
|
|
109
|
-
|
|
110
|
-
function getUser() {
|
|
111
|
-
return { id: 1, name: "John" };
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
type User = ReturnType<typeof getUser>;
|
|
115
|
-
// Type: { id: number; name: string; }
|
|
116
|
-
```
|
|
117
|
-
|
|
118
|
-
**Distributive Conditional Types:**
|
|
119
|
-
|
|
120
|
-
```typescript
|
|
121
|
-
type ToArray<T> = T extends unknown ? T[] : never;
|
|
122
|
-
|
|
123
|
-
type StrOrNumArray = ToArray<string | number>;
|
|
124
|
-
// Type: string[] | number[]
|
|
125
|
-
```
|
|
126
|
-
|
|
127
|
-
**Nested Conditions:**
|
|
128
|
-
|
|
129
|
-
```typescript
|
|
130
|
-
type TypeName<T> = T extends string
|
|
131
|
-
? "string"
|
|
132
|
-
: T extends number
|
|
133
|
-
? "number"
|
|
134
|
-
: T extends boolean
|
|
135
|
-
? "boolean"
|
|
136
|
-
: T extends undefined
|
|
137
|
-
? "undefined"
|
|
138
|
-
: T extends Function
|
|
139
|
-
? "function"
|
|
140
|
-
: "object";
|
|
141
|
-
|
|
142
|
-
type T1 = TypeName<string>; // "string"
|
|
143
|
-
type T2 = TypeName<() => void>; // "function"
|
|
144
|
-
```
|
|
145
|
-
|
|
146
|
-
### 3. Mapped Types
|
|
147
|
-
|
|
148
|
-
Types that iterate over and transform properties of existing types.
|
|
149
|
-
|
|
150
|
-
**Basic Mapped Type:**
|
|
151
|
-
|
|
152
|
-
```typescript
|
|
153
|
-
type Readonly<T> = {
|
|
154
|
-
readonly [P in keyof T]: T[P];
|
|
155
|
-
};
|
|
156
|
-
|
|
157
|
-
interface User {
|
|
158
|
-
id: number;
|
|
159
|
-
name: string;
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
type ReadonlyUser = Readonly<User>;
|
|
163
|
-
// Type: { readonly id: number; readonly name: string; }
|
|
164
|
-
```
|
|
165
|
-
|
|
166
|
-
**Key Remapping:**
|
|
167
|
-
|
|
168
|
-
```typescript
|
|
169
|
-
type Getters<T> = {
|
|
170
|
-
[K in keyof T as `get${Capitalize<string & K>}`]: () => T[K];
|
|
171
|
-
};
|
|
172
|
-
|
|
173
|
-
interface Person {
|
|
174
|
-
name: string;
|
|
175
|
-
age: number;
|
|
176
|
-
}
|
|
177
|
-
|
|
178
|
-
type PersonGetters = Getters<Person>;
|
|
179
|
-
// Type: { getName: () => string; getAge: () => number; }
|
|
180
|
-
```
|
|
181
|
-
|
|
182
|
-
**Property Filtering by Type:**
|
|
183
|
-
|
|
184
|
-
```typescript
|
|
185
|
-
type PickByType<T, U> = {
|
|
186
|
-
[K in keyof T as T[K] extends U ? K : never]: T[K];
|
|
187
|
-
};
|
|
188
|
-
|
|
189
|
-
interface Mixed {
|
|
190
|
-
id: number;
|
|
191
|
-
name: string;
|
|
192
|
-
age: number;
|
|
193
|
-
active: boolean;
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
type OnlyNumbers = PickByType<Mixed, number>;
|
|
197
|
-
// Type: { id: number; age: number; }
|
|
198
|
-
```
|
|
199
|
-
|
|
200
|
-
### 4. Template Literal Types
|
|
201
|
-
|
|
202
|
-
String-based pattern matching and transformation types.
|
|
203
|
-
|
|
204
|
-
**Basic Template Literal:**
|
|
205
|
-
|
|
206
|
-
```typescript
|
|
207
|
-
type EventName = "click" | "focus" | "blur";
|
|
208
|
-
type EventHandler = `on${Capitalize<EventName>}`;
|
|
209
|
-
// Type: "onClick" | "onFocus" | "onBlur"
|
|
210
|
-
```
|
|
211
|
-
|
|
212
|
-
**String Manipulation:**
|
|
213
|
-
|
|
214
|
-
```typescript
|
|
215
|
-
type Upper = Uppercase<"hello">; // "HELLO"
|
|
216
|
-
type Lower = Lowercase<"HELLO">; // "hello"
|
|
217
|
-
type Cap = Capitalize<"john">; // "John"
|
|
218
|
-
type Uncap = Uncapitalize<"John">; // "john"
|
|
219
|
-
```
|
|
220
|
-
|
|
221
|
-
**Path Builder:**
|
|
222
|
-
|
|
223
|
-
```typescript
|
|
224
|
-
type Path<T> = T extends object
|
|
225
|
-
? {
|
|
226
|
-
[K in keyof T]: K extends string
|
|
227
|
-
? `${K}` | `${K}.${Path<T[K]>}`
|
|
228
|
-
: never;
|
|
229
|
-
}[keyof T]
|
|
230
|
-
: never;
|
|
231
|
-
|
|
232
|
-
interface Config {
|
|
233
|
-
server: { host: string; port: number };
|
|
234
|
-
database: { url: string };
|
|
235
|
-
}
|
|
236
|
-
|
|
237
|
-
type ConfigPath = Path<Config>;
|
|
238
|
-
// Type: "server" | "database" | "server.host" | "server.port" | "database.url"
|
|
239
|
-
```
|
|
240
|
-
|
|
241
|
-
### 5. Utility Types
|
|
242
|
-
|
|
243
|
-
Built-in TypeScript utility types.
|
|
244
|
-
|
|
245
|
-
```typescript
|
|
246
|
-
// Partial<T> — make all properties optional
|
|
247
|
-
type PartialUser = Partial<User>;
|
|
248
|
-
|
|
249
|
-
// Required<T> — make all properties required
|
|
250
|
-
type RequiredUser = Required<PartialUser>;
|
|
251
|
-
|
|
252
|
-
// Readonly<T> — make all properties readonly
|
|
253
|
-
type ReadonlyUser = Readonly<User>;
|
|
254
|
-
|
|
255
|
-
// Pick<T, K> — pick specific properties
|
|
256
|
-
type UserName = Pick<User, "name" | "email">;
|
|
257
|
-
|
|
258
|
-
// Omit<T, K> — omit specific properties
|
|
259
|
-
type UserWithoutPassword = Omit<User, "password">;
|
|
260
|
-
|
|
261
|
-
// Exclude<T, U> — exclude types from union
|
|
262
|
-
type T1 = Exclude<"a" | "b" | "c", "a">; // "b" | "c"
|
|
263
|
-
|
|
264
|
-
// Extract<T, U> — extract types from union
|
|
265
|
-
type T2 = Extract<"a" | "b" | "c", "a" | "b">; // "a" | "b"
|
|
266
|
-
|
|
267
|
-
// NonNullable<T> — exclude null/undefined
|
|
268
|
-
type T3 = NonNullable<string | null | undefined>; // string
|
|
269
|
-
|
|
270
|
-
// Record<K, T> — object type with keys K and values T
|
|
271
|
-
type PageInfo = Record<"home" | "about", { title: string }>;
|
|
272
|
-
```
|
|
273
|
-
|
|
274
|
-
## Advanced Patterns
|
|
275
|
-
|
|
276
|
-
### Pattern 1: Type-safe Event Emitter
|
|
277
|
-
|
|
278
|
-
```typescript
|
|
279
|
-
type EventMap = {
|
|
280
|
-
"user:created": { id: string; name: string };
|
|
281
|
-
"user:updated": { id: string };
|
|
282
|
-
"user:deleted": { id: string };
|
|
283
|
-
};
|
|
284
|
-
|
|
285
|
-
class TypedEventEmitter<T extends Record<string, unknown>> {
|
|
286
|
-
private listeners: {
|
|
287
|
-
[K in keyof T]?: Array<(data: T[K]) => void>;
|
|
288
|
-
} = {};
|
|
289
|
-
|
|
290
|
-
on<K extends keyof T>(event: K, callback: (data: T[K]) => void): void {
|
|
291
|
-
if (!this.listeners[event]) {
|
|
292
|
-
this.listeners[event] = [];
|
|
293
|
-
}
|
|
294
|
-
this.listeners[event]!.push(callback);
|
|
295
|
-
}
|
|
296
|
-
|
|
297
|
-
emit<K extends keyof T>(event: K, data: T[K]): void {
|
|
298
|
-
const callbacks = this.listeners[event];
|
|
299
|
-
if (callbacks) {
|
|
300
|
-
callbacks.forEach((cb) => cb(data));
|
|
301
|
-
}
|
|
302
|
-
}
|
|
303
|
-
}
|
|
304
|
-
|
|
305
|
-
const emitter = new TypedEventEmitter<EventMap>();
|
|
306
|
-
emitter.on("user:created", (data) => {
|
|
307
|
-
console.log(data.id, data.name); // type-safe!
|
|
308
|
-
});
|
|
309
|
-
```
|
|
310
|
-
|
|
311
|
-
### Pattern 2: Type-safe API Client
|
|
312
|
-
|
|
313
|
-
```typescript
|
|
314
|
-
type HTTPMethod = "GET" | "POST" | "PUT" | "DELETE";
|
|
315
|
-
|
|
316
|
-
type EndpointConfig = {
|
|
317
|
-
"/users": {
|
|
318
|
-
GET: { response: User[] };
|
|
319
|
-
POST: { body: { name: string; email: string }; response: User };
|
|
320
|
-
};
|
|
321
|
-
"/users/:id": {
|
|
322
|
-
GET: { params: { id: string }; response: User };
|
|
323
|
-
PUT: { params: { id: string }; body: Partial<User>; response: User };
|
|
324
|
-
DELETE: { params: { id: string }; response: void };
|
|
325
|
-
};
|
|
326
|
-
};
|
|
327
|
-
|
|
328
|
-
type ExtractParams<T> = T extends { params: infer P } ? P : never;
|
|
329
|
-
type ExtractBody<T> = T extends { body: infer B } ? B : never;
|
|
330
|
-
type ExtractResponse<T> = T extends { response: infer R } ? R : never;
|
|
331
|
-
|
|
332
|
-
class APIClient<Config extends Record<string, Record<string, unknown>>> {
|
|
333
|
-
async request<
|
|
334
|
-
Path extends keyof Config,
|
|
335
|
-
Method extends keyof Config[Path]
|
|
336
|
-
>(
|
|
337
|
-
path: Path,
|
|
338
|
-
method: Method,
|
|
339
|
-
...[options]: ExtractParams<Config[Path][Method]> extends never
|
|
340
|
-
? ExtractBody<Config[Path][Method]> extends never
|
|
341
|
-
? []
|
|
342
|
-
: [{ body: ExtractBody<Config[Path][Method]> }]
|
|
343
|
-
: [
|
|
344
|
-
{
|
|
345
|
-
params: ExtractParams<Config[Path][Method]>;
|
|
346
|
-
body?: ExtractBody<Config[Path][Method]>;
|
|
347
|
-
},
|
|
348
|
-
]
|
|
349
|
-
): Promise<ExtractResponse<Config[Path][Method]>> {
|
|
350
|
-
// implementation
|
|
351
|
-
return {} as ExtractResponse<Config[Path][Method]>;
|
|
352
|
-
}
|
|
353
|
-
}
|
|
354
|
-
|
|
355
|
-
const api = new APIClient<EndpointConfig>();
|
|
356
|
-
|
|
357
|
-
// Type-safe API calls
|
|
358
|
-
const users = await api.request("/users", "GET");
|
|
359
|
-
// Type: User[]
|
|
360
|
-
|
|
361
|
-
const newUser = await api.request("/users", "POST", {
|
|
362
|
-
body: { name: "John", email: "john@example.com" },
|
|
363
|
-
});
|
|
364
|
-
// Type: User
|
|
365
|
-
|
|
366
|
-
const user = await api.request("/users/:id", "GET", {
|
|
367
|
-
params: { id: "123" },
|
|
368
|
-
});
|
|
369
|
-
// Type: User
|
|
370
|
-
```
|
|
371
|
-
|
|
372
|
-
### Pattern 3: Deep Readonly/Partial
|
|
373
|
-
|
|
374
|
-
```typescript
|
|
375
|
-
type DeepReadonly<T> = {
|
|
376
|
-
readonly [P in keyof T]: T[P] extends object
|
|
377
|
-
? T[P] extends Function
|
|
378
|
-
? T[P]
|
|
379
|
-
: DeepReadonly<T[P]>
|
|
380
|
-
: T[P];
|
|
381
|
-
};
|
|
382
|
-
|
|
383
|
-
type DeepPartial<T> = {
|
|
384
|
-
[P in keyof T]?: T[P] extends object
|
|
385
|
-
? T[P] extends Array<infer U>
|
|
386
|
-
? Array<DeepPartial<U>>
|
|
387
|
-
: DeepPartial<T[P]>
|
|
388
|
-
: T[P];
|
|
389
|
-
};
|
|
390
|
-
```
|
|
391
|
-
|
|
392
|
-
### Pattern 4: Type-safe Form Validation
|
|
393
|
-
|
|
394
|
-
```typescript
|
|
395
|
-
type ValidationRule<T> = {
|
|
396
|
-
validate: (value: T) => boolean;
|
|
397
|
-
message: string;
|
|
398
|
-
};
|
|
399
|
-
|
|
400
|
-
type FieldValidation<T> = {
|
|
401
|
-
[K in keyof T]?: ValidationRule<T[K]>[];
|
|
402
|
-
};
|
|
403
|
-
|
|
404
|
-
type ValidationErrors<T> = {
|
|
405
|
-
[K in keyof T]?: string[];
|
|
406
|
-
};
|
|
407
|
-
|
|
408
|
-
class FormValidator<T extends Record<string, unknown>> {
|
|
409
|
-
constructor(private rules: FieldValidation<T>) {}
|
|
410
|
-
|
|
411
|
-
validate(data: T): ValidationErrors<T> | null {
|
|
412
|
-
const errors: ValidationErrors<T> = {};
|
|
413
|
-
let hasErrors = false;
|
|
414
|
-
|
|
415
|
-
for (const key in this.rules) {
|
|
416
|
-
const fieldRules = this.rules[key];
|
|
417
|
-
const value = data[key];
|
|
418
|
-
|
|
419
|
-
if (fieldRules) {
|
|
420
|
-
const fieldErrors: string[] = [];
|
|
421
|
-
for (const rule of fieldRules) {
|
|
422
|
-
if (!rule.validate(value)) {
|
|
423
|
-
fieldErrors.push(rule.message);
|
|
424
|
-
}
|
|
425
|
-
}
|
|
426
|
-
if (fieldErrors.length > 0) {
|
|
427
|
-
errors[key] = fieldErrors;
|
|
428
|
-
hasErrors = true;
|
|
429
|
-
}
|
|
430
|
-
}
|
|
431
|
-
}
|
|
432
|
-
|
|
433
|
-
return hasErrors ? errors : null;
|
|
434
|
-
}
|
|
435
|
-
}
|
|
436
|
-
```
|
|
437
|
-
|
|
438
|
-
### Pattern 5: Discriminated Unions
|
|
439
|
-
|
|
440
|
-
```typescript
|
|
441
|
-
type Success<T> = { status: "success"; data: T };
|
|
442
|
-
type Failure = { status: "error"; error: string };
|
|
443
|
-
type Pending = { status: "loading" };
|
|
444
|
-
|
|
445
|
-
type AsyncState<T> = Success<T> | Failure | Pending;
|
|
446
|
-
|
|
447
|
-
function handleState<T>(state: AsyncState<T>): void {
|
|
448
|
-
switch (state.status) {
|
|
449
|
-
case "success":
|
|
450
|
-
console.log(state.data); // Type: T
|
|
451
|
-
break;
|
|
452
|
-
case "error":
|
|
453
|
-
console.log(state.error); // Type: string
|
|
454
|
-
break;
|
|
455
|
-
case "loading":
|
|
456
|
-
console.log("Loading...");
|
|
457
|
-
break;
|
|
458
|
-
}
|
|
459
|
-
}
|
|
460
|
-
```
|
|
461
|
-
|
|
462
|
-
**Type-safe State Machine:**
|
|
463
|
-
|
|
464
|
-
```typescript
|
|
465
|
-
type State =
|
|
466
|
-
| { type: "idle" }
|
|
467
|
-
| { type: "fetching"; requestId: string }
|
|
468
|
-
| { type: "success"; data: unknown }
|
|
469
|
-
| { type: "error"; error: Error };
|
|
470
|
-
|
|
471
|
-
type Event =
|
|
472
|
-
| { type: "FETCH"; requestId: string }
|
|
473
|
-
| { type: "SUCCESS"; data: unknown }
|
|
474
|
-
| { type: "ERROR"; error: Error }
|
|
475
|
-
| { type: "RESET" };
|
|
476
|
-
|
|
477
|
-
function reducer(state: State, event: Event): State {
|
|
478
|
-
switch (state.type) {
|
|
479
|
-
case "idle":
|
|
480
|
-
return event.type === "FETCH"
|
|
481
|
-
? { type: "fetching", requestId: event.requestId }
|
|
482
|
-
: state;
|
|
483
|
-
case "fetching":
|
|
484
|
-
if (event.type === "SUCCESS") {
|
|
485
|
-
return { type: "success", data: event.data };
|
|
486
|
-
}
|
|
487
|
-
if (event.type === "ERROR") {
|
|
488
|
-
return { type: "error", error: event.error };
|
|
489
|
-
}
|
|
490
|
-
return state;
|
|
491
|
-
case "success":
|
|
492
|
-
case "error":
|
|
493
|
-
return event.type === "RESET" ? { type: "idle" } : state;
|
|
494
|
-
}
|
|
495
|
-
}
|
|
496
|
-
```
|
|
497
|
-
|
|
498
|
-
### Pattern 6: Builder Pattern (Type-safe)
|
|
499
|
-
|
|
500
|
-
```typescript
|
|
501
|
-
type BuilderState<T> = {
|
|
502
|
-
[K in keyof T]: T[K] | undefined;
|
|
503
|
-
};
|
|
504
|
-
|
|
505
|
-
type RequiredKeys<T> = {
|
|
506
|
-
[K in keyof T]-?: Record<string, never> extends Pick<T, K> ? never : K;
|
|
507
|
-
}[keyof T];
|
|
508
|
-
|
|
509
|
-
type IsComplete<T, S> =
|
|
510
|
-
RequiredKeys<T> extends keyof S
|
|
511
|
-
? S[RequiredKeys<T>] extends undefined
|
|
512
|
-
? false
|
|
513
|
-
: true
|
|
514
|
-
: false;
|
|
515
|
-
|
|
516
|
-
class Builder<T, S extends BuilderState<T> = Record<string, never> & BuilderState<T>> {
|
|
517
|
-
private state: S = {} as S;
|
|
518
|
-
|
|
519
|
-
set<K extends keyof T>(key: K, value: T[K]): Builder<T, S & Record<K, T[K]>> {
|
|
520
|
-
(this.state as Record<string, unknown>)[key as string] = value;
|
|
521
|
-
return this as unknown as Builder<T, S & Record<K, T[K]>>;
|
|
522
|
-
}
|
|
523
|
-
|
|
524
|
-
build(this: IsComplete<T, S> extends true ? Builder<T, S> : never): T {
|
|
525
|
-
return this.state as unknown as T;
|
|
526
|
-
}
|
|
527
|
-
}
|
|
528
|
-
|
|
529
|
-
interface UserConfig {
|
|
530
|
-
id: string;
|
|
531
|
-
name: string;
|
|
532
|
-
email: string;
|
|
533
|
-
age?: number;
|
|
534
|
-
}
|
|
535
|
-
|
|
536
|
-
const userBuilder = new Builder<UserConfig>();
|
|
537
|
-
|
|
538
|
-
const config = userBuilder
|
|
539
|
-
.set("id", "1")
|
|
540
|
-
.set("name", "John")
|
|
541
|
-
.set("email", "john@example.com")
|
|
542
|
-
.build(); // OK: all required fields set
|
|
543
|
-
|
|
544
|
-
// const incomplete = userBuilder
|
|
545
|
-
// .set("id", "1")
|
|
546
|
-
// .build(); // Error: required fields missing
|
|
547
|
-
```
|
|
548
|
-
|
|
549
|
-
### Pattern 7: Deep Readonly/Partial Usage
|
|
550
|
-
|
|
551
|
-
```typescript
|
|
552
|
-
interface AppConfig {
|
|
553
|
-
server: {
|
|
554
|
-
host: string;
|
|
555
|
-
port: number;
|
|
556
|
-
ssl: {
|
|
557
|
-
enabled: boolean;
|
|
558
|
-
cert: string;
|
|
559
|
-
};
|
|
560
|
-
};
|
|
561
|
-
database: {
|
|
562
|
-
url: string;
|
|
563
|
-
pool: {
|
|
564
|
-
min: number;
|
|
565
|
-
max: number;
|
|
566
|
-
};
|
|
567
|
-
};
|
|
568
|
-
}
|
|
569
|
-
|
|
570
|
-
type ReadonlyConfig = DeepReadonly<AppConfig>;
|
|
571
|
-
// All nested properties are readonly
|
|
572
|
-
|
|
573
|
-
type PartialConfig = DeepPartial<AppConfig>;
|
|
574
|
-
// All nested properties are optional
|
|
575
|
-
|
|
576
|
-
// Used in config update function
|
|
577
|
-
function updateConfig(current: AppConfig, patch: DeepPartial<AppConfig>): AppConfig {
|
|
578
|
-
return deepMerge(current, patch);
|
|
579
|
-
}
|
|
580
|
-
```
|
|
581
|
-
|
|
582
|
-
### Pattern 8: Form Validation Usage
|
|
583
|
-
|
|
584
|
-
```typescript
|
|
585
|
-
interface LoginForm {
|
|
586
|
-
email: string;
|
|
587
|
-
password: string;
|
|
588
|
-
}
|
|
589
|
-
|
|
590
|
-
const loginValidator = new FormValidator<LoginForm>({
|
|
591
|
-
email: [
|
|
592
|
-
{
|
|
593
|
-
validate: (v) => v.includes("@"),
|
|
594
|
-
message: "Invalid email format",
|
|
595
|
-
},
|
|
596
|
-
{
|
|
597
|
-
validate: (v) => v.length > 0,
|
|
598
|
-
message: "Email is required",
|
|
599
|
-
},
|
|
600
|
-
],
|
|
601
|
-
password: [
|
|
602
|
-
{
|
|
603
|
-
validate: (v) => v.length >= 8,
|
|
604
|
-
message: "Password must be at least 8 characters",
|
|
605
|
-
},
|
|
606
|
-
],
|
|
607
|
-
});
|
|
608
|
-
|
|
609
|
-
const errors = loginValidator.validate({
|
|
610
|
-
email: "invalid",
|
|
611
|
-
password: "short",
|
|
612
|
-
});
|
|
613
|
-
// Type: { email?: string[]; password?: string[]; } | null
|
|
614
|
-
```
|
|
615
|
-
|
|
616
|
-
## Type Inference Techniques
|
|
617
|
-
|
|
618
|
-
### 1. The Infer Keyword
|
|
619
|
-
|
|
620
|
-
```typescript
|
|
621
|
-
// Extract array element type
|
|
622
|
-
type ElementType<T> = T extends (infer U)[] ? U : never;
|
|
623
|
-
type Num = ElementType<number[]>; // number
|
|
624
|
-
|
|
625
|
-
// Extract Promise type
|
|
626
|
-
type PromiseType<T> = T extends Promise<infer U> ? U : never;
|
|
627
|
-
type AsyncNum = PromiseType<Promise<number>>; // number
|
|
628
|
-
|
|
629
|
-
// Extract function parameters
|
|
630
|
-
type Parameters<T> = T extends (...args: infer P) => unknown ? P : never;
|
|
631
|
-
```
|
|
632
|
-
|
|
633
|
-
### 2. Type Guards
|
|
634
|
-
|
|
635
|
-
```typescript
|
|
636
|
-
function isString(value: unknown): value is string {
|
|
637
|
-
return typeof value === "string";
|
|
638
|
-
}
|
|
639
|
-
|
|
640
|
-
function isArrayOf<T>(
|
|
641
|
-
value: unknown,
|
|
642
|
-
guard: (item: unknown) => item is T,
|
|
643
|
-
): value is T[] {
|
|
644
|
-
return Array.isArray(value) && value.every(guard);
|
|
645
|
-
}
|
|
646
|
-
|
|
647
|
-
const data: unknown = ["a", "b", "c"];
|
|
648
|
-
if (isArrayOf(data, isString)) {
|
|
649
|
-
data.forEach((s) => s.toUpperCase()); // Type: string[]
|
|
650
|
-
}
|
|
651
|
-
```
|
|
652
|
-
|
|
653
|
-
### 3. Assertion Functions
|
|
654
|
-
|
|
655
|
-
```typescript
|
|
656
|
-
function assertIsString(value: unknown): asserts value is string {
|
|
657
|
-
if (typeof value !== "string") {
|
|
658
|
-
throw new Error("Not a string");
|
|
659
|
-
}
|
|
660
|
-
}
|
|
661
|
-
|
|
662
|
-
function processValue(value: unknown): void {
|
|
663
|
-
assertIsString(value);
|
|
664
|
-
// value is now typed as string
|
|
665
|
-
console.log(value.toUpperCase());
|
|
666
|
-
}
|
|
667
|
-
```
|
|
668
|
-
|
|
669
|
-
## Best Practices
|
|
670
|
-
|
|
671
|
-
1. **Use `unknown` instead of `any`**: Forces type validation
|
|
672
|
-
2. **Use `interface` for object shapes**: Better error messages
|
|
673
|
-
3. **Use `type` for unions/complex types**: More flexible
|
|
674
|
-
4. **Leverage type inference**: Omit explicit types when TypeScript can infer
|
|
675
|
-
5. **Create helper types**: Build reusable type utilities
|
|
676
|
-
6. **Use const assertions**: Preserve literal types
|
|
677
|
-
7. **Avoid type assertions**: Use type guards instead
|
|
678
|
-
8. **Document complex types**: Add JSDoc comments
|
|
679
|
-
9. **Use strict mode**: Enable all strict compiler options
|
|
680
|
-
10. **Test your types**: Verify type behavior
|
|
681
|
-
|
|
682
|
-
## Type Testing
|
|
683
|
-
|
|
684
|
-
```typescript
|
|
685
|
-
// Type equality assertion test
|
|
686
|
-
type AssertEqual<T, U> = [T] extends [U]
|
|
687
|
-
? [U] extends [T]
|
|
688
|
-
? true
|
|
689
|
-
: false
|
|
690
|
-
: false;
|
|
691
|
-
|
|
692
|
-
type Test1 = AssertEqual<string, string>; // true
|
|
693
|
-
type Test2 = AssertEqual<string, number>; // false
|
|
694
|
-
```
|
|
695
|
-
|
|
696
|
-
## Common Mistakes
|
|
697
|
-
|
|
698
|
-
1. **Overusing `any`**: Defeats the purpose of TypeScript
|
|
699
|
-
2. **Ignoring strict null checks**: Causes runtime errors
|
|
700
|
-
3. **Overly complex types**: Slows down compilation
|
|
701
|
-
4. **Not using discriminated unions**: Misses type narrowing opportunities
|
|
702
|
-
5. **Missing readonly modifiers**: Allows unintended mutations
|
|
703
|
-
6. **Circular type references**: Causes compiler errors
|
|
704
|
-
7. **Unhandled edge cases**: Empty arrays, null values, etc.
|
|
705
|
-
|
|
706
|
-
## Performance Considerations
|
|
707
|
-
|
|
708
|
-
- Avoid deeply nested conditional types
|
|
709
|
-
- Use simpler types when possible
|
|
710
|
-
- Cache complex type computations
|
|
711
|
-
- Limit depth of recursive types
|
|
712
|
-
- Use tools that skip type checking in production builds
|
|
713
|
-
|
|
714
|
-
## References
|
|
715
|
-
|
|
716
|
-
- TypeScript Handbook: https://www.typescriptlang.org/docs/handbook/
|
|
717
|
-
- Type Challenges: https://github.com/type-challenges/type-challenges
|
|
718
|
-
- Effective TypeScript (by Dan Vanderkam)
|
|
719
|
-
|
|
720
|
-
> **VIBE tool integration**: `core_validate_code_quality` detects `any` type usage, `core_apply_quality_rules` auto-applies TypeScript rules
|
|
1
|
+
---
|
|
2
|
+
description: "TypeScript advanced type system master guide. Covers Generics, Conditional Types, Mapped Types, Template Literals, Utility Types. Activates for complex type logic, reusable type utilities, and compile-time type safety."
|
|
3
|
+
sections:
|
|
4
|
+
- name: "Core Concepts"
|
|
5
|
+
triggers: [generic, generics, constraint, conditional, infer, mapped, utility, Pick, Omit, Partial, Required, Record, Exclude, Extract, readonly]
|
|
6
|
+
- name: "Advanced Patterns"
|
|
7
|
+
triggers: [template literal, branded, opaque, phantom, discriminated union, exhaustive, builder pattern, recursive type, variadic tuple]
|
|
8
|
+
- name: "Type Inference"
|
|
9
|
+
triggers: [inference, infer, type narrowing, type guard, satisfies, const assertion]
|
|
10
|
+
- name: "Best Practices"
|
|
11
|
+
triggers: [best practice, type safety, convention]
|
|
12
|
+
- name: "Type Testing"
|
|
13
|
+
triggers: [type test, type assertion, expectType, tsd]
|
|
14
|
+
- name: "Common Mistakes"
|
|
15
|
+
triggers: [mistake, pitfall, error, wrong]
|
|
16
|
+
- name: "Performance"
|
|
17
|
+
triggers: [performance, compile time, type complexity, depth limit]
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
# TypeScript Advanced Types
|
|
21
|
+
|
|
22
|
+
Comprehensive guide for building type-safe applications using TypeScript's advanced type system. Covers Generics, Conditional Types, Mapped Types, Template Literal Types, and Utility Types.
|
|
23
|
+
|
|
24
|
+
## When to Apply
|
|
25
|
+
|
|
26
|
+
- Building type-safe libraries/frameworks
|
|
27
|
+
- Creating reusable generic components
|
|
28
|
+
- Implementing complex type inference logic
|
|
29
|
+
- Designing type-safe API clients
|
|
30
|
+
- Building form validation systems
|
|
31
|
+
- Creating strongly-typed configuration objects
|
|
32
|
+
- Implementing type-safe state management
|
|
33
|
+
- Migrating JavaScript to TypeScript
|
|
34
|
+
|
|
35
|
+
## VIBE TypeScript Rule Integration
|
|
36
|
+
|
|
37
|
+
> VIBE blocks `any` type usage. The patterns in this skill provide alternatives for type safety without `any`.
|
|
38
|
+
|
|
39
|
+
| Forbidden Pattern | Alternative (from this skill) |
|
|
40
|
+
|-------------------|-------------------------------|
|
|
41
|
+
| `any` | `unknown` + type guards |
|
|
42
|
+
| `as any` | Define proper interfaces |
|
|
43
|
+
| `@ts-ignore` | Fix type issues directly |
|
|
44
|
+
| Raw generic types | Specify type parameters |
|
|
45
|
+
|
|
46
|
+
## Core Concepts
|
|
47
|
+
|
|
48
|
+
### 1. Generics
|
|
49
|
+
|
|
50
|
+
The key tool for creating reusable yet type-safe components.
|
|
51
|
+
|
|
52
|
+
**Basic Generic Function:**
|
|
53
|
+
|
|
54
|
+
```typescript
|
|
55
|
+
function identity<T>(value: T): T {
|
|
56
|
+
return value;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
const num = identity<number>(42); // Type: number
|
|
60
|
+
const str = identity<string>("hello"); // Type: string
|
|
61
|
+
const auto = identity(true); // Type: boolean (inferred)
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
**Generic Constraints:**
|
|
65
|
+
|
|
66
|
+
```typescript
|
|
67
|
+
interface HasLength {
|
|
68
|
+
length: number;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
function logLength<T extends HasLength>(item: T): T {
|
|
72
|
+
console.log(item.length);
|
|
73
|
+
return item;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
logLength("hello"); // OK: string has length
|
|
77
|
+
logLength([1, 2, 3]); // OK: array has length
|
|
78
|
+
// logLength(42); // Error: number has no length
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
**Multiple Type Parameters:**
|
|
82
|
+
|
|
83
|
+
```typescript
|
|
84
|
+
function merge<T, U>(obj1: T, obj2: U): T & U {
|
|
85
|
+
return { ...obj1, ...obj2 };
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
const merged = merge({ name: "John" }, { age: 30 });
|
|
89
|
+
// Type: { name: string } & { age: number }
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
### 2. Conditional Types
|
|
93
|
+
|
|
94
|
+
Sophisticated type logic where types are determined by conditions.
|
|
95
|
+
|
|
96
|
+
**Basic Conditional Type:**
|
|
97
|
+
|
|
98
|
+
```typescript
|
|
99
|
+
type IsString<T> = T extends string ? true : false;
|
|
100
|
+
|
|
101
|
+
type A = IsString<string>; // true
|
|
102
|
+
type B = IsString<number>; // false
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
**Return Type Extraction:**
|
|
106
|
+
|
|
107
|
+
```typescript
|
|
108
|
+
type ReturnType<T> = T extends (...args: unknown[]) => infer R ? R : never;
|
|
109
|
+
|
|
110
|
+
function getUser() {
|
|
111
|
+
return { id: 1, name: "John" };
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
type User = ReturnType<typeof getUser>;
|
|
115
|
+
// Type: { id: number; name: string; }
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
**Distributive Conditional Types:**
|
|
119
|
+
|
|
120
|
+
```typescript
|
|
121
|
+
type ToArray<T> = T extends unknown ? T[] : never;
|
|
122
|
+
|
|
123
|
+
type StrOrNumArray = ToArray<string | number>;
|
|
124
|
+
// Type: string[] | number[]
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
**Nested Conditions:**
|
|
128
|
+
|
|
129
|
+
```typescript
|
|
130
|
+
type TypeName<T> = T extends string
|
|
131
|
+
? "string"
|
|
132
|
+
: T extends number
|
|
133
|
+
? "number"
|
|
134
|
+
: T extends boolean
|
|
135
|
+
? "boolean"
|
|
136
|
+
: T extends undefined
|
|
137
|
+
? "undefined"
|
|
138
|
+
: T extends Function
|
|
139
|
+
? "function"
|
|
140
|
+
: "object";
|
|
141
|
+
|
|
142
|
+
type T1 = TypeName<string>; // "string"
|
|
143
|
+
type T2 = TypeName<() => void>; // "function"
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
### 3. Mapped Types
|
|
147
|
+
|
|
148
|
+
Types that iterate over and transform properties of existing types.
|
|
149
|
+
|
|
150
|
+
**Basic Mapped Type:**
|
|
151
|
+
|
|
152
|
+
```typescript
|
|
153
|
+
type Readonly<T> = {
|
|
154
|
+
readonly [P in keyof T]: T[P];
|
|
155
|
+
};
|
|
156
|
+
|
|
157
|
+
interface User {
|
|
158
|
+
id: number;
|
|
159
|
+
name: string;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
type ReadonlyUser = Readonly<User>;
|
|
163
|
+
// Type: { readonly id: number; readonly name: string; }
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
**Key Remapping:**
|
|
167
|
+
|
|
168
|
+
```typescript
|
|
169
|
+
type Getters<T> = {
|
|
170
|
+
[K in keyof T as `get${Capitalize<string & K>}`]: () => T[K];
|
|
171
|
+
};
|
|
172
|
+
|
|
173
|
+
interface Person {
|
|
174
|
+
name: string;
|
|
175
|
+
age: number;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
type PersonGetters = Getters<Person>;
|
|
179
|
+
// Type: { getName: () => string; getAge: () => number; }
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
**Property Filtering by Type:**
|
|
183
|
+
|
|
184
|
+
```typescript
|
|
185
|
+
type PickByType<T, U> = {
|
|
186
|
+
[K in keyof T as T[K] extends U ? K : never]: T[K];
|
|
187
|
+
};
|
|
188
|
+
|
|
189
|
+
interface Mixed {
|
|
190
|
+
id: number;
|
|
191
|
+
name: string;
|
|
192
|
+
age: number;
|
|
193
|
+
active: boolean;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
type OnlyNumbers = PickByType<Mixed, number>;
|
|
197
|
+
// Type: { id: number; age: number; }
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
### 4. Template Literal Types
|
|
201
|
+
|
|
202
|
+
String-based pattern matching and transformation types.
|
|
203
|
+
|
|
204
|
+
**Basic Template Literal:**
|
|
205
|
+
|
|
206
|
+
```typescript
|
|
207
|
+
type EventName = "click" | "focus" | "blur";
|
|
208
|
+
type EventHandler = `on${Capitalize<EventName>}`;
|
|
209
|
+
// Type: "onClick" | "onFocus" | "onBlur"
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
**String Manipulation:**
|
|
213
|
+
|
|
214
|
+
```typescript
|
|
215
|
+
type Upper = Uppercase<"hello">; // "HELLO"
|
|
216
|
+
type Lower = Lowercase<"HELLO">; // "hello"
|
|
217
|
+
type Cap = Capitalize<"john">; // "John"
|
|
218
|
+
type Uncap = Uncapitalize<"John">; // "john"
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
**Path Builder:**
|
|
222
|
+
|
|
223
|
+
```typescript
|
|
224
|
+
type Path<T> = T extends object
|
|
225
|
+
? {
|
|
226
|
+
[K in keyof T]: K extends string
|
|
227
|
+
? `${K}` | `${K}.${Path<T[K]>}`
|
|
228
|
+
: never;
|
|
229
|
+
}[keyof T]
|
|
230
|
+
: never;
|
|
231
|
+
|
|
232
|
+
interface Config {
|
|
233
|
+
server: { host: string; port: number };
|
|
234
|
+
database: { url: string };
|
|
235
|
+
}
|
|
236
|
+
|
|
237
|
+
type ConfigPath = Path<Config>;
|
|
238
|
+
// Type: "server" | "database" | "server.host" | "server.port" | "database.url"
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
### 5. Utility Types
|
|
242
|
+
|
|
243
|
+
Built-in TypeScript utility types.
|
|
244
|
+
|
|
245
|
+
```typescript
|
|
246
|
+
// Partial<T> — make all properties optional
|
|
247
|
+
type PartialUser = Partial<User>;
|
|
248
|
+
|
|
249
|
+
// Required<T> — make all properties required
|
|
250
|
+
type RequiredUser = Required<PartialUser>;
|
|
251
|
+
|
|
252
|
+
// Readonly<T> — make all properties readonly
|
|
253
|
+
type ReadonlyUser = Readonly<User>;
|
|
254
|
+
|
|
255
|
+
// Pick<T, K> — pick specific properties
|
|
256
|
+
type UserName = Pick<User, "name" | "email">;
|
|
257
|
+
|
|
258
|
+
// Omit<T, K> — omit specific properties
|
|
259
|
+
type UserWithoutPassword = Omit<User, "password">;
|
|
260
|
+
|
|
261
|
+
// Exclude<T, U> — exclude types from union
|
|
262
|
+
type T1 = Exclude<"a" | "b" | "c", "a">; // "b" | "c"
|
|
263
|
+
|
|
264
|
+
// Extract<T, U> — extract types from union
|
|
265
|
+
type T2 = Extract<"a" | "b" | "c", "a" | "b">; // "a" | "b"
|
|
266
|
+
|
|
267
|
+
// NonNullable<T> — exclude null/undefined
|
|
268
|
+
type T3 = NonNullable<string | null | undefined>; // string
|
|
269
|
+
|
|
270
|
+
// Record<K, T> — object type with keys K and values T
|
|
271
|
+
type PageInfo = Record<"home" | "about", { title: string }>;
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
## Advanced Patterns
|
|
275
|
+
|
|
276
|
+
### Pattern 1: Type-safe Event Emitter
|
|
277
|
+
|
|
278
|
+
```typescript
|
|
279
|
+
type EventMap = {
|
|
280
|
+
"user:created": { id: string; name: string };
|
|
281
|
+
"user:updated": { id: string };
|
|
282
|
+
"user:deleted": { id: string };
|
|
283
|
+
};
|
|
284
|
+
|
|
285
|
+
class TypedEventEmitter<T extends Record<string, unknown>> {
|
|
286
|
+
private listeners: {
|
|
287
|
+
[K in keyof T]?: Array<(data: T[K]) => void>;
|
|
288
|
+
} = {};
|
|
289
|
+
|
|
290
|
+
on<K extends keyof T>(event: K, callback: (data: T[K]) => void): void {
|
|
291
|
+
if (!this.listeners[event]) {
|
|
292
|
+
this.listeners[event] = [];
|
|
293
|
+
}
|
|
294
|
+
this.listeners[event]!.push(callback);
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
emit<K extends keyof T>(event: K, data: T[K]): void {
|
|
298
|
+
const callbacks = this.listeners[event];
|
|
299
|
+
if (callbacks) {
|
|
300
|
+
callbacks.forEach((cb) => cb(data));
|
|
301
|
+
}
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
const emitter = new TypedEventEmitter<EventMap>();
|
|
306
|
+
emitter.on("user:created", (data) => {
|
|
307
|
+
console.log(data.id, data.name); // type-safe!
|
|
308
|
+
});
|
|
309
|
+
```
|
|
310
|
+
|
|
311
|
+
### Pattern 2: Type-safe API Client
|
|
312
|
+
|
|
313
|
+
```typescript
|
|
314
|
+
type HTTPMethod = "GET" | "POST" | "PUT" | "DELETE";
|
|
315
|
+
|
|
316
|
+
type EndpointConfig = {
|
|
317
|
+
"/users": {
|
|
318
|
+
GET: { response: User[] };
|
|
319
|
+
POST: { body: { name: string; email: string }; response: User };
|
|
320
|
+
};
|
|
321
|
+
"/users/:id": {
|
|
322
|
+
GET: { params: { id: string }; response: User };
|
|
323
|
+
PUT: { params: { id: string }; body: Partial<User>; response: User };
|
|
324
|
+
DELETE: { params: { id: string }; response: void };
|
|
325
|
+
};
|
|
326
|
+
};
|
|
327
|
+
|
|
328
|
+
type ExtractParams<T> = T extends { params: infer P } ? P : never;
|
|
329
|
+
type ExtractBody<T> = T extends { body: infer B } ? B : never;
|
|
330
|
+
type ExtractResponse<T> = T extends { response: infer R } ? R : never;
|
|
331
|
+
|
|
332
|
+
class APIClient<Config extends Record<string, Record<string, unknown>>> {
|
|
333
|
+
async request<
|
|
334
|
+
Path extends keyof Config,
|
|
335
|
+
Method extends keyof Config[Path]
|
|
336
|
+
>(
|
|
337
|
+
path: Path,
|
|
338
|
+
method: Method,
|
|
339
|
+
...[options]: ExtractParams<Config[Path][Method]> extends never
|
|
340
|
+
? ExtractBody<Config[Path][Method]> extends never
|
|
341
|
+
? []
|
|
342
|
+
: [{ body: ExtractBody<Config[Path][Method]> }]
|
|
343
|
+
: [
|
|
344
|
+
{
|
|
345
|
+
params: ExtractParams<Config[Path][Method]>;
|
|
346
|
+
body?: ExtractBody<Config[Path][Method]>;
|
|
347
|
+
},
|
|
348
|
+
]
|
|
349
|
+
): Promise<ExtractResponse<Config[Path][Method]>> {
|
|
350
|
+
// implementation
|
|
351
|
+
return {} as ExtractResponse<Config[Path][Method]>;
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
const api = new APIClient<EndpointConfig>();
|
|
356
|
+
|
|
357
|
+
// Type-safe API calls
|
|
358
|
+
const users = await api.request("/users", "GET");
|
|
359
|
+
// Type: User[]
|
|
360
|
+
|
|
361
|
+
const newUser = await api.request("/users", "POST", {
|
|
362
|
+
body: { name: "John", email: "john@example.com" },
|
|
363
|
+
});
|
|
364
|
+
// Type: User
|
|
365
|
+
|
|
366
|
+
const user = await api.request("/users/:id", "GET", {
|
|
367
|
+
params: { id: "123" },
|
|
368
|
+
});
|
|
369
|
+
// Type: User
|
|
370
|
+
```
|
|
371
|
+
|
|
372
|
+
### Pattern 3: Deep Readonly/Partial
|
|
373
|
+
|
|
374
|
+
```typescript
|
|
375
|
+
type DeepReadonly<T> = {
|
|
376
|
+
readonly [P in keyof T]: T[P] extends object
|
|
377
|
+
? T[P] extends Function
|
|
378
|
+
? T[P]
|
|
379
|
+
: DeepReadonly<T[P]>
|
|
380
|
+
: T[P];
|
|
381
|
+
};
|
|
382
|
+
|
|
383
|
+
type DeepPartial<T> = {
|
|
384
|
+
[P in keyof T]?: T[P] extends object
|
|
385
|
+
? T[P] extends Array<infer U>
|
|
386
|
+
? Array<DeepPartial<U>>
|
|
387
|
+
: DeepPartial<T[P]>
|
|
388
|
+
: T[P];
|
|
389
|
+
};
|
|
390
|
+
```
|
|
391
|
+
|
|
392
|
+
### Pattern 4: Type-safe Form Validation
|
|
393
|
+
|
|
394
|
+
```typescript
|
|
395
|
+
type ValidationRule<T> = {
|
|
396
|
+
validate: (value: T) => boolean;
|
|
397
|
+
message: string;
|
|
398
|
+
};
|
|
399
|
+
|
|
400
|
+
type FieldValidation<T> = {
|
|
401
|
+
[K in keyof T]?: ValidationRule<T[K]>[];
|
|
402
|
+
};
|
|
403
|
+
|
|
404
|
+
type ValidationErrors<T> = {
|
|
405
|
+
[K in keyof T]?: string[];
|
|
406
|
+
};
|
|
407
|
+
|
|
408
|
+
class FormValidator<T extends Record<string, unknown>> {
|
|
409
|
+
constructor(private rules: FieldValidation<T>) {}
|
|
410
|
+
|
|
411
|
+
validate(data: T): ValidationErrors<T> | null {
|
|
412
|
+
const errors: ValidationErrors<T> = {};
|
|
413
|
+
let hasErrors = false;
|
|
414
|
+
|
|
415
|
+
for (const key in this.rules) {
|
|
416
|
+
const fieldRules = this.rules[key];
|
|
417
|
+
const value = data[key];
|
|
418
|
+
|
|
419
|
+
if (fieldRules) {
|
|
420
|
+
const fieldErrors: string[] = [];
|
|
421
|
+
for (const rule of fieldRules) {
|
|
422
|
+
if (!rule.validate(value)) {
|
|
423
|
+
fieldErrors.push(rule.message);
|
|
424
|
+
}
|
|
425
|
+
}
|
|
426
|
+
if (fieldErrors.length > 0) {
|
|
427
|
+
errors[key] = fieldErrors;
|
|
428
|
+
hasErrors = true;
|
|
429
|
+
}
|
|
430
|
+
}
|
|
431
|
+
}
|
|
432
|
+
|
|
433
|
+
return hasErrors ? errors : null;
|
|
434
|
+
}
|
|
435
|
+
}
|
|
436
|
+
```
|
|
437
|
+
|
|
438
|
+
### Pattern 5: Discriminated Unions
|
|
439
|
+
|
|
440
|
+
```typescript
|
|
441
|
+
type Success<T> = { status: "success"; data: T };
|
|
442
|
+
type Failure = { status: "error"; error: string };
|
|
443
|
+
type Pending = { status: "loading" };
|
|
444
|
+
|
|
445
|
+
type AsyncState<T> = Success<T> | Failure | Pending;
|
|
446
|
+
|
|
447
|
+
function handleState<T>(state: AsyncState<T>): void {
|
|
448
|
+
switch (state.status) {
|
|
449
|
+
case "success":
|
|
450
|
+
console.log(state.data); // Type: T
|
|
451
|
+
break;
|
|
452
|
+
case "error":
|
|
453
|
+
console.log(state.error); // Type: string
|
|
454
|
+
break;
|
|
455
|
+
case "loading":
|
|
456
|
+
console.log("Loading...");
|
|
457
|
+
break;
|
|
458
|
+
}
|
|
459
|
+
}
|
|
460
|
+
```
|
|
461
|
+
|
|
462
|
+
**Type-safe State Machine:**
|
|
463
|
+
|
|
464
|
+
```typescript
|
|
465
|
+
type State =
|
|
466
|
+
| { type: "idle" }
|
|
467
|
+
| { type: "fetching"; requestId: string }
|
|
468
|
+
| { type: "success"; data: unknown }
|
|
469
|
+
| { type: "error"; error: Error };
|
|
470
|
+
|
|
471
|
+
type Event =
|
|
472
|
+
| { type: "FETCH"; requestId: string }
|
|
473
|
+
| { type: "SUCCESS"; data: unknown }
|
|
474
|
+
| { type: "ERROR"; error: Error }
|
|
475
|
+
| { type: "RESET" };
|
|
476
|
+
|
|
477
|
+
function reducer(state: State, event: Event): State {
|
|
478
|
+
switch (state.type) {
|
|
479
|
+
case "idle":
|
|
480
|
+
return event.type === "FETCH"
|
|
481
|
+
? { type: "fetching", requestId: event.requestId }
|
|
482
|
+
: state;
|
|
483
|
+
case "fetching":
|
|
484
|
+
if (event.type === "SUCCESS") {
|
|
485
|
+
return { type: "success", data: event.data };
|
|
486
|
+
}
|
|
487
|
+
if (event.type === "ERROR") {
|
|
488
|
+
return { type: "error", error: event.error };
|
|
489
|
+
}
|
|
490
|
+
return state;
|
|
491
|
+
case "success":
|
|
492
|
+
case "error":
|
|
493
|
+
return event.type === "RESET" ? { type: "idle" } : state;
|
|
494
|
+
}
|
|
495
|
+
}
|
|
496
|
+
```
|
|
497
|
+
|
|
498
|
+
### Pattern 6: Builder Pattern (Type-safe)
|
|
499
|
+
|
|
500
|
+
```typescript
|
|
501
|
+
type BuilderState<T> = {
|
|
502
|
+
[K in keyof T]: T[K] | undefined;
|
|
503
|
+
};
|
|
504
|
+
|
|
505
|
+
type RequiredKeys<T> = {
|
|
506
|
+
[K in keyof T]-?: Record<string, never> extends Pick<T, K> ? never : K;
|
|
507
|
+
}[keyof T];
|
|
508
|
+
|
|
509
|
+
type IsComplete<T, S> =
|
|
510
|
+
RequiredKeys<T> extends keyof S
|
|
511
|
+
? S[RequiredKeys<T>] extends undefined
|
|
512
|
+
? false
|
|
513
|
+
: true
|
|
514
|
+
: false;
|
|
515
|
+
|
|
516
|
+
class Builder<T, S extends BuilderState<T> = Record<string, never> & BuilderState<T>> {
|
|
517
|
+
private state: S = {} as S;
|
|
518
|
+
|
|
519
|
+
set<K extends keyof T>(key: K, value: T[K]): Builder<T, S & Record<K, T[K]>> {
|
|
520
|
+
(this.state as Record<string, unknown>)[key as string] = value;
|
|
521
|
+
return this as unknown as Builder<T, S & Record<K, T[K]>>;
|
|
522
|
+
}
|
|
523
|
+
|
|
524
|
+
build(this: IsComplete<T, S> extends true ? Builder<T, S> : never): T {
|
|
525
|
+
return this.state as unknown as T;
|
|
526
|
+
}
|
|
527
|
+
}
|
|
528
|
+
|
|
529
|
+
interface UserConfig {
|
|
530
|
+
id: string;
|
|
531
|
+
name: string;
|
|
532
|
+
email: string;
|
|
533
|
+
age?: number;
|
|
534
|
+
}
|
|
535
|
+
|
|
536
|
+
const userBuilder = new Builder<UserConfig>();
|
|
537
|
+
|
|
538
|
+
const config = userBuilder
|
|
539
|
+
.set("id", "1")
|
|
540
|
+
.set("name", "John")
|
|
541
|
+
.set("email", "john@example.com")
|
|
542
|
+
.build(); // OK: all required fields set
|
|
543
|
+
|
|
544
|
+
// const incomplete = userBuilder
|
|
545
|
+
// .set("id", "1")
|
|
546
|
+
// .build(); // Error: required fields missing
|
|
547
|
+
```
|
|
548
|
+
|
|
549
|
+
### Pattern 7: Deep Readonly/Partial Usage
|
|
550
|
+
|
|
551
|
+
```typescript
|
|
552
|
+
interface AppConfig {
|
|
553
|
+
server: {
|
|
554
|
+
host: string;
|
|
555
|
+
port: number;
|
|
556
|
+
ssl: {
|
|
557
|
+
enabled: boolean;
|
|
558
|
+
cert: string;
|
|
559
|
+
};
|
|
560
|
+
};
|
|
561
|
+
database: {
|
|
562
|
+
url: string;
|
|
563
|
+
pool: {
|
|
564
|
+
min: number;
|
|
565
|
+
max: number;
|
|
566
|
+
};
|
|
567
|
+
};
|
|
568
|
+
}
|
|
569
|
+
|
|
570
|
+
type ReadonlyConfig = DeepReadonly<AppConfig>;
|
|
571
|
+
// All nested properties are readonly
|
|
572
|
+
|
|
573
|
+
type PartialConfig = DeepPartial<AppConfig>;
|
|
574
|
+
// All nested properties are optional
|
|
575
|
+
|
|
576
|
+
// Used in config update function
|
|
577
|
+
function updateConfig(current: AppConfig, patch: DeepPartial<AppConfig>): AppConfig {
|
|
578
|
+
return deepMerge(current, patch);
|
|
579
|
+
}
|
|
580
|
+
```
|
|
581
|
+
|
|
582
|
+
### Pattern 8: Form Validation Usage
|
|
583
|
+
|
|
584
|
+
```typescript
|
|
585
|
+
interface LoginForm {
|
|
586
|
+
email: string;
|
|
587
|
+
password: string;
|
|
588
|
+
}
|
|
589
|
+
|
|
590
|
+
const loginValidator = new FormValidator<LoginForm>({
|
|
591
|
+
email: [
|
|
592
|
+
{
|
|
593
|
+
validate: (v) => v.includes("@"),
|
|
594
|
+
message: "Invalid email format",
|
|
595
|
+
},
|
|
596
|
+
{
|
|
597
|
+
validate: (v) => v.length > 0,
|
|
598
|
+
message: "Email is required",
|
|
599
|
+
},
|
|
600
|
+
],
|
|
601
|
+
password: [
|
|
602
|
+
{
|
|
603
|
+
validate: (v) => v.length >= 8,
|
|
604
|
+
message: "Password must be at least 8 characters",
|
|
605
|
+
},
|
|
606
|
+
],
|
|
607
|
+
});
|
|
608
|
+
|
|
609
|
+
const errors = loginValidator.validate({
|
|
610
|
+
email: "invalid",
|
|
611
|
+
password: "short",
|
|
612
|
+
});
|
|
613
|
+
// Type: { email?: string[]; password?: string[]; } | null
|
|
614
|
+
```
|
|
615
|
+
|
|
616
|
+
## Type Inference Techniques
|
|
617
|
+
|
|
618
|
+
### 1. The Infer Keyword
|
|
619
|
+
|
|
620
|
+
```typescript
|
|
621
|
+
// Extract array element type
|
|
622
|
+
type ElementType<T> = T extends (infer U)[] ? U : never;
|
|
623
|
+
type Num = ElementType<number[]>; // number
|
|
624
|
+
|
|
625
|
+
// Extract Promise type
|
|
626
|
+
type PromiseType<T> = T extends Promise<infer U> ? U : never;
|
|
627
|
+
type AsyncNum = PromiseType<Promise<number>>; // number
|
|
628
|
+
|
|
629
|
+
// Extract function parameters
|
|
630
|
+
type Parameters<T> = T extends (...args: infer P) => unknown ? P : never;
|
|
631
|
+
```
|
|
632
|
+
|
|
633
|
+
### 2. Type Guards
|
|
634
|
+
|
|
635
|
+
```typescript
|
|
636
|
+
function isString(value: unknown): value is string {
|
|
637
|
+
return typeof value === "string";
|
|
638
|
+
}
|
|
639
|
+
|
|
640
|
+
function isArrayOf<T>(
|
|
641
|
+
value: unknown,
|
|
642
|
+
guard: (item: unknown) => item is T,
|
|
643
|
+
): value is T[] {
|
|
644
|
+
return Array.isArray(value) && value.every(guard);
|
|
645
|
+
}
|
|
646
|
+
|
|
647
|
+
const data: unknown = ["a", "b", "c"];
|
|
648
|
+
if (isArrayOf(data, isString)) {
|
|
649
|
+
data.forEach((s) => s.toUpperCase()); // Type: string[]
|
|
650
|
+
}
|
|
651
|
+
```
|
|
652
|
+
|
|
653
|
+
### 3. Assertion Functions
|
|
654
|
+
|
|
655
|
+
```typescript
|
|
656
|
+
function assertIsString(value: unknown): asserts value is string {
|
|
657
|
+
if (typeof value !== "string") {
|
|
658
|
+
throw new Error("Not a string");
|
|
659
|
+
}
|
|
660
|
+
}
|
|
661
|
+
|
|
662
|
+
function processValue(value: unknown): void {
|
|
663
|
+
assertIsString(value);
|
|
664
|
+
// value is now typed as string
|
|
665
|
+
console.log(value.toUpperCase());
|
|
666
|
+
}
|
|
667
|
+
```
|
|
668
|
+
|
|
669
|
+
## Best Practices
|
|
670
|
+
|
|
671
|
+
1. **Use `unknown` instead of `any`**: Forces type validation
|
|
672
|
+
2. **Use `interface` for object shapes**: Better error messages
|
|
673
|
+
3. **Use `type` for unions/complex types**: More flexible
|
|
674
|
+
4. **Leverage type inference**: Omit explicit types when TypeScript can infer
|
|
675
|
+
5. **Create helper types**: Build reusable type utilities
|
|
676
|
+
6. **Use const assertions**: Preserve literal types
|
|
677
|
+
7. **Avoid type assertions**: Use type guards instead
|
|
678
|
+
8. **Document complex types**: Add JSDoc comments
|
|
679
|
+
9. **Use strict mode**: Enable all strict compiler options
|
|
680
|
+
10. **Test your types**: Verify type behavior
|
|
681
|
+
|
|
682
|
+
## Type Testing
|
|
683
|
+
|
|
684
|
+
```typescript
|
|
685
|
+
// Type equality assertion test
|
|
686
|
+
type AssertEqual<T, U> = [T] extends [U]
|
|
687
|
+
? [U] extends [T]
|
|
688
|
+
? true
|
|
689
|
+
: false
|
|
690
|
+
: false;
|
|
691
|
+
|
|
692
|
+
type Test1 = AssertEqual<string, string>; // true
|
|
693
|
+
type Test2 = AssertEqual<string, number>; // false
|
|
694
|
+
```
|
|
695
|
+
|
|
696
|
+
## Common Mistakes
|
|
697
|
+
|
|
698
|
+
1. **Overusing `any`**: Defeats the purpose of TypeScript
|
|
699
|
+
2. **Ignoring strict null checks**: Causes runtime errors
|
|
700
|
+
3. **Overly complex types**: Slows down compilation
|
|
701
|
+
4. **Not using discriminated unions**: Misses type narrowing opportunities
|
|
702
|
+
5. **Missing readonly modifiers**: Allows unintended mutations
|
|
703
|
+
6. **Circular type references**: Causes compiler errors
|
|
704
|
+
7. **Unhandled edge cases**: Empty arrays, null values, etc.
|
|
705
|
+
|
|
706
|
+
## Performance Considerations
|
|
707
|
+
|
|
708
|
+
- Avoid deeply nested conditional types
|
|
709
|
+
- Use simpler types when possible
|
|
710
|
+
- Cache complex type computations
|
|
711
|
+
- Limit depth of recursive types
|
|
712
|
+
- Use tools that skip type checking in production builds
|
|
713
|
+
|
|
714
|
+
## References
|
|
715
|
+
|
|
716
|
+
- TypeScript Handbook: https://www.typescriptlang.org/docs/handbook/
|
|
717
|
+
- Type Challenges: https://github.com/type-challenges/type-challenges
|
|
718
|
+
- Effective TypeScript (by Dan Vanderkam)
|
|
719
|
+
|
|
720
|
+
> **VIBE tool integration**: `core_validate_code_quality` detects `any` type usage, `core_apply_quality_rules` auto-applies TypeScript rules
|