zilmate 1.7.8 → 1.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.agents/skills/agent-browser/SKILL.md +55 -0
- package/.agents/skills/agentmail/SKILL.md +282 -0
- package/.agents/skills/agentmail/references/webhooks.md +220 -0
- package/.agents/skills/agentmail/references/websockets.md +263 -0
- package/.agents/skills/ai-elements/SKILL.md +160 -0
- package/.agents/skills/ai-elements/references/agent.md +134 -0
- package/.agents/skills/ai-elements/references/artifact.md +84 -0
- package/.agents/skills/ai-elements/references/attachments.md +190 -0
- package/.agents/skills/ai-elements/references/audio-player.md +134 -0
- package/.agents/skills/ai-elements/references/canvas.md +34 -0
- package/.agents/skills/ai-elements/references/chain-of-thought.md +81 -0
- package/.agents/skills/ai-elements/references/checkpoint.md +183 -0
- package/.agents/skills/ai-elements/references/code-block.md +170 -0
- package/.agents/skills/ai-elements/references/commit.md +177 -0
- package/.agents/skills/ai-elements/references/confirmation.md +262 -0
- package/.agents/skills/ai-elements/references/connection.md +34 -0
- package/.agents/skills/ai-elements/references/context.md +126 -0
- package/.agents/skills/ai-elements/references/controls.md +32 -0
- package/.agents/skills/ai-elements/references/conversation.md +224 -0
- package/.agents/skills/ai-elements/references/edge.md +52 -0
- package/.agents/skills/ai-elements/references/environment-variables.md +102 -0
- package/.agents/skills/ai-elements/references/file-tree.md +72 -0
- package/.agents/skills/ai-elements/references/image.md +146 -0
- package/.agents/skills/ai-elements/references/inline-citation.md +299 -0
- package/.agents/skills/ai-elements/references/jsx-preview.md +104 -0
- package/.agents/skills/ai-elements/references/message.md +237 -0
- package/.agents/skills/ai-elements/references/mic-selector.md +189 -0
- package/.agents/skills/ai-elements/references/model-selector.md +112 -0
- package/.agents/skills/ai-elements/references/node.md +73 -0
- package/.agents/skills/ai-elements/references/open-in-chat.md +67 -0
- package/.agents/skills/ai-elements/references/package-info.md +95 -0
- package/.agents/skills/ai-elements/references/panel.md +33 -0
- package/.agents/skills/ai-elements/references/persona.md +166 -0
- package/.agents/skills/ai-elements/references/plan.md +79 -0
- package/.agents/skills/ai-elements/references/prompt-input.md +579 -0
- package/.agents/skills/ai-elements/references/queue.md +172 -0
- package/.agents/skills/ai-elements/references/reasoning.md +238 -0
- package/.agents/skills/ai-elements/references/sandbox.md +129 -0
- package/.agents/skills/ai-elements/references/schema-display.md +102 -0
- package/.agents/skills/ai-elements/references/shimmer.md +48 -0
- package/.agents/skills/ai-elements/references/snippet.md +64 -0
- package/.agents/skills/ai-elements/references/sources.md +209 -0
- package/.agents/skills/ai-elements/references/speech-input.md +163 -0
- package/.agents/skills/ai-elements/references/stack-trace.md +224 -0
- package/.agents/skills/ai-elements/references/suggestion.md +124 -0
- package/.agents/skills/ai-elements/references/task.md +222 -0
- package/.agents/skills/ai-elements/references/terminal.md +103 -0
- package/.agents/skills/ai-elements/references/test-results.md +157 -0
- package/.agents/skills/ai-elements/references/tool.md +285 -0
- package/.agents/skills/ai-elements/references/toolbar.md +32 -0
- package/.agents/skills/ai-elements/references/transcription.md +120 -0
- package/.agents/skills/ai-elements/references/voice-selector.md +241 -0
- package/.agents/skills/ai-elements/references/web-preview.md +200 -0
- package/.agents/skills/ai-elements/scripts/agent.tsx +61 -0
- package/.agents/skills/ai-elements/scripts/artifact.tsx +127 -0
- package/.agents/skills/ai-elements/scripts/attachments-inline.tsx +128 -0
- package/.agents/skills/ai-elements/scripts/attachments-list.tsx +95 -0
- package/.agents/skills/ai-elements/scripts/attachments.tsx +85 -0
- package/.agents/skills/ai-elements/scripts/audio-player-remote.tsx +35 -0
- package/.agents/skills/ai-elements/scripts/audio-player.tsx +68 -0
- package/.agents/skills/ai-elements/scripts/chain-of-thought.tsx +82 -0
- package/.agents/skills/ai-elements/scripts/checkpoint.tsx +110 -0
- package/.agents/skills/ai-elements/scripts/code-block-dark.tsx +46 -0
- package/.agents/skills/ai-elements/scripts/code-block.tsx +120 -0
- package/.agents/skills/ai-elements/scripts/commit.tsx +94 -0
- package/.agents/skills/ai-elements/scripts/confirmation-accepted.tsx +40 -0
- package/.agents/skills/ai-elements/scripts/confirmation-rejected.tsx +40 -0
- package/.agents/skills/ai-elements/scripts/confirmation-request.tsx +54 -0
- package/.agents/skills/ai-elements/scripts/confirmation.tsx +55 -0
- package/.agents/skills/ai-elements/scripts/context.tsx +45 -0
- package/.agents/skills/ai-elements/scripts/conversation.tsx +177 -0
- package/.agents/skills/ai-elements/scripts/environment-variables.tsx +62 -0
- package/.agents/skills/ai-elements/scripts/file-tree-basic.tsx +18 -0
- package/.agents/skills/ai-elements/scripts/file-tree-expanded.tsx +21 -0
- package/.agents/skills/ai-elements/scripts/file-tree-selection.tsx +24 -0
- package/.agents/skills/ai-elements/scripts/file-tree.tsx +42 -0
- package/.agents/skills/ai-elements/scripts/image.tsx +20 -0
- package/.agents/skills/ai-elements/scripts/inline-citation.tsx +97 -0
- package/.agents/skills/ai-elements/scripts/jsx-preview.tsx +104 -0
- package/.agents/skills/ai-elements/scripts/message.tsx +365 -0
- package/.agents/skills/ai-elements/scripts/mic-selector.tsx +49 -0
- package/.agents/skills/ai-elements/scripts/model-selector.tsx +365 -0
- package/.agents/skills/ai-elements/scripts/open-in-chat.tsx +33 -0
- package/.agents/skills/ai-elements/scripts/package-info.tsx +51 -0
- package/.agents/skills/ai-elements/scripts/persona-command.tsx +110 -0
- package/.agents/skills/ai-elements/scripts/persona-glint.tsx +110 -0
- package/.agents/skills/ai-elements/scripts/persona-halo.tsx +110 -0
- package/.agents/skills/ai-elements/scripts/persona-mana.tsx +110 -0
- package/.agents/skills/ai-elements/scripts/persona-obsidian.tsx +110 -0
- package/.agents/skills/ai-elements/scripts/persona-opal.tsx +110 -0
- package/.agents/skills/ai-elements/scripts/plan.tsx +65 -0
- package/.agents/skills/ai-elements/scripts/prompt-input-cursor.tsx +502 -0
- package/.agents/skills/ai-elements/scripts/prompt-input-tooltip.tsx +44 -0
- package/.agents/skills/ai-elements/scripts/prompt-input.tsx +267 -0
- package/.agents/skills/ai-elements/scripts/queue-prompt-input.tsx +394 -0
- package/.agents/skills/ai-elements/scripts/queue.tsx +295 -0
- package/.agents/skills/ai-elements/scripts/reasoning.tsx +71 -0
- package/.agents/skills/ai-elements/scripts/sandbox.tsx +178 -0
- package/.agents/skills/ai-elements/scripts/schema-display-basic.tsx +9 -0
- package/.agents/skills/ai-elements/scripts/schema-display-body.tsx +20 -0
- package/.agents/skills/ai-elements/scripts/schema-display-nested.tsx +23 -0
- package/.agents/skills/ai-elements/scripts/schema-display-params.tsx +16 -0
- package/.agents/skills/ai-elements/scripts/schema-display.tsx +110 -0
- package/.agents/skills/ai-elements/scripts/shimmer-duration.tsx +31 -0
- package/.agents/skills/ai-elements/scripts/shimmer-elements.tsx +43 -0
- package/.agents/skills/ai-elements/scripts/shimmer.tsx +17 -0
- package/.agents/skills/ai-elements/scripts/snippet-plain.tsx +19 -0
- package/.agents/skills/ai-elements/scripts/snippet.tsx +25 -0
- package/.agents/skills/ai-elements/scripts/sources-custom.tsx +39 -0
- package/.agents/skills/ai-elements/scripts/sources.tsx +32 -0
- package/.agents/skills/ai-elements/scripts/speech-input.tsx +84 -0
- package/.agents/skills/ai-elements/scripts/stack-trace-collapsed.tsx +39 -0
- package/.agents/skills/ai-elements/scripts/stack-trace-no-internal.tsx +41 -0
- package/.agents/skills/ai-elements/scripts/stack-trace.tsx +58 -0
- package/.agents/skills/ai-elements/scripts/suggestion-input.tsx +144 -0
- package/.agents/skills/ai-elements/scripts/suggestion.tsx +32 -0
- package/.agents/skills/ai-elements/scripts/task.tsx +59 -0
- package/.agents/skills/ai-elements/scripts/terminal-basic.tsx +7 -0
- package/.agents/skills/ai-elements/scripts/terminal-clear.tsx +19 -0
- package/.agents/skills/ai-elements/scripts/terminal-streaming.tsx +38 -0
- package/.agents/skills/ai-elements/scripts/terminal.tsx +82 -0
- package/.agents/skills/ai-elements/scripts/test-results-basic.tsx +27 -0
- package/.agents/skills/ai-elements/scripts/test-results-errors.tsx +51 -0
- package/.agents/skills/ai-elements/scripts/test-results-suites.tsx +40 -0
- package/.agents/skills/ai-elements/scripts/test-results.tsx +102 -0
- package/.agents/skills/ai-elements/scripts/tool-input-available.tsx +31 -0
- package/.agents/skills/ai-elements/scripts/tool-input-streaming.tsx +30 -0
- package/.agents/skills/ai-elements/scripts/tool-output-available.tsx +80 -0
- package/.agents/skills/ai-elements/scripts/tool-output-error.tsx +44 -0
- package/.agents/skills/ai-elements/scripts/tool.tsx +222 -0
- package/.agents/skills/ai-elements/scripts/transcription.tsx +290 -0
- package/.agents/skills/ai-elements/scripts/voice-selector.tsx +245 -0
- package/.agents/skills/ai-elements/scripts/web-preview.tsx +115 -0
- package/.agents/skills/ai-sdk/SKILL.md +78 -0
- package/.agents/skills/ai-sdk/references/ai-gateway.md +66 -0
- package/.agents/skills/ai-sdk/references/common-errors.md +443 -0
- package/.agents/skills/ai-sdk/references/devtools.md +52 -0
- package/.agents/skills/ai-sdk/references/type-safe-agents.md +204 -0
- package/.agents/skills/chat-sdk/SKILL.md +240 -0
- package/.agents/skills/composio/AGENTS.md +404 -0
- package/.agents/skills/composio/SKILL.md +55 -0
- package/.agents/skills/composio/rules/_template.md +38 -0
- package/.agents/skills/composio/rules/app-auth-configs.md +224 -0
- package/.agents/skills/composio/rules/app-auth-popup-ui.md +143 -0
- package/.agents/skills/composio/rules/app-connected-accounts.md +240 -0
- package/.agents/skills/composio/rules/app-custom-tools.md +220 -0
- package/.agents/skills/composio/rules/app-execute-tools.md +202 -0
- package/.agents/skills/composio/rules/app-fetch-tools.md +292 -0
- package/.agents/skills/composio/rules/app-modifiers.md +148 -0
- package/.agents/skills/composio/rules/app-tool-versions.md +343 -0
- package/.agents/skills/composio/rules/app-toolkits.md +184 -0
- package/.agents/skills/composio/rules/app-user-context.md +222 -0
- package/.agents/skills/composio/rules/building-with-composio.md +134 -0
- package/.agents/skills/composio/rules/composio-cli.md +223 -0
- package/.agents/skills/composio/rules/setup-api-keys.md +230 -0
- package/.agents/skills/composio/rules/tr-auth-auto.md +110 -0
- package/.agents/skills/composio/rules/tr-auth-connections.md +167 -0
- package/.agents/skills/composio/rules/tr-auth-manual.md +161 -0
- package/.agents/skills/composio/rules/tr-building-chat-ui.md +348 -0
- package/.agents/skills/composio/rules/tr-framework-ai-sdk.md +240 -0
- package/.agents/skills/composio/rules/tr-framework-integration.md +818 -0
- package/.agents/skills/composio/rules/tr-framework-mastra.md +185 -0
- package/.agents/skills/composio/rules/tr-mcp-vs-native.md +248 -0
- package/.agents/skills/composio/rules/tr-session-basic.md +82 -0
- package/.agents/skills/composio/rules/tr-session-config.md +172 -0
- package/.agents/skills/composio/rules/tr-session-lifecycle.md +385 -0
- package/.agents/skills/composio/rules/tr-toolkit-query.md +135 -0
- package/.agents/skills/composio/rules/tr-userid-best-practices.md +476 -0
- package/.agents/skills/composio/rules/triggers-create.md +246 -0
- package/.agents/skills/composio/rules/triggers-manage.md +275 -0
- package/.agents/skills/composio/rules/triggers-subscribe.md +173 -0
- package/.agents/skills/composio/rules/triggers-webhook.md +227 -0
- package/.agents/skills/create-auth-skill/SKILL.md +321 -0
- package/.agents/skills/design-md/README.md +34 -0
- package/.agents/skills/design-md/SKILL.md +172 -0
- package/.agents/skills/design-md/examples/DESIGN.md +154 -0
- package/.agents/skills/expo-tailwind-setup/SKILL.md +480 -0
- package/.agents/skills/expo-tailwind-setup/agents/openai.yaml +4 -0
- package/.agents/skills/find-skills/SKILL.md +142 -0
- package/.agents/skills/firecrawl/SKILL.md +321 -0
- package/.agents/skills/firecrawl/rules/install.md +85 -0
- package/.agents/skills/firecrawl/rules/security.md +26 -0
- package/.agents/skills/frontend-design/LICENSE.txt +177 -0
- package/.agents/skills/frontend-design/SKILL.md +55 -0
- package/.agents/skills/linkup-search/SKILL.md +298 -0
- package/.agents/skills/mcp-builder/LICENSE.txt +202 -0
- package/.agents/skills/mcp-builder/SKILL.md +236 -0
- package/.agents/skills/mcp-builder/reference/evaluation.md +602 -0
- package/.agents/skills/mcp-builder/reference/mcp_best_practices.md +249 -0
- package/.agents/skills/mcp-builder/reference/node_mcp_server.md +970 -0
- package/.agents/skills/mcp-builder/reference/python_mcp_server.md +719 -0
- package/.agents/skills/mcp-builder/scripts/connections.py +151 -0
- package/.agents/skills/mcp-builder/scripts/evaluation.py +373 -0
- package/.agents/skills/mcp-builder/scripts/example_evaluation.xml +22 -0
- package/.agents/skills/mcp-builder/scripts/requirements.txt +2 -0
- package/.agents/skills/mobile-android-design/SKILL.md +101 -0
- package/.agents/skills/mobile-android-design/references/android-navigation.md +698 -0
- package/.agents/skills/mobile-android-design/references/compose-components.md +796 -0
- package/.agents/skills/mobile-android-design/references/details.md +337 -0
- package/.agents/skills/mobile-android-design/references/material3-theming.md +604 -0
- package/.agents/skills/mobile-ios-design/SKILL.md +259 -0
- package/.agents/skills/mobile-ios-design/references/hig-patterns.md +529 -0
- package/.agents/skills/mobile-ios-design/references/ios-navigation.md +556 -0
- package/.agents/skills/mobile-ios-design/references/swiftui-components.md +575 -0
- package/.agents/skills/neon-drizzle/SKILL.md +81 -0
- package/.agents/skills/neon-drizzle/guides/existing-project.md +398 -0
- package/.agents/skills/neon-drizzle/guides/new-project.md +312 -0
- package/.agents/skills/neon-drizzle/guides/schema-only.md +415 -0
- package/.agents/skills/neon-drizzle/guides/troubleshooting.md +539 -0
- package/.agents/skills/neon-drizzle/references/adapters.md +478 -0
- package/.agents/skills/neon-drizzle/references/migrations.md +652 -0
- package/.agents/skills/neon-drizzle/references/query-patterns.md +761 -0
- package/.agents/skills/neon-drizzle/scripts/generate-schema.ts +77 -0
- package/.agents/skills/neon-drizzle/scripts/run-migration.ts +133 -0
- package/.agents/skills/neon-drizzle/templates/db-http.ts +6 -0
- package/.agents/skills/neon-drizzle/templates/db-websocket.ts +24 -0
- package/.agents/skills/neon-drizzle/templates/drizzle-config.ts +96 -0
- package/.agents/skills/neon-drizzle/templates/schema-example.ts +231 -0
- package/.agents/skills/neon-postgres/SKILL.md +376 -0
- package/.agents/skills/next-best-practices/SKILL.md +152 -0
- package/.agents/skills/next-best-practices/async-patterns.md +87 -0
- package/.agents/skills/next-best-practices/bundling.md +180 -0
- package/.agents/skills/next-best-practices/data-patterns.md +297 -0
- package/.agents/skills/next-best-practices/debug-tricks.md +105 -0
- package/.agents/skills/next-best-practices/directives.md +73 -0
- package/.agents/skills/next-best-practices/error-handling.md +227 -0
- package/.agents/skills/next-best-practices/file-conventions.md +140 -0
- package/.agents/skills/next-best-practices/font.md +245 -0
- package/.agents/skills/next-best-practices/functions.md +108 -0
- package/.agents/skills/next-best-practices/hydration-error.md +91 -0
- package/.agents/skills/next-best-practices/image.md +173 -0
- package/.agents/skills/next-best-practices/metadata.md +301 -0
- package/.agents/skills/next-best-practices/parallel-routes.md +287 -0
- package/.agents/skills/next-best-practices/route-handlers.md +146 -0
- package/.agents/skills/next-best-practices/rsc-boundaries.md +159 -0
- package/.agents/skills/next-best-practices/runtime-selection.md +39 -0
- package/.agents/skills/next-best-practices/scripts.md +141 -0
- package/.agents/skills/next-best-practices/self-hosting.md +371 -0
- package/.agents/skills/next-best-practices/suspense-boundaries.md +67 -0
- package/.agents/skills/playwright-best-practices/SKILL.md +303 -0
- package/.agents/skills/playwright-cli/SKILL.md +404 -0
- package/.agents/skills/playwright-cli/references/element-attributes.md +23 -0
- package/.agents/skills/playwright-cli/references/playwright-tests.md +39 -0
- package/.agents/skills/playwright-cli/references/request-mocking.md +87 -0
- package/.agents/skills/playwright-cli/references/running-code.md +241 -0
- package/.agents/skills/playwright-cli/references/session-management.md +225 -0
- package/.agents/skills/playwright-cli/references/spec-driven-testing.md +305 -0
- package/.agents/skills/playwright-cli/references/storage-state.md +275 -0
- package/.agents/skills/playwright-cli/references/test-generation.md +134 -0
- package/.agents/skills/playwright-cli/references/tracing.md +139 -0
- package/.agents/skills/playwright-cli/references/video-recording.md +143 -0
- package/.agents/skills/prisma-client-api/SKILL.md +216 -0
- package/.agents/skills/prisma-client-api/references/client-methods.md +223 -0
- package/.agents/skills/prisma-client-api/references/constructor.md +208 -0
- package/.agents/skills/prisma-client-api/references/filters.md +256 -0
- package/.agents/skills/prisma-client-api/references/model-queries.md +281 -0
- package/.agents/skills/prisma-client-api/references/query-options.md +276 -0
- package/.agents/skills/prisma-client-api/references/raw-queries.md +194 -0
- package/.agents/skills/prisma-client-api/references/relations.md +308 -0
- package/.agents/skills/prisma-client-api/references/transactions.md +184 -0
- package/.agents/skills/prisma-database-setup/SKILL.md +192 -0
- package/.agents/skills/prisma-database-setup/references/cockroachdb.md +89 -0
- package/.agents/skills/prisma-database-setup/references/mongodb.md +90 -0
- package/.agents/skills/prisma-database-setup/references/mysql.md +126 -0
- package/.agents/skills/prisma-database-setup/references/postgresql.md +92 -0
- package/.agents/skills/prisma-database-setup/references/prisma-client-setup.md +47 -0
- package/.agents/skills/prisma-database-setup/references/prisma-postgres.md +130 -0
- package/.agents/skills/prisma-database-setup/references/sqlite.md +106 -0
- package/.agents/skills/prisma-database-setup/references/sqlserver.md +94 -0
- package/.agents/skills/prisma-postgres/SKILL.md +127 -0
- package/.agents/skills/prisma-postgres/references/console-and-connections.md +67 -0
- package/.agents/skills/prisma-postgres/references/create-db-cli.md +136 -0
- package/.agents/skills/prisma-postgres/references/management-api-sdk.md +56 -0
- package/.agents/skills/prisma-postgres/references/management-api.md +61 -0
- package/.agents/skills/remotion-best-practices/SKILL.md +340 -0
- package/.agents/skills/remotion-best-practices/rules/3d.md +86 -0
- package/.agents/skills/remotion-best-practices/rules/assets/charts-bar-chart.tsx +173 -0
- package/.agents/skills/remotion-best-practices/rules/assets/text-animations-typewriter.tsx +100 -0
- package/.agents/skills/remotion-best-practices/rules/assets/text-animations-word-highlight.tsx +103 -0
- package/.agents/skills/remotion-best-practices/rules/audio-visualization.md +198 -0
- package/.agents/skills/remotion-best-practices/rules/audio.md +169 -0
- package/.agents/skills/remotion-best-practices/rules/calculate-metadata.md +134 -0
- package/.agents/skills/remotion-best-practices/rules/compositions.md +133 -0
- package/.agents/skills/remotion-best-practices/rules/display-captions.md +184 -0
- package/.agents/skills/remotion-best-practices/rules/ffmpeg.md +34 -0
- package/.agents/skills/remotion-best-practices/rules/get-audio-duration.md +58 -0
- package/.agents/skills/remotion-best-practices/rules/get-video-dimensions.md +68 -0
- package/.agents/skills/remotion-best-practices/rules/get-video-duration.md +60 -0
- package/.agents/skills/remotion-best-practices/rules/gifs.md +141 -0
- package/.agents/skills/remotion-best-practices/rules/google-fonts.md +72 -0
- package/.agents/skills/remotion-best-practices/rules/html-in-canvas.md +122 -0
- package/.agents/skills/remotion-best-practices/rules/images.md +71 -0
- package/.agents/skills/remotion-best-practices/rules/import-srt-captions.md +69 -0
- package/.agents/skills/remotion-best-practices/rules/light-leaks.md +73 -0
- package/.agents/skills/remotion-best-practices/rules/local-fonts.md +65 -0
- package/.agents/skills/remotion-best-practices/rules/lottie.md +70 -0
- package/.agents/skills/remotion-best-practices/rules/maplibre.md +458 -0
- package/.agents/skills/remotion-best-practices/rules/measuring-dom-nodes.md +34 -0
- package/.agents/skills/remotion-best-practices/rules/measuring-text.md +140 -0
- package/.agents/skills/remotion-best-practices/rules/parameters.md +109 -0
- package/.agents/skills/remotion-best-practices/rules/sequencing.md +144 -0
- package/.agents/skills/remotion-best-practices/rules/sfx.md +30 -0
- package/.agents/skills/remotion-best-practices/rules/silence-detection.md +71 -0
- package/.agents/skills/remotion-best-practices/rules/subtitles.md +36 -0
- package/.agents/skills/remotion-best-practices/rules/tailwind.md +11 -0
- package/.agents/skills/remotion-best-practices/rules/text-animations.md +20 -0
- package/.agents/skills/remotion-best-practices/rules/timing.md +136 -0
- package/.agents/skills/remotion-best-practices/rules/transcribe-captions.md +70 -0
- package/.agents/skills/remotion-best-practices/rules/transitions.md +197 -0
- package/.agents/skills/remotion-best-practices/rules/transparent-videos.md +106 -0
- package/.agents/skills/remotion-best-practices/rules/trimming.md +51 -0
- package/.agents/skills/remotion-best-practices/rules/videos.md +171 -0
- package/.agents/skills/remotion-best-practices/rules/voiceover.md +99 -0
- package/.agents/skills/remotion-render/SKILL.md +212 -0
- package/.agents/skills/skill-creator/LICENSE.txt +202 -0
- package/.agents/skills/skill-creator/SKILL.md +485 -0
- package/.agents/skills/skill-creator/agents/analyzer.md +274 -0
- package/.agents/skills/skill-creator/agents/comparator.md +202 -0
- package/.agents/skills/skill-creator/agents/grader.md +223 -0
- package/.agents/skills/skill-creator/assets/eval_review.html +146 -0
- package/.agents/skills/skill-creator/eval-viewer/generate_review.py +471 -0
- package/.agents/skills/skill-creator/eval-viewer/viewer.html +1325 -0
- package/.agents/skills/skill-creator/references/schemas.md +430 -0
- package/.agents/skills/skill-creator/scripts/__init__.py +0 -0
- package/.agents/skills/skill-creator/scripts/aggregate_benchmark.py +401 -0
- package/.agents/skills/skill-creator/scripts/generate_report.py +326 -0
- package/.agents/skills/skill-creator/scripts/improve_description.py +247 -0
- package/.agents/skills/skill-creator/scripts/package_skill.py +136 -0
- package/.agents/skills/skill-creator/scripts/quick_validate.py +103 -0
- package/.agents/skills/skill-creator/scripts/run_eval.py +310 -0
- package/.agents/skills/skill-creator/scripts/run_loop.py +328 -0
- package/.agents/skills/skill-creator/scripts/utils.py +47 -0
- package/.agents/skills/stripe-best-practices/SKILL.md +54 -0
- package/.agents/skills/stripe-best-practices/references/billing.md +58 -0
- package/.agents/skills/stripe-best-practices/references/connect.md +173 -0
- package/.agents/skills/stripe-best-practices/references/payments.md +79 -0
- package/.agents/skills/stripe-best-practices/references/security.md +109 -0
- package/.agents/skills/stripe-best-practices/references/tax.md +37 -0
- package/.agents/skills/stripe-best-practices/references/treasury.md +16 -0
- package/.agents/skills/stripe-projects/SKILL.md +132 -0
- package/.agents/skills/supabase/CHANGELOG.md +35 -0
- package/.agents/skills/supabase/SKILL.md +135 -0
- package/.agents/skills/supabase/assets/feedback-issue-template.md +17 -0
- package/.agents/skills/supabase/references/skill-feedback.md +17 -0
- package/.agents/skills/supabase-postgres-best-practices/CHANGELOG.md +29 -0
- package/.agents/skills/supabase-postgres-best-practices/SKILL.md +64 -0
- package/.agents/skills/supabase-postgres-best-practices/references/_contributing.md +170 -0
- package/.agents/skills/supabase-postgres-best-practices/references/_sections.md +39 -0
- package/.agents/skills/supabase-postgres-best-practices/references/_template.md +34 -0
- package/.agents/skills/supabase-postgres-best-practices/references/advanced-full-text-search.md +55 -0
- package/.agents/skills/supabase-postgres-best-practices/references/advanced-jsonb-indexing.md +49 -0
- package/.agents/skills/supabase-postgres-best-practices/references/conn-idle-timeout.md +46 -0
- package/.agents/skills/supabase-postgres-best-practices/references/conn-limits.md +44 -0
- package/.agents/skills/supabase-postgres-best-practices/references/conn-pooling.md +41 -0
- package/.agents/skills/supabase-postgres-best-practices/references/conn-prepared-statements.md +46 -0
- package/.agents/skills/supabase-postgres-best-practices/references/data-batch-inserts.md +54 -0
- package/.agents/skills/supabase-postgres-best-practices/references/data-n-plus-one.md +53 -0
- package/.agents/skills/supabase-postgres-best-practices/references/data-pagination.md +50 -0
- package/.agents/skills/supabase-postgres-best-practices/references/data-upsert.md +50 -0
- package/.agents/skills/supabase-postgres-best-practices/references/lock-advisory.md +56 -0
- package/.agents/skills/supabase-postgres-best-practices/references/lock-deadlock-prevention.md +68 -0
- package/.agents/skills/supabase-postgres-best-practices/references/lock-short-transactions.md +50 -0
- package/.agents/skills/supabase-postgres-best-practices/references/lock-skip-locked.md +54 -0
- package/.agents/skills/supabase-postgres-best-practices/references/monitor-explain-analyze.md +45 -0
- package/.agents/skills/supabase-postgres-best-practices/references/monitor-pg-stat-statements.md +55 -0
- package/.agents/skills/supabase-postgres-best-practices/references/monitor-vacuum-analyze.md +55 -0
- package/.agents/skills/supabase-postgres-best-practices/references/query-composite-indexes.md +44 -0
- package/.agents/skills/supabase-postgres-best-practices/references/query-covering-indexes.md +40 -0
- package/.agents/skills/supabase-postgres-best-practices/references/query-index-types.md +48 -0
- package/.agents/skills/supabase-postgres-best-practices/references/query-missing-indexes.md +43 -0
- package/.agents/skills/supabase-postgres-best-practices/references/query-partial-indexes.md +45 -0
- package/.agents/skills/supabase-postgres-best-practices/references/schema-constraints.md +80 -0
- package/.agents/skills/supabase-postgres-best-practices/references/schema-data-types.md +46 -0
- package/.agents/skills/supabase-postgres-best-practices/references/schema-foreign-key-indexes.md +59 -0
- package/.agents/skills/supabase-postgres-best-practices/references/schema-lowercase-identifiers.md +55 -0
- package/.agents/skills/supabase-postgres-best-practices/references/schema-partitioning.md +55 -0
- package/.agents/skills/supabase-postgres-best-practices/references/schema-primary-keys.md +61 -0
- package/.agents/skills/supabase-postgres-best-practices/references/security-privileges.md +54 -0
- package/.agents/skills/supabase-postgres-best-practices/references/security-rls-basics.md +50 -0
- package/.agents/skills/supabase-postgres-best-practices/references/security-rls-performance.md +63 -0
- package/.agents/skills/supermemory/LICENSE +201 -0
- package/.agents/skills/supermemory/README.md +221 -0
- package/.agents/skills/supermemory/SKILL.md +172 -0
- package/.agents/skills/supermemory/references/api-reference.md +591 -0
- package/.agents/skills/supermemory/references/architecture.md +557 -0
- package/.agents/skills/supermemory/references/quickstart.md +293 -0
- package/.agents/skills/supermemory/references/sdk-guide.md +655 -0
- package/.agents/skills/supermemory/references/use-cases.md +1033 -0
- package/.agents/skills/supermemory-cli/SKILL.md +490 -0
- package/.agents/skills/tdd/SKILL.md +108 -0
- package/.agents/skills/tdd/mocking.md +59 -0
- package/.agents/skills/tdd/refactoring.md +10 -0
- package/.agents/skills/tdd/tests.md +61 -0
- package/.agents/skills/ui-ux-pro-max/SKILL.md +661 -0
- package/.agents/skills/ui-ux-pro-max/data +1 -0
- package/.agents/skills/ui-ux-pro-max/scripts +1 -0
- package/.agents/skills/vercel-react-native-skills/AGENTS.md +2897 -0
- package/.agents/skills/vercel-react-native-skills/README.md +165 -0
- package/.agents/skills/vercel-react-native-skills/SKILL.md +121 -0
- package/.agents/skills/vercel-react-native-skills/metadata.json +16 -0
- package/.agents/skills/vercel-react-native-skills/rules/_sections.md +86 -0
- package/.agents/skills/vercel-react-native-skills/rules/_template.md +28 -0
- package/.agents/skills/vercel-react-native-skills/rules/animation-derived-value.md +53 -0
- package/.agents/skills/vercel-react-native-skills/rules/animation-gesture-detector-press.md +95 -0
- package/.agents/skills/vercel-react-native-skills/rules/animation-gpu-properties.md +65 -0
- package/.agents/skills/vercel-react-native-skills/rules/design-system-compound-components.md +66 -0
- package/.agents/skills/vercel-react-native-skills/rules/fonts-config-plugin.md +71 -0
- package/.agents/skills/vercel-react-native-skills/rules/imports-design-system-folder.md +68 -0
- package/.agents/skills/vercel-react-native-skills/rules/js-hoist-intl.md +61 -0
- package/.agents/skills/vercel-react-native-skills/rules/list-performance-callbacks.md +44 -0
- package/.agents/skills/vercel-react-native-skills/rules/list-performance-function-references.md +132 -0
- package/.agents/skills/vercel-react-native-skills/rules/list-performance-images.md +53 -0
- package/.agents/skills/vercel-react-native-skills/rules/list-performance-inline-objects.md +97 -0
- package/.agents/skills/vercel-react-native-skills/rules/list-performance-item-expensive.md +94 -0
- package/.agents/skills/vercel-react-native-skills/rules/list-performance-item-memo.md +82 -0
- package/.agents/skills/vercel-react-native-skills/rules/list-performance-item-types.md +104 -0
- package/.agents/skills/vercel-react-native-skills/rules/list-performance-virtualize.md +67 -0
- package/.agents/skills/vercel-react-native-skills/rules/monorepo-native-deps-in-app.md +46 -0
- package/.agents/skills/vercel-react-native-skills/rules/monorepo-single-dependency-versions.md +63 -0
- package/.agents/skills/vercel-react-native-skills/rules/navigation-native-navigators.md +188 -0
- package/.agents/skills/vercel-react-native-skills/rules/react-compiler-destructure-functions.md +50 -0
- package/.agents/skills/vercel-react-native-skills/rules/react-compiler-reanimated-shared-values.md +48 -0
- package/.agents/skills/vercel-react-native-skills/rules/react-state-dispatcher.md +91 -0
- package/.agents/skills/vercel-react-native-skills/rules/react-state-fallback.md +56 -0
- package/.agents/skills/vercel-react-native-skills/rules/react-state-minimize.md +65 -0
- package/.agents/skills/vercel-react-native-skills/rules/rendering-no-falsy-and.md +74 -0
- package/.agents/skills/vercel-react-native-skills/rules/rendering-text-in-text-component.md +36 -0
- package/.agents/skills/vercel-react-native-skills/rules/scroll-position-no-state.md +82 -0
- package/.agents/skills/vercel-react-native-skills/rules/state-ground-truth.md +80 -0
- package/.agents/skills/vercel-react-native-skills/rules/ui-expo-image.md +66 -0
- package/.agents/skills/vercel-react-native-skills/rules/ui-image-gallery.md +104 -0
- package/.agents/skills/vercel-react-native-skills/rules/ui-measure-views.md +78 -0
- package/.agents/skills/vercel-react-native-skills/rules/ui-menus.md +174 -0
- package/.agents/skills/vercel-react-native-skills/rules/ui-native-modals.md +77 -0
- package/.agents/skills/vercel-react-native-skills/rules/ui-pressable.md +61 -0
- package/.agents/skills/vercel-react-native-skills/rules/ui-safe-area-scroll.md +65 -0
- package/.agents/skills/vercel-react-native-skills/rules/ui-scrollview-content-inset.md +45 -0
- package/.agents/skills/vercel-react-native-skills/rules/ui-styling.md +87 -0
- package/.agents/skills/web-design-guidelines/SKILL.md +39 -0
- package/dist/cli/update.d.ts.map +1 -1
- package/dist/cli/update.js +19 -4
- package/dist/cli/update.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/tools/daytona-browser.tool.js +1 -1
- package/dist/tools/daytona-browser.tool.js.map +1 -1
- package/package.json +3 -2
|
@@ -0,0 +1,385 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Treat Sessions as Short-Lived and Disposable
|
|
3
|
+
impact: CRITICAL
|
|
4
|
+
description: Create new sessions frequently for better logging, debugging, and configuration management
|
|
5
|
+
tags: [tool-router, session, lifecycle, best-practices, logging]
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Treat Sessions as Short-Lived and Disposable
|
|
9
|
+
|
|
10
|
+
Tool Router sessions should be **short-lived and disposable**. Create new sessions frequently rather than caching or reusing them across different contexts.
|
|
11
|
+
|
|
12
|
+
## ❌ Incorrect
|
|
13
|
+
|
|
14
|
+
```typescript
|
|
15
|
+
// DON'T: Cache and reuse sessions across messages
|
|
16
|
+
class AgentService {
|
|
17
|
+
private sessionCache = new Map<string, ToolRouterSession>();
|
|
18
|
+
|
|
19
|
+
async handleMessage(userId: string, message: string) {
|
|
20
|
+
// BAD: Reusing cached session
|
|
21
|
+
let session = this.sessionCache.get(userId);
|
|
22
|
+
|
|
23
|
+
if (!session) {
|
|
24
|
+
session = await composio.create(userId, {
|
|
25
|
+
toolkits: ['gmail', 'slack']
|
|
26
|
+
});
|
|
27
|
+
this.sessionCache.set(userId, session);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
// ❌ Configuration changes won't be reflected
|
|
31
|
+
// ❌ Logs mixed across different conversations
|
|
32
|
+
// ❌ Stale toolkit connections
|
|
33
|
+
const tools = await session.tools();
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
```python
|
|
39
|
+
# DON'T: Cache and reuse sessions across messages
|
|
40
|
+
class AgentService:
|
|
41
|
+
def __init__(self):
|
|
42
|
+
self.session_cache = {}
|
|
43
|
+
|
|
44
|
+
async def handle_message(self, user_id: str, message: str):
|
|
45
|
+
# BAD: Reusing cached session
|
|
46
|
+
if user_id not in self.session_cache:
|
|
47
|
+
session = composio.create(
|
|
48
|
+
user_id=user_id,
|
|
49
|
+
toolkits=["gmail", "slack"]
|
|
50
|
+
)
|
|
51
|
+
self.session_cache[user_id] = session
|
|
52
|
+
|
|
53
|
+
session = self.session_cache[user_id]
|
|
54
|
+
|
|
55
|
+
# ❌ Configuration changes won't be reflected
|
|
56
|
+
# ❌ Logs mixed across different conversations
|
|
57
|
+
# ❌ Stale toolkit connections
|
|
58
|
+
tools = session.tools()
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
## ✅ Correct - Create New Session Per Message
|
|
62
|
+
|
|
63
|
+
```typescript
|
|
64
|
+
// DO: Create fresh session for each message
|
|
65
|
+
import { Composio } from '@composio/core';
|
|
66
|
+
import { VercelProvider } from '@composio/vercel';
|
|
67
|
+
|
|
68
|
+
const composio = new Composio({
|
|
69
|
+
provider: new VercelProvider()
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
async function handleUserMessage(
|
|
73
|
+
userId: string,
|
|
74
|
+
message: string,
|
|
75
|
+
config: { toolkits: string[] }
|
|
76
|
+
) {
|
|
77
|
+
// Create new session for this message
|
|
78
|
+
const session = await composio.create(userId, {
|
|
79
|
+
toolkits: config.toolkits,
|
|
80
|
+
manageConnections: true
|
|
81
|
+
});
|
|
82
|
+
|
|
83
|
+
const tools = await session.tools();
|
|
84
|
+
|
|
85
|
+
// Use tools with agent...
|
|
86
|
+
const response = await runAgent(message, tools);
|
|
87
|
+
|
|
88
|
+
// ✅ Fresh configuration
|
|
89
|
+
// ✅ Clean logs grouped by session
|
|
90
|
+
// ✅ Latest connection states
|
|
91
|
+
return response;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
// Each message gets a new session
|
|
95
|
+
await handleUserMessage('user_123', 'Check my emails', { toolkits: ['gmail'] });
|
|
96
|
+
await handleUserMessage('user_123', 'Send a slack message', { toolkits: ['slack'] });
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
```python
|
|
100
|
+
# DO: Create fresh session for each message
|
|
101
|
+
from composio import Composio
|
|
102
|
+
from composio_openai import OpenAIProvider
|
|
103
|
+
|
|
104
|
+
composio = Composio(provider=OpenAIProvider())
|
|
105
|
+
|
|
106
|
+
async def handle_user_message(
|
|
107
|
+
user_id: str,
|
|
108
|
+
message: str,
|
|
109
|
+
config: dict
|
|
110
|
+
):
|
|
111
|
+
# Create new session for this message
|
|
112
|
+
session = composio.create(
|
|
113
|
+
user_id=user_id,
|
|
114
|
+
toolkits=config["toolkits"],
|
|
115
|
+
manage_connections=True
|
|
116
|
+
)
|
|
117
|
+
|
|
118
|
+
tools = session.tools()
|
|
119
|
+
|
|
120
|
+
# Use tools with agent...
|
|
121
|
+
response = await run_agent(message, tools)
|
|
122
|
+
|
|
123
|
+
# ✅ Fresh configuration
|
|
124
|
+
# ✅ Clean logs grouped by session
|
|
125
|
+
# ✅ Latest connection states
|
|
126
|
+
return response
|
|
127
|
+
|
|
128
|
+
# Each message gets a new session
|
|
129
|
+
await handle_user_message("user_123", "Check my emails", {"toolkits": ["gmail"]})
|
|
130
|
+
await handle_user_message("user_123", "Send a slack message", {"toolkits": ["slack"]})
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
## ✅ Correct - Single Session Per Conversation (When Config Stable)
|
|
134
|
+
|
|
135
|
+
```typescript
|
|
136
|
+
// DO: Use one session for entire conversation if config doesn't change
|
|
137
|
+
async function handleConversation(
|
|
138
|
+
userId: string,
|
|
139
|
+
conversationId: string,
|
|
140
|
+
config: { toolkits: string[] }
|
|
141
|
+
) {
|
|
142
|
+
// Create ONE session for this conversation/thread
|
|
143
|
+
const session = await composio.create(userId, {
|
|
144
|
+
toolkits: config.toolkits,
|
|
145
|
+
manageConnections: true
|
|
146
|
+
});
|
|
147
|
+
|
|
148
|
+
const tools = await session.tools();
|
|
149
|
+
|
|
150
|
+
console.log(`Session ${session.sessionId} for conversation ${conversationId}`);
|
|
151
|
+
|
|
152
|
+
// Use the same session for all messages in this conversation
|
|
153
|
+
for await (const message of conversationStream) {
|
|
154
|
+
const response = await runAgent(message, tools);
|
|
155
|
+
|
|
156
|
+
// ✅ All tool executions logged under same session
|
|
157
|
+
// ✅ Easy to debug entire conversation flow
|
|
158
|
+
// ✅ Grouped logs in monitoring tools
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
```python
|
|
164
|
+
# DO: Use one session for entire conversation if config doesn't change
|
|
165
|
+
async def handle_conversation(
|
|
166
|
+
user_id: str,
|
|
167
|
+
conversation_id: str,
|
|
168
|
+
config: dict
|
|
169
|
+
):
|
|
170
|
+
# Create ONE session for this conversation/thread
|
|
171
|
+
session = composio.create(
|
|
172
|
+
user_id=user_id,
|
|
173
|
+
toolkits=config["toolkits"],
|
|
174
|
+
manage_connections=True
|
|
175
|
+
)
|
|
176
|
+
|
|
177
|
+
tools = session.tools()
|
|
178
|
+
|
|
179
|
+
print(f"Session {session.session_id} for conversation {conversation_id}")
|
|
180
|
+
|
|
181
|
+
# Use the same session for all messages in this conversation
|
|
182
|
+
async for message in conversation_stream:
|
|
183
|
+
response = await run_agent(message, tools)
|
|
184
|
+
|
|
185
|
+
# ✅ All tool executions logged under same session
|
|
186
|
+
# ✅ Easy to debug entire conversation flow
|
|
187
|
+
# ✅ Grouped logs in monitoring tools
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
## When to Create New Sessions
|
|
191
|
+
|
|
192
|
+
### ✅ Always Create New Session When:
|
|
193
|
+
|
|
194
|
+
1. **Configuration Changes**
|
|
195
|
+
```typescript
|
|
196
|
+
// User connects new toolkit
|
|
197
|
+
if (userConnectedSlack) {
|
|
198
|
+
// Create new session with updated toolkits
|
|
199
|
+
const session = await composio.create(userId, {
|
|
200
|
+
toolkits: ['gmail', 'slack'] // Added slack
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
2. **Connected Accounts Change**
|
|
206
|
+
```typescript
|
|
207
|
+
// User disconnected and reconnected Gmail
|
|
208
|
+
const session = await composio.create(userId, {
|
|
209
|
+
toolkits: ['gmail'],
|
|
210
|
+
// Will use latest connection
|
|
211
|
+
});
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
3. **Different Toolkit Requirements**
|
|
215
|
+
```typescript
|
|
216
|
+
// Message needs different toolkits
|
|
217
|
+
const emailSession = await composio.create(userId, {
|
|
218
|
+
toolkits: ['gmail']
|
|
219
|
+
});
|
|
220
|
+
|
|
221
|
+
const codeSession = await composio.create(userId, {
|
|
222
|
+
toolkits: ['github', 'linear']
|
|
223
|
+
});
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
4. **New Conversation/Thread**
|
|
227
|
+
```typescript
|
|
228
|
+
// Starting a new conversation thread
|
|
229
|
+
const session = await composio.create(userId, {
|
|
230
|
+
toolkits: config.toolkits,
|
|
231
|
+
// Fresh session for clean log grouping
|
|
232
|
+
});
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
### ✅ Can Reuse Session When:
|
|
236
|
+
|
|
237
|
+
1. **Same conversation/thread**
|
|
238
|
+
2. **Configuration unchanged**
|
|
239
|
+
3. **No toolkit connections changed**
|
|
240
|
+
4. **Actively ongoing interaction**
|
|
241
|
+
|
|
242
|
+
## Benefits of Short-Lived Sessions
|
|
243
|
+
|
|
244
|
+
### 1. **Clean Log Grouping**
|
|
245
|
+
```typescript
|
|
246
|
+
// All tool executions in one session are grouped together
|
|
247
|
+
const session = await composio.create(userId, {
|
|
248
|
+
toolkits: ['gmail', 'slack']
|
|
249
|
+
});
|
|
250
|
+
|
|
251
|
+
// These executions are grouped under session.sessionId
|
|
252
|
+
await agent.run('Check emails'); // Logs: session_abc123
|
|
253
|
+
await agent.run('Send slack message'); // Logs: session_abc123
|
|
254
|
+
|
|
255
|
+
// Easy to trace entire conversation flow in monitoring
|
|
256
|
+
console.log(`View logs: /sessions/${session.sessionId}`);
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
### 2. **Fresh Configuration**
|
|
260
|
+
```typescript
|
|
261
|
+
// Always get latest toolkit connections and auth states
|
|
262
|
+
const session = await composio.create(userId, {
|
|
263
|
+
toolkits: ['gmail']
|
|
264
|
+
});
|
|
265
|
+
|
|
266
|
+
// ✅ Uses current connected account
|
|
267
|
+
// ✅ Reflects any new connections user made
|
|
268
|
+
// ✅ Picks up toolkit updates
|
|
269
|
+
```
|
|
270
|
+
|
|
271
|
+
### 3. **Easier Debugging**
|
|
272
|
+
```typescript
|
|
273
|
+
// Session ID becomes your debug trace ID
|
|
274
|
+
console.log(`Processing message in session ${session.sessionId}`);
|
|
275
|
+
|
|
276
|
+
// All logs tagged with session ID:
|
|
277
|
+
// [session_abc123] Executing GMAIL_FETCH_EMAILS
|
|
278
|
+
// [session_abc123] Executed GMAIL_FETCH_EMAILS
|
|
279
|
+
// [session_abc123] Executing SLACK_SEND_MESSAGE
|
|
280
|
+
|
|
281
|
+
// Filter all logs for this specific interaction
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
### 4. **Simplified Error Tracking**
|
|
285
|
+
```typescript
|
|
286
|
+
try {
|
|
287
|
+
const session = await composio.create(userId, config);
|
|
288
|
+
const result = await runAgent(message, session);
|
|
289
|
+
} catch (error) {
|
|
290
|
+
// Session ID in error context
|
|
291
|
+
logger.error('Agent failed', {
|
|
292
|
+
sessionId: session.sessionId,
|
|
293
|
+
userId,
|
|
294
|
+
error
|
|
295
|
+
});
|
|
296
|
+
}
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
## Pattern: Per-Message Sessions
|
|
300
|
+
|
|
301
|
+
```typescript
|
|
302
|
+
// Recommended pattern for most applications
|
|
303
|
+
export async function handleAgentRequest(
|
|
304
|
+
userId: string,
|
|
305
|
+
message: string,
|
|
306
|
+
toolkits: string[]
|
|
307
|
+
) {
|
|
308
|
+
// 1. Create fresh session
|
|
309
|
+
const session = await composio.create(userId, {
|
|
310
|
+
toolkits,
|
|
311
|
+
manageConnections: true
|
|
312
|
+
});
|
|
313
|
+
|
|
314
|
+
// 2. Log session start
|
|
315
|
+
logger.info('Session started', {
|
|
316
|
+
sessionId: session.sessionId,
|
|
317
|
+
userId,
|
|
318
|
+
toolkits
|
|
319
|
+
});
|
|
320
|
+
|
|
321
|
+
try {
|
|
322
|
+
// 3. Get tools and run agent
|
|
323
|
+
const tools = await session.tools();
|
|
324
|
+
const response = await agent.run(message, tools);
|
|
325
|
+
|
|
326
|
+
// 4. Log session completion
|
|
327
|
+
logger.info('Session completed', {
|
|
328
|
+
sessionId: session.sessionId
|
|
329
|
+
});
|
|
330
|
+
|
|
331
|
+
return response;
|
|
332
|
+
} catch (error) {
|
|
333
|
+
// 5. Log session error
|
|
334
|
+
logger.error('Session failed', {
|
|
335
|
+
sessionId: session.sessionId,
|
|
336
|
+
error
|
|
337
|
+
});
|
|
338
|
+
throw error;
|
|
339
|
+
}
|
|
340
|
+
}
|
|
341
|
+
```
|
|
342
|
+
|
|
343
|
+
## Pattern: Per-Conversation Sessions
|
|
344
|
+
|
|
345
|
+
```typescript
|
|
346
|
+
// For long-running conversations with stable config
|
|
347
|
+
export class ConversationSession {
|
|
348
|
+
private session: ToolRouterSession;
|
|
349
|
+
|
|
350
|
+
async start(userId: string, config: SessionConfig) {
|
|
351
|
+
// Create session once for conversation
|
|
352
|
+
this.session = await composio.create(userId, config);
|
|
353
|
+
|
|
354
|
+
logger.info('Conversation session started', {
|
|
355
|
+
sessionId: this.session.sessionId
|
|
356
|
+
});
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
async handleMessage(message: string) {
|
|
360
|
+
// Reuse session for all messages
|
|
361
|
+
const tools = await this.session.tools();
|
|
362
|
+
return await agent.run(message, tools);
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
async end() {
|
|
366
|
+
logger.info('Conversation session ended', {
|
|
367
|
+
sessionId: this.session.sessionId
|
|
368
|
+
});
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
```
|
|
372
|
+
|
|
373
|
+
## Key Principles
|
|
374
|
+
|
|
375
|
+
1. **Don't cache sessions** - Create new ones as needed
|
|
376
|
+
2. **Session = Unit of work** - One session per task or conversation
|
|
377
|
+
3. **Short-lived is better** - Fresh state, clean logs, easier debugging
|
|
378
|
+
4. **Session ID = Trace ID** - Use for log correlation and debugging
|
|
379
|
+
5. **Create on demand** - No need to pre-create or warm up sessions
|
|
380
|
+
|
|
381
|
+
## Reference
|
|
382
|
+
|
|
383
|
+
- [Tool Router Sessions](https://docs.composio.dev/sdk/typescript/api/tool-router#creating-sessions)
|
|
384
|
+
- [Session Properties](https://docs.composio.dev/sdk/typescript/api/tool-router#session-properties)
|
|
385
|
+
- [Best Practices](https://docs.composio.dev/sdk/typescript/api/tool-router#best-practices)
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Query Toolkit Connection States for UI
|
|
3
|
+
impact: MEDIUM
|
|
4
|
+
description: Use session.toolkits() to build connection management UIs showing which toolkits are connected
|
|
5
|
+
tags: [tool-router, toolkits, connections, ui]
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Query Toolkit Connection States for UI
|
|
9
|
+
|
|
10
|
+
Use `session.toolkits()` to check connection status and build UIs showing which toolkits are connected. With `manageConnections: true`, agents handle missing connections automatically.
|
|
11
|
+
|
|
12
|
+
## ❌ Incorrect
|
|
13
|
+
|
|
14
|
+
```typescript
|
|
15
|
+
// DON'T: Build UI without showing connection status
|
|
16
|
+
async function showToolkits(session) {
|
|
17
|
+
// Just show toolkit names with no status
|
|
18
|
+
const toolkits = ['Gmail', 'Slack', 'GitHub'];
|
|
19
|
+
|
|
20
|
+
return toolkits.items.map(name => ({
|
|
21
|
+
name,
|
|
22
|
+
// Missing: connection status, auth button, etc.
|
|
23
|
+
}));
|
|
24
|
+
}
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
```python
|
|
28
|
+
# DON'T: Build UI without showing connection status
|
|
29
|
+
def show_toolkits(session):
|
|
30
|
+
# Just show toolkit names with no status
|
|
31
|
+
toolkits = ["Gmail", "Slack", "GitHub"]
|
|
32
|
+
|
|
33
|
+
return [{"name": name} for name in toolkits]
|
|
34
|
+
# Missing: connection status, auth button, etc.
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## ✅ Correct
|
|
38
|
+
|
|
39
|
+
```typescript
|
|
40
|
+
// DO: Query connection states to build connection UI
|
|
41
|
+
import { Composio } from '@composio/core';
|
|
42
|
+
|
|
43
|
+
const composio = new Composio();
|
|
44
|
+
const session = await composio.create('user_123', {
|
|
45
|
+
toolkits: ['gmail', 'slack', 'github'],
|
|
46
|
+
manageConnections: true // Agent handles auth automatically
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
// Get connection states for building UI
|
|
50
|
+
const { items } = await session.toolkits();
|
|
51
|
+
|
|
52
|
+
// Build connection management UI
|
|
53
|
+
const connectionUI = items.map(toolkit => ({
|
|
54
|
+
slug: toolkit.slug,
|
|
55
|
+
name: toolkit.name,
|
|
56
|
+
logo: toolkit.logo,
|
|
57
|
+
isConnected: toolkit.connection?.isActive || false,
|
|
58
|
+
status: toolkit.connection?.connectedAccount?.status,
|
|
59
|
+
// Show "Connect" button if not connected
|
|
60
|
+
needsAuth: !toolkit.connection?.isActive && !toolkit.isNoAuth
|
|
61
|
+
}));
|
|
62
|
+
|
|
63
|
+
console.log('Connection Status:', connectionUI);
|
|
64
|
+
// Use this to render connection cards in your UI
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
```python
|
|
68
|
+
# DO: Query connection states to build connection UI
|
|
69
|
+
from composio import Composio
|
|
70
|
+
|
|
71
|
+
composio = Composio()
|
|
72
|
+
session = composio.create(
|
|
73
|
+
user_id="user_123",
|
|
74
|
+
toolkits=["gmail", "slack", "github"],
|
|
75
|
+
manage_connections=True # Agent handles auth automatically
|
|
76
|
+
)
|
|
77
|
+
|
|
78
|
+
# Get connection states for building UI
|
|
79
|
+
result = session.toolkits()
|
|
80
|
+
|
|
81
|
+
# Build connection management UI
|
|
82
|
+
connection_ui = []
|
|
83
|
+
for toolkit in result.items:
|
|
84
|
+
connection_ui.append({
|
|
85
|
+
"slug": toolkit.slug,
|
|
86
|
+
"name": toolkit.name,
|
|
87
|
+
"logo": toolkit.logo,
|
|
88
|
+
"is_connected": toolkit.connection.is_active if toolkit.connection else False,
|
|
89
|
+
"status": toolkit.connection.connected_account.status if toolkit.connection.connected_account else None,
|
|
90
|
+
# Show "Connect" button if not connected
|
|
91
|
+
"needs_auth": not (toolkit.connection.is_active if toolkit.connection else False) and not toolkit.is_no_auth
|
|
92
|
+
})
|
|
93
|
+
|
|
94
|
+
print(f"Connection Status: {connection_ui}")
|
|
95
|
+
# Use this to render connection cards in your UI
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
## Response Structure
|
|
99
|
+
|
|
100
|
+
```typescript
|
|
101
|
+
interface ToolkitConnectionState {
|
|
102
|
+
slug: string; // 'gmail'
|
|
103
|
+
name: string; // 'Gmail'
|
|
104
|
+
logo?: string; // 'https://...'
|
|
105
|
+
isNoAuth: boolean; // true if no auth needed
|
|
106
|
+
connection: {
|
|
107
|
+
isActive: boolean; // Is connection active?
|
|
108
|
+
authConfig?: {
|
|
109
|
+
id: string; // Auth config ID
|
|
110
|
+
mode: string; // 'OAUTH2', 'API_KEY', etc.
|
|
111
|
+
isComposioManaged: boolean;
|
|
112
|
+
};
|
|
113
|
+
connectedAccount?: {
|
|
114
|
+
id: string; // Connected account ID
|
|
115
|
+
status: string; // 'ACTIVE', 'INVALID', etc.
|
|
116
|
+
};
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
## Use Cases
|
|
122
|
+
|
|
123
|
+
- **Build connection UI**: Display connected/disconnected state with auth buttons
|
|
124
|
+
- **Settings pages**: Let users view and manage their connections
|
|
125
|
+
- **Onboarding flows**: Show which toolkits to connect during setup
|
|
126
|
+
- **Status dashboards**: Monitor connection health across toolkits
|
|
127
|
+
|
|
128
|
+
## Important Note
|
|
129
|
+
|
|
130
|
+
With `manageConnections: true` (default), you don't need to check connections before agent execution - the agent will prompt users to authenticate when needed. Use `session.toolkits()` primarily for building user-facing connection management UIs.
|
|
131
|
+
|
|
132
|
+
## Reference
|
|
133
|
+
|
|
134
|
+
- [session.toolkits()](https://docs.composio.dev/sdk/typescript/api/tool-router#toolkits)
|
|
135
|
+
- [Toolkit Connection State](https://docs.composio.dev/sdk/typescript/api/tool-router#toolkitconnectionstate)
|