glirastes 0.3.0 → 0.3.2
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 +86 -0
- package/README.md +154 -9
- package/codegen/package.json +5 -0
- package/dist/cjs/codegen/asset-sync.d.ts +20 -0
- package/dist/cjs/codegen/asset-sync.js +28 -0
- package/dist/cjs/codegen/coverage.d.ts +66 -0
- package/dist/cjs/codegen/coverage.js +408 -0
- package/dist/cjs/codegen/endpoint-scanner.d.ts +16 -0
- package/dist/cjs/codegen/endpoint-scanner.js +197 -0
- package/dist/cjs/codegen/format.d.ts +17 -0
- package/dist/cjs/codegen/format.js +34 -0
- package/dist/cjs/codegen/fs-utils.d.ts +45 -0
- package/dist/cjs/codegen/fs-utils.js +165 -0
- package/dist/cjs/codegen/index.d.ts +13 -0
- package/dist/cjs/codegen/index.js +33 -0
- package/dist/cjs/codegen/mcp-generator.d.ts +50 -0
- package/dist/cjs/codegen/mcp-generator.js +803 -0
- package/dist/cjs/codegen/module-generator.d.ts +11 -0
- package/dist/cjs/codegen/module-generator.js +353 -0
- package/dist/cjs/codegen/nestjs-scanner.d.ts +43 -0
- package/dist/cjs/codegen/nestjs-scanner.js +241 -0
- package/dist/cjs/codegen/output-recommender.d.ts +23 -0
- package/dist/cjs/codegen/output-recommender.js +33 -0
- package/dist/cjs/codegen/scaffolder.d.ts +36 -0
- package/dist/cjs/codegen/scaffolder.js +262 -0
- package/dist/cjs/codegen/skill-generator.d.ts +49 -0
- package/dist/cjs/codegen/skill-generator.js +967 -0
- package/dist/cjs/codegen/types.d.ts +52 -0
- package/dist/cjs/codegen/types.js +16 -0
- package/dist/cjs/codegen/ui-scanner.d.ts +24 -0
- package/dist/cjs/codegen/ui-scanner.js +202 -0
- package/dist/cjs/codegen/validator.d.ts +35 -0
- package/dist/cjs/codegen/validator.js +292 -0
- package/dist/cjs/index.d.ts +1 -0
- package/dist/cjs/index.js +23 -0
- package/dist/cjs/openapi/index.d.ts +78 -0
- package/dist/cjs/openapi/index.js +347 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/react/audio-worklet-processor.d.ts +16 -0
- package/dist/cjs/react/audio-worklet-processor.js +27 -0
- package/dist/cjs/react/bridges/rest-session-bridge.d.ts +113 -0
- package/dist/cjs/react/bridges/rest-session-bridge.js +209 -0
- package/dist/cjs/react/components/ai-chat-panel.d.ts +12 -0
- package/dist/cjs/react/components/ai-chat-panel.js +67 -0
- package/dist/cjs/react/components/ai-trigger-button.d.ts +2 -0
- package/dist/cjs/react/components/ai-trigger-button.js +239 -0
- package/dist/cjs/react/components/approval-card.d.ts +9 -0
- package/dist/cjs/react/components/approval-card.js +24 -0
- package/dist/cjs/react/components/bulk-approval-card.d.ts +9 -0
- package/dist/cjs/react/components/bulk-approval-card.js +36 -0
- package/dist/cjs/react/components/chat-input.d.ts +10 -0
- package/dist/cjs/react/components/chat-input.js +60 -0
- package/dist/cjs/react/components/chat-window.d.ts +2 -0
- package/dist/cjs/react/components/chat-window.js +134 -0
- package/dist/cjs/react/components/confirm-dialog.d.ts +32 -0
- package/dist/cjs/react/components/confirm-dialog.js +48 -0
- package/dist/cjs/react/components/floating-chat-ui.d.ts +90 -0
- package/dist/cjs/react/components/floating-chat-ui.js +163 -0
- package/dist/cjs/react/components/mention-chip.d.ts +16 -0
- package/dist/cjs/react/components/mention-chip.js +42 -0
- package/dist/cjs/react/components/mention-input.d.ts +8 -0
- package/dist/cjs/react/components/mention-input.js +117 -0
- package/dist/cjs/react/components/message-bubble.d.ts +11 -0
- package/dist/cjs/react/components/message-bubble.js +171 -0
- package/dist/cjs/react/components/message-list.d.ts +8 -0
- package/dist/cjs/react/components/message-list.js +52 -0
- package/dist/cjs/react/components/pipeline-timeline.d.ts +7 -0
- package/dist/cjs/react/components/pipeline-timeline.js +72 -0
- package/dist/cjs/react/components/recording-bar.d.ts +2 -0
- package/dist/cjs/react/components/recording-bar.js +81 -0
- package/dist/cjs/react/components/recording-controls.d.ts +18 -0
- package/dist/cjs/react/components/recording-controls.js +38 -0
- package/dist/cjs/react/components/rich-mention-input.d.ts +2 -0
- package/dist/cjs/react/components/rich-mention-input.js +571 -0
- package/dist/cjs/react/components/session-switcher.d.ts +14 -0
- package/dist/cjs/react/components/session-switcher.js +133 -0
- package/dist/cjs/react/components/suggestion-bar.d.ts +9 -0
- package/dist/cjs/react/components/suggestion-bar.js +47 -0
- package/dist/cjs/react/components/suggestion-chip.d.ts +9 -0
- package/dist/cjs/react/components/suggestion-chip.js +14 -0
- package/dist/cjs/react/components/voice-input-addon.d.ts +13 -0
- package/dist/cjs/react/components/voice-input-addon.js +31 -0
- package/dist/cjs/react/components/voice-input-button.d.ts +2 -0
- package/dist/cjs/react/components/voice-input-button.js +55 -0
- package/dist/cjs/react/components/wavesurfer-loader.d.ts +5 -0
- package/dist/cjs/react/components/wavesurfer-loader.js +36 -0
- package/dist/cjs/react/hooks/use-ai-chat.d.ts +22 -0
- package/dist/cjs/react/hooks/use-ai-chat.js +51 -0
- package/dist/cjs/react/hooks/use-approvals.d.ts +23 -0
- package/dist/cjs/react/hooks/use-approvals.js +63 -0
- package/dist/cjs/react/hooks/use-deepgram-transcription.d.ts +2 -0
- package/dist/cjs/react/hooks/use-deepgram-transcription.js +329 -0
- package/dist/cjs/react/hooks/use-drag-resize-panel.d.ts +48 -0
- package/dist/cjs/react/hooks/use-drag-resize-panel.js +308 -0
- package/dist/cjs/react/hooks/use-draggable-position.d.ts +25 -0
- package/dist/cjs/react/hooks/use-draggable-position.js +134 -0
- package/dist/cjs/react/hooks/use-keyboard-shortcut.d.ts +20 -0
- package/dist/cjs/react/hooks/use-keyboard-shortcut.js +93 -0
- package/dist/cjs/react/hooks/use-mentions.d.ts +23 -0
- package/dist/cjs/react/hooks/use-mentions.js +42 -0
- package/dist/cjs/react/hooks/use-suggestions.d.ts +22 -0
- package/dist/cjs/react/hooks/use-suggestions.js +39 -0
- package/dist/cjs/react/index.d.ts +43 -0
- package/dist/cjs/react/index.js +111 -0
- package/dist/cjs/react/provider/ai-chat-provider.d.ts +45 -0
- package/dist/cjs/react/provider/ai-chat-provider.js +1024 -0
- package/dist/cjs/react/provider/chat-context.d.ts +84 -0
- package/dist/cjs/react/provider/chat-context.js +13 -0
- package/dist/cjs/react/template.d.ts +84 -0
- package/dist/cjs/react/template.js +90 -0
- package/dist/cjs/react/themes.d.ts +24 -0
- package/dist/cjs/react/themes.js +273 -0
- package/dist/cjs/react/transports/langgraph/index.d.ts +2 -0
- package/dist/cjs/react/transports/langgraph/index.js +8 -0
- package/dist/cjs/react/transports/langgraph/langgraph-ai-chat.d.ts +62 -0
- package/dist/cjs/react/transports/langgraph/langgraph-ai-chat.js +94 -0
- package/dist/cjs/react/transports/langgraph.d.ts +71 -0
- package/dist/cjs/react/transports/langgraph.js +369 -0
- package/dist/cjs/react/transports/vercel/index.d.ts +2 -0
- package/dist/cjs/react/transports/vercel/index.js +8 -0
- package/dist/cjs/react/transports/vercel/vercel-ai-chat.d.ts +49 -0
- package/dist/cjs/react/transports/vercel/vercel-ai-chat.js +81 -0
- package/dist/cjs/react/transports/vercel.d.ts +30 -0
- package/dist/cjs/react/transports/vercel.js +69 -0
- package/dist/cjs/react/types.d.ts +760 -0
- package/dist/cjs/react/types.js +2 -0
- package/dist/cjs/react/ui.d.ts +73 -0
- package/dist/cjs/react/ui.js +183 -0
- package/dist/cjs/react/utils/create-approval-description.d.ts +53 -0
- package/dist/cjs/react/utils/create-approval-description.js +122 -0
- package/dist/cjs/react/utils/create-tool-result-handler.d.ts +90 -0
- package/dist/cjs/react/utils/create-tool-result-handler.js +168 -0
- package/dist/cjs/react/utils/mention-markup.d.ts +13 -0
- package/dist/cjs/react/utils/mention-markup.js +117 -0
- package/dist/cjs/react/utils/merge-pipeline-steps.d.ts +19 -0
- package/dist/cjs/react/utils/merge-pipeline-steps.js +81 -0
- package/dist/cjs/react/utils/sanitize-stored-messages.d.ts +23 -0
- package/dist/cjs/react/utils/sanitize-stored-messages.js +52 -0
- package/dist/cjs/server/adapters/nestjs/chat/ai-chat-auth.guard.d.ts +10 -0
- package/dist/cjs/server/adapters/nestjs/chat/ai-chat-auth.guard.js +42 -0
- package/dist/cjs/server/adapters/nestjs/chat/ai-chat-module-options.interface.d.ts +32 -0
- package/dist/cjs/server/adapters/nestjs/chat/ai-chat-module-options.interface.js +4 -0
- package/dist/cjs/server/adapters/nestjs/chat/ai-chat.controller.d.ts +11 -0
- package/dist/cjs/server/adapters/nestjs/chat/ai-chat.controller.js +80 -0
- package/dist/cjs/server/adapters/nestjs/chat/ai-chat.module.d.ts +9 -0
- package/dist/cjs/server/adapters/nestjs/chat/ai-chat.module.js +119 -0
- package/dist/cjs/server/adapters/nestjs/chat/ai-chat.service.d.ts +13 -0
- package/dist/cjs/server/adapters/nestjs/chat/ai-chat.service.js +131 -0
- package/dist/cjs/server/adapters/nestjs/chat/dto/ai-chat-request.dto.d.ts +7 -0
- package/dist/cjs/server/adapters/nestjs/chat/dto/ai-chat-request.dto.js +52 -0
- package/dist/cjs/server/adapters/nestjs/chat/dto/chat-message-part.dto.d.ts +19 -0
- package/dist/cjs/server/adapters/nestjs/chat/dto/chat-message-part.dto.js +108 -0
- package/dist/cjs/server/adapters/nestjs/chat/dto/chat-message.dto.d.ts +8 -0
- package/dist/cjs/server/adapters/nestjs/chat/dto/chat-message.dto.js +59 -0
- package/dist/cjs/server/adapters/nestjs/chat/dto/index.d.ts +3 -0
- package/dist/cjs/server/adapters/nestjs/chat/dto/index.js +9 -0
- package/dist/cjs/server/adapters/nestjs/chat/index.d.ts +3 -0
- package/dist/cjs/server/adapters/nestjs/chat/index.js +9 -0
- package/dist/cjs/server/adapters/nestjs/chat/speech-stream.gateway.d.ts +4 -0
- package/dist/cjs/server/adapters/nestjs/chat/speech-stream.gateway.js +73 -0
- package/dist/cjs/server/adapters/nestjs/chat/ws-loader.d.ts +5 -0
- package/dist/cjs/server/adapters/nestjs/chat/ws-loader.js +72 -0
- package/dist/cjs/server/adapters/nestjs/decorators/ai-module.decorator.d.ts +6 -0
- package/dist/cjs/server/adapters/nestjs/decorators/ai-module.decorator.js +13 -0
- package/dist/cjs/server/adapters/nestjs/decorators/ai-param.decorator.d.ts +5 -0
- package/dist/cjs/server/adapters/nestjs/decorators/ai-param.decorator.js +15 -0
- package/dist/cjs/server/adapters/nestjs/decorators/ai-tool.decorator.d.ts +6 -0
- package/dist/cjs/server/adapters/nestjs/decorators/ai-tool.decorator.js +22 -0
- package/dist/cjs/server/adapters/nestjs/decorators/constants.d.ts +4 -0
- package/dist/cjs/server/adapters/nestjs/decorators/constants.js +7 -0
- package/dist/cjs/server/adapters/nestjs/index.d.ts +14 -0
- package/dist/cjs/server/adapters/nestjs/index.js +42 -0
- package/dist/cjs/server/adapters/nestjs/metadata.d.ts +39 -0
- package/dist/cjs/server/adapters/nestjs/metadata.js +36 -0
- package/dist/cjs/server/adapters/nestjs/module/ai-tools-explorer.service.d.ts +36 -0
- package/dist/cjs/server/adapters/nestjs/module/ai-tools-explorer.service.js +159 -0
- package/dist/cjs/server/adapters/nestjs/module/ai-tools.module.d.ts +37 -0
- package/dist/cjs/server/adapters/nestjs/module/ai-tools.module.js +44 -0
- package/dist/cjs/server/adapters/nestjs/module/ai-tools.service.d.ts +28 -0
- package/dist/cjs/server/adapters/nestjs/module/ai-tools.service.js +41 -0
- package/dist/cjs/server/adapters/nestjs/scanner/nestjs-scanner.d.ts +16 -0
- package/dist/cjs/server/adapters/nestjs/scanner/nestjs-scanner.js +117 -0
- package/dist/cjs/server/adapters/nestjs/scanner/schema-builder.d.ts +26 -0
- package/dist/cjs/server/adapters/nestjs/scanner/schema-builder.js +259 -0
- package/dist/cjs/server/adapters/nestjs/swagger.d.ts +7 -0
- package/dist/cjs/server/adapters/nestjs/swagger.js +39 -0
- package/dist/cjs/server/adapters/nextjs/context-helpers.d.ts +22 -0
- package/dist/cjs/server/adapters/nextjs/context-helpers.js +60 -0
- package/dist/cjs/server/adapters/nextjs/create-ai-chat-handler.d.ts +94 -0
- package/dist/cjs/server/adapters/nextjs/create-ai-chat-handler.js +965 -0
- package/dist/cjs/server/adapters/nextjs/filter-fallback-error.d.ts +11 -0
- package/dist/cjs/server/adapters/nextjs/filter-fallback-error.js +41 -0
- package/dist/cjs/server/adapters/nextjs/index.d.ts +8 -0
- package/dist/cjs/server/adapters/nextjs/index.js +22 -0
- package/dist/cjs/server/adapters/nextjs/prepare-model-messages.d.ts +58 -0
- package/dist/cjs/server/adapters/nextjs/prepare-model-messages.js +114 -0
- package/dist/cjs/server/adapters/nextjs/sanitize-model-messages.d.ts +64 -0
- package/dist/cjs/server/adapters/nextjs/sanitize-model-messages.js +489 -0
- package/dist/cjs/server/adapters/nextjs/server-action-helper.d.ts +7 -0
- package/dist/cjs/server/adapters/nextjs/server-action-helper.js +40 -0
- package/dist/cjs/server/adapters/nextjs/types.d.ts +246 -0
- package/dist/cjs/server/adapters/nextjs/types.js +2 -0
- package/dist/cjs/server/adapters/nextjs/with-ai-tool.d.ts +9 -0
- package/dist/cjs/server/adapters/nextjs/with-ai-tool.js +12 -0
- package/dist/cjs/server/core/followup-tool.d.ts +9 -0
- package/dist/cjs/server/core/followup-tool.js +82 -0
- package/dist/cjs/server/core/index.d.ts +139 -0
- package/dist/cjs/server/core/index.js +818 -0
- package/dist/cjs/server/core/intent-classifier.d.ts +94 -0
- package/dist/cjs/server/core/intent-classifier.js +324 -0
- package/dist/cjs/server/core/model-selector.d.ts +12 -0
- package/dist/cjs/server/core/model-selector.js +48 -0
- package/dist/cjs/server/core/module-router.d.ts +14 -0
- package/dist/cjs/server/core/module-router.js +110 -0
- package/dist/cjs/server/core/zod-compact.d.ts +18 -0
- package/dist/cjs/server/core/zod-compact.js +129 -0
- package/dist/cjs/server/index.d.ts +6 -0
- package/dist/cjs/server/index.js +28 -0
- package/dist/cjs/server/lancer/cache.d.ts +9 -0
- package/dist/cjs/server/lancer/cache.js +33 -0
- package/dist/cjs/server/lancer/client.d.ts +2 -0
- package/dist/cjs/server/lancer/client.js +279 -0
- package/dist/cjs/server/lancer/errors.d.ts +13 -0
- package/dist/cjs/server/lancer/errors.js +21 -0
- package/dist/cjs/server/lancer/index.d.ts +3 -0
- package/dist/cjs/server/lancer/index.js +7 -0
- package/dist/cjs/server/lancer/telemetry-buffer.d.ts +15 -0
- package/dist/cjs/server/lancer/telemetry-buffer.js +64 -0
- package/dist/cjs/server/lancer/types.d.ts +201 -0
- package/dist/cjs/server/lancer/types.js +5 -0
- package/dist/cjs/server/pii-shield/aegis-detector.d.ts +26 -0
- package/dist/cjs/server/pii-shield/aegis-detector.js +26 -0
- package/dist/cjs/server/pii-shield/create-pii-shield.d.ts +2 -0
- package/dist/cjs/server/pii-shield/create-pii-shield.js +191 -0
- package/dist/cjs/server/pii-shield/deep-walk.d.ts +1 -0
- package/dist/cjs/server/pii-shield/deep-walk.js +19 -0
- package/dist/cjs/server/pii-shield/fake-data.d.ts +5 -0
- package/dist/cjs/server/pii-shield/fake-data.js +170 -0
- package/dist/cjs/server/pii-shield/index.d.ts +4 -0
- package/dist/cjs/server/pii-shield/index.js +9 -0
- package/dist/cjs/server/pii-shield/leakage.d.ts +1 -0
- package/dist/cjs/server/pii-shield/leakage.js +15 -0
- package/dist/cjs/server/pii-shield/session-mapping.d.ts +12 -0
- package/dist/cjs/server/pii-shield/session-mapping.js +70 -0
- package/dist/cjs/server/pipeline.d.ts +26 -0
- package/dist/cjs/server/pipeline.js +127 -0
- package/dist/cjs/server/testing/approvals.d.ts +11 -0
- package/dist/cjs/server/testing/approvals.js +41 -0
- package/dist/cjs/server/testing/combination.d.ts +3 -0
- package/dist/cjs/server/testing/combination.js +83 -0
- package/dist/cjs/server/testing/create-test-suite.d.ts +29 -0
- package/dist/cjs/server/testing/create-test-suite.js +81 -0
- package/dist/cjs/server/testing/edge-cases.d.ts +8 -0
- package/dist/cjs/server/testing/edge-cases.js +277 -0
- package/dist/cjs/server/testing/guardrails.d.ts +14 -0
- package/dist/cjs/server/testing/guardrails.js +152 -0
- package/dist/cjs/server/testing/helpers.d.ts +14 -0
- package/dist/cjs/server/testing/helpers.js +119 -0
- package/dist/cjs/server/testing/index.d.ts +12 -0
- package/dist/cjs/server/testing/index.js +37 -0
- package/dist/cjs/server/testing/mock-executor.d.ts +8 -0
- package/dist/cjs/server/testing/mock-executor.js +40 -0
- package/dist/cjs/server/testing/regression.d.ts +7 -0
- package/dist/cjs/server/testing/regression.js +27 -0
- package/dist/cjs/server/testing/routing.d.ts +12 -0
- package/dist/cjs/server/testing/routing.js +63 -0
- package/dist/cjs/server/testing/schema-consistency.d.ts +6 -0
- package/dist/cjs/server/testing/schema-consistency.js +56 -0
- package/dist/cjs/server/testing/smoke.d.ts +11 -0
- package/dist/cjs/server/testing/smoke.js +64 -0
- package/dist/cjs/server/testing/types.d.ts +156 -0
- package/dist/cjs/server/testing/types.js +2 -0
- package/dist/cjs/types.d.ts +696 -0
- package/dist/cjs/types.js +91 -0
- package/dist/cli/commands/install-skills.d.ts +17 -0
- package/dist/cli/commands/install-skills.js +185 -0
- package/dist/cli/commands/install-skills.js.map +1 -0
- package/dist/cli/index.js +25 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/react/components/ai-trigger-button.js +4 -6
- package/dist/react/components/ai-trigger-button.js.map +1 -1
- package/dist/react/components/recording-bar.js +4 -6
- package/dist/react/components/recording-bar.js.map +1 -1
- package/dist/react/components/wavesurfer-loader.d.ts +5 -0
- package/dist/react/components/wavesurfer-loader.js +34 -0
- package/dist/react/components/wavesurfer-loader.js.map +1 -0
- package/dist/server/adapters/nestjs/chat/ai-chat.module.d.ts +1 -1
- package/dist/server/adapters/nestjs/chat/ai-chat.module.js +3 -2
- package/dist/server/adapters/nestjs/chat/ai-chat.module.js.map +1 -1
- package/dist/server/adapters/nestjs/chat/speech-stream.gateway.d.ts +1 -1
- package/dist/server/adapters/nestjs/chat/speech-stream.gateway.js +10 -8
- package/dist/server/adapters/nestjs/chat/speech-stream.gateway.js.map +1 -1
- package/dist/server/adapters/nestjs/chat/ws-loader.d.ts +5 -0
- package/dist/server/adapters/nestjs/chat/ws-loader.js +37 -0
- package/dist/server/adapters/nestjs/chat/ws-loader.js.map +1 -0
- package/openapi/package.json +5 -0
- package/package.json +59 -16
- package/react/langgraph/package.json +5 -0
- package/react/package.json +5 -0
- package/react/vercel/package.json +5 -0
- package/server/nestjs/package.json +5 -0
- package/server/nextjs/package.json +5 -0
- package/server/package.json +5 -0
- package/server/testing/package.json +5 -0
- package/skills/README.md +107 -0
- package/skills/building-glirastes-chat-ui/SKILL.md +378 -0
- package/skills/integrating-glirastes-nestjs/SKILL.md +346 -0
- package/skills/integrating-glirastes-nextjs/SKILL.md +312 -0
- package/skills/integrating-glirastes-nextjs-with-nestjs-backend/SKILL.md +359 -0
- package/skills/maintaining-glirastes-tools/SKILL.md +467 -0
|
@@ -11,7 +11,7 @@ import { DiscoveryModule, DiscoveryService, Reflector } from '@nestjs/core';
|
|
|
11
11
|
import { AiToolsExplorerService } from '../module/ai-tools-explorer.service.js';
|
|
12
12
|
import { AiToolsService } from '../module/ai-tools.service.js';
|
|
13
13
|
import { createAiToolsProviders } from '../module/ai-tools.module.js';
|
|
14
|
-
import {
|
|
14
|
+
import { loadWs } from './ws-loader.js';
|
|
15
15
|
import { AiChatController } from './ai-chat.controller.js';
|
|
16
16
|
import { AiChatService } from './ai-chat.service.js';
|
|
17
17
|
import { AI_CHAT_MODULE_OPTIONS, } from './ai-chat-module-options.interface.js';
|
|
@@ -79,7 +79,7 @@ let AiChatModule = class AiChatModule {
|
|
|
79
79
|
exports: [AiToolsService],
|
|
80
80
|
};
|
|
81
81
|
}
|
|
82
|
-
static attachWebSockets(app) {
|
|
82
|
+
static async attachWebSockets(app) {
|
|
83
83
|
if (!AiChatModule_1.initialized) {
|
|
84
84
|
throw new Error('AiChatModule.forRoot() or forRootAsync() must be called before attachWebSockets()');
|
|
85
85
|
}
|
|
@@ -93,6 +93,7 @@ let AiChatModule = class AiChatModule {
|
|
|
93
93
|
if (!deepgramKey) {
|
|
94
94
|
throw new Error('DEEPGRAM_API_KEY environment variable is required when speechToText feature is enabled');
|
|
95
95
|
}
|
|
96
|
+
const { WebSocketServer } = await loadWs();
|
|
96
97
|
const httpServer = app.getHttpServer();
|
|
97
98
|
const wss = new WebSocketServer({ noServer: true });
|
|
98
99
|
const handleSpeechStream = createSpeechStreamHandler(configService);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai-chat.module.js","sourceRoot":"","sources":["../../../../../src/server/adapters/nestjs/chat/ai-chat.module.ts"],"names":[],"mappings":";;;;;;;AACA,OAAO,EAAiB,MAAM,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC5E,OAAO,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAC;AAChF,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AAEtE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"ai-chat.module.js","sourceRoot":"","sources":["../../../../../src/server/adapters/nestjs/chat/ai-chat.module.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { ConfigService } from '@nestjs/config';
|
|
2
2
|
import type { IncomingMessage } from 'http';
|
|
3
|
-
import WebSocket from 'ws';
|
|
3
|
+
import type WebSocket from 'ws';
|
|
4
4
|
export declare function createSpeechStreamHandler(configService: ConfigService): (clientSocket: WebSocket, req: IncomingMessage) => Promise<void>;
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { Logger } from '@nestjs/common';
|
|
2
|
-
import
|
|
2
|
+
import { loadWs } from './ws-loader.js';
|
|
3
3
|
export function createSpeechStreamHandler(configService) {
|
|
4
4
|
const logger = new Logger('SpeechStreamGateway');
|
|
5
5
|
return async (clientSocket, req) => {
|
|
6
|
+
const { WebSocket: WebSocketCtor } = await loadWs();
|
|
7
|
+
const WS_OPEN = WebSocketCtor.OPEN;
|
|
6
8
|
const url = new URL(req.url ?? '', `http://${req.headers.host}`);
|
|
7
9
|
const token = url.searchParams.get('token');
|
|
8
10
|
if (!token) {
|
|
@@ -26,41 +28,41 @@ export function createSpeechStreamHandler(configService) {
|
|
|
26
28
|
dgUrl.searchParams.set('interim_results', 'true');
|
|
27
29
|
dgUrl.searchParams.set('encoding', 'linear16');
|
|
28
30
|
dgUrl.searchParams.set('sample_rate', '16000');
|
|
29
|
-
const dgSocket = new
|
|
31
|
+
const dgSocket = new WebSocketCtor(dgUrl.toString(), {
|
|
30
32
|
headers: { Authorization: `Token ${apiKey}` },
|
|
31
33
|
});
|
|
32
34
|
dgSocket.on('open', () => {
|
|
33
35
|
logger.log(`Deepgram connected (language=${language})`);
|
|
34
36
|
});
|
|
35
37
|
dgSocket.on('message', (data) => {
|
|
36
|
-
if (clientSocket.readyState ===
|
|
38
|
+
if (clientSocket.readyState === WS_OPEN) {
|
|
37
39
|
clientSocket.send(data.toString());
|
|
38
40
|
}
|
|
39
41
|
});
|
|
40
42
|
dgSocket.on('error', (err) => {
|
|
41
43
|
logger.error(`Deepgram error: ${err.message}`);
|
|
42
|
-
if (clientSocket.readyState ===
|
|
44
|
+
if (clientSocket.readyState === WS_OPEN) {
|
|
43
45
|
clientSocket.send(JSON.stringify({ type: 'error', message: 'Transcription error' }));
|
|
44
46
|
}
|
|
45
47
|
});
|
|
46
48
|
dgSocket.on('close', () => {
|
|
47
|
-
if (clientSocket.readyState ===
|
|
49
|
+
if (clientSocket.readyState === WS_OPEN) {
|
|
48
50
|
clientSocket.close();
|
|
49
51
|
}
|
|
50
52
|
});
|
|
51
53
|
clientSocket.on('message', (data) => {
|
|
52
|
-
if (dgSocket.readyState ===
|
|
54
|
+
if (dgSocket.readyState === WS_OPEN) {
|
|
53
55
|
dgSocket.send(data);
|
|
54
56
|
}
|
|
55
57
|
});
|
|
56
58
|
clientSocket.on('close', () => {
|
|
57
|
-
if (dgSocket.readyState ===
|
|
59
|
+
if (dgSocket.readyState === WS_OPEN) {
|
|
58
60
|
dgSocket.close();
|
|
59
61
|
}
|
|
60
62
|
});
|
|
61
63
|
clientSocket.on('error', (err) => {
|
|
62
64
|
logger.error(`Client socket error: ${err.message}`);
|
|
63
|
-
if (dgSocket.readyState ===
|
|
65
|
+
if (dgSocket.readyState === WS_OPEN) {
|
|
64
66
|
dgSocket.close();
|
|
65
67
|
}
|
|
66
68
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"speech-stream.gateway.js","sourceRoot":"","sources":["../../../../../src/server/adapters/nestjs/chat/speech-stream.gateway.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"speech-stream.gateway.js","sourceRoot":"","sources":["../../../../../src/server/adapters/nestjs/chat/speech-stream.gateway.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
// Runtime loader for the optional `ws` peer dependency.
|
|
2
|
+
//
|
|
3
|
+
// `ws` is only needed when the speech-to-text feature is enabled
|
|
4
|
+
// (AiChatModule.attachWebSockets()). A top-level `import { WebSocketServer }
|
|
5
|
+
// from 'ws'` would force every NestJS consumer to install `ws` even when
|
|
6
|
+
// they don't use speech — and crash with `ERR_MODULE_NOT_FOUND` at startup
|
|
7
|
+
// if they don't.
|
|
8
|
+
//
|
|
9
|
+
// We use a plain dynamic `import('ws')` inside a try/catch:
|
|
10
|
+
// - In ESM dist: native dynamic import — Node resolves `ws` only at the
|
|
11
|
+
// moment `attachWebSockets` is called.
|
|
12
|
+
// - In CJS dist: TypeScript lowers `import('ws')` to a Promise wrapper around
|
|
13
|
+
// `require('ws')` — same lazy semantics.
|
|
14
|
+
// - Bundlers that bundle the server (esbuild / webpack for serverless deploys)
|
|
15
|
+
// will still see `ws` as a referenced module. If your deployment bundles,
|
|
16
|
+
// either install `ws` unconditionally, or mark it as an external in your
|
|
17
|
+
// bundler config (esbuild `--external:ws`, webpack `externals: { ws: 'commonjs ws' }`).
|
|
18
|
+
// Standard NestJS deployments don't bundle and are unaffected.
|
|
19
|
+
let cached;
|
|
20
|
+
export async function loadWs() {
|
|
21
|
+
if (cached)
|
|
22
|
+
return cached;
|
|
23
|
+
let mod;
|
|
24
|
+
try {
|
|
25
|
+
mod = await import('ws');
|
|
26
|
+
}
|
|
27
|
+
catch (err) {
|
|
28
|
+
throw new Error("[glirastes] The 'ws' package is required for the speech-to-text feature " +
|
|
29
|
+
'(AiChatModule.attachWebSockets). Install it with: npm install ws', { cause: err });
|
|
30
|
+
}
|
|
31
|
+
cached = {
|
|
32
|
+
WebSocketServer: mod.WebSocketServer ?? mod.default?.WebSocketServer,
|
|
33
|
+
WebSocket: mod.default ?? mod.WebSocket,
|
|
34
|
+
};
|
|
35
|
+
return cached;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=ws-loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ws-loader.js","sourceRoot":"","sources":["../../../../../src/server/adapters/nestjs/chat/ws-loader.ts"],"names":[],"mappings":"AAAA,wDAAwD;AACxD,EAAE;AACF,iEAAiE;AACjE,6EAA6E;AAC7E,yEAAyE;AACzE,2EAA2E;AAC3E,iBAAiB;AACjB,EAAE;AACF,4DAA4D;AAC5D,wEAAwE;AACxE,yCAAyC;AACzC,8EAA8E;AAC9E,2CAA2C;AAC3C,+EAA+E;AAC/E,4EAA4E;AAC5E,2EAA2E;AAC3E,0FAA0F;AAC1F,iEAAiE;AAOjE,IAAI,MAA4B,CAAC;AAEjC,MAAM,CAAC,KAAK,UAAU,MAAM;IAC1B,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAE1B,IAAI,GAAQ,CAAC;IACb,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACb,0EAA0E;YACxE,kEAAkE,EACpE,EAAE,KAAK,EAAE,GAAY,EAAE,CACxB,CAAC;IACJ,CAAC;IAED,MAAM,GAAG;QACP,eAAe,EAAE,GAAG,CAAC,eAAe,IAAI,GAAG,CAAC,OAAO,EAAE,eAAe;QACpE,SAAS,EAAE,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,SAAS;KACxC,CAAC;IACF,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "glirastes",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.2",
|
|
4
4
|
"description": "Official Chainmatics SDK for building AI-powered chat, tools, and agent systems. Part of the Glirastes platform.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"author": {
|
|
@@ -53,24 +53,54 @@
|
|
|
53
53
|
},
|
|
54
54
|
"exports": {
|
|
55
55
|
".": {
|
|
56
|
-
"
|
|
57
|
-
|
|
56
|
+
"import": {
|
|
57
|
+
"types": "./dist/index.d.ts",
|
|
58
|
+
"default": "./dist/index.js"
|
|
59
|
+
},
|
|
60
|
+
"require": {
|
|
61
|
+
"types": "./dist/cjs/index.d.ts",
|
|
62
|
+
"default": "./dist/cjs/index.js"
|
|
63
|
+
}
|
|
58
64
|
},
|
|
59
65
|
"./server": {
|
|
60
|
-
"
|
|
61
|
-
|
|
66
|
+
"import": {
|
|
67
|
+
"types": "./dist/server/index.d.ts",
|
|
68
|
+
"default": "./dist/server/index.js"
|
|
69
|
+
},
|
|
70
|
+
"require": {
|
|
71
|
+
"types": "./dist/cjs/server/index.d.ts",
|
|
72
|
+
"default": "./dist/cjs/server/index.js"
|
|
73
|
+
}
|
|
62
74
|
},
|
|
63
75
|
"./server/nextjs": {
|
|
64
|
-
"
|
|
65
|
-
|
|
76
|
+
"import": {
|
|
77
|
+
"types": "./dist/server/adapters/nextjs/index.d.ts",
|
|
78
|
+
"default": "./dist/server/adapters/nextjs/index.js"
|
|
79
|
+
},
|
|
80
|
+
"require": {
|
|
81
|
+
"types": "./dist/cjs/server/adapters/nextjs/index.d.ts",
|
|
82
|
+
"default": "./dist/cjs/server/adapters/nextjs/index.js"
|
|
83
|
+
}
|
|
66
84
|
},
|
|
67
85
|
"./server/nestjs": {
|
|
68
|
-
"
|
|
69
|
-
|
|
86
|
+
"import": {
|
|
87
|
+
"types": "./dist/server/adapters/nestjs/index.d.ts",
|
|
88
|
+
"default": "./dist/server/adapters/nestjs/index.js"
|
|
89
|
+
},
|
|
90
|
+
"require": {
|
|
91
|
+
"types": "./dist/cjs/server/adapters/nestjs/index.d.ts",
|
|
92
|
+
"default": "./dist/cjs/server/adapters/nestjs/index.js"
|
|
93
|
+
}
|
|
70
94
|
},
|
|
71
95
|
"./server/testing": {
|
|
72
|
-
"
|
|
73
|
-
|
|
96
|
+
"import": {
|
|
97
|
+
"types": "./dist/server/testing/index.d.ts",
|
|
98
|
+
"default": "./dist/server/testing/index.js"
|
|
99
|
+
},
|
|
100
|
+
"require": {
|
|
101
|
+
"types": "./dist/cjs/server/testing/index.d.ts",
|
|
102
|
+
"default": "./dist/cjs/server/testing/index.js"
|
|
103
|
+
}
|
|
74
104
|
},
|
|
75
105
|
"./react": {
|
|
76
106
|
"types": "./dist/react/index.d.ts",
|
|
@@ -96,6 +126,11 @@
|
|
|
96
126
|
},
|
|
97
127
|
"files": [
|
|
98
128
|
"dist",
|
|
129
|
+
"server",
|
|
130
|
+
"react",
|
|
131
|
+
"codegen",
|
|
132
|
+
"openapi",
|
|
133
|
+
"skills",
|
|
99
134
|
"CHANGELOG.md",
|
|
100
135
|
"CODE_OF_CONDUCT.md",
|
|
101
136
|
"CONTRIBUTING.md",
|
|
@@ -105,20 +140,20 @@
|
|
|
105
140
|
"SECURITY.md"
|
|
106
141
|
],
|
|
107
142
|
"scripts": {
|
|
108
|
-
"build": "tsc -p tsconfig.json && cp src/react/styles.css dist/react/styles.css",
|
|
143
|
+
"build": "tsc -p tsconfig.json && tsc -p tsconfig.cjs.json && cp src/react/styles.css dist/react/styles.css && node -e \"require('fs').writeFileSync('dist/cjs/package.json', '{\\\"type\\\":\\\"commonjs\\\"}\\n')\" && node scripts/generate-subpath-shims.mjs",
|
|
109
144
|
"typecheck": "tsc --noEmit",
|
|
110
145
|
"test": "vitest run"
|
|
111
146
|
},
|
|
112
147
|
"dependencies": {
|
|
113
|
-
"zod": "^3.
|
|
148
|
+
"zod": "^3.25.76",
|
|
114
149
|
"snowball-stemmers": "^0.6.0",
|
|
115
|
-
"ai": "^6.0.0"
|
|
116
|
-
"@ai-sdk/react": "^3.0.0",
|
|
117
|
-
"react-markdown": "^10.1.0"
|
|
150
|
+
"ai": "^6.0.0"
|
|
118
151
|
},
|
|
119
152
|
"peerDependencies": {
|
|
120
153
|
"react": "^18 || ^19",
|
|
121
154
|
"react-dom": "^19",
|
|
155
|
+
"@ai-sdk/react": "^3.0.0",
|
|
156
|
+
"react-markdown": "^10.1.0",
|
|
122
157
|
"wavesurfer.js": "^7",
|
|
123
158
|
"@nestjs/common": "^10 || ^11",
|
|
124
159
|
"@nestjs/core": "^10 || ^11",
|
|
@@ -139,6 +174,12 @@
|
|
|
139
174
|
"react-dom": {
|
|
140
175
|
"optional": true
|
|
141
176
|
},
|
|
177
|
+
"@ai-sdk/react": {
|
|
178
|
+
"optional": true
|
|
179
|
+
},
|
|
180
|
+
"react-markdown": {
|
|
181
|
+
"optional": true
|
|
182
|
+
},
|
|
142
183
|
"wavesurfer.js": {
|
|
143
184
|
"optional": true
|
|
144
185
|
},
|
|
@@ -188,6 +229,8 @@
|
|
|
188
229
|
"@types/snowball-stemmers": "^0.6.0",
|
|
189
230
|
"react": "^19.0.0",
|
|
190
231
|
"react-dom": "^19.0.0",
|
|
232
|
+
"@ai-sdk/react": "^3.0.0",
|
|
233
|
+
"react-markdown": "^10.1.0",
|
|
191
234
|
"wavesurfer.js": "^7.12.1",
|
|
192
235
|
"@nestjs/common": "^11.0.0",
|
|
193
236
|
"@nestjs/core": "^11.0.0",
|
package/skills/README.md
ADDED
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
# Glirastes Agent Skills
|
|
2
|
+
|
|
3
|
+
Pre-built [agent skills](https://docs.claude.com/en/docs/claude-code/skills) that teach a coding agent (Claude Code, Codex, Cursor, …) how to integrate, maintain, and customize the Glirastes SDK in a real codebase. Drop them into your repo's `.claude/skills/` (or your agent's equivalent), and the agent picks the right one automatically based on the task.
|
|
4
|
+
|
|
5
|
+
Skills are a separate concept from `glirastes generate-skills`:
|
|
6
|
+
|
|
7
|
+
- **`generate-skills` (CLI command)** — turns *your tools* into skill files so external agents can call your tools.
|
|
8
|
+
- **These skills (this directory)** — instruct an agent on how to *integrate Glirastes itself* into a project.
|
|
9
|
+
|
|
10
|
+
## Available skills
|
|
11
|
+
|
|
12
|
+
| Skill | Use when |
|
|
13
|
+
|---|---|
|
|
14
|
+
| [`integrating-glirastes-nextjs`](./integrating-glirastes-nextjs/SKILL.md) | Adding chat to a Next.js App Router app where Next.js is the only backend. |
|
|
15
|
+
| [`integrating-glirastes-nestjs`](./integrating-glirastes-nestjs/SKILL.md) | Adding chat to a NestJS backend (with or without a separate frontend). |
|
|
16
|
+
| [`integrating-glirastes-nextjs-with-nestjs-backend`](./integrating-glirastes-nextjs-with-nestjs-backend/SKILL.md) | Full-stack setup: Next.js frontend in one workspace, separate NestJS backend in another. |
|
|
17
|
+
| [`maintaining-glirastes-tools`](./maintaining-glirastes-tools/SKILL.md) | Authoring `ai-tool.ts` / `ai-ui-tool.ts`, intent modules, codegen pipeline, all CLI commands. |
|
|
18
|
+
| [`building-glirastes-chat-ui`](./building-glirastes-chat-ui/SKILL.md) | Customizing the chat UI — theming, mentions, voice input, approval cards, action bus. |
|
|
19
|
+
|
|
20
|
+
The three `integrating-*` skills are mutually exclusive: pick the one that matches your stack. The other two are stack-agnostic.
|
|
21
|
+
|
|
22
|
+
## Installing into your project
|
|
23
|
+
|
|
24
|
+
These skills ship with the npm package, so they're always in sync with the SDK version you've installed. Use the bundled CLI installer:
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
# Project-local: all skills into ./.claude/skills (default)
|
|
28
|
+
npx glirastes install-skills
|
|
29
|
+
|
|
30
|
+
# Global: into ~/.claude/skills — picked up by every Claude Code session on this machine
|
|
31
|
+
npx glirastes install-skills --global # short: -g
|
|
32
|
+
|
|
33
|
+
# Stack-filtered — only the skills relevant to your setup
|
|
34
|
+
npx glirastes install-skills --stack nextjs # Next.js standalone
|
|
35
|
+
npx glirastes install-skills --stack nestjs # NestJS standalone
|
|
36
|
+
npx glirastes install-skills --stack nextjs+nestjs # Next.js + NestJS monorepo
|
|
37
|
+
npx glirastes install-skills --stack all # explicit "all" (default)
|
|
38
|
+
|
|
39
|
+
# Combine: global + stack filter
|
|
40
|
+
npx glirastes install-skills -g --stack nextjs+nestjs
|
|
41
|
+
|
|
42
|
+
# Different agent? Pass --target (mutually exclusive with --global)
|
|
43
|
+
npx glirastes install-skills --target .codex/skills
|
|
44
|
+
|
|
45
|
+
# Symlink mode — skills auto-update when you bump glirastes
|
|
46
|
+
npx glirastes install-skills --symlink
|
|
47
|
+
|
|
48
|
+
# Preview without writing
|
|
49
|
+
npx glirastes install-skills --dry-run
|
|
50
|
+
|
|
51
|
+
# Overwrite previously installed skills
|
|
52
|
+
npx glirastes install-skills --force
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
| Flag | Effect |
|
|
56
|
+
|---|---|
|
|
57
|
+
| *(default)* | Install into `./.claude/skills` relative to the current project. |
|
|
58
|
+
| `-g`, `--global` | Install into `~/.claude/skills` so every project on this machine sees the skills. Mutually exclusive with `--target`. |
|
|
59
|
+
| `--target <dir>` | Override the destination. Accepts relative or absolute paths and `~/`-prefixed paths. |
|
|
60
|
+
| `--stack <name>` | `nextjs` \| `nestjs` \| `nextjs+nestjs` \| `all` (default). Filters which skills are installed. |
|
|
61
|
+
| `--symlink` | Symlink instead of copy — skills track the installed `glirastes` version automatically on `npm install`. |
|
|
62
|
+
| `--force` | Overwrite skills that already exist at the target. |
|
|
63
|
+
| `--dry-run` | Print what would happen without writing anything. |
|
|
64
|
+
|
|
65
|
+
### Project-local vs global — which to pick?
|
|
66
|
+
|
|
67
|
+
- **Project-local** (default): each project sees skills tied to its own installed `glirastes` version. Best when teams collaborate via git — the project's `.claude/skills` is checked in (or symlinked, then `.gitignore`d).
|
|
68
|
+
- **Global** (`-g`): one install per developer machine, shared across every project. Best for a solo dev who works on multiple Glirastes projects and wants consistency without re-running the installer per project.
|
|
69
|
+
|
|
70
|
+
Both modes can coexist. Project-local skills override global skills when the same name is present in both.
|
|
71
|
+
|
|
72
|
+
### Manual install (no CLI)
|
|
73
|
+
|
|
74
|
+
If you prefer not to use the installer:
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
mkdir -p .claude/skills
|
|
78
|
+
cp -r node_modules/glirastes/skills/*/ .claude/skills/
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
Or symlink:
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
mkdir -p .claude/skills
|
|
85
|
+
for skill in node_modules/glirastes/skills/*/; do
|
|
86
|
+
ln -sf "$(pwd)/$skill" ".claude/skills/$(basename "$skill")"
|
|
87
|
+
done
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
## Skill authoring
|
|
91
|
+
|
|
92
|
+
If you fork or extend a skill, follow the [Anthropic skill creator best practices](https://github.com/anthropics/anthropic-cookbook/tree/main/agents/agent-skills):
|
|
93
|
+
|
|
94
|
+
- Use the verb-ing-noun naming pattern (`integrating-glirastes-nextjs`, not `glirastes-nextjs-helper`)
|
|
95
|
+
- Keep `SKILL.md` under ~500 lines — split deep references into sibling files, one level deep
|
|
96
|
+
- Frontmatter `description` must be third-person and include the trigger condition
|
|
97
|
+
- Include code snippets you can adapt, not just abstract guidance
|
|
98
|
+
|
|
99
|
+
## Reporting issues / suggesting improvements
|
|
100
|
+
|
|
101
|
+
These skills evolve with the SDK. If a skill steers an agent toward an outdated API, [open an issue](https://github.com/chainmatics/glirastes/issues) with:
|
|
102
|
+
|
|
103
|
+
1. The skill name
|
|
104
|
+
2. The agent's incorrect output
|
|
105
|
+
3. The correct API for the current SDK version
|
|
106
|
+
|
|
107
|
+
Pull requests welcome.
|