glirastes 0.1.0
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/CHANGELOG.md +468 -0
- package/README.md +651 -0
- package/dist/cli/bin.d.ts +2 -0
- package/dist/cli/bin.js +34 -0
- package/dist/cli/bin.js.map +1 -0
- package/dist/cli/commands/check-upgrade.d.ts +15 -0
- package/dist/cli/commands/check-upgrade.js +138 -0
- package/dist/cli/commands/check-upgrade.js.map +1 -0
- package/dist/cli/commands/test.d.ts +8 -0
- package/dist/cli/commands/test.js +76 -0
- package/dist/cli/commands/test.js.map +1 -0
- package/dist/cli/index.d.ts +1 -0
- package/dist/cli/index.js +609 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/utils/changelog-parser.d.ts +13 -0
- package/dist/cli/utils/changelog-parser.js +89 -0
- package/dist/cli/utils/changelog-parser.js.map +1 -0
- package/dist/cli/utils/commit-parser.d.ts +8 -0
- package/dist/cli/utils/commit-parser.js +23 -0
- package/dist/cli/utils/commit-parser.js.map +1 -0
- package/dist/cli/utils/gap-detector.d.ts +14 -0
- package/dist/cli/utils/gap-detector.js +65 -0
- package/dist/cli/utils/gap-detector.js.map +1 -0
- package/dist/cli/utils/get-cli-version.d.ts +2 -0
- package/dist/cli/utils/get-cli-version.js +10 -0
- package/dist/cli/utils/get-cli-version.js.map +1 -0
- package/dist/codegen/asset-sync.d.ts +20 -0
- package/dist/codegen/asset-sync.js +26 -0
- package/dist/codegen/asset-sync.js.map +1 -0
- package/dist/codegen/coverage.d.ts +66 -0
- package/dist/codegen/coverage.js +372 -0
- package/dist/codegen/coverage.js.map +1 -0
- package/dist/codegen/endpoint-scanner.d.ts +16 -0
- package/dist/codegen/endpoint-scanner.js +161 -0
- package/dist/codegen/endpoint-scanner.js.map +1 -0
- package/dist/codegen/format.d.ts +17 -0
- package/dist/codegen/format.js +28 -0
- package/dist/codegen/format.js.map +1 -0
- package/dist/codegen/fs-utils.d.ts +45 -0
- package/dist/codegen/fs-utils.js +155 -0
- package/dist/codegen/fs-utils.js.map +1 -0
- package/dist/codegen/index.d.ts +13 -0
- package/dist/codegen/index.js +13 -0
- package/dist/codegen/index.js.map +1 -0
- package/dist/codegen/mcp-generator.d.ts +50 -0
- package/dist/codegen/mcp-generator.js +801 -0
- package/dist/codegen/mcp-generator.js.map +1 -0
- package/dist/codegen/module-generator.d.ts +11 -0
- package/dist/codegen/module-generator.js +351 -0
- package/dist/codegen/module-generator.js.map +1 -0
- package/dist/codegen/nestjs-scanner.d.ts +43 -0
- package/dist/codegen/nestjs-scanner.js +239 -0
- package/dist/codegen/nestjs-scanner.js.map +1 -0
- package/dist/codegen/output-recommender.d.ts +23 -0
- package/dist/codegen/output-recommender.js +31 -0
- package/dist/codegen/output-recommender.js.map +1 -0
- package/dist/codegen/scaffolder.d.ts +36 -0
- package/dist/codegen/scaffolder.js +259 -0
- package/dist/codegen/scaffolder.js.map +1 -0
- package/dist/codegen/skill-generator.d.ts +49 -0
- package/dist/codegen/skill-generator.js +965 -0
- package/dist/codegen/skill-generator.js.map +1 -0
- package/dist/codegen/types.d.ts +52 -0
- package/dist/codegen/types.js +14 -0
- package/dist/codegen/types.js.map +1 -0
- package/dist/codegen/ui-scanner.d.ts +24 -0
- package/dist/codegen/ui-scanner.js +197 -0
- package/dist/codegen/ui-scanner.js.map +1 -0
- package/dist/codegen/validator.d.ts +35 -0
- package/dist/codegen/validator.js +256 -0
- package/dist/codegen/validator.js.map +1 -0
- package/dist/openapi/demo-generate.d.ts +1 -0
- package/dist/openapi/demo-generate.js +15 -0
- package/dist/openapi/demo-generate.js.map +1 -0
- package/dist/openapi/index.d.ts +78 -0
- package/dist/openapi/index.js +341 -0
- package/dist/openapi/index.js.map +1 -0
- package/dist/react/audio-worklet-processor.d.ts +9 -0
- package/dist/react/audio-worklet-processor.js +28 -0
- package/dist/react/audio-worklet-processor.js.map +1 -0
- package/dist/react/bridges/rest-session-bridge.d.ts +113 -0
- package/dist/react/bridges/rest-session-bridge.js +207 -0
- package/dist/react/bridges/rest-session-bridge.js.map +1 -0
- package/dist/react/components/ai-chat-panel.d.ts +12 -0
- package/dist/react/components/ai-chat-panel.js +65 -0
- package/dist/react/components/ai-chat-panel.js.map +1 -0
- package/dist/react/components/ai-trigger-button.d.ts +2 -0
- package/dist/react/components/ai-trigger-button.js +239 -0
- package/dist/react/components/ai-trigger-button.js.map +1 -0
- package/dist/react/components/approval-card.d.ts +9 -0
- package/dist/react/components/approval-card.js +22 -0
- package/dist/react/components/approval-card.js.map +1 -0
- package/dist/react/components/bulk-approval-card.d.ts +9 -0
- package/dist/react/components/bulk-approval-card.js +34 -0
- package/dist/react/components/bulk-approval-card.js.map +1 -0
- package/dist/react/components/chat-input.d.ts +10 -0
- package/dist/react/components/chat-input.js +58 -0
- package/dist/react/components/chat-input.js.map +1 -0
- package/dist/react/components/chat-window.d.ts +2 -0
- package/dist/react/components/chat-window.js +132 -0
- package/dist/react/components/chat-window.js.map +1 -0
- package/dist/react/components/confirm-dialog.d.ts +32 -0
- package/dist/react/components/confirm-dialog.js +46 -0
- package/dist/react/components/confirm-dialog.js.map +1 -0
- package/dist/react/components/floating-chat-ui.d.ts +84 -0
- package/dist/react/components/floating-chat-ui.js +161 -0
- package/dist/react/components/floating-chat-ui.js.map +1 -0
- package/dist/react/components/mention-chip.d.ts +16 -0
- package/dist/react/components/mention-chip.js +39 -0
- package/dist/react/components/mention-chip.js.map +1 -0
- package/dist/react/components/mention-input.d.ts +8 -0
- package/dist/react/components/mention-input.js +115 -0
- package/dist/react/components/mention-input.js.map +1 -0
- package/dist/react/components/message-bubble.d.ts +11 -0
- package/dist/react/components/message-bubble.js +123 -0
- package/dist/react/components/message-bubble.js.map +1 -0
- package/dist/react/components/message-list.d.ts +8 -0
- package/dist/react/components/message-list.js +50 -0
- package/dist/react/components/message-list.js.map +1 -0
- package/dist/react/components/pipeline-timeline.d.ts +7 -0
- package/dist/react/components/pipeline-timeline.js +70 -0
- package/dist/react/components/pipeline-timeline.js.map +1 -0
- package/dist/react/components/recording-bar.d.ts +2 -0
- package/dist/react/components/recording-bar.js +81 -0
- package/dist/react/components/recording-bar.js.map +1 -0
- package/dist/react/components/recording-controls.d.ts +18 -0
- package/dist/react/components/recording-controls.js +35 -0
- package/dist/react/components/recording-controls.js.map +1 -0
- package/dist/react/components/rich-mention-input.d.ts +2 -0
- package/dist/react/components/rich-mention-input.js +569 -0
- package/dist/react/components/rich-mention-input.js.map +1 -0
- package/dist/react/components/session-switcher.d.ts +14 -0
- package/dist/react/components/session-switcher.js +131 -0
- package/dist/react/components/session-switcher.js.map +1 -0
- package/dist/react/components/suggestion-bar.d.ts +9 -0
- package/dist/react/components/suggestion-bar.js +45 -0
- package/dist/react/components/suggestion-bar.js.map +1 -0
- package/dist/react/components/suggestion-chip.d.ts +9 -0
- package/dist/react/components/suggestion-chip.js +12 -0
- package/dist/react/components/suggestion-chip.js.map +1 -0
- package/dist/react/components/voice-input-addon.d.ts +13 -0
- package/dist/react/components/voice-input-addon.js +29 -0
- package/dist/react/components/voice-input-addon.js.map +1 -0
- package/dist/react/components/voice-input-button.d.ts +2 -0
- package/dist/react/components/voice-input-button.js +53 -0
- package/dist/react/components/voice-input-button.js.map +1 -0
- package/dist/react/hooks/use-ai-chat.d.ts +22 -0
- package/dist/react/hooks/use-ai-chat.js +49 -0
- package/dist/react/hooks/use-ai-chat.js.map +1 -0
- package/dist/react/hooks/use-approvals.d.ts +23 -0
- package/dist/react/hooks/use-approvals.js +61 -0
- package/dist/react/hooks/use-approvals.js.map +1 -0
- package/dist/react/hooks/use-deepgram-transcription.d.ts +2 -0
- package/dist/react/hooks/use-deepgram-transcription.js +327 -0
- package/dist/react/hooks/use-deepgram-transcription.js.map +1 -0
- package/dist/react/hooks/use-drag-resize-panel.d.ts +48 -0
- package/dist/react/hooks/use-drag-resize-panel.js +306 -0
- package/dist/react/hooks/use-drag-resize-panel.js.map +1 -0
- package/dist/react/hooks/use-draggable-position.d.ts +25 -0
- package/dist/react/hooks/use-draggable-position.js +132 -0
- package/dist/react/hooks/use-draggable-position.js.map +1 -0
- package/dist/react/hooks/use-keyboard-shortcut.d.ts +20 -0
- package/dist/react/hooks/use-keyboard-shortcut.js +91 -0
- package/dist/react/hooks/use-keyboard-shortcut.js.map +1 -0
- package/dist/react/hooks/use-mentions.d.ts +23 -0
- package/dist/react/hooks/use-mentions.js +40 -0
- package/dist/react/hooks/use-mentions.js.map +1 -0
- package/dist/react/hooks/use-suggestions.d.ts +22 -0
- package/dist/react/hooks/use-suggestions.js +37 -0
- package/dist/react/hooks/use-suggestions.js.map +1 -0
- package/dist/react/index.d.ts +43 -0
- package/dist/react/index.js +53 -0
- package/dist/react/index.js.map +1 -0
- package/dist/react/provider/ai-chat-provider.d.ts +45 -0
- package/dist/react/provider/ai-chat-provider.js +1021 -0
- package/dist/react/provider/ai-chat-provider.js.map +1 -0
- package/dist/react/provider/chat-context.d.ts +84 -0
- package/dist/react/provider/chat-context.js +10 -0
- package/dist/react/provider/chat-context.js.map +1 -0
- package/dist/react/styles.css +897 -0
- package/dist/react/template.d.ts +84 -0
- package/dist/react/template.js +83 -0
- package/dist/react/template.js.map +1 -0
- package/dist/react/themes.d.ts +24 -0
- package/dist/react/themes.js +269 -0
- package/dist/react/themes.js.map +1 -0
- package/dist/react/transports/langgraph/index.d.ts +2 -0
- package/dist/react/transports/langgraph/index.js +3 -0
- package/dist/react/transports/langgraph/index.js.map +1 -0
- package/dist/react/transports/langgraph/langgraph-ai-chat.d.ts +62 -0
- package/dist/react/transports/langgraph/langgraph-ai-chat.js +92 -0
- package/dist/react/transports/langgraph/langgraph-ai-chat.js.map +1 -0
- package/dist/react/transports/langgraph.d.ts +71 -0
- package/dist/react/transports/langgraph.js +366 -0
- package/dist/react/transports/langgraph.js.map +1 -0
- package/dist/react/transports/vercel/index.d.ts +2 -0
- package/dist/react/transports/vercel/index.js +3 -0
- package/dist/react/transports/vercel/index.js.map +1 -0
- package/dist/react/transports/vercel/vercel-ai-chat.d.ts +49 -0
- package/dist/react/transports/vercel/vercel-ai-chat.js +79 -0
- package/dist/react/transports/vercel/vercel-ai-chat.js.map +1 -0
- package/dist/react/transports/vercel.d.ts +30 -0
- package/dist/react/transports/vercel.js +67 -0
- package/dist/react/transports/vercel.js.map +1 -0
- package/dist/react/types.d.ts +750 -0
- package/dist/react/types.js +2 -0
- package/dist/react/types.js.map +1 -0
- package/dist/react/ui.d.ts +73 -0
- package/dist/react/ui.js +170 -0
- package/dist/react/ui.js.map +1 -0
- package/dist/react/utils/create-approval-description.d.ts +53 -0
- package/dist/react/utils/create-approval-description.js +120 -0
- package/dist/react/utils/create-approval-description.js.map +1 -0
- package/dist/react/utils/create-tool-result-handler.d.ts +90 -0
- package/dist/react/utils/create-tool-result-handler.js +166 -0
- package/dist/react/utils/create-tool-result-handler.js.map +1 -0
- package/dist/react/utils/mention-markup.d.ts +13 -0
- package/dist/react/utils/mention-markup.js +111 -0
- package/dist/react/utils/mention-markup.js.map +1 -0
- package/dist/react/utils/merge-pipeline-steps.d.ts +19 -0
- package/dist/react/utils/merge-pipeline-steps.js +79 -0
- package/dist/react/utils/merge-pipeline-steps.js.map +1 -0
- package/dist/react/utils/sanitize-stored-messages.d.ts +23 -0
- package/dist/react/utils/sanitize-stored-messages.js +50 -0
- package/dist/react/utils/sanitize-stored-messages.js.map +1 -0
- package/dist/server/adapters/nestjs/chat/ai-chat-auth.guard.d.ts +10 -0
- package/dist/server/adapters/nestjs/chat/ai-chat-auth.guard.js +40 -0
- package/dist/server/adapters/nestjs/chat/ai-chat-auth.guard.js.map +1 -0
- package/dist/server/adapters/nestjs/chat/ai-chat-module-options.interface.d.ts +32 -0
- package/dist/server/adapters/nestjs/chat/ai-chat-module-options.interface.js +2 -0
- package/dist/server/adapters/nestjs/chat/ai-chat-module-options.interface.js.map +1 -0
- package/dist/server/adapters/nestjs/chat/ai-chat.controller.d.ts +11 -0
- package/dist/server/adapters/nestjs/chat/ai-chat.controller.js +78 -0
- package/dist/server/adapters/nestjs/chat/ai-chat.controller.js.map +1 -0
- package/dist/server/adapters/nestjs/chat/ai-chat.module.d.ts +9 -0
- package/dist/server/adapters/nestjs/chat/ai-chat.module.js +116 -0
- package/dist/server/adapters/nestjs/chat/ai-chat.module.js.map +1 -0
- package/dist/server/adapters/nestjs/chat/ai-chat.service.d.ts +13 -0
- package/dist/server/adapters/nestjs/chat/ai-chat.service.js +129 -0
- package/dist/server/adapters/nestjs/chat/ai-chat.service.js.map +1 -0
- package/dist/server/adapters/nestjs/chat/dto/ai-chat-request.dto.d.ts +7 -0
- package/dist/server/adapters/nestjs/chat/dto/ai-chat-request.dto.js +49 -0
- package/dist/server/adapters/nestjs/chat/dto/ai-chat-request.dto.js.map +1 -0
- package/dist/server/adapters/nestjs/chat/dto/chat-message-part.dto.d.ts +19 -0
- package/dist/server/adapters/nestjs/chat/dto/chat-message-part.dto.js +105 -0
- package/dist/server/adapters/nestjs/chat/dto/chat-message-part.dto.js.map +1 -0
- package/dist/server/adapters/nestjs/chat/dto/chat-message.dto.d.ts +8 -0
- package/dist/server/adapters/nestjs/chat/dto/chat-message.dto.js +56 -0
- package/dist/server/adapters/nestjs/chat/dto/chat-message.dto.js.map +1 -0
- package/dist/server/adapters/nestjs/chat/dto/index.d.ts +3 -0
- package/dist/server/adapters/nestjs/chat/dto/index.js +4 -0
- package/dist/server/adapters/nestjs/chat/dto/index.js.map +1 -0
- package/dist/server/adapters/nestjs/chat/index.d.ts +3 -0
- package/dist/server/adapters/nestjs/chat/index.js +3 -0
- package/dist/server/adapters/nestjs/chat/index.js.map +1 -0
- package/dist/server/adapters/nestjs/chat/speech-stream.gateway.d.ts +4 -0
- package/dist/server/adapters/nestjs/chat/speech-stream.gateway.js +69 -0
- package/dist/server/adapters/nestjs/chat/speech-stream.gateway.js.map +1 -0
- package/dist/server/adapters/nestjs/decorators/ai-module.decorator.d.ts +6 -0
- package/dist/server/adapters/nestjs/decorators/ai-module.decorator.js +11 -0
- package/dist/server/adapters/nestjs/decorators/ai-module.decorator.js.map +1 -0
- package/dist/server/adapters/nestjs/decorators/ai-param.decorator.d.ts +5 -0
- package/dist/server/adapters/nestjs/decorators/ai-param.decorator.js +13 -0
- package/dist/server/adapters/nestjs/decorators/ai-param.decorator.js.map +1 -0
- package/dist/server/adapters/nestjs/decorators/ai-tool.decorator.d.ts +6 -0
- package/dist/server/adapters/nestjs/decorators/ai-tool.decorator.js +20 -0
- package/dist/server/adapters/nestjs/decorators/ai-tool.decorator.js.map +1 -0
- package/dist/server/adapters/nestjs/decorators/constants.d.ts +4 -0
- package/dist/server/adapters/nestjs/decorators/constants.js +5 -0
- package/dist/server/adapters/nestjs/decorators/constants.js.map +1 -0
- package/dist/server/adapters/nestjs/index.d.ts +14 -0
- package/dist/server/adapters/nestjs/index.js +20 -0
- package/dist/server/adapters/nestjs/index.js.map +1 -0
- package/dist/server/adapters/nestjs/metadata.d.ts +39 -0
- package/dist/server/adapters/nestjs/metadata.js +30 -0
- package/dist/server/adapters/nestjs/metadata.js.map +1 -0
- package/dist/server/adapters/nestjs/module/ai-tools-explorer.service.d.ts +36 -0
- package/dist/server/adapters/nestjs/module/ai-tools-explorer.service.js +156 -0
- package/dist/server/adapters/nestjs/module/ai-tools-explorer.service.js.map +1 -0
- package/dist/server/adapters/nestjs/module/ai-tools.module.d.ts +37 -0
- package/dist/server/adapters/nestjs/module/ai-tools.module.js +42 -0
- package/dist/server/adapters/nestjs/module/ai-tools.module.js.map +1 -0
- package/dist/server/adapters/nestjs/module/ai-tools.service.d.ts +28 -0
- package/dist/server/adapters/nestjs/module/ai-tools.service.js +38 -0
- package/dist/server/adapters/nestjs/module/ai-tools.service.js.map +1 -0
- package/dist/server/adapters/nestjs/scanner/nestjs-scanner.d.ts +16 -0
- package/dist/server/adapters/nestjs/scanner/nestjs-scanner.js +115 -0
- package/dist/server/adapters/nestjs/scanner/nestjs-scanner.js.map +1 -0
- package/dist/server/adapters/nestjs/scanner/schema-builder.d.ts +26 -0
- package/dist/server/adapters/nestjs/scanner/schema-builder.js +255 -0
- package/dist/server/adapters/nestjs/scanner/schema-builder.js.map +1 -0
- package/dist/server/adapters/nestjs/swagger.d.ts +7 -0
- package/dist/server/adapters/nestjs/swagger.js +37 -0
- package/dist/server/adapters/nestjs/swagger.js.map +1 -0
- package/dist/server/adapters/nextjs/context-helpers.d.ts +22 -0
- package/dist/server/adapters/nextjs/context-helpers.js +55 -0
- package/dist/server/adapters/nextjs/context-helpers.js.map +1 -0
- package/dist/server/adapters/nextjs/create-ai-chat-handler.d.ts +78 -0
- package/dist/server/adapters/nextjs/create-ai-chat-handler.js +950 -0
- package/dist/server/adapters/nextjs/create-ai-chat-handler.js.map +1 -0
- package/dist/server/adapters/nextjs/index.d.ts +8 -0
- package/dist/server/adapters/nextjs/index.js +9 -0
- package/dist/server/adapters/nextjs/index.js.map +1 -0
- package/dist/server/adapters/nextjs/prepare-model-messages.d.ts +58 -0
- package/dist/server/adapters/nextjs/prepare-model-messages.js +111 -0
- package/dist/server/adapters/nextjs/prepare-model-messages.js.map +1 -0
- package/dist/server/adapters/nextjs/sanitize-model-messages.d.ts +64 -0
- package/dist/server/adapters/nextjs/sanitize-model-messages.js +487 -0
- package/dist/server/adapters/nextjs/sanitize-model-messages.js.map +1 -0
- package/dist/server/adapters/nextjs/server-action-helper.d.ts +7 -0
- package/dist/server/adapters/nextjs/server-action-helper.js +38 -0
- package/dist/server/adapters/nextjs/server-action-helper.js.map +1 -0
- package/dist/server/adapters/nextjs/types.d.ts +246 -0
- package/dist/server/adapters/nextjs/types.js +2 -0
- package/dist/server/adapters/nextjs/types.js.map +1 -0
- package/dist/server/adapters/nextjs/with-ai-tool.d.ts +9 -0
- package/dist/server/adapters/nextjs/with-ai-tool.js +10 -0
- package/dist/server/adapters/nextjs/with-ai-tool.js.map +1 -0
- package/dist/server/core/followup-tool.d.ts +9 -0
- package/dist/server/core/followup-tool.js +80 -0
- package/dist/server/core/followup-tool.js.map +1 -0
- package/dist/server/core/index.d.ts +139 -0
- package/dist/server/core/index.js +787 -0
- package/dist/server/core/index.js.map +1 -0
- package/dist/server/core/intent-classifier.d.ts +94 -0
- package/dist/server/core/intent-classifier.js +314 -0
- package/dist/server/core/intent-classifier.js.map +1 -0
- package/dist/server/core/model-selector.d.ts +12 -0
- package/dist/server/core/model-selector.js +45 -0
- package/dist/server/core/model-selector.js.map +1 -0
- package/dist/server/core/module-router.d.ts +14 -0
- package/dist/server/core/module-router.js +107 -0
- package/dist/server/core/module-router.js.map +1 -0
- package/dist/server/core/zod-compact.d.ts +18 -0
- package/dist/server/core/zod-compact.js +127 -0
- package/dist/server/core/zod-compact.js.map +1 -0
- package/dist/server/index.d.ts +5 -0
- package/dist/server/index.js +8 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/lancer/cache.d.ts +9 -0
- package/dist/server/lancer/cache.js +30 -0
- package/dist/server/lancer/cache.js.map +1 -0
- package/dist/server/lancer/client.d.ts +2 -0
- package/dist/server/lancer/client.js +277 -0
- package/dist/server/lancer/client.js.map +1 -0
- package/dist/server/lancer/errors.d.ts +13 -0
- package/dist/server/lancer/errors.js +18 -0
- package/dist/server/lancer/errors.js.map +1 -0
- package/dist/server/lancer/index.d.ts +3 -0
- package/dist/server/lancer/index.js +3 -0
- package/dist/server/lancer/index.js.map +1 -0
- package/dist/server/lancer/telemetry-buffer.d.ts +15 -0
- package/dist/server/lancer/telemetry-buffer.js +61 -0
- package/dist/server/lancer/telemetry-buffer.js.map +1 -0
- package/dist/server/lancer/types.d.ts +201 -0
- package/dist/server/lancer/types.js +5 -0
- package/dist/server/lancer/types.js.map +1 -0
- package/dist/server/pii-shield/aegis-detector.d.ts +26 -0
- package/dist/server/pii-shield/aegis-detector.js +24 -0
- package/dist/server/pii-shield/aegis-detector.js.map +1 -0
- package/dist/server/pii-shield/create-pii-shield.d.ts +2 -0
- package/dist/server/pii-shield/create-pii-shield.js +189 -0
- package/dist/server/pii-shield/create-pii-shield.js.map +1 -0
- package/dist/server/pii-shield/deep-walk.d.ts +1 -0
- package/dist/server/pii-shield/deep-walk.js +17 -0
- package/dist/server/pii-shield/deep-walk.js.map +1 -0
- package/dist/server/pii-shield/fake-data.d.ts +5 -0
- package/dist/server/pii-shield/fake-data.js +168 -0
- package/dist/server/pii-shield/fake-data.js.map +1 -0
- package/dist/server/pii-shield/index.d.ts +4 -0
- package/dist/server/pii-shield/index.js +5 -0
- package/dist/server/pii-shield/index.js.map +1 -0
- package/dist/server/pii-shield/leakage.d.ts +1 -0
- package/dist/server/pii-shield/leakage.js +13 -0
- package/dist/server/pii-shield/leakage.js.map +1 -0
- package/dist/server/pii-shield/session-mapping.d.ts +12 -0
- package/dist/server/pii-shield/session-mapping.js +68 -0
- package/dist/server/pii-shield/session-mapping.js.map +1 -0
- package/dist/server/pipeline.d.ts +26 -0
- package/dist/server/pipeline.js +125 -0
- package/dist/server/pipeline.js.map +1 -0
- package/dist/server/testing/approvals.d.ts +11 -0
- package/dist/server/testing/approvals.js +39 -0
- package/dist/server/testing/approvals.js.map +1 -0
- package/dist/server/testing/combination.d.ts +3 -0
- package/dist/server/testing/combination.js +81 -0
- package/dist/server/testing/combination.js.map +1 -0
- package/dist/server/testing/create-test-suite.d.ts +29 -0
- package/dist/server/testing/create-test-suite.js +79 -0
- package/dist/server/testing/create-test-suite.js.map +1 -0
- package/dist/server/testing/edge-cases.d.ts +8 -0
- package/dist/server/testing/edge-cases.js +275 -0
- package/dist/server/testing/edge-cases.js.map +1 -0
- package/dist/server/testing/guardrails.d.ts +14 -0
- package/dist/server/testing/guardrails.js +150 -0
- package/dist/server/testing/guardrails.js.map +1 -0
- package/dist/server/testing/helpers.d.ts +14 -0
- package/dist/server/testing/helpers.js +114 -0
- package/dist/server/testing/helpers.js.map +1 -0
- package/dist/server/testing/index.d.ts +12 -0
- package/dist/server/testing/index.js +21 -0
- package/dist/server/testing/index.js.map +1 -0
- package/dist/server/testing/mock-executor.d.ts +8 -0
- package/dist/server/testing/mock-executor.js +38 -0
- package/dist/server/testing/mock-executor.js.map +1 -0
- package/dist/server/testing/regression.d.ts +7 -0
- package/dist/server/testing/regression.js +25 -0
- package/dist/server/testing/regression.js.map +1 -0
- package/dist/server/testing/routing.d.ts +12 -0
- package/dist/server/testing/routing.js +61 -0
- package/dist/server/testing/routing.js.map +1 -0
- package/dist/server/testing/schema-consistency.d.ts +6 -0
- package/dist/server/testing/schema-consistency.js +54 -0
- package/dist/server/testing/schema-consistency.js.map +1 -0
- package/dist/server/testing/smoke.d.ts +11 -0
- package/dist/server/testing/smoke.js +62 -0
- package/dist/server/testing/smoke.js.map +1 -0
- package/dist/server/testing/types.d.ts +156 -0
- package/dist/server/testing/types.js +2 -0
- package/dist/server/testing/types.js.map +1 -0
- package/dist/types.d.ts +696 -0
- package/dist/types.js +84 -0
- package/dist/types.js.map +1 -0
- package/package.json +187 -0
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import type { AiChatPanelProps, ChatInputProps, MessageBubbleProps, MessageListProps } from './types.js';
|
|
2
|
+
type ClassDictionary = Record<string, boolean | null | undefined>;
|
|
3
|
+
type ClassArray = ClassValue[];
|
|
4
|
+
type ClassPrimitive = string | number | null | undefined | false;
|
|
5
|
+
export type ClassValue = ClassPrimitive | ClassDictionary | ClassArray;
|
|
6
|
+
export declare function cn(...values: ClassValue[]): string;
|
|
7
|
+
export declare const defaultTheme: {
|
|
8
|
+
readonly colors: {
|
|
9
|
+
readonly primary: "#6366f1";
|
|
10
|
+
readonly background: "#ffffff";
|
|
11
|
+
readonly bubbleUser: "#e0e7ff";
|
|
12
|
+
readonly bubbleAssistant: "#f3f4f6";
|
|
13
|
+
readonly border: "#e5e7eb";
|
|
14
|
+
readonly text: "#111827";
|
|
15
|
+
readonly textMuted: "#6b7280";
|
|
16
|
+
};
|
|
17
|
+
readonly radius: {
|
|
18
|
+
readonly panel: "0.75rem";
|
|
19
|
+
readonly bubble: "0.75rem";
|
|
20
|
+
readonly input: "0.5rem";
|
|
21
|
+
readonly chip: "9999px";
|
|
22
|
+
};
|
|
23
|
+
readonly spacing: {
|
|
24
|
+
readonly panelPadding: "1rem";
|
|
25
|
+
readonly bubbleGap: "0.75rem";
|
|
26
|
+
readonly inputPadding: "0.75rem";
|
|
27
|
+
};
|
|
28
|
+
};
|
|
29
|
+
export type ChatTheme = typeof defaultTheme;
|
|
30
|
+
export declare const tailwindThemeExtension: {
|
|
31
|
+
readonly colors: {
|
|
32
|
+
readonly 'chat-primary': "rgb(var(--chat-primary) / <alpha-value>)";
|
|
33
|
+
readonly 'chat-background': "rgb(var(--chat-background) / <alpha-value>)";
|
|
34
|
+
readonly 'chat-bubble-user': "rgb(var(--chat-bubble-user) / <alpha-value>)";
|
|
35
|
+
readonly 'chat-bubble-assistant': "rgb(var(--chat-bubble-assistant) / <alpha-value>)";
|
|
36
|
+
readonly 'chat-border': "rgb(var(--chat-border) / <alpha-value>)";
|
|
37
|
+
readonly 'chat-text': "rgb(var(--chat-text) / <alpha-value>)";
|
|
38
|
+
readonly 'chat-text-muted': "rgb(var(--chat-text-muted) / <alpha-value>)";
|
|
39
|
+
};
|
|
40
|
+
readonly borderRadius: {
|
|
41
|
+
readonly 'chat-panel': "0.75rem";
|
|
42
|
+
readonly 'chat-bubble': "0.75rem";
|
|
43
|
+
readonly 'chat-input': "0.5rem";
|
|
44
|
+
readonly 'chat-chip': "9999px";
|
|
45
|
+
};
|
|
46
|
+
};
|
|
47
|
+
export interface StyledMessageBubbleProps extends MessageBubbleProps {
|
|
48
|
+
classNames?: {
|
|
49
|
+
base?: string;
|
|
50
|
+
user?: string;
|
|
51
|
+
assistant?: string;
|
|
52
|
+
system?: string;
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
export declare function StyledMessageBubble({ message, className, classNames, }: StyledMessageBubbleProps): import("react/jsx-runtime").JSX.Element;
|
|
56
|
+
export interface StyledMessageListProps extends MessageListProps {
|
|
57
|
+
classNames?: {
|
|
58
|
+
root?: string;
|
|
59
|
+
loadMore?: string;
|
|
60
|
+
bubble?: string;
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
export declare function StyledMessageList({ className, classNames }: StyledMessageListProps): import("react/jsx-runtime").JSX.Element;
|
|
64
|
+
export interface StyledChatInputProps extends ChatInputProps {
|
|
65
|
+
classNames?: {
|
|
66
|
+
root?: string;
|
|
67
|
+
textarea?: string;
|
|
68
|
+
sendButton?: string;
|
|
69
|
+
stopButton?: string;
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
export declare function StyledChatInput({ className, onSubmit, classNames, }: StyledChatInputProps): import("react/jsx-runtime").JSX.Element;
|
|
73
|
+
export interface StyledChatPanelProps extends AiChatPanelProps {
|
|
74
|
+
classNames?: {
|
|
75
|
+
root?: string;
|
|
76
|
+
errorBanner?: string;
|
|
77
|
+
emptyState?: string;
|
|
78
|
+
suggestionBar?: string;
|
|
79
|
+
suggestionChip?: string;
|
|
80
|
+
mentionChip?: string;
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
export declare function StyledChatPanel({ className, classNames }: StyledChatPanelProps): import("react/jsx-runtime").JSX.Element;
|
|
84
|
+
export {};
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { AiChatPanel } from './components/ai-chat-panel.js';
|
|
3
|
+
import { ChatInput } from './components/chat-input.js';
|
|
4
|
+
import { MessageBubble } from './components/message-bubble.js';
|
|
5
|
+
import { MessageList } from './components/message-list.js';
|
|
6
|
+
function appendClass(output, value) {
|
|
7
|
+
if (!value)
|
|
8
|
+
return;
|
|
9
|
+
if (typeof value === 'string' || typeof value === 'number') {
|
|
10
|
+
output.push(String(value));
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
if (Array.isArray(value)) {
|
|
14
|
+
for (const item of value)
|
|
15
|
+
appendClass(output, item);
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
for (const [key, enabled] of Object.entries(value)) {
|
|
19
|
+
if (enabled)
|
|
20
|
+
output.push(key);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
export function cn(...values) {
|
|
24
|
+
const output = [];
|
|
25
|
+
for (const value of values)
|
|
26
|
+
appendClass(output, value);
|
|
27
|
+
return output.join(' ');
|
|
28
|
+
}
|
|
29
|
+
// ---------------------------------------------------------------------------
|
|
30
|
+
// Theme tokens
|
|
31
|
+
// ---------------------------------------------------------------------------
|
|
32
|
+
export const defaultTheme = {
|
|
33
|
+
colors: {
|
|
34
|
+
primary: '#6366f1',
|
|
35
|
+
background: '#ffffff',
|
|
36
|
+
bubbleUser: '#e0e7ff',
|
|
37
|
+
bubbleAssistant: '#f3f4f6',
|
|
38
|
+
border: '#e5e7eb',
|
|
39
|
+
text: '#111827',
|
|
40
|
+
textMuted: '#6b7280',
|
|
41
|
+
},
|
|
42
|
+
radius: {
|
|
43
|
+
panel: '0.75rem',
|
|
44
|
+
bubble: '0.75rem',
|
|
45
|
+
input: '0.5rem',
|
|
46
|
+
chip: '9999px',
|
|
47
|
+
},
|
|
48
|
+
spacing: {
|
|
49
|
+
panelPadding: '1rem',
|
|
50
|
+
bubbleGap: '0.75rem',
|
|
51
|
+
inputPadding: '0.75rem',
|
|
52
|
+
},
|
|
53
|
+
};
|
|
54
|
+
export const tailwindThemeExtension = {
|
|
55
|
+
colors: {
|
|
56
|
+
'chat-primary': 'rgb(var(--chat-primary) / <alpha-value>)',
|
|
57
|
+
'chat-background': 'rgb(var(--chat-background) / <alpha-value>)',
|
|
58
|
+
'chat-bubble-user': 'rgb(var(--chat-bubble-user) / <alpha-value>)',
|
|
59
|
+
'chat-bubble-assistant': 'rgb(var(--chat-bubble-assistant) / <alpha-value>)',
|
|
60
|
+
'chat-border': 'rgb(var(--chat-border) / <alpha-value>)',
|
|
61
|
+
'chat-text': 'rgb(var(--chat-text) / <alpha-value>)',
|
|
62
|
+
'chat-text-muted': 'rgb(var(--chat-text-muted) / <alpha-value>)',
|
|
63
|
+
},
|
|
64
|
+
borderRadius: {
|
|
65
|
+
'chat-panel': '0.75rem',
|
|
66
|
+
'chat-bubble': '0.75rem',
|
|
67
|
+
'chat-input': '0.5rem',
|
|
68
|
+
'chat-chip': '9999px',
|
|
69
|
+
},
|
|
70
|
+
};
|
|
71
|
+
export function StyledMessageBubble({ message, className, classNames, }) {
|
|
72
|
+
return (_jsx(MessageBubble, { message: message, className: cn('max-w-[85%] rounded-xl px-4 py-3 text-sm leading-relaxed shadow-sm', classNames?.base, message.role === 'user' && 'ml-auto bg-[rgb(var(--chat-bubble-user,224_231_255))] text-right', message.role === 'user' && classNames?.user, message.role === 'assistant' && 'mr-auto bg-[rgb(var(--chat-bubble-assistant,243_244_246))] text-left', message.role === 'assistant' && classNames?.assistant, message.role === 'system' && 'mx-auto bg-[rgb(var(--chat-bubble-assistant,243_244_246))] text-center', message.role === 'system' && classNames?.system, className) }));
|
|
73
|
+
}
|
|
74
|
+
export function StyledMessageList({ className, classNames }) {
|
|
75
|
+
return (_jsx(MessageList, { className: cn('flex-1 min-h-0 overflow-y-auto px-4 py-3', '[&>[data-action=load-more]]:mx-auto [&>[data-action=load-more]]:mb-3', '[&>[data-action=load-more]]:rounded-md [&>[data-action=load-more]]:border', '[&>[data-action=load-more]]:border-[rgb(var(--chat-border,229_231_235))]', '[&>[data-action=load-more]]:px-3 [&>[data-action=load-more]]:py-1.5', '[&>[data-action=load-more]]:text-xs [&>[data-action=load-more]]:font-medium', '[&>[data-component=message-bubble]]:mb-3', classNames?.root, classNames?.loadMore, classNames?.bubble, className) }));
|
|
76
|
+
}
|
|
77
|
+
export function StyledChatInput({ className, onSubmit, classNames, }) {
|
|
78
|
+
return (_jsx(ChatInput, { className: cn('shrink-0 border-t border-[rgb(var(--chat-border,229_231_235))]', 'bg-[rgb(var(--chat-background,255_255_255))] px-4 py-3', 'flex items-end gap-2', '[&_textarea]:min-h-[44px] [&_textarea]:max-h-[160px] [&_textarea]:flex-1 [&_textarea]:resize-none', '[&_textarea]:rounded-lg [&_textarea]:border [&_textarea]:border-[rgb(var(--chat-border,229_231_235))]', '[&_textarea]:bg-transparent [&_textarea]:px-3 [&_textarea]:py-2.5', '[&_textarea]:text-[rgb(var(--chat-text,17_24_39))]', '[&_textarea]:placeholder:text-[rgb(var(--chat-text-muted,107_114_128))]', '[&_textarea]:outline-none [&_textarea]:focus:ring-2 [&_textarea]:focus:ring-indigo-200', '[&_[data-action=send]]:rounded-lg [&_[data-action=send]]:bg-[rgb(var(--chat-primary,99_102_241))]', '[&_[data-action=send]]:px-3 [&_[data-action=send]]:py-2 [&_[data-action=send]]:text-sm', '[&_[data-action=send]]:font-medium [&_[data-action=send]]:text-white', '[&_[data-action=send]]:disabled:cursor-not-allowed [&_[data-action=send]]:disabled:opacity-50', '[&_[data-action=stop]]:rounded-lg [&_[data-action=stop]]:border', '[&_[data-action=stop]]:border-[rgb(var(--chat-border,229_231_235))]', '[&_[data-action=stop]]:px-3 [&_[data-action=stop]]:py-2 [&_[data-action=stop]]:text-sm', classNames?.root, classNames?.textarea, classNames?.sendButton, classNames?.stopButton, className), onSubmit: onSubmit }));
|
|
79
|
+
}
|
|
80
|
+
export function StyledChatPanel({ className, classNames }) {
|
|
81
|
+
return (_jsx(AiChatPanel, { className: cn('flex h-full min-h-0 flex-col overflow-hidden rounded-xl border', 'border-[rgb(var(--chat-border,229_231_235))]', 'bg-[rgb(var(--chat-background,255_255_255))] text-[rgb(var(--chat-text,17_24_39))]', 'shadow-sm', '[&_[data-component=error-banner]]:border-b [&_[data-component=error-banner]]:border-red-200', '[&_[data-component=error-banner]]:bg-red-50 [&_[data-component=error-banner]]:px-4', '[&_[data-component=error-banner]]:py-2.5 [&_[data-component=error-banner]]:text-sm', '[&_[data-component=empty-state]]:flex-1 [&_[data-component=empty-state]]:grid', '[&_[data-component=empty-state]]:place-items-center [&_[data-component=empty-state]]:px-6', '[&_[data-component=empty-state]]:text-sm [&_[data-component=empty-state]]:text-[rgb(var(--chat-text-muted,107_114_128))]', '[&_[data-component=suggestion-bar]]:px-4 [&_[data-component=suggestion-bar]]:pb-2', '[&_[data-component=suggestion-chip]]:rounded-full', '[&_[data-component=suggestion-chip]]:bg-[rgb(var(--chat-primary,99_102_241))]', '[&_[data-component=suggestion-chip]]:px-3 [&_[data-component=suggestion-chip]]:py-1.5', '[&_[data-component=suggestion-chip]]:text-xs [&_[data-component=suggestion-chip]]:font-medium', '[&_[data-component=suggestion-chip]]:text-white', '[&_[data-component=mention-chip]]:inline-flex [&_[data-component=mention-chip]]:items-center', '[&_[data-component=mention-chip]]:rounded-full [&_[data-component=mention-chip]]:bg-slate-100', '[&_[data-component=mention-chip]]:px-2.5 [&_[data-component=mention-chip]]:py-1', '[&_[data-component=mention-chip]]:text-xs', classNames?.root, classNames?.errorBanner, classNames?.emptyState, classNames?.suggestionBar, classNames?.suggestionChip, classNames?.mentionChip, className) }));
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=template.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template.js","sourceRoot":"","sources":["../../src/react/template.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { ChatTheme, ChatThemeColors, ChatThemePreset } from './types.js';
|
|
2
|
+
interface ResolvedTheme {
|
|
3
|
+
colors: Required<ChatThemeColors>;
|
|
4
|
+
radius: string;
|
|
5
|
+
radiusSmall: string;
|
|
6
|
+
fontFamily: string;
|
|
7
|
+
/** Optional effect hint applied as `data-theme-effect` on widget roots. */
|
|
8
|
+
effect?: 'glass';
|
|
9
|
+
}
|
|
10
|
+
declare const PRESETS: Record<ChatThemePreset, ResolvedTheme>;
|
|
11
|
+
export declare const DEFAULT_THEME_PRESET: ChatThemePreset;
|
|
12
|
+
/** Returns the `data-theme-effect` attribute value for a theme, or `undefined`. */
|
|
13
|
+
export declare function getThemeEffect(theme?: ChatTheme): string | undefined;
|
|
14
|
+
/**
|
|
15
|
+
* Resolve a `ChatTheme` prop into a plain `Record<string, string>` of
|
|
16
|
+
* CSS custom properties that can be spread onto a component `style` prop.
|
|
17
|
+
*
|
|
18
|
+
* ```tsx
|
|
19
|
+
* const vars = getThemeVars(theme);
|
|
20
|
+
* <div style={vars}>…</div>
|
|
21
|
+
* ```
|
|
22
|
+
*/
|
|
23
|
+
export declare function getThemeVars(theme?: ChatTheme): Record<string, string>;
|
|
24
|
+
export { PRESETS as CHAT_THEME_PRESETS };
|
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
const DEFAULT_FONT = '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif';
|
|
2
|
+
const MONO_FONT = '"JetBrains Mono", "Fira Code", Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace';
|
|
3
|
+
const PROFESSIONAL_LIGHTBLUE = {
|
|
4
|
+
colors: {
|
|
5
|
+
primary: '#6366f1',
|
|
6
|
+
primarySoft: '#818cf8',
|
|
7
|
+
primaryTint: 'rgba(99, 102, 241, 0.12)',
|
|
8
|
+
bg: '#ffffff',
|
|
9
|
+
bgMuted: '#f9fafb',
|
|
10
|
+
bubbleUser: '#e0e7ff',
|
|
11
|
+
bubbleAssistant: '#f3f4f6',
|
|
12
|
+
text: '#111827',
|
|
13
|
+
textMuted: '#6b7280',
|
|
14
|
+
border: '#e5e7eb',
|
|
15
|
+
danger: '#dc2626',
|
|
16
|
+
},
|
|
17
|
+
radius: '0.875rem',
|
|
18
|
+
radiusSmall: '0.5rem',
|
|
19
|
+
fontFamily: DEFAULT_FONT,
|
|
20
|
+
};
|
|
21
|
+
const PROFESSIONAL_DARK = {
|
|
22
|
+
colors: {
|
|
23
|
+
primary: '#818cf8',
|
|
24
|
+
primarySoft: '#a78bfa',
|
|
25
|
+
primaryTint: 'rgba(129, 140, 248, 0.18)',
|
|
26
|
+
bg: '#0f172a',
|
|
27
|
+
bgMuted: '#1e293b',
|
|
28
|
+
bubbleUser: '#312e81',
|
|
29
|
+
bubbleAssistant: '#1e293b',
|
|
30
|
+
text: '#f8fafc',
|
|
31
|
+
textMuted: '#94a3b8',
|
|
32
|
+
border: '#334155',
|
|
33
|
+
danger: '#f87171',
|
|
34
|
+
},
|
|
35
|
+
radius: '0.875rem',
|
|
36
|
+
radiusSmall: '0.5rem',
|
|
37
|
+
fontFamily: DEFAULT_FONT,
|
|
38
|
+
};
|
|
39
|
+
const MINIMAL_WHITE = {
|
|
40
|
+
colors: {
|
|
41
|
+
primary: '#111827',
|
|
42
|
+
primarySoft: '#374151',
|
|
43
|
+
primaryTint: 'rgba(17, 24, 39, 0.06)',
|
|
44
|
+
bg: '#ffffff',
|
|
45
|
+
bgMuted: '#fafafa',
|
|
46
|
+
bubbleUser: '#f3f4f6',
|
|
47
|
+
bubbleAssistant: '#fafafa',
|
|
48
|
+
text: '#111827',
|
|
49
|
+
textMuted: '#6b7280',
|
|
50
|
+
border: '#e5e7eb',
|
|
51
|
+
danger: '#991b1b',
|
|
52
|
+
},
|
|
53
|
+
radius: '0.5rem',
|
|
54
|
+
radiusSmall: '0.375rem',
|
|
55
|
+
fontFamily: DEFAULT_FONT,
|
|
56
|
+
};
|
|
57
|
+
const VIBRANT_INDIGO = {
|
|
58
|
+
colors: {
|
|
59
|
+
primary: '#8b5cf6',
|
|
60
|
+
primarySoft: '#ec4899',
|
|
61
|
+
primaryTint: 'rgba(139, 92, 246, 0.16)',
|
|
62
|
+
bg: '#ffffff',
|
|
63
|
+
bgMuted: '#faf5ff',
|
|
64
|
+
bubbleUser: '#ede9fe',
|
|
65
|
+
bubbleAssistant: '#fdf2f8',
|
|
66
|
+
text: '#1e1b4b',
|
|
67
|
+
textMuted: '#6b21a8',
|
|
68
|
+
border: '#e9d5ff',
|
|
69
|
+
danger: '#dc2626',
|
|
70
|
+
},
|
|
71
|
+
radius: '1.25rem',
|
|
72
|
+
radiusSmall: '0.75rem',
|
|
73
|
+
fontFamily: DEFAULT_FONT,
|
|
74
|
+
};
|
|
75
|
+
const TERMINAL_GREEN = {
|
|
76
|
+
colors: {
|
|
77
|
+
primary: '#22c55e',
|
|
78
|
+
primarySoft: '#4ade80',
|
|
79
|
+
primaryTint: 'rgba(34, 197, 94, 0.15)',
|
|
80
|
+
bg: '#000000',
|
|
81
|
+
bgMuted: '#0a0a0a',
|
|
82
|
+
bubbleUser: '#052e16',
|
|
83
|
+
bubbleAssistant: '#0a0a0a',
|
|
84
|
+
text: '#4ade80',
|
|
85
|
+
textMuted: '#15803d',
|
|
86
|
+
border: '#14532d',
|
|
87
|
+
danger: '#ef4444',
|
|
88
|
+
},
|
|
89
|
+
radius: '0.25rem',
|
|
90
|
+
radiusSmall: '0.125rem',
|
|
91
|
+
fontFamily: MONO_FONT,
|
|
92
|
+
};
|
|
93
|
+
/** Translucent frosted-glass look — pairs with a blurred background. */
|
|
94
|
+
const LIQUID_GLASS = {
|
|
95
|
+
colors: {
|
|
96
|
+
primary: '#60a5fa',
|
|
97
|
+
primarySoft: '#c4b5fd',
|
|
98
|
+
primaryTint: 'rgba(96, 165, 250, 0.18)',
|
|
99
|
+
bg: 'rgba(255, 255, 255, 0.72)',
|
|
100
|
+
bgMuted: 'rgba(255, 255, 255, 0.55)',
|
|
101
|
+
bubbleUser: 'rgba(96, 165, 250, 0.22)',
|
|
102
|
+
bubbleAssistant: 'rgba(255, 255, 255, 0.82)',
|
|
103
|
+
text: '#0f172a',
|
|
104
|
+
textMuted: '#475569',
|
|
105
|
+
border: 'rgba(255, 255, 255, 0.6)',
|
|
106
|
+
danger: '#ef4444',
|
|
107
|
+
},
|
|
108
|
+
radius: '1.5rem',
|
|
109
|
+
radiusSmall: '0.875rem',
|
|
110
|
+
fontFamily: DEFAULT_FONT,
|
|
111
|
+
effect: 'glass',
|
|
112
|
+
};
|
|
113
|
+
const PURPLE_HAZE = {
|
|
114
|
+
colors: {
|
|
115
|
+
primary: '#a855f7',
|
|
116
|
+
primarySoft: '#d946ef',
|
|
117
|
+
primaryTint: 'rgba(168, 85, 247, 0.18)',
|
|
118
|
+
bg: '#1a0b2e',
|
|
119
|
+
bgMuted: '#2a1348',
|
|
120
|
+
bubbleUser: '#4c1d95',
|
|
121
|
+
bubbleAssistant: '#2a1348',
|
|
122
|
+
text: '#f5f3ff',
|
|
123
|
+
textMuted: '#c4b5fd',
|
|
124
|
+
border: '#4c1d95',
|
|
125
|
+
danger: '#fb7185',
|
|
126
|
+
},
|
|
127
|
+
radius: '1rem',
|
|
128
|
+
radiusSmall: '0.625rem',
|
|
129
|
+
fontFamily: DEFAULT_FONT,
|
|
130
|
+
};
|
|
131
|
+
const BLUE_DREAM = {
|
|
132
|
+
colors: {
|
|
133
|
+
primary: '#3b82f6',
|
|
134
|
+
primarySoft: '#0ea5e9',
|
|
135
|
+
primaryTint: 'rgba(59, 130, 246, 0.14)',
|
|
136
|
+
bg: '#f0f9ff',
|
|
137
|
+
bgMuted: '#e0f2fe',
|
|
138
|
+
bubbleUser: '#dbeafe',
|
|
139
|
+
bubbleAssistant: '#ffffff',
|
|
140
|
+
text: '#0c4a6e',
|
|
141
|
+
textMuted: '#0369a1',
|
|
142
|
+
border: '#bae6fd',
|
|
143
|
+
danger: '#dc2626',
|
|
144
|
+
},
|
|
145
|
+
radius: '1.125rem',
|
|
146
|
+
radiusSmall: '0.625rem',
|
|
147
|
+
fontFamily: DEFAULT_FONT,
|
|
148
|
+
};
|
|
149
|
+
const SUNSET_ORANGE = {
|
|
150
|
+
colors: {
|
|
151
|
+
primary: '#f97316',
|
|
152
|
+
primarySoft: '#ec4899',
|
|
153
|
+
primaryTint: 'rgba(249, 115, 22, 0.16)',
|
|
154
|
+
bg: '#fffbeb',
|
|
155
|
+
bgMuted: '#fef3c7',
|
|
156
|
+
bubbleUser: '#fed7aa',
|
|
157
|
+
bubbleAssistant: '#ffffff',
|
|
158
|
+
text: '#7c2d12',
|
|
159
|
+
textMuted: '#b45309',
|
|
160
|
+
border: '#fde68a',
|
|
161
|
+
danger: '#dc2626',
|
|
162
|
+
},
|
|
163
|
+
radius: '1.25rem',
|
|
164
|
+
radiusSmall: '0.75rem',
|
|
165
|
+
fontFamily: DEFAULT_FONT,
|
|
166
|
+
};
|
|
167
|
+
const OCEAN_TEAL = {
|
|
168
|
+
colors: {
|
|
169
|
+
primary: '#14b8a6',
|
|
170
|
+
primarySoft: '#06b6d4',
|
|
171
|
+
primaryTint: 'rgba(20, 184, 166, 0.14)',
|
|
172
|
+
bg: '#042f2e',
|
|
173
|
+
bgMuted: '#134e4a',
|
|
174
|
+
bubbleUser: '#115e59',
|
|
175
|
+
bubbleAssistant: '#134e4a',
|
|
176
|
+
text: '#ccfbf1',
|
|
177
|
+
textMuted: '#5eead4',
|
|
178
|
+
border: '#134e4a',
|
|
179
|
+
danger: '#fb7185',
|
|
180
|
+
},
|
|
181
|
+
radius: '0.875rem',
|
|
182
|
+
radiusSmall: '0.5rem',
|
|
183
|
+
fontFamily: DEFAULT_FONT,
|
|
184
|
+
};
|
|
185
|
+
/** Pure monochrome. Black background, stark white text, zero color. */
|
|
186
|
+
const MIDNIGHT_MONO = {
|
|
187
|
+
colors: {
|
|
188
|
+
primary: '#ffffff',
|
|
189
|
+
primarySoft: '#d4d4d4',
|
|
190
|
+
primaryTint: 'rgba(255, 255, 255, 0.08)',
|
|
191
|
+
bg: '#0a0a0a',
|
|
192
|
+
bgMuted: '#171717',
|
|
193
|
+
bubbleUser: '#262626',
|
|
194
|
+
bubbleAssistant: '#171717',
|
|
195
|
+
text: '#fafafa',
|
|
196
|
+
textMuted: '#a3a3a3',
|
|
197
|
+
border: '#262626',
|
|
198
|
+
danger: '#f87171',
|
|
199
|
+
},
|
|
200
|
+
radius: '0.75rem',
|
|
201
|
+
radiusSmall: '0.375rem',
|
|
202
|
+
fontFamily: DEFAULT_FONT,
|
|
203
|
+
};
|
|
204
|
+
const PRESETS = {
|
|
205
|
+
'professional-lightblue': PROFESSIONAL_LIGHTBLUE,
|
|
206
|
+
'professional-dark': PROFESSIONAL_DARK,
|
|
207
|
+
'minimal-white': MINIMAL_WHITE,
|
|
208
|
+
'vibrant-indigo': VIBRANT_INDIGO,
|
|
209
|
+
'terminal-green': TERMINAL_GREEN,
|
|
210
|
+
'liquid-glass': LIQUID_GLASS,
|
|
211
|
+
'purple-haze': PURPLE_HAZE,
|
|
212
|
+
'blue-dream': BLUE_DREAM,
|
|
213
|
+
'sunset-orange': SUNSET_ORANGE,
|
|
214
|
+
'ocean-teal': OCEAN_TEAL,
|
|
215
|
+
'midnight-mono': MIDNIGHT_MONO,
|
|
216
|
+
};
|
|
217
|
+
export const DEFAULT_THEME_PRESET = 'professional-lightblue';
|
|
218
|
+
// ---------------------------------------------------------------------------
|
|
219
|
+
// Resolution
|
|
220
|
+
// ---------------------------------------------------------------------------
|
|
221
|
+
function resolve(theme) {
|
|
222
|
+
if (!theme)
|
|
223
|
+
return PROFESSIONAL_LIGHTBLUE;
|
|
224
|
+
if (typeof theme === 'string')
|
|
225
|
+
return PRESETS[theme] ?? PROFESSIONAL_LIGHTBLUE;
|
|
226
|
+
const override = theme;
|
|
227
|
+
const base = (override.preset && PRESETS[override.preset]) ?? PROFESSIONAL_LIGHTBLUE;
|
|
228
|
+
return {
|
|
229
|
+
colors: { ...base.colors, ...(override.colors ?? {}) },
|
|
230
|
+
radius: override.radius ?? base.radius,
|
|
231
|
+
radiusSmall: override.radiusSmall ?? base.radiusSmall,
|
|
232
|
+
fontFamily: override.fontFamily ?? base.fontFamily,
|
|
233
|
+
effect: base.effect,
|
|
234
|
+
};
|
|
235
|
+
}
|
|
236
|
+
/** Returns the `data-theme-effect` attribute value for a theme, or `undefined`. */
|
|
237
|
+
export function getThemeEffect(theme) {
|
|
238
|
+
return resolve(theme).effect;
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* Resolve a `ChatTheme` prop into a plain `Record<string, string>` of
|
|
242
|
+
* CSS custom properties that can be spread onto a component `style` prop.
|
|
243
|
+
*
|
|
244
|
+
* ```tsx
|
|
245
|
+
* const vars = getThemeVars(theme);
|
|
246
|
+
* <div style={vars}>…</div>
|
|
247
|
+
* ```
|
|
248
|
+
*/
|
|
249
|
+
export function getThemeVars(theme) {
|
|
250
|
+
const r = resolve(theme);
|
|
251
|
+
return {
|
|
252
|
+
'--cm-primary': r.colors.primary,
|
|
253
|
+
'--cm-primary-soft': r.colors.primarySoft,
|
|
254
|
+
'--cm-primary-tint': r.colors.primaryTint,
|
|
255
|
+
'--cm-bg': r.colors.bg,
|
|
256
|
+
'--cm-bg-muted': r.colors.bgMuted,
|
|
257
|
+
'--cm-bubble-user': r.colors.bubbleUser,
|
|
258
|
+
'--cm-bubble-assistant': r.colors.bubbleAssistant,
|
|
259
|
+
'--cm-text': r.colors.text,
|
|
260
|
+
'--cm-text-muted': r.colors.textMuted,
|
|
261
|
+
'--cm-border': r.colors.border,
|
|
262
|
+
'--cm-danger': r.colors.danger,
|
|
263
|
+
'--cm-radius': r.radius,
|
|
264
|
+
'--cm-radius-sm': r.radiusSmall,
|
|
265
|
+
'--cm-font': r.fontFamily,
|
|
266
|
+
};
|
|
267
|
+
}
|
|
268
|
+
export { PRESETS as CHAT_THEME_PRESETS };
|
|
269
|
+
//# sourceMappingURL=themes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"themes.js","sourceRoot":"","sources":["../../src/react/themes.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export { useLangGraphChatTransport, useLangGraphChatTransport as useLangGraph, type UseLangGraphChatTransportOptions, type LangGraphUpdatesEvent, type LangGraphMessageEvent, type LangGraphCustomEvent, type LangGraphToolCallEvent, type LangGraphToolResultEvent, type LangGraphErrorEvent, type LangGraphRequestBody, } from '../langgraph.js';
|
|
2
|
+
export { LangGraphAiChat, type LangGraphAiChatProps } from './langgraph-ai-chat.js';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/react/transports/langgraph/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,yBAAyB,EACzB,yBAAyB,IAAI,YAAY,GAS1C,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,eAAe,EAA6B,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
import { type FloatingChatUIProps } from '../../components/floating-chat-ui.js';
|
|
3
|
+
import { type LangGraphCustomEvent } from '../langgraph.js';
|
|
4
|
+
import type { AiChatProviderConfig, ChatTransportDataPart, SessionConfig } from '../../types.js';
|
|
5
|
+
export interface LangGraphAiChatProps extends AiChatProviderConfig, FloatingChatUIProps {
|
|
6
|
+
/** Chat API endpoint URL (e.g. `/api/chat`). */
|
|
7
|
+
endpoint: string;
|
|
8
|
+
/** Static headers or a function that returns headers per request. */
|
|
9
|
+
headers?: Record<string, string> | (() => Record<string, string>);
|
|
10
|
+
/**
|
|
11
|
+
* Fixed LangGraph thread id. Ignored when `sessions` is provided —
|
|
12
|
+
* in that mode the active session id is used as the thread id.
|
|
13
|
+
*/
|
|
14
|
+
threadId?: string;
|
|
15
|
+
/** Extra fields to merge into every request body. */
|
|
16
|
+
bodyExtras?: Record<string, unknown> | (() => Record<string, unknown>);
|
|
17
|
+
/** fetch credentials mode. Default: `same-origin`. */
|
|
18
|
+
credentials?: RequestCredentials;
|
|
19
|
+
/** Hook for translating backend `event: custom` events into data parts. */
|
|
20
|
+
onCustomEvent?: (evt: LangGraphCustomEvent) => ChatTransportDataPart | null;
|
|
21
|
+
/** Hook for rendering LangGraph `event: updates` as status labels. */
|
|
22
|
+
renderUpdate?: (node: string, update: Record<string, unknown>) => string | null;
|
|
23
|
+
/**
|
|
24
|
+
* Multi-session hooks. When provided, the drop-in renders a session
|
|
25
|
+
* switcher in the header and wires the active session id into the
|
|
26
|
+
* LangGraph transport as `threadId`. Pass your own `SessionConfig`
|
|
27
|
+
* (typically a bridge to `chatService.getSessions/createSession/...`).
|
|
28
|
+
*
|
|
29
|
+
* See `SessionConfig` in `glirastes/react`.
|
|
30
|
+
*/
|
|
31
|
+
sessions?: SessionConfig;
|
|
32
|
+
/**
|
|
33
|
+
* Replace the default floating UI with custom children. Useful when you
|
|
34
|
+
* want to compose `<MessageList />`, `<ChatInput />`, etc. yourself or
|
|
35
|
+
* render an inline `<AiChatPanel />` instead of a floating window.
|
|
36
|
+
*/
|
|
37
|
+
children?: ReactNode;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Drop-in LangGraph chat widget. Bundles transport, provider, and a
|
|
41
|
+
* floating (trigger button + draggable window) chat UI into one component.
|
|
42
|
+
* Zero dependency on `@ai-sdk/react` or `ai`.
|
|
43
|
+
*
|
|
44
|
+
* ```tsx
|
|
45
|
+
* 'use client';
|
|
46
|
+
* import { LangGraphAiChat } from 'glirastes/react/langgraph';
|
|
47
|
+
*
|
|
48
|
+
* export default function Layout({ children }) {
|
|
49
|
+
* return (
|
|
50
|
+
* <>
|
|
51
|
+
* {children}
|
|
52
|
+
* <LangGraphAiChat endpoint="/api/chat" />
|
|
53
|
+
* </>
|
|
54
|
+
* );
|
|
55
|
+
* }
|
|
56
|
+
* ```
|
|
57
|
+
*
|
|
58
|
+
* All `AiChatProviderConfig` fields (session, mentions, classNames, etc.)
|
|
59
|
+
* and `FloatingChatUIProps` (title, defaultOpen, width, height, draggable,
|
|
60
|
+
* resizable) are accepted as top-level props.
|
|
61
|
+
*/
|
|
62
|
+
export declare function LangGraphAiChat({ endpoint, headers, threadId, bodyExtras, credentials, onCustomEvent, renderUpdate, sessions, title, open, onOpenChange, defaultOpen, draggable, resizable, size, hideTriggerWhenOpen, shortcut, showClearButton, confirmClear, showSessionSwitcher, headerActions, triggerIcon, showMic, children, ...providerConfig }: LangGraphAiChatProps): import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { useEffect, useMemo, useState } from 'react';
|
|
4
|
+
import { AiChatProvider } from '../../provider/ai-chat-provider.js';
|
|
5
|
+
import { FloatingChatUI } from '../../components/floating-chat-ui.js';
|
|
6
|
+
import { useLangGraphChatTransport, } from '../langgraph.js';
|
|
7
|
+
/**
|
|
8
|
+
* Drop-in LangGraph chat widget. Bundles transport, provider, and a
|
|
9
|
+
* floating (trigger button + draggable window) chat UI into one component.
|
|
10
|
+
* Zero dependency on `@ai-sdk/react` or `ai`.
|
|
11
|
+
*
|
|
12
|
+
* ```tsx
|
|
13
|
+
* 'use client';
|
|
14
|
+
* import { LangGraphAiChat } from 'glirastes/react/langgraph';
|
|
15
|
+
*
|
|
16
|
+
* export default function Layout({ children }) {
|
|
17
|
+
* return (
|
|
18
|
+
* <>
|
|
19
|
+
* {children}
|
|
20
|
+
* <LangGraphAiChat endpoint="/api/chat" />
|
|
21
|
+
* </>
|
|
22
|
+
* );
|
|
23
|
+
* }
|
|
24
|
+
* ```
|
|
25
|
+
*
|
|
26
|
+
* All `AiChatProviderConfig` fields (session, mentions, classNames, etc.)
|
|
27
|
+
* and `FloatingChatUIProps` (title, defaultOpen, width, height, draggable,
|
|
28
|
+
* resizable) are accepted as top-level props.
|
|
29
|
+
*/
|
|
30
|
+
export function LangGraphAiChat({ endpoint, headers, threadId, bodyExtras, credentials, onCustomEvent, renderUpdate, sessions, title, open, onOpenChange, defaultOpen, draggable, resizable, size, hideTriggerWhenOpen, shortcut, showClearButton, confirmClear, showSessionSwitcher, headerActions, triggerIcon, showMic, children, ...providerConfig }) {
|
|
31
|
+
// The widget owns its own copy of the active id so it can feed it to
|
|
32
|
+
// the LangGraph transport as `threadId`. The provider is left in
|
|
33
|
+
// *uncontrolled* mode — we only pass `defaultActiveId` (initial seed)
|
|
34
|
+
// and `onActiveIdChange` (so the provider's auto-select / switchSession
|
|
35
|
+
// calls update our local state). This lets the provider's bootstrap
|
|
36
|
+
// skip ('default' sentinel) work correctly.
|
|
37
|
+
const [activeId, setActiveId] = useState(() => {
|
|
38
|
+
if (sessions?.activeId)
|
|
39
|
+
return sessions.activeId;
|
|
40
|
+
if (sessions?.defaultActiveId)
|
|
41
|
+
return sessions.defaultActiveId;
|
|
42
|
+
return threadId ?? 'default';
|
|
43
|
+
});
|
|
44
|
+
// If the caller controls `activeId` externally, mirror it.
|
|
45
|
+
useEffect(() => {
|
|
46
|
+
if (sessions?.activeId && sessions.activeId !== activeId) {
|
|
47
|
+
setActiveId(sessions.activeId);
|
|
48
|
+
}
|
|
49
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
50
|
+
}, [sessions?.activeId]);
|
|
51
|
+
const effectiveThreadId = sessions ? activeId : threadId;
|
|
52
|
+
// When multi-session mode is active, also surface the active id as
|
|
53
|
+
// `sessionId` in the request body. LangGraph projects vary on the
|
|
54
|
+
// canonical name (`threadId` vs `sessionId`); shipping both is harmless
|
|
55
|
+
// and lets backends like chaingrow's `/chat/stream` handler — which
|
|
56
|
+
// reads `body.sessionId` — pick up the active session without the
|
|
57
|
+
// consumer having to wire `bodyExtras` themselves.
|
|
58
|
+
const effectiveBodyExtras = useMemo(() => {
|
|
59
|
+
if (!sessions)
|
|
60
|
+
return bodyExtras;
|
|
61
|
+
return () => {
|
|
62
|
+
const base = typeof bodyExtras === 'function' ? bodyExtras() : bodyExtras ?? {};
|
|
63
|
+
return { ...base, sessionId: activeId };
|
|
64
|
+
};
|
|
65
|
+
}, [sessions, bodyExtras, activeId]);
|
|
66
|
+
const transport = useLangGraphChatTransport({
|
|
67
|
+
endpoint,
|
|
68
|
+
headers,
|
|
69
|
+
threadId: effectiveThreadId,
|
|
70
|
+
bodyExtras: effectiveBodyExtras,
|
|
71
|
+
credentials,
|
|
72
|
+
onCustomEvent,
|
|
73
|
+
renderUpdate,
|
|
74
|
+
});
|
|
75
|
+
const effectiveSession = useMemo(() => {
|
|
76
|
+
if (!sessions)
|
|
77
|
+
return providerConfig.session;
|
|
78
|
+
// Strip any consumer-supplied `activeId` and replace with a seed
|
|
79
|
+
// (`defaultActiveId`) so the provider stays uncontrolled.
|
|
80
|
+
const { activeId: _consumerActiveId, ...rest } = sessions;
|
|
81
|
+
return {
|
|
82
|
+
...rest,
|
|
83
|
+
defaultActiveId: activeId,
|
|
84
|
+
onActiveIdChange: (id) => {
|
|
85
|
+
setActiveId(id);
|
|
86
|
+
sessions.onActiveIdChange?.(id);
|
|
87
|
+
},
|
|
88
|
+
};
|
|
89
|
+
}, [sessions, activeId, providerConfig.session]);
|
|
90
|
+
return (_jsx(AiChatProvider, { transport: transport, ...providerConfig, session: effectiveSession, children: children ?? (_jsx(FloatingChatUI, { title: title, defaultOpen: defaultOpen, draggable: draggable, resizable: resizable, size: size, hideTriggerWhenOpen: hideTriggerWhenOpen, shortcut: shortcut, showClearButton: showClearButton, confirmClear: confirmClear, showSessionSwitcher: showSessionSwitcher, headerActions: headerActions, triggerIcon: triggerIcon, showMic: showMic })) }));
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=langgraph-ai-chat.js.map
|