veryfront 0.1.47 → 0.1.49
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/esm/cli/app/components/inline-input.d.ts +1 -4
- package/esm/cli/app/components/inline-input.d.ts.map +1 -1
- package/esm/cli/app/components/inline-input.js +1 -1
- package/esm/cli/app/components/list-select.d.ts +0 -8
- package/esm/cli/app/components/list-select.d.ts.map +1 -1
- package/esm/cli/app/components/list-select.js +0 -13
- package/esm/cli/app/operations/project-creation.d.ts +2 -14
- package/esm/cli/app/operations/project-creation.d.ts.map +1 -1
- package/esm/cli/app/operations/project-creation.js +3 -68
- package/esm/cli/app/shell.js +2 -2
- package/esm/cli/app/utils.d.ts +1 -2
- package/esm/cli/app/utils.d.ts.map +1 -1
- package/esm/cli/app/utils.js +1 -17
- package/esm/cli/app/views/dashboard.d.ts +0 -4
- package/esm/cli/app/views/dashboard.d.ts.map +1 -1
- package/esm/cli/app/views/dashboard.js +0 -15
- package/esm/cli/app/views/startup.d.ts +0 -4
- package/esm/cli/app/views/startup.d.ts.map +1 -1
- package/esm/cli/app/views/startup.js +0 -7
- package/esm/cli/auth/login.d.ts.map +1 -1
- package/esm/cli/auth/login.js +1 -2
- package/esm/cli/auth/token-store.js +1 -1
- package/esm/cli/auth/utils.d.ts +2 -1
- package/esm/cli/auth/utils.d.ts.map +1 -1
- package/esm/cli/commands/build/handler.d.ts +1 -1
- package/esm/cli/commands/generate/integration-generator.js +1 -1
- package/esm/cli/commands/init/catalog.js +3 -3
- package/esm/cli/commands/init/command-help.js +2 -2
- package/esm/cli/commands/init/config-generator.d.ts.map +1 -1
- package/esm/cli/commands/init/config-generator.js +8 -0
- package/esm/cli/commands/init/types.d.ts +1 -1
- package/esm/cli/commands/init/types.d.ts.map +1 -1
- package/esm/cli/commands/install/types.d.ts +2 -2
- package/esm/cli/commands/merge/command.d.ts +1 -1
- package/esm/cli/help/formatters.d.ts +1 -1
- package/esm/cli/help/formatters.d.ts.map +1 -1
- package/esm/cli/help/formatters.js +8 -4
- package/esm/cli/help/main-help.d.ts.map +1 -1
- package/esm/cli/help/main-help.js +2 -2
- package/esm/cli/help/tips.js +1 -1
- package/esm/cli/mcp/remote-file-tools.js +1 -1
- package/esm/cli/mcp/server.d.ts +0 -1
- package/esm/cli/mcp/server.d.ts.map +1 -1
- package/esm/cli/mcp/server.js +2 -5
- package/esm/cli/mcp/tools/catalog-tools.d.ts +3 -3
- package/esm/cli/mcp/tools/catalog-tools.js +3 -3
- package/esm/cli/mcp/tools/dev-tools.d.ts +1 -1
- package/esm/cli/mcp/tools/dev-tools.d.ts.map +1 -1
- package/esm/cli/mcp/tools/dev-tools.js +1 -2
- package/esm/cli/mcp/tools/scaffold-tools.d.ts +2 -2
- package/esm/cli/mcp/tools.d.ts +1 -2
- package/esm/cli/mcp/tools.d.ts.map +1 -1
- package/esm/cli/mcp/tools.js +1 -2
- package/esm/cli/shared/reserve-slug.d.ts.map +1 -1
- package/esm/cli/shared/reserve-slug.js +1 -3
- package/esm/cli/sync/ignore.d.ts +1 -1
- package/esm/cli/sync/ignore.d.ts.map +1 -1
- package/esm/cli/sync/ignore.js +22 -18
- package/esm/cli/templates/index.js +2 -2
- package/esm/cli/templates/manifest.d.ts +10 -8
- package/esm/cli/templates/manifest.js +15 -13
- package/esm/cli/templates/types.d.ts +1 -1
- package/esm/cli/templates/types.d.ts.map +1 -1
- package/esm/cli/ui/colors.d.ts +0 -1
- package/esm/cli/ui/colors.d.ts.map +1 -1
- package/esm/cli/ui/colors.js +0 -10
- package/esm/cli/ui/dot-matrix.d.ts.map +1 -1
- package/esm/cli/ui/dot-matrix.js +2 -5
- package/esm/cli/ui/tui.js +2 -3
- package/esm/cli/utils/index.js +1 -2
- package/esm/cli/utils/package-manager.d.ts.map +1 -1
- package/esm/cli/utils/package-manager.js +3 -4
- package/esm/deno.d.ts +10 -0
- package/esm/deno.js +30 -20
- package/esm/src/agent/chat-handler.d.ts +22 -0
- package/esm/src/agent/chat-handler.d.ts.map +1 -1
- package/esm/src/agent/chat-handler.js +88 -28
- package/esm/src/agent/factory.d.ts +0 -8
- package/esm/src/agent/factory.d.ts.map +1 -1
- package/esm/src/agent/factory.js +50 -1
- package/esm/src/agent/index.d.ts +17 -2
- package/esm/src/agent/index.d.ts.map +1 -1
- package/esm/src/agent/index.js +17 -2
- package/esm/src/agent/memory/memory.d.ts +2 -2
- package/esm/src/agent/memory/memory.d.ts.map +1 -1
- package/esm/src/agent/memory/memory.js +0 -1
- package/esm/src/agent/react/index.d.ts +1 -1
- package/esm/src/agent/react/index.d.ts.map +1 -1
- package/esm/src/agent/react/use-chat/index.d.ts +1 -1
- package/esm/src/agent/react/use-chat/index.d.ts.map +1 -1
- package/esm/src/agent/react/use-chat/streaming/handler.d.ts.map +1 -1
- package/esm/src/agent/react/use-chat/streaming/handler.js +42 -4
- package/esm/src/agent/react/use-chat/streaming/parts-builder.d.ts +2 -2
- package/esm/src/agent/react/use-chat/streaming/parts-builder.d.ts.map +1 -1
- package/esm/src/agent/react/use-chat/streaming/parts-builder.js +14 -1
- package/esm/src/agent/react/use-chat/streaming/types.d.ts +5 -0
- package/esm/src/agent/react/use-chat/streaming/types.d.ts.map +1 -1
- package/esm/src/agent/react/use-chat/types.d.ts +23 -1
- package/esm/src/agent/react/use-chat/types.d.ts.map +1 -1
- package/esm/src/agent/react/use-chat/use-chat.d.ts +15 -1
- package/esm/src/agent/react/use-chat/use-chat.d.ts.map +1 -1
- package/esm/src/agent/react/use-chat/use-chat.js +187 -35
- package/esm/src/agent/runtime/index.d.ts +18 -0
- package/esm/src/agent/runtime/index.d.ts.map +1 -1
- package/esm/src/agent/runtime/index.js +167 -36
- package/esm/src/agent/runtime/tool-helpers.d.ts +6 -1
- package/esm/src/agent/runtime/tool-helpers.d.ts.map +1 -1
- package/esm/src/agent/runtime/tool-helpers.js +10 -1
- package/esm/src/agent/schemas/agent.schema.d.ts +4 -4
- package/esm/src/agent/types.d.ts +10 -0
- package/esm/src/agent/types.d.ts.map +1 -1
- package/esm/src/ai/registry-manager.d.ts.map +1 -1
- package/esm/src/ai/registry-manager.js +2 -1
- package/esm/src/build/bundler/code-splitter/manifest-builder.d.ts +0 -2
- package/esm/src/build/bundler/code-splitter/manifest-builder.d.ts.map +1 -1
- package/esm/src/build/bundler/code-splitter/manifest-builder.js +1 -1
- package/esm/src/build/compiler/mdx-compiler/validator.d.ts.map +1 -1
- package/esm/src/build/compiler/mdx-compiler/validator.js +2 -3
- package/esm/src/build/compiler/mdx-to-js.d.ts +0 -2
- package/esm/src/build/compiler/mdx-to-js.d.ts.map +1 -1
- package/esm/src/build/compiler/mdx-to-js.js +0 -81
- package/esm/src/build/index.d.ts +0 -6
- package/esm/src/build/index.d.ts.map +1 -1
- package/esm/src/build/index.js +0 -1
- package/esm/src/build/production-build/build/route-collector.d.ts.map +1 -1
- package/esm/src/build/production-build/build/route-collector.js +2 -3
- package/esm/src/build/production-build/client-runtime.d.ts +7 -3
- package/esm/src/build/production-build/client-runtime.d.ts.map +1 -1
- package/esm/src/build/production-build/client-runtime.js +9 -9
- package/esm/src/build/production-build/templates.d.ts +5 -9
- package/esm/src/build/production-build/templates.d.ts.map +1 -1
- package/esm/src/build/production-build/templates.js +6 -18
- package/esm/src/build/vendor-cache.d.ts.map +1 -1
- package/esm/src/build/vendor-cache.js +0 -5
- package/esm/src/cache/tokenizing-gateway.d.ts +0 -2
- package/esm/src/cache/tokenizing-gateway.d.ts.map +1 -1
- package/esm/src/cache/tokenizing-gateway.js +1 -3
- package/esm/src/chat/index.d.ts +33 -24
- package/esm/src/chat/index.d.ts.map +1 -1
- package/esm/src/chat/index.js +40 -26
- package/esm/src/config/define-config.d.ts.map +1 -1
- package/esm/src/config/define-config.js +28 -25
- package/esm/src/config/loader.d.ts.map +1 -1
- package/esm/src/config/loader.js +10 -7
- package/esm/src/config/schemas/config.schema.d.ts +58 -12
- package/esm/src/config/schemas/config.schema.d.ts.map +1 -1
- package/esm/src/config/schemas/config.schema.js +12 -0
- package/esm/src/data/data-fetcher.d.ts +1 -2
- package/esm/src/data/data-fetcher.d.ts.map +1 -1
- package/esm/src/data/data-fetcher.js +14 -15
- package/esm/src/data/server-data-fetcher.d.ts +0 -3
- package/esm/src/data/server-data-fetcher.d.ts.map +1 -1
- package/esm/src/data/server-data-fetcher.js +1 -8
- package/esm/src/data/static-data-fetcher.d.ts +1 -3
- package/esm/src/data/static-data-fetcher.d.ts.map +1 -1
- package/esm/src/data/static-data-fetcher.js +1 -3
- package/esm/src/discovery/discovery-engine.d.ts.map +1 -1
- package/esm/src/discovery/discovery-engine.js +19 -1
- package/esm/src/discovery/discovery-utils.d.ts +0 -4
- package/esm/src/discovery/discovery-utils.d.ts.map +1 -1
- package/esm/src/discovery/discovery-utils.js +0 -6
- package/esm/src/discovery/file-discovery.d.ts +3 -1
- package/esm/src/discovery/file-discovery.d.ts.map +1 -1
- package/esm/src/discovery/file-discovery.js +3 -8
- package/esm/src/discovery/handlers/index.d.ts +1 -0
- package/esm/src/discovery/handlers/index.d.ts.map +1 -1
- package/esm/src/discovery/handlers/index.js +1 -0
- package/esm/src/discovery/handlers/skill-handler.d.ts +26 -0
- package/esm/src/discovery/handlers/skill-handler.d.ts.map +1 -0
- package/esm/src/discovery/handlers/skill-handler.js +87 -0
- package/esm/src/discovery/handlers/task-handler.d.ts.map +1 -1
- package/esm/src/discovery/handlers/task-handler.js +1 -5
- package/esm/src/discovery/transpiler.d.ts.map +1 -1
- package/esm/src/discovery/transpiler.js +7 -2
- package/esm/src/discovery/types.d.ts +3 -0
- package/esm/src/discovery/types.d.ts.map +1 -1
- package/esm/src/embedding/chunk.d.ts +18 -0
- package/esm/src/embedding/chunk.d.ts.map +1 -0
- package/esm/src/embedding/chunk.js +48 -0
- package/esm/src/embedding/embedding.d.ts +23 -0
- package/esm/src/embedding/embedding.d.ts.map +1 -0
- package/esm/src/embedding/embedding.js +54 -0
- package/esm/src/embedding/index.d.ts +29 -0
- package/esm/src/embedding/index.d.ts.map +1 -0
- package/esm/src/embedding/index.js +26 -0
- package/esm/src/embedding/react/use-uploads.d.ts +31 -0
- package/esm/src/embedding/react/use-uploads.d.ts.map +1 -0
- package/esm/src/embedding/react/use-uploads.js +71 -0
- package/esm/src/embedding/resolve.d.ts +27 -0
- package/esm/src/embedding/resolve.d.ts.map +1 -0
- package/esm/src/embedding/resolve.js +94 -0
- package/esm/src/embedding/types.d.ts +90 -0
- package/esm/src/embedding/types.d.ts.map +1 -0
- package/esm/src/embedding/types.js +1 -0
- package/esm/src/embedding/upload-handler.d.ts +43 -0
- package/esm/src/embedding/upload-handler.d.ts.map +1 -0
- package/esm/src/embedding/upload-handler.js +144 -0
- package/esm/src/embedding/upload-loader.d.ts +14 -0
- package/esm/src/embedding/upload-loader.d.ts.map +1 -0
- package/esm/src/embedding/upload-loader.js +70 -0
- package/esm/src/embedding/upload-store.d.ts +27 -0
- package/esm/src/embedding/upload-store.d.ts.map +1 -0
- package/esm/src/embedding/upload-store.js +244 -0
- package/esm/src/embedding/vector-store.d.ts +33 -0
- package/esm/src/embedding/vector-store.d.ts.map +1 -0
- package/esm/src/embedding/vector-store.js +215 -0
- package/esm/src/errors/error-registry.d.ts +2 -1
- package/esm/src/errors/error-registry.d.ts.map +1 -1
- package/esm/src/errors/http-error.d.ts +1 -2
- package/esm/src/errors/http-error.d.ts.map +1 -1
- package/esm/src/errors/http-error.js +2 -2
- package/esm/src/errors/middleware/cli-error-boundary.d.ts.map +1 -1
- package/esm/src/errors/middleware/cli-error-boundary.js +13 -2
- package/esm/src/errors/middleware/wrap-unknown.d.ts +0 -7
- package/esm/src/errors/middleware/wrap-unknown.d.ts.map +1 -1
- package/esm/src/errors/middleware/wrap-unknown.js +0 -9
- package/esm/src/errors/veryfront-error.d.ts +0 -3
- package/esm/src/errors/veryfront-error.d.ts.map +1 -1
- package/esm/src/errors/veryfront-error.js +0 -5
- package/esm/src/html/schemas/html.schema.d.ts +2 -2
- package/esm/src/html/styles-builder/css-hash-cache.d.ts.map +1 -1
- package/esm/src/html/styles-builder/css-hash-cache.js +1 -2
- package/esm/src/html/styles-builder/plugin-loader.d.ts.map +1 -1
- package/esm/src/html/styles-builder/plugin-loader.js +50 -21
- package/esm/src/html/styles-builder/tailwind-compiler-cache.d.ts.map +1 -1
- package/esm/src/html/styles-builder/tailwind-compiler-cache.js +12 -4
- package/esm/src/html/utils.d.ts +0 -7
- package/esm/src/html/utils.d.ts.map +1 -1
- package/esm/src/html/utils.js +0 -25
- package/esm/src/modules/component-registry/registry.d.ts +0 -3
- package/esm/src/modules/component-registry/registry.d.ts.map +1 -1
- package/esm/src/modules/component-registry/registry.js +0 -3
- package/esm/src/modules/import-map/default-import-map.d.ts.map +1 -1
- package/esm/src/modules/import-map/default-import-map.js +8 -0
- package/esm/src/modules/react-loader/component-loader.d.ts.map +1 -1
- package/esm/src/modules/react-loader/component-loader.js +1 -0
- package/esm/src/modules/react-loader/ssr-module-loader/loader.d.ts.map +1 -1
- package/esm/src/modules/react-loader/ssr-module-loader/loader.js +10 -1
- package/esm/src/modules/react-loader/ssr-module-loader/types.d.ts +2 -0
- package/esm/src/modules/react-loader/ssr-module-loader/types.d.ts.map +1 -1
- package/esm/src/modules/react-loader/types.d.ts +2 -0
- package/esm/src/modules/react-loader/types.d.ts.map +1 -1
- package/esm/src/modules/server/module-server.d.ts +2 -0
- package/esm/src/modules/server/module-server.d.ts.map +1 -1
- package/esm/src/modules/server/module-server.js +2 -1
- package/esm/src/oauth/handlers/callback-handler.d.ts +2 -0
- package/esm/src/oauth/handlers/callback-handler.d.ts.map +1 -1
- package/esm/src/oauth/handlers/callback-handler.js +10 -4
- package/esm/src/oauth/providers/common.d.ts.map +1 -1
- package/esm/src/oauth/providers/common.js +0 -23
- package/esm/src/observability/auto-instrument/react-instrumentation.js +2 -1
- package/esm/src/observability/instruments/instruments-factory.d.ts +1 -1
- package/esm/src/observability/instruments/instruments-factory.d.ts.map +1 -1
- package/esm/src/observability/instruments/instruments-factory.js +5 -4
- package/esm/src/observability/metrics/config.js +5 -4
- package/esm/src/observability/metrics/manager.js +1 -1
- package/esm/src/observability/tracing/span-operations.d.ts.map +1 -1
- package/esm/src/observability/tracing/span-operations.js +14 -8
- package/esm/src/platform/compat/console/node.d.ts +0 -1
- package/esm/src/platform/compat/console/node.d.ts.map +1 -1
- package/esm/src/platform/compat/console/node.js +4 -11
- package/esm/src/platform/compat/fs.d.ts.map +1 -1
- package/esm/src/platform/compat/fs.js +4 -2
- package/esm/src/platform/compat/opaque-deps.d.ts +18 -2
- package/esm/src/platform/compat/opaque-deps.d.ts.map +1 -1
- package/esm/src/platform/compat/opaque-deps.js +19 -0
- package/esm/src/platform/compat/path/basic-operations.d.ts.map +1 -1
- package/esm/src/platform/compat/path/basic-operations.js +17 -10
- package/esm/src/platform/compat/path/resolution.d.ts.map +1 -1
- package/esm/src/platform/compat/path/resolution.js +65 -20
- package/esm/src/platform/compat/path/url-conversion.d.ts.map +1 -1
- package/esm/src/platform/compat/path/url-conversion.js +3 -2
- package/esm/src/platform/compat/process.d.ts +2 -14
- package/esm/src/platform/compat/process.d.ts.map +1 -1
- package/esm/src/platform/compat/process.js +92 -70
- package/esm/src/provider/index.d.ts +1 -1
- package/esm/src/provider/index.d.ts.map +1 -1
- package/esm/src/provider/index.js +1 -1
- package/esm/src/provider/local/ai-sdk-adapter.d.ts.map +1 -1
- package/esm/src/provider/local/ai-sdk-adapter.js +18 -18
- package/esm/src/provider/local/env.d.ts.map +1 -1
- package/esm/src/provider/local/env.js +2 -1
- package/esm/src/provider/local/local-embedding-adapter.d.ts +19 -0
- package/esm/src/provider/local/local-embedding-adapter.d.ts.map +1 -0
- package/esm/src/provider/local/local-embedding-adapter.js +32 -0
- package/esm/src/provider/local/local-embedding-engine.d.ts +17 -0
- package/esm/src/provider/local/local-embedding-engine.d.ts.map +1 -0
- package/esm/src/provider/local/local-embedding-engine.js +63 -0
- package/esm/src/provider/local/local-engine.d.ts +7 -0
- package/esm/src/provider/local/local-engine.d.ts.map +1 -1
- package/esm/src/provider/local/local-engine.js +1 -1
- package/esm/src/provider/local/model-catalog.d.ts +10 -1
- package/esm/src/provider/local/model-catalog.d.ts.map +1 -1
- package/esm/src/provider/local/model-catalog.js +61 -0
- package/esm/src/provider/model-registry.d.ts +10 -0
- package/esm/src/provider/model-registry.d.ts.map +1 -1
- package/esm/src/provider/model-registry.js +43 -0
- package/esm/src/proxy/retry.d.ts +3 -3
- package/esm/src/proxy/retry.d.ts.map +1 -1
- package/esm/src/proxy/retry.js +0 -7
- package/esm/src/proxy/tracing.d.ts +1 -5
- package/esm/src/proxy/tracing.d.ts.map +1 -1
- package/esm/src/proxy/tracing.js +1 -7
- package/esm/src/react/components/ai/agent-card.js +13 -13
- package/esm/src/react/components/ai/chat/components/animations.d.ts +5 -0
- package/esm/src/react/components/ai/chat/components/animations.d.ts.map +1 -1
- package/esm/src/react/components/ai/chat/components/animations.js +13 -1
- package/esm/src/react/components/ai/chat/components/attachment-pill.d.ts +15 -0
- package/esm/src/react/components/ai/chat/components/attachment-pill.d.ts.map +1 -0
- package/esm/src/react/components/ai/chat/components/attachment-pill.js +40 -0
- package/esm/src/react/components/ai/chat/components/branch-picker.d.ts +9 -0
- package/esm/src/react/components/ai/chat/components/branch-picker.d.ts.map +1 -0
- package/esm/src/react/components/ai/chat/components/branch-picker.js +17 -0
- package/esm/src/react/components/ai/chat/components/code-block.d.ts +8 -0
- package/esm/src/react/components/ai/chat/components/code-block.d.ts.map +1 -0
- package/esm/src/react/components/ai/chat/components/code-block.js +38 -0
- package/esm/src/react/components/ai/chat/components/drop-zone.d.ts +7 -0
- package/esm/src/react/components/ai/chat/components/drop-zone.d.ts.map +1 -0
- package/esm/src/react/components/ai/chat/components/drop-zone.js +14 -0
- package/esm/src/react/components/ai/chat/components/empty-state.d.ts.map +1 -1
- package/esm/src/react/components/ai/chat/components/empty-state.js +10 -8
- package/esm/src/react/components/ai/chat/components/inference-badge.js +1 -1
- package/esm/src/react/components/ai/chat/components/inline-citation.d.ts +10 -0
- package/esm/src/react/components/ai/chat/components/inline-citation.d.ts.map +1 -0
- package/esm/src/react/components/ai/chat/components/inline-citation.js +59 -0
- package/esm/src/react/components/ai/chat/components/message-actions.d.ts +3 -2
- package/esm/src/react/components/ai/chat/components/message-actions.d.ts.map +1 -1
- package/esm/src/react/components/ai/chat/components/message-actions.js +10 -10
- package/esm/src/react/components/ai/chat/components/message-edit-form.d.ts +8 -0
- package/esm/src/react/components/ai/chat/components/message-edit-form.d.ts.map +1 -0
- package/esm/src/react/components/ai/chat/components/message-edit-form.js +46 -0
- package/esm/src/react/components/ai/chat/components/message-feedback.d.ts +9 -0
- package/esm/src/react/components/ai/chat/components/message-feedback.d.ts.map +1 -0
- package/esm/src/react/components/ai/chat/components/message-feedback.js +19 -0
- package/esm/src/react/components/ai/chat/components/quick-actions.d.ts +14 -0
- package/esm/src/react/components/ai/chat/components/quick-actions.d.ts.map +1 -0
- package/esm/src/react/components/ai/chat/components/quick-actions.js +7 -0
- package/esm/src/react/components/ai/chat/components/reasoning.d.ts +3 -4
- package/esm/src/react/components/ai/chat/components/reasoning.d.ts.map +1 -1
- package/esm/src/react/components/ai/chat/components/reasoning.js +11 -6
- package/esm/src/react/components/ai/chat/components/sidebar.d.ts +14 -0
- package/esm/src/react/components/ai/chat/components/sidebar.d.ts.map +1 -0
- package/esm/src/react/components/ai/chat/components/sidebar.js +92 -0
- package/esm/src/react/components/ai/chat/components/skill-badge.d.ts +12 -0
- package/esm/src/react/components/ai/chat/components/skill-badge.d.ts.map +1 -0
- package/esm/src/react/components/ai/chat/components/skill-badge.js +34 -0
- package/esm/src/react/components/ai/chat/components/sources.d.ts +13 -0
- package/esm/src/react/components/ai/chat/components/sources.d.ts.map +1 -0
- package/esm/src/react/components/ai/chat/components/sources.js +28 -0
- package/esm/src/react/components/ai/chat/components/step-indicator.d.ts +8 -0
- package/esm/src/react/components/ai/chat/components/step-indicator.d.ts.map +1 -0
- package/esm/src/react/components/ai/chat/components/step-indicator.js +15 -0
- package/esm/src/react/components/ai/chat/components/tab-switcher.d.ts +16 -0
- package/esm/src/react/components/ai/chat/components/tab-switcher.d.ts.map +1 -0
- package/esm/src/react/components/ai/chat/components/tab-switcher.js +28 -0
- package/esm/src/react/components/ai/chat/components/tool-ui.d.ts.map +1 -1
- package/esm/src/react/components/ai/chat/components/tool-ui.js +23 -21
- package/esm/src/react/components/ai/chat/components/upgrade-cta.d.ts.map +1 -1
- package/esm/src/react/components/ai/chat/components/upgrade-cta.js +3 -3
- package/esm/src/react/components/ai/chat/components/uploads-panel.d.ts +16 -0
- package/esm/src/react/components/ai/chat/components/uploads-panel.d.ts.map +1 -0
- package/esm/src/react/components/ai/chat/components/uploads-panel.js +46 -0
- package/esm/src/react/components/ai/chat/composition/api.d.ts +10 -5
- package/esm/src/react/components/ai/chat/composition/api.d.ts.map +1 -1
- package/esm/src/react/components/ai/chat/composition/api.js +12 -20
- package/esm/src/react/components/ai/chat/composition/chat-composer.d.ts +35 -0
- package/esm/src/react/components/ai/chat/composition/chat-composer.d.ts.map +1 -0
- package/esm/src/react/components/ai/chat/composition/chat-composer.js +53 -0
- package/esm/src/react/components/ai/chat/composition/chat-empty.d.ts +20 -0
- package/esm/src/react/components/ai/chat/composition/chat-empty.d.ts.map +1 -0
- package/esm/src/react/components/ai/chat/composition/chat-empty.js +23 -0
- package/esm/src/react/components/ai/chat/composition/chat-if.d.ts +14 -0
- package/esm/src/react/components/ai/chat/composition/chat-if.d.ts.map +1 -0
- package/esm/src/react/components/ai/chat/composition/chat-if.js +11 -0
- package/esm/src/react/components/ai/chat/composition/chat-message-list.d.ts +36 -0
- package/esm/src/react/components/ai/chat/composition/chat-message-list.d.ts.map +1 -0
- package/esm/src/react/components/ai/chat/composition/chat-message-list.js +113 -0
- package/esm/src/react/components/ai/chat/composition/chat-root.d.ts +43 -0
- package/esm/src/react/components/ai/chat/composition/chat-root.d.ts.map +1 -0
- package/esm/src/react/components/ai/chat/composition/chat-root.js +78 -0
- package/esm/src/react/components/ai/chat/composition/error-banner.d.ts +12 -0
- package/esm/src/react/components/ai/chat/composition/error-banner.d.ts.map +1 -0
- package/esm/src/react/components/ai/chat/composition/error-banner.js +17 -0
- package/esm/src/react/components/ai/chat/composition/message.d.ts +54 -0
- package/esm/src/react/components/ai/chat/composition/message.d.ts.map +1 -0
- package/esm/src/react/components/ai/chat/composition/message.js +175 -0
- package/esm/src/react/components/ai/chat/composition/model-avatar.d.ts +14 -0
- package/esm/src/react/components/ai/chat/composition/model-avatar.d.ts.map +1 -0
- package/esm/src/react/components/ai/chat/composition/model-avatar.js +60 -0
- package/esm/src/react/components/ai/chat/contexts/chat-context.d.ts +45 -0
- package/esm/src/react/components/ai/chat/contexts/chat-context.d.ts.map +1 -0
- package/esm/src/react/components/ai/chat/contexts/chat-context.js +20 -0
- package/esm/src/react/components/ai/chat/contexts/composer-context.d.ts +34 -0
- package/esm/src/react/components/ai/chat/contexts/composer-context.d.ts.map +1 -0
- package/esm/src/react/components/ai/chat/contexts/composer-context.js +21 -0
- package/esm/src/react/components/ai/chat/contexts/index.d.ts +13 -0
- package/esm/src/react/components/ai/chat/contexts/index.d.ts.map +1 -0
- package/esm/src/react/components/ai/chat/contexts/index.js +12 -0
- package/esm/src/react/components/ai/chat/contexts/message-context.d.ts +30 -0
- package/esm/src/react/components/ai/chat/contexts/message-context.d.ts.map +1 -0
- package/esm/src/react/components/ai/chat/contexts/message-context.js +21 -0
- package/esm/src/react/components/ai/chat/contexts/thread-list-context.d.ts +23 -0
- package/esm/src/react/components/ai/chat/contexts/thread-list-context.d.ts.map +1 -0
- package/esm/src/react/components/ai/chat/contexts/thread-list-context.js +21 -0
- package/esm/src/react/components/ai/chat/hooks/use-threads.d.ts +24 -0
- package/esm/src/react/components/ai/chat/hooks/use-threads.d.ts.map +1 -0
- package/esm/src/react/components/ai/chat/hooks/use-threads.js +151 -0
- package/esm/src/react/components/ai/chat/index.d.ts +102 -17
- package/esm/src/react/components/ai/chat/index.d.ts.map +1 -1
- package/esm/src/react/components/ai/chat/index.js +164 -95
- package/esm/src/react/components/ai/chat/utils/export.d.ts +10 -0
- package/esm/src/react/components/ai/chat/utils/export.d.ts.map +1 -0
- package/esm/src/react/components/ai/chat/utils/export.js +64 -0
- package/esm/src/react/components/ai/chat/utils/message-parts.d.ts +12 -0
- package/esm/src/react/components/ai/chat/utils/message-parts.d.ts.map +1 -1
- package/esm/src/react/components/ai/chat/utils/message-parts.js +55 -0
- package/esm/src/react/components/ai/chat-with-sidebar.d.ts +98 -0
- package/esm/src/react/components/ai/chat-with-sidebar.d.ts.map +1 -0
- package/esm/src/react/components/ai/chat-with-sidebar.js +165 -0
- package/esm/src/react/components/ai/chat.d.ts +10 -1
- package/esm/src/react/components/ai/chat.d.ts.map +1 -1
- package/esm/src/react/components/ai/chat.js +25 -1
- package/esm/src/react/components/ai/error-boundary.js +6 -6
- package/esm/src/react/components/ai/icons/index.d.ts +9 -0
- package/esm/src/react/components/ai/icons/index.d.ts.map +1 -1
- package/esm/src/react/components/ai/icons/index.js +82 -0
- package/esm/src/react/components/ai/markdown.d.ts.map +1 -1
- package/esm/src/react/components/ai/markdown.js +12 -12
- package/esm/src/react/components/ai/model-selector.d.ts +10 -2
- package/esm/src/react/components/ai/model-selector.d.ts.map +1 -1
- package/esm/src/react/components/ai/model-selector.js +138 -4
- package/esm/src/react/components/ai/theme.d.ts +96 -13
- package/esm/src/react/components/ai/theme.d.ts.map +1 -1
- package/esm/src/react/components/ai/theme.js +177 -21
- package/esm/src/react/primitives/input-box.d.ts.map +1 -1
- package/esm/src/react/primitives/input-box.js +16 -3
- package/esm/src/rendering/cache/index.d.ts +1 -5
- package/esm/src/rendering/cache/index.d.ts.map +1 -1
- package/esm/src/rendering/cache/index.js +1 -5
- package/esm/src/rendering/component-handling.d.ts +2 -0
- package/esm/src/rendering/component-handling.d.ts.map +1 -1
- package/esm/src/rendering/component-handling.js +7 -9
- package/esm/src/rendering/orchestrator/pipeline.d.ts +11 -2
- package/esm/src/rendering/orchestrator/pipeline.d.ts.map +1 -1
- package/esm/src/rendering/page-renderer.d.ts.map +1 -1
- package/esm/src/rendering/page-renderer.js +1 -0
- package/esm/src/rendering/shared/context-aware-cache.d.ts.map +1 -1
- package/esm/src/rendering/shared/context-aware-cache.js +0 -4
- package/esm/src/repositories/schemas/index.d.ts +1 -1
- package/esm/src/repositories/schemas/index.d.ts.map +1 -1
- package/esm/src/repositories/schemas/index.js +1 -1
- package/esm/src/repositories/schemas/repository.schema.d.ts +0 -11
- package/esm/src/repositories/schemas/repository.schema.d.ts.map +1 -1
- package/esm/src/repositories/schemas/repository.schema.js +0 -13
- package/esm/src/repositories/types.d.ts +1 -1
- package/esm/src/repositories/types.d.ts.map +1 -1
- package/esm/src/routing/api/module-loader/esbuild-plugin.d.ts.map +1 -1
- package/esm/src/routing/api/module-loader/esbuild-plugin.js +11 -24
- package/esm/src/routing/api/module-loader/loader.d.ts +1 -0
- package/esm/src/routing/api/module-loader/loader.d.ts.map +1 -1
- package/esm/src/routing/api/module-loader/loader.js +347 -27
- package/esm/src/routing/api/openapi/path-utils.d.ts +0 -19
- package/esm/src/routing/api/openapi/path-utils.d.ts.map +1 -1
- package/esm/src/routing/api/openapi/path-utils.js +0 -34
- package/esm/src/routing/api/openapi/spec-generator.d.ts.map +1 -1
- package/esm/src/routing/api/openapi/spec-generator.js +1 -19
- package/esm/src/routing/api/openapi/types.d.ts +1 -0
- package/esm/src/routing/api/openapi/types.d.ts.map +1 -1
- package/esm/src/routing/api/openapi/types.js +18 -0
- package/esm/src/sandbox/sandbox.d.ts +1 -0
- package/esm/src/sandbox/sandbox.d.ts.map +1 -1
- package/esm/src/sandbox/sandbox.js +7 -8
- package/esm/src/security/http/cors/constants.d.ts +0 -2
- package/esm/src/security/http/cors/constants.d.ts.map +1 -1
- package/esm/src/security/http/cors/constants.js +0 -2
- package/esm/src/security/http/response/index.d.ts +3 -4
- package/esm/src/security/http/response/index.d.ts.map +1 -1
- package/esm/src/security/http/response/index.js +2 -3
- package/esm/src/server/context/enriched-context.d.ts +0 -8
- package/esm/src/server/context/enriched-context.d.ts.map +1 -1
- package/esm/src/server/context/enriched-context.js +1 -12
- package/esm/src/server/dev-server/server.d.ts.map +1 -1
- package/esm/src/server/dev-server/server.js +11 -4
- package/esm/src/server/dev-ui/manifest.d.ts +20 -20
- package/esm/src/server/dev-ui/manifest.js +20 -20
- package/esm/src/server/handlers/dev/framework-candidates.generated.d.ts +9 -0
- package/esm/src/server/handlers/dev/framework-candidates.generated.d.ts.map +1 -0
- package/esm/src/server/handlers/dev/framework-candidates.generated.js +5187 -0
- package/esm/src/server/handlers/dev/styles-candidate-scanner.d.ts.map +1 -1
- package/esm/src/server/handlers/dev/styles-candidate-scanner.js +3 -190
- package/esm/src/server/handlers/request/module/module-server-handler.d.ts.map +1 -1
- package/esm/src/server/handlers/request/module/module-server-handler.js +1 -0
- package/esm/src/server/runtime-handler/index.d.ts.map +1 -1
- package/esm/src/server/runtime-handler/index.js +14 -24
- package/esm/src/server/shared/renderer/memory/pressure.d.ts +0 -7
- package/esm/src/server/shared/renderer/memory/pressure.d.ts.map +1 -1
- package/esm/src/server/shared/renderer/memory/pressure.js +1 -13
- package/esm/src/server/utils/domain-lookup.d.ts +0 -4
- package/esm/src/server/utils/domain-lookup.d.ts.map +1 -1
- package/esm/src/server/utils/domain-lookup.js +0 -3
- package/esm/src/skill/allowed-tools.d.ts +54 -0
- package/esm/src/skill/allowed-tools.d.ts.map +1 -0
- package/esm/src/skill/allowed-tools.js +87 -0
- package/esm/src/skill/executor.d.ts +28 -0
- package/esm/src/skill/executor.d.ts.map +1 -0
- package/esm/src/skill/executor.js +187 -0
- package/esm/src/skill/index.d.ts +19 -0
- package/esm/src/skill/index.d.ts.map +1 -0
- package/esm/src/skill/index.js +24 -0
- package/esm/src/skill/parser.d.ts +30 -0
- package/esm/src/skill/parser.d.ts.map +1 -0
- package/esm/src/skill/parser.js +162 -0
- package/esm/src/skill/path-safety.d.ts +22 -0
- package/esm/src/skill/path-safety.d.ts.map +1 -0
- package/esm/src/skill/path-safety.js +156 -0
- package/esm/src/skill/prompt-augmentation.d.ts +19 -0
- package/esm/src/skill/prompt-augmentation.d.ts.map +1 -0
- package/esm/src/skill/prompt-augmentation.js +36 -0
- package/esm/src/skill/registry.d.ts +25 -0
- package/esm/src/skill/registry.d.ts.map +1 -0
- package/esm/src/skill/registry.js +42 -0
- package/esm/src/skill/tools.d.ts +27 -0
- package/esm/src/skill/tools.d.ts.map +1 -0
- package/esm/src/skill/tools.js +149 -0
- package/esm/src/skill/types.d.ts +85 -0
- package/esm/src/skill/types.d.ts.map +1 -0
- package/esm/src/skill/types.js +27 -0
- package/esm/src/studio/bridge/bridge-bundle.generated.d.ts +1 -1
- package/esm/src/studio/bridge/bridge-bundle.generated.d.ts.map +1 -1
- package/esm/src/studio/bridge/bridge-bundle.generated.js +1 -1
- package/esm/src/studio/element-selector-injector.d.ts +0 -2
- package/esm/src/studio/element-selector-injector.d.ts.map +1 -1
- package/esm/src/task/runner.d.ts +6 -0
- package/esm/src/task/runner.d.ts.map +1 -1
- package/esm/src/task/runner.js +8 -8
- package/esm/src/tool/factory.js +31 -39
- package/esm/src/transforms/esm/http-cache-helpers.d.ts +0 -8
- package/esm/src/transforms/esm/http-cache-helpers.d.ts.map +1 -1
- package/esm/src/transforms/esm/http-cache-helpers.js +0 -20
- package/esm/src/transforms/esm/path-resolver.d.ts +0 -14
- package/esm/src/transforms/esm/path-resolver.d.ts.map +1 -1
- package/esm/src/transforms/esm/path-resolver.js +1 -92
- package/esm/src/transforms/esm/source-url-embed.d.ts +0 -14
- package/esm/src/transforms/esm/source-url-embed.d.ts.map +1 -1
- package/esm/src/transforms/esm/source-url-embed.js +0 -47
- package/esm/src/transforms/esm/transform-cache.d.ts.map +1 -1
- package/esm/src/transforms/esm/transform-cache.js +2 -6
- package/esm/src/transforms/mdx/index.d.ts +0 -1
- package/esm/src/transforms/mdx/index.d.ts.map +1 -1
- package/esm/src/transforms/mdx/index.js +0 -4
- package/esm/src/transforms/pipeline/context.d.ts +0 -1
- package/esm/src/transforms/pipeline/context.d.ts.map +1 -1
- package/esm/src/transforms/pipeline/context.js +0 -1
- package/esm/src/transforms/pipeline/index.d.ts +1 -2
- package/esm/src/transforms/pipeline/index.d.ts.map +1 -1
- package/esm/src/transforms/pipeline/index.js +0 -3
- package/esm/src/transforms/pipeline/stages/ssr-http-cache.d.ts.map +1 -1
- package/esm/src/transforms/pipeline/stages/ssr-http-cache.js +0 -1
- package/esm/src/transforms/plugins/rehype-node-positions.d.ts.map +1 -1
- package/esm/src/transforms/plugins/rehype-node-positions.js +1 -0
- package/esm/src/types/entities/getEntityInfo.js +1 -1
- package/esm/src/types/index.d.ts +2 -13
- package/esm/src/types/index.d.ts.map +1 -1
- package/esm/src/types/server.d.ts +2 -1
- package/esm/src/types/server.d.ts.map +1 -1
- package/esm/src/utils/cache-file-ops.d.ts +1 -1
- package/esm/src/utils/cache-file-ops.d.ts.map +1 -1
- package/esm/src/utils/cache-file-ops.js +5 -6
- package/esm/src/utils/lru-wrapper.d.ts.map +1 -1
- package/esm/src/utils/lru-wrapper.js +2 -4
- package/esm/src/workflow/claude-code/event-publisher.d.ts +0 -4
- package/esm/src/workflow/claude-code/event-publisher.d.ts.map +1 -1
- package/esm/src/workflow/claude-code/event-publisher.js +2 -6
- package/esm/src/workflow/executor/workflow-executor.d.ts.map +1 -1
- package/esm/src/workflow/executor/workflow-executor.js +6 -1
- package/esm/src/workflow/react/use-workflow-list.d.ts.map +1 -1
- package/esm/src/workflow/react/use-workflow-list.js +2 -1
- package/esm/src/workflow/schemas/workflow.schema.d.ts +8 -8
- package/package.json +10 -3
- package/src/cli/app/components/inline-input.ts +0 -5
- package/src/cli/app/components/list-select.ts +0 -21
- package/src/cli/app/operations/project-creation.ts +4 -109
- package/src/cli/app/shell.ts +2 -2
- package/src/cli/app/utils.ts +0 -22
- package/src/cli/app/views/dashboard.ts +0 -17
- package/src/cli/app/views/startup.ts +0 -13
- package/src/cli/auth/login.ts +1 -2
- package/src/cli/auth/token-store.ts +1 -1
- package/src/cli/auth/utils.ts +2 -1
- package/src/cli/commands/generate/integration-generator.ts +1 -1
- package/src/cli/commands/init/catalog.ts +3 -3
- package/src/cli/commands/init/command-help.ts +2 -2
- package/src/cli/commands/init/config-generator.ts +9 -0
- package/src/cli/commands/init/types.ts +1 -1
- package/src/cli/help/formatters.ts +11 -4
- package/src/cli/help/main-help.ts +2 -3
- package/src/cli/help/tips.ts +1 -1
- package/src/cli/mcp/remote-file-tools.ts +1 -1
- package/src/cli/mcp/server.ts +2 -5
- package/src/cli/mcp/tools/catalog-tools.ts +3 -3
- package/src/cli/mcp/tools/dev-tools.ts +1 -2
- package/src/cli/mcp/tools.ts +8 -2
- package/src/cli/shared/reserve-slug.ts +1 -4
- package/src/cli/sync/ignore.ts +26 -21
- package/src/cli/templates/index.ts +2 -2
- package/src/cli/templates/manifest.js +15 -13
- package/src/cli/templates/types.ts +1 -1
- package/src/cli/ui/colors.ts +0 -12
- package/src/cli/ui/dot-matrix.ts +3 -6
- package/src/cli/ui/tui.ts +3 -3
- package/src/cli/utils/index.ts +1 -1
- package/src/cli/utils/package-manager.ts +3 -4
- package/src/deno.js +30 -20
- package/src/src/agent/chat-handler.ts +138 -28
- package/src/src/agent/factory.ts +58 -9
- package/src/src/agent/index.ts +24 -2
- package/src/src/agent/memory/memory.ts +0 -9
- package/src/src/agent/react/index.ts +2 -0
- package/src/src/agent/react/use-chat/index.ts +2 -0
- package/src/src/agent/react/use-chat/streaming/handler.ts +66 -5
- package/src/src/agent/react/use-chat/streaming/parts-builder.ts +18 -1
- package/src/src/agent/react/use-chat/streaming/types.ts +6 -0
- package/src/src/agent/react/use-chat/types.ts +26 -1
- package/src/src/agent/react/use-chat/use-chat.ts +245 -36
- package/src/src/agent/runtime/index.ts +213 -35
- package/src/src/agent/runtime/tool-helpers.ts +9 -0
- package/src/src/agent/types.ts +10 -0
- package/src/src/ai/registry-manager.ts +2 -1
- package/src/src/build/bundler/code-splitter/manifest-builder.ts +1 -1
- package/src/src/build/compiler/mdx-compiler/validator.ts +3 -7
- package/src/src/build/compiler/mdx-to-js.ts +0 -101
- package/src/src/build/index.ts +0 -8
- package/src/src/build/production-build/build/route-collector.ts +2 -4
- package/src/src/build/production-build/client-runtime.ts +21 -5
- package/src/src/build/production-build/templates.ts +9 -18
- package/src/src/build/vendor-cache.ts +0 -6
- package/src/src/cache/tokenizing-gateway.ts +1 -9
- package/src/src/chat/index.ts +169 -34
- package/src/src/config/define-config.ts +30 -29
- package/src/src/config/loader.ts +10 -9
- package/src/src/config/schemas/config.schema.ts +12 -0
- package/src/src/data/data-fetcher.ts +15 -21
- package/src/src/data/server-data-fetcher.ts +1 -8
- package/src/src/data/static-data-fetcher.ts +1 -6
- package/src/src/discovery/discovery-engine.ts +27 -0
- package/src/src/discovery/discovery-utils.ts +0 -7
- package/src/src/discovery/file-discovery.ts +3 -9
- package/src/src/discovery/handlers/index.ts +1 -0
- package/src/src/discovery/handlers/skill-handler.ts +123 -0
- package/src/src/discovery/handlers/task-handler.ts +1 -5
- package/src/src/discovery/transpiler.ts +7 -2
- package/src/src/discovery/types.ts +3 -0
- package/src/src/embedding/chunk.ts +60 -0
- package/src/src/embedding/embedding.ts +62 -0
- package/src/src/embedding/index.ts +49 -0
- package/src/src/embedding/react/use-uploads.ts +101 -0
- package/src/src/embedding/resolve.ts +126 -0
- package/src/src/embedding/types.ts +103 -0
- package/src/src/embedding/upload-handler.ts +180 -0
- package/src/src/embedding/upload-loader.ts +76 -0
- package/src/src/embedding/upload-store.ts +299 -0
- package/src/src/embedding/vector-store.ts +282 -0
- package/src/src/errors/error-registry.ts +2 -2
- package/src/src/errors/http-error.ts +7 -3
- package/src/src/errors/middleware/cli-error-boundary.ts +28 -2
- package/src/src/errors/middleware/wrap-unknown.ts +0 -10
- package/src/src/errors/veryfront-error.ts +0 -9
- package/src/src/html/styles-builder/css-hash-cache.ts +5 -2
- package/src/src/html/styles-builder/plugin-loader.ts +58 -21
- package/src/src/html/styles-builder/tailwind-compiler-cache.ts +11 -4
- package/src/src/html/utils.ts +0 -33
- package/src/src/modules/component-registry/registry.ts +0 -3
- package/src/src/modules/import-map/default-import-map.ts +10 -0
- package/src/src/modules/react-loader/component-loader.ts +1 -0
- package/src/src/modules/react-loader/ssr-module-loader/loader.ts +12 -1
- package/src/src/modules/react-loader/ssr-module-loader/types.ts +2 -0
- package/src/src/modules/react-loader/types.ts +2 -0
- package/src/src/modules/server/module-server.ts +4 -1
- package/src/src/modules/server/websocket-handler.ts +1 -1
- package/src/src/oauth/handlers/callback-handler.ts +17 -5
- package/src/src/oauth/providers/base.ts +3 -3
- package/src/src/oauth/providers/common.ts +0 -23
- package/src/src/observability/auto-instrument/react-instrumentation.ts +2 -2
- package/src/src/observability/instruments/instruments-factory.ts +6 -6
- package/src/src/observability/metrics/config.ts +5 -5
- package/src/src/observability/metrics/manager.ts +1 -1
- package/src/src/observability/tracing/span-operations.ts +14 -9
- package/src/src/platform/compat/console/node.ts +4 -14
- package/src/src/platform/compat/fs.ts +14 -3
- package/src/src/platform/compat/opaque-deps.ts +32 -2
- package/src/src/platform/compat/path/basic-operations.ts +19 -10
- package/src/src/platform/compat/path/resolution.ts +69 -18
- package/src/src/platform/compat/path/url-conversion.ts +10 -6
- package/src/src/platform/compat/process.ts +133 -76
- package/src/src/provider/index.ts +1 -0
- package/src/src/provider/local/ai-sdk-adapter.ts +40 -37
- package/src/src/provider/local/env.ts +4 -1
- package/src/src/provider/local/local-embedding-adapter.ts +37 -0
- package/src/src/provider/local/local-embedding-engine.ts +88 -0
- package/src/src/provider/local/local-engine.ts +1 -1
- package/src/src/provider/local/model-catalog.ts +67 -1
- package/src/src/provider/model-registry.ts +47 -0
- package/src/src/proxy/retry.ts +0 -9
- package/src/src/proxy/tracing.ts +1 -9
- package/src/src/react/components/ai/agent-card.tsx +13 -13
- package/src/src/react/components/ai/chat/components/animations.tsx +31 -1
- package/src/src/react/components/ai/chat/components/attachment-pill.tsx +110 -0
- package/src/src/react/components/ai/chat/components/branch-picker.tsx +70 -0
- package/src/src/react/components/ai/chat/components/code-block.tsx +82 -0
- package/src/src/react/components/ai/chat/components/drop-zone.tsx +49 -0
- package/src/src/react/components/ai/chat/components/empty-state.tsx +20 -8
- package/src/src/react/components/ai/chat/components/inference-badge.tsx +1 -1
- package/src/src/react/components/ai/chat/components/inline-citation.tsx +150 -0
- package/src/src/react/components/ai/chat/components/message-actions.tsx +73 -51
- package/src/src/react/components/ai/chat/components/message-edit-form.tsx +95 -0
- package/src/src/react/components/ai/chat/components/message-feedback.tsx +72 -0
- package/src/src/react/components/ai/chat/components/quick-actions.tsx +38 -0
- package/src/src/react/components/ai/chat/components/reasoning.tsx +40 -35
- package/src/src/react/components/ai/chat/components/sidebar.tsx +204 -0
- package/src/src/react/components/ai/chat/components/skill-badge.tsx +51 -0
- package/src/src/react/components/ai/chat/components/sources.tsx +99 -0
- package/src/src/react/components/ai/chat/components/step-indicator.tsx +33 -0
- package/src/src/react/components/ai/chat/components/tab-switcher.tsx +69 -0
- package/src/src/react/components/ai/chat/components/tool-ui.tsx +31 -29
- package/src/src/react/components/ai/chat/components/upgrade-cta.tsx +3 -4
- package/src/src/react/components/ai/chat/components/uploads-panel.tsx +129 -0
- package/src/src/react/components/ai/chat/composition/api.tsx +12 -62
- package/src/src/react/components/ai/chat/composition/chat-composer.tsx +205 -0
- package/src/src/react/components/ai/chat/composition/chat-empty.tsx +77 -0
- package/src/src/react/components/ai/chat/composition/chat-if.tsx +25 -0
- package/src/src/react/components/ai/chat/composition/chat-message-list.tsx +356 -0
- package/src/src/react/components/ai/chat/composition/chat-root.tsx +181 -0
- package/src/src/react/components/ai/chat/composition/error-banner.tsx +38 -0
- package/src/src/react/components/ai/chat/composition/message.tsx +337 -0
- package/src/src/react/components/ai/chat/composition/model-avatar.tsx +103 -0
- package/src/src/react/components/ai/chat/contexts/chat-context.tsx +78 -0
- package/src/src/react/components/ai/chat/contexts/composer-context.tsx +59 -0
- package/src/src/react/components/ai/chat/contexts/index.ts +36 -0
- package/src/src/react/components/ai/chat/contexts/message-context.tsx +49 -0
- package/src/src/react/components/ai/chat/contexts/thread-list-context.tsx +40 -0
- package/src/src/react/components/ai/chat/hooks/use-threads.ts +208 -0
- package/src/src/react/components/ai/chat/index.tsx +389 -230
- package/src/src/react/components/ai/chat/utils/export.ts +77 -0
- package/src/src/react/components/ai/chat/utils/message-parts.ts +63 -1
- package/src/src/react/components/ai/chat-with-sidebar.tsx +371 -0
- package/src/src/react/components/ai/chat.tsx +122 -7
- package/src/src/react/components/ai/error-boundary.tsx +6 -6
- package/src/src/react/components/ai/icons/index.ts +100 -0
- package/src/src/react/components/ai/markdown.tsx +12 -15
- package/src/src/react/components/ai/model-selector.tsx +223 -15
- package/src/src/react/components/ai/theme.ts +205 -39
- package/src/src/react/primitives/input-box.tsx +27 -4
- package/src/src/rendering/cache/index.ts +12 -5
- package/src/src/rendering/component-handling.ts +9 -9
- package/src/src/rendering/orchestrator/pipeline.ts +12 -2
- package/src/src/rendering/page-renderer.ts +1 -0
- package/src/src/rendering/renderer.ts +1 -1
- package/src/src/rendering/shared/context-aware-cache.ts +0 -5
- package/src/src/repositories/schemas/index.ts +0 -2
- package/src/src/repositories/schemas/repository.schema.ts +0 -15
- package/src/src/repositories/types.ts +1 -6
- package/src/src/routing/api/module-loader/esbuild-plugin.ts +11 -25
- package/src/src/routing/api/module-loader/loader.ts +421 -17
- package/src/src/routing/api/openapi/path-utils.ts +0 -39
- package/src/src/routing/api/openapi/spec-generator.ts +1 -20
- package/src/src/routing/api/openapi/types.ts +20 -0
- package/src/src/sandbox/sandbox.ts +8 -8
- package/src/src/security/http/cors/constants.ts +0 -4
- package/src/src/security/http/response/index.ts +3 -9
- package/src/src/server/context/enriched-context.ts +1 -19
- package/src/src/server/dev-server/server.ts +11 -4
- package/src/src/server/dev-ui/manifest.js +20 -20
- package/src/src/server/handlers/dev/framework-candidates.generated.ts +5188 -0
- package/src/src/server/handlers/dev/styles-candidate-scanner.ts +3 -191
- package/src/src/server/handlers/request/module/module-server-handler.ts +1 -0
- package/src/src/server/runtime-handler/index.ts +17 -28
- package/src/src/server/shared/renderer/memory/pressure.ts +2 -15
- package/src/src/server/utils/domain-lookup.ts +0 -4
- package/src/src/skill/allowed-tools.ts +107 -0
- package/src/src/skill/executor.ts +215 -0
- package/src/src/skill/index.ts +60 -0
- package/src/src/skill/parser.ts +214 -0
- package/src/src/skill/path-safety.ts +203 -0
- package/src/src/skill/prompt-augmentation.ts +48 -0
- package/src/src/skill/registry.ts +51 -0
- package/src/src/skill/tools.ts +197 -0
- package/src/src/skill/types.ts +107 -0
- package/src/src/studio/bridge/bridge-bundle.generated.ts +1 -1
- package/src/src/studio/element-selector-injector.ts +0 -2
- package/src/src/task/runner.ts +10 -8
- package/src/src/tool/factory.ts +54 -54
- package/src/src/transforms/esm/http-cache-helpers.ts +0 -20
- package/src/src/transforms/esm/path-resolver.ts +1 -140
- package/src/src/transforms/esm/source-url-embed.ts +0 -53
- package/src/src/transforms/esm/transform-cache.ts +3 -7
- package/src/src/transforms/mdx/index.ts +0 -5
- package/src/src/transforms/pipeline/context.ts +0 -2
- package/src/src/transforms/pipeline/index.ts +0 -4
- package/src/src/transforms/pipeline/stages/ssr-http-cache.ts +0 -1
- package/src/src/transforms/plugins/rehype-node-positions.ts +1 -0
- package/src/src/types/entities/getEntityInfo.ts +1 -1
- package/src/src/types/index.ts +1 -20
- package/src/src/types/server.ts +1 -1
- package/src/src/utils/cache-file-ops.ts +5 -5
- package/src/src/utils/logger/logger.ts +2 -2
- package/src/src/utils/lru-wrapper.ts +2 -8
- package/src/src/workflow/claude-code/event-publisher.ts +13 -4
- package/src/src/workflow/executor/workflow-executor.ts +7 -2
- package/src/src/workflow/react/use-workflow-list.ts +3 -2
- package/esm/src/transforms/mdx/parser.d.ts +0 -4
- package/esm/src/transforms/mdx/parser.d.ts.map +0 -1
- package/esm/src/transforms/mdx/parser.js +0 -49
- package/src/src/transforms/mdx/parser.ts +0 -65
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Skill Script Executor
|
|
3
|
+
*
|
|
4
|
+
* Executes skill scripts using cross-runtime subprocess execution.
|
|
5
|
+
*
|
|
6
|
+
* @module
|
|
7
|
+
*/
|
|
8
|
+
import * as dntShim from "../../_dnt.shims.js";
|
|
9
|
+
import { getEnv, runCommand } from "../platform/compat/process.js";
|
|
10
|
+
import { isDeno } from "../platform/compat/runtime.js";
|
|
11
|
+
import { extname } from "../platform/compat/path/index.js";
|
|
12
|
+
import { readTextFile } from "../platform/compat/fs.js";
|
|
13
|
+
import { createError, toError } from "../errors/veryfront-error.js";
|
|
14
|
+
const DEFAULT_SCRIPT_TIMEOUT_MS = 60_000;
|
|
15
|
+
const MAX_SCRIPT_TIMEOUT_MS = 300_000;
|
|
16
|
+
const TIMEOUT_EXIT_CODE = 124;
|
|
17
|
+
const ENV_KEY_REGEX = /^[A-Za-z_][A-Za-z0-9_]*$/;
|
|
18
|
+
const TIMEOUT_SENTINEL = Symbol("skill-script-timeout");
|
|
19
|
+
function resolveTimeoutMs(timeoutMs) {
|
|
20
|
+
if (timeoutMs === undefined || !Number.isFinite(timeoutMs) || timeoutMs <= 0) {
|
|
21
|
+
return DEFAULT_SCRIPT_TIMEOUT_MS;
|
|
22
|
+
}
|
|
23
|
+
return Math.min(Math.floor(timeoutMs), MAX_SCRIPT_TIMEOUT_MS);
|
|
24
|
+
}
|
|
25
|
+
async function withTimeout(promise, timeoutMs) {
|
|
26
|
+
let timeoutId;
|
|
27
|
+
const timeoutPromise = new Promise((resolve) => {
|
|
28
|
+
timeoutId = dntShim.setTimeout(() => resolve(TIMEOUT_SENTINEL), timeoutMs);
|
|
29
|
+
});
|
|
30
|
+
try {
|
|
31
|
+
return await Promise.race([promise, timeoutPromise]);
|
|
32
|
+
}
|
|
33
|
+
finally {
|
|
34
|
+
if (timeoutId)
|
|
35
|
+
clearTimeout(timeoutId);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
function timeoutResult(timeoutMs) {
|
|
39
|
+
return {
|
|
40
|
+
stdout: "",
|
|
41
|
+
stderr: `Script execution timed out after ${timeoutMs}ms`,
|
|
42
|
+
exitCode: TIMEOUT_EXIT_CODE,
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
function shellEscapeArg(value) {
|
|
46
|
+
return `'${value.replaceAll("'", "'\"'\"'")}'`;
|
|
47
|
+
}
|
|
48
|
+
function buildShellCommand(parts) {
|
|
49
|
+
return parts.map(shellEscapeArg).join(" ");
|
|
50
|
+
}
|
|
51
|
+
function formatEnvAssignments(env) {
|
|
52
|
+
if (!env)
|
|
53
|
+
return [];
|
|
54
|
+
return Object.entries(env).map(([key, value]) => {
|
|
55
|
+
if (!ENV_KEY_REGEX.test(key)) {
|
|
56
|
+
throw toError(createError({
|
|
57
|
+
type: "agent",
|
|
58
|
+
message: `Invalid environment variable name: "${key}"`,
|
|
59
|
+
}));
|
|
60
|
+
}
|
|
61
|
+
return `${key}=${value}`;
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
function createSandboxScriptPath(scriptPath) {
|
|
65
|
+
const ext = extname(scriptPath) || ".sh";
|
|
66
|
+
const suffix = Math.random().toString(36).slice(2, 10);
|
|
67
|
+
return `/tmp/veryfront-skill-script-${Date.now()}-${suffix}${ext}`;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Detect the runtime command for a script based on file extension.
|
|
71
|
+
*/
|
|
72
|
+
export function detectRuntime(scriptPath) {
|
|
73
|
+
const ext = extname(scriptPath).toLowerCase();
|
|
74
|
+
switch (ext) {
|
|
75
|
+
case ".py":
|
|
76
|
+
return { command: "python3", args: [scriptPath] };
|
|
77
|
+
case ".sh":
|
|
78
|
+
return { command: "bash", args: [scriptPath] };
|
|
79
|
+
case ".js":
|
|
80
|
+
return { command: "node", args: [scriptPath] };
|
|
81
|
+
case ".ts":
|
|
82
|
+
if (isDeno) {
|
|
83
|
+
return {
|
|
84
|
+
command: "deno",
|
|
85
|
+
args: ["run", "--allow-read", "--allow-env", "--allow-net", "--allow-write", scriptPath],
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
return { command: "npx", args: ["tsx", scriptPath] };
|
|
89
|
+
default:
|
|
90
|
+
return { command: scriptPath, args: [] };
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Local script executor using runCommand() from the compat layer.
|
|
95
|
+
*/
|
|
96
|
+
export class LocalScriptExecutor {
|
|
97
|
+
async execute(input) {
|
|
98
|
+
const timeoutMs = resolveTimeoutMs(input.timeoutMs);
|
|
99
|
+
const { command, args: runtimeArgs } = detectRuntime(input.scriptPath);
|
|
100
|
+
const allArgs = [...runtimeArgs, ...(input.args ?? [])];
|
|
101
|
+
// Remove the script path from args if it's already the command
|
|
102
|
+
const finalArgs = command === input.scriptPath ? (input.args ?? []) : allArgs;
|
|
103
|
+
const result = await runCommand(command, {
|
|
104
|
+
args: finalArgs,
|
|
105
|
+
cwd: input.cwd,
|
|
106
|
+
env: input.env,
|
|
107
|
+
capture: true,
|
|
108
|
+
timeoutMs,
|
|
109
|
+
});
|
|
110
|
+
return {
|
|
111
|
+
stdout: result.stdout ?? "",
|
|
112
|
+
stderr: result.stderr ?? "",
|
|
113
|
+
exitCode: result.code,
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Cloud script executor using sandbox.
|
|
119
|
+
* Requires SANDBOX_AUTH_TOKEN environment variable.
|
|
120
|
+
*/
|
|
121
|
+
export class CloudScriptExecutor {
|
|
122
|
+
async execute(input) {
|
|
123
|
+
const timeoutMs = resolveTimeoutMs(input.timeoutMs);
|
|
124
|
+
// NOTE: In SSR contexts, getEnv() reads through the project-env overlay
|
|
125
|
+
// (AsyncLocalStorage-backed). If the token is set at host level only,
|
|
126
|
+
// the overlay may not surface it. Ensure SANDBOX_AUTH_TOKEN is available
|
|
127
|
+
// in the request-scoped environment when running under SSR.
|
|
128
|
+
const authToken = getEnv("SANDBOX_AUTH_TOKEN");
|
|
129
|
+
if (!authToken) {
|
|
130
|
+
throw toError(createError({
|
|
131
|
+
type: "agent",
|
|
132
|
+
message: "Cloud script execution requires SANDBOX_AUTH_TOKEN environment variable",
|
|
133
|
+
}));
|
|
134
|
+
}
|
|
135
|
+
// Lazy import to avoid bundling sandbox in non-cloud environments
|
|
136
|
+
const { Sandbox } = await import("../sandbox/index.js");
|
|
137
|
+
const sandbox = await Sandbox.create({ authToken });
|
|
138
|
+
try {
|
|
139
|
+
const sandboxScriptPath = createSandboxScriptPath(input.scriptPath);
|
|
140
|
+
const scriptContent = input.scriptContent ?? await readTextFile(input.scriptPath);
|
|
141
|
+
await sandbox.writeFiles([{ path: sandboxScriptPath, content: scriptContent }]);
|
|
142
|
+
await sandbox.executeCommand(buildShellCommand(["chmod", "+x", sandboxScriptPath]));
|
|
143
|
+
const { command, args: runtimeArgs } = detectRuntime(sandboxScriptPath);
|
|
144
|
+
const allArgs = [...runtimeArgs, ...(input.args ?? [])];
|
|
145
|
+
const finalArgs = command === sandboxScriptPath ? (input.args ?? []) : allArgs;
|
|
146
|
+
const envAssignments = formatEnvAssignments(input.env);
|
|
147
|
+
const commandParts = envAssignments.length > 0
|
|
148
|
+
? ["env", ...envAssignments, command, ...finalArgs]
|
|
149
|
+
: [command, ...finalArgs];
|
|
150
|
+
const cmdString = buildShellCommand(commandParts);
|
|
151
|
+
const commandPromise = sandbox.executeCommand(cmdString);
|
|
152
|
+
const result = await withTimeout(commandPromise, timeoutMs);
|
|
153
|
+
if (result === TIMEOUT_SENTINEL) {
|
|
154
|
+
// Kill any running processes before returning — withTimeout only
|
|
155
|
+
// races the timer, it doesn't terminate the sandbox command.
|
|
156
|
+
try {
|
|
157
|
+
await sandbox.executeCommand("kill -9 -1 2>/dev/null || true");
|
|
158
|
+
}
|
|
159
|
+
catch {
|
|
160
|
+
// Best-effort kill; sandbox.close() in finally will clean up.
|
|
161
|
+
}
|
|
162
|
+
return timeoutResult(timeoutMs);
|
|
163
|
+
}
|
|
164
|
+
return {
|
|
165
|
+
stdout: result.stdout,
|
|
166
|
+
stderr: result.stderr,
|
|
167
|
+
exitCode: result.exitCode,
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
finally {
|
|
171
|
+
try {
|
|
172
|
+
await sandbox.close();
|
|
173
|
+
}
|
|
174
|
+
catch {
|
|
175
|
+
// Best-effort cleanup.
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Get the appropriate script executor.
|
|
182
|
+
* Checks SANDBOX_AUTH_TOKEN on every call so request-scoped env overlays
|
|
183
|
+
* (e.g. project-env AsyncLocalStorage) are respected.
|
|
184
|
+
*/
|
|
185
|
+
export function getSkillScriptExecutor() {
|
|
186
|
+
return getEnv("SANDBOX_AUTH_TOKEN") ? new CloudScriptExecutor() : new LocalScriptExecutor();
|
|
187
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent Skills
|
|
3
|
+
*
|
|
4
|
+
* Public API for the agent skills system.
|
|
5
|
+
* Skills are project-level capabilities defined as SKILL.md files
|
|
6
|
+
* following the agentskills.io specification.
|
|
7
|
+
*
|
|
8
|
+
* @module
|
|
9
|
+
*/
|
|
10
|
+
export type { ActiveSkillContext, Skill, SkillContent, SkillMetadata, SkillScriptExecutor, SkillScriptExecutorInput, SkillScriptResult, } from "./types.js";
|
|
11
|
+
export { SKILL_ALLOWED_TOOL_PATTERN_REGEX, SKILL_ASSETS_DIR, SKILL_DESCRIPTION_MAX_LENGTH, SKILL_MD_FILENAME, SKILL_NAME_REGEX, SKILL_REFERENCES_DIR, SKILL_SCRIPTS_DIR, SKILL_TOOL_IDS, } from "./types.js";
|
|
12
|
+
export { getAllSkills, getSkill, registerSkill, skillRegistry } from "./registry.js";
|
|
13
|
+
export { parseSkillFrontmatter, validateSkillMetadata } from "./parser.js";
|
|
14
|
+
export { listSkillSubdir, validateSkillPath } from "./path-safety.js";
|
|
15
|
+
export { createExecuteSkillScriptTool, createLoadSkillReferenceTool, createLoadSkillTool, } from "./tools.js";
|
|
16
|
+
export { getSkillScriptExecutor } from "./executor.js";
|
|
17
|
+
export { buildSkillManifestPrompt } from "./prompt-augmentation.js";
|
|
18
|
+
export { filterToolsForSkill, isToolAllowedBySkill, validateAllowedToolPatterns, } from "./allowed-tools.js";
|
|
19
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/src/skill/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,YAAY,EACV,kBAAkB,EAClB,KAAK,EACL,YAAY,EACZ,aAAa,EACb,mBAAmB,EACnB,wBAAwB,EACxB,iBAAiB,GAClB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,gCAAgC,EAChC,gBAAgB,EAChB,4BAA4B,EAC5B,iBAAiB,EACjB,gBAAgB,EAChB,oBAAoB,EACpB,iBAAiB,EACjB,cAAc,GACf,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAGrF,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAG3E,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAGtE,OAAO,EACL,4BAA4B,EAC5B,4BAA4B,EAC5B,mBAAmB,GACpB,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AAGvD,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAGpE,OAAO,EACL,mBAAmB,EACnB,oBAAoB,EACpB,2BAA2B,GAC5B,MAAM,oBAAoB,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent Skills
|
|
3
|
+
*
|
|
4
|
+
* Public API for the agent skills system.
|
|
5
|
+
* Skills are project-level capabilities defined as SKILL.md files
|
|
6
|
+
* following the agentskills.io specification.
|
|
7
|
+
*
|
|
8
|
+
* @module
|
|
9
|
+
*/
|
|
10
|
+
export { SKILL_ALLOWED_TOOL_PATTERN_REGEX, SKILL_ASSETS_DIR, SKILL_DESCRIPTION_MAX_LENGTH, SKILL_MD_FILENAME, SKILL_NAME_REGEX, SKILL_REFERENCES_DIR, SKILL_SCRIPTS_DIR, SKILL_TOOL_IDS, } from "./types.js";
|
|
11
|
+
// Registry
|
|
12
|
+
export { getAllSkills, getSkill, registerSkill, skillRegistry } from "./registry.js";
|
|
13
|
+
// Parser
|
|
14
|
+
export { parseSkillFrontmatter, validateSkillMetadata } from "./parser.js";
|
|
15
|
+
// Path Safety
|
|
16
|
+
export { listSkillSubdir, validateSkillPath } from "./path-safety.js";
|
|
17
|
+
// Tools
|
|
18
|
+
export { createExecuteSkillScriptTool, createLoadSkillReferenceTool, createLoadSkillTool, } from "./tools.js";
|
|
19
|
+
// Executor
|
|
20
|
+
export { getSkillScriptExecutor } from "./executor.js";
|
|
21
|
+
// Prompt
|
|
22
|
+
export { buildSkillManifestPrompt } from "./prompt-augmentation.js";
|
|
23
|
+
// Allowed-Tools
|
|
24
|
+
export { filterToolsForSkill, isToolAllowedBySkill, validateAllowedToolPatterns, } from "./allowed-tools.js";
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Skill frontmatter parser
|
|
3
|
+
*
|
|
4
|
+
* Parses SKILL.md files with YAML frontmatter.
|
|
5
|
+
* Primary parser: gray-matter shim (#std/front-matter/yaml.ts)
|
|
6
|
+
* Fallback: regex + line-by-line parser
|
|
7
|
+
*
|
|
8
|
+
* @module
|
|
9
|
+
*/
|
|
10
|
+
import { type SkillMetadata } from "./types.js";
|
|
11
|
+
/** Result of parsing a SKILL.md file */
|
|
12
|
+
export interface ParsedSkillContent {
|
|
13
|
+
frontmatter: Record<string, unknown>;
|
|
14
|
+
body: string;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Parse SKILL.md content into frontmatter + body.
|
|
18
|
+
*
|
|
19
|
+
* Uses gray-matter shim as primary parser with a regex fallback
|
|
20
|
+
* for environments where gray-matter is not available.
|
|
21
|
+
*/
|
|
22
|
+
export declare function parseSkillFrontmatter(content: string): Promise<ParsedSkillContent>;
|
|
23
|
+
/**
|
|
24
|
+
* Validate and normalize parsed frontmatter into SkillMetadata.
|
|
25
|
+
*
|
|
26
|
+
* @param frontmatter - Parsed frontmatter object
|
|
27
|
+
* @param directoryName - Directory name used as fallback for skill name
|
|
28
|
+
*/
|
|
29
|
+
export declare function validateSkillMetadata(frontmatter: Record<string, unknown>, directoryName: string): SkillMetadata;
|
|
30
|
+
//# sourceMappingURL=parser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../../src/src/skill/parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAIL,KAAK,aAAa,EACnB,MAAM,YAAY,CAAC;AAEpB,wCAAwC;AACxC,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;GAKG;AACH,wBAAsB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAYxF;AA+BD;;;;;GAKG;AACH,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACpC,aAAa,EAAE,MAAM,GACpB,aAAa,CAiDf"}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Skill frontmatter parser
|
|
3
|
+
*
|
|
4
|
+
* Parses SKILL.md files with YAML frontmatter.
|
|
5
|
+
* Primary parser: gray-matter shim (#std/front-matter/yaml.ts)
|
|
6
|
+
* Fallback: regex + line-by-line parser
|
|
7
|
+
*
|
|
8
|
+
* @module
|
|
9
|
+
*/
|
|
10
|
+
import { createError, toError } from "../errors/veryfront-error.js";
|
|
11
|
+
import { SKILL_ALLOWED_TOOL_PATTERN_REGEX, SKILL_DESCRIPTION_MAX_LENGTH, SKILL_NAME_REGEX, } from "./types.js";
|
|
12
|
+
/**
|
|
13
|
+
* Parse SKILL.md content into frontmatter + body.
|
|
14
|
+
*
|
|
15
|
+
* Uses gray-matter shim as primary parser with a regex fallback
|
|
16
|
+
* for environments where gray-matter is not available.
|
|
17
|
+
*/
|
|
18
|
+
export async function parseSkillFrontmatter(content) {
|
|
19
|
+
// Try primary parser: gray-matter shim
|
|
20
|
+
try {
|
|
21
|
+
const { extract } = await import("../platform/compat/std/front-matter-yaml.js");
|
|
22
|
+
const result = extract(content);
|
|
23
|
+
return { frontmatter: result.attrs, body: result.body };
|
|
24
|
+
}
|
|
25
|
+
catch {
|
|
26
|
+
// Fall through to fallback
|
|
27
|
+
}
|
|
28
|
+
// Fallback: regex-based parser
|
|
29
|
+
return parseFrontmatterFallback(content);
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Regex-based fallback parser for YAML frontmatter.
|
|
33
|
+
* Handles simple key: value pairs (no nested YAML).
|
|
34
|
+
*/
|
|
35
|
+
function parseFrontmatterFallback(content) {
|
|
36
|
+
const match = content.match(/^---\r?\n([\s\S]*?)\r?\n---\r?\n?([\s\S]*)$/);
|
|
37
|
+
if (!match) {
|
|
38
|
+
return { frontmatter: {}, body: content };
|
|
39
|
+
}
|
|
40
|
+
const rawFrontmatter = match[1];
|
|
41
|
+
const body = match[2];
|
|
42
|
+
const frontmatter = {};
|
|
43
|
+
for (const line of rawFrontmatter.split("\n")) {
|
|
44
|
+
const trimmed = line.trim();
|
|
45
|
+
if (!trimmed || trimmed.startsWith("#"))
|
|
46
|
+
continue;
|
|
47
|
+
const colonIndex = trimmed.indexOf(":");
|
|
48
|
+
if (colonIndex === -1)
|
|
49
|
+
continue;
|
|
50
|
+
const key = trimmed.slice(0, colonIndex).trim();
|
|
51
|
+
const value = trimmed.slice(colonIndex + 1).trim();
|
|
52
|
+
frontmatter[key] = value;
|
|
53
|
+
}
|
|
54
|
+
return { frontmatter, body };
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Validate and normalize parsed frontmatter into SkillMetadata.
|
|
58
|
+
*
|
|
59
|
+
* @param frontmatter - Parsed frontmatter object
|
|
60
|
+
* @param directoryName - Directory name used as fallback for skill name
|
|
61
|
+
*/
|
|
62
|
+
export function validateSkillMetadata(frontmatter, directoryName) {
|
|
63
|
+
// Name: from frontmatter or directory name
|
|
64
|
+
const rawName = typeof frontmatter.name === "string" ? frontmatter.name.trim() : directoryName;
|
|
65
|
+
if (!SKILL_NAME_REGEX.test(rawName)) {
|
|
66
|
+
throw toError(createError({
|
|
67
|
+
type: "agent",
|
|
68
|
+
message: `Invalid skill name "${rawName}": must be lowercase alphanumeric with hyphens, 1-64 characters`,
|
|
69
|
+
}));
|
|
70
|
+
}
|
|
71
|
+
// Description: required
|
|
72
|
+
const rawDescription = frontmatter.description;
|
|
73
|
+
if (!rawDescription || typeof rawDescription !== "string" || !rawDescription.trim()) {
|
|
74
|
+
throw toError(createError({
|
|
75
|
+
type: "agent",
|
|
76
|
+
message: `Skill "${rawName}" is missing a required "description" field`,
|
|
77
|
+
}));
|
|
78
|
+
}
|
|
79
|
+
const description = rawDescription.trim().slice(0, SKILL_DESCRIPTION_MAX_LENGTH);
|
|
80
|
+
// Allowed-tools: parse from space-delimited string or array
|
|
81
|
+
const allowedTools = parseAllowedTools(frontmatter["allowed-tools"], rawName);
|
|
82
|
+
// License: optional string passthrough
|
|
83
|
+
const license = typeof frontmatter.license === "string" ? frontmatter.license.trim() : undefined;
|
|
84
|
+
// Compatibility: optional string passthrough
|
|
85
|
+
const compatibility = typeof frontmatter.compatibility === "string"
|
|
86
|
+
? frontmatter.compatibility.trim()
|
|
87
|
+
: undefined;
|
|
88
|
+
// Metadata: convert nested object values to strings
|
|
89
|
+
const metadata = parseMetadata(frontmatter.metadata);
|
|
90
|
+
return {
|
|
91
|
+
name: rawName,
|
|
92
|
+
description,
|
|
93
|
+
...(allowedTools && { allowedTools }),
|
|
94
|
+
...(license && { license }),
|
|
95
|
+
...(compatibility && { compatibility }),
|
|
96
|
+
...(metadata && { metadata }),
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Parse `allowed-tools` from frontmatter.
|
|
101
|
+
* Accepts a space-delimited string or an array of strings.
|
|
102
|
+
* Validates each pattern against SKILL_ALLOWED_TOOL_PATTERN_REGEX.
|
|
103
|
+
*/
|
|
104
|
+
function parseAllowedTools(value, skillName) {
|
|
105
|
+
if (value === undefined || value === null)
|
|
106
|
+
return undefined;
|
|
107
|
+
let patterns;
|
|
108
|
+
if (typeof value === "string") {
|
|
109
|
+
patterns = value.split(/\s+/).filter(Boolean);
|
|
110
|
+
}
|
|
111
|
+
else if (Array.isArray(value)) {
|
|
112
|
+
patterns = [];
|
|
113
|
+
for (const rawPattern of value) {
|
|
114
|
+
if (typeof rawPattern !== "string") {
|
|
115
|
+
throw toError(createError({
|
|
116
|
+
type: "agent",
|
|
117
|
+
message: `Skill "${skillName}" has invalid allowed-tools value: expected all entries to be strings`,
|
|
118
|
+
}));
|
|
119
|
+
}
|
|
120
|
+
const pattern = rawPattern.trim();
|
|
121
|
+
if (!pattern) {
|
|
122
|
+
throw toError(createError({
|
|
123
|
+
type: "agent",
|
|
124
|
+
message: `Skill "${skillName}" has invalid allowed-tools pattern: empty value`,
|
|
125
|
+
}));
|
|
126
|
+
}
|
|
127
|
+
patterns.push(pattern);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
throw toError(createError({
|
|
132
|
+
type: "agent",
|
|
133
|
+
message: `Skill "${skillName}" has invalid allowed-tools value: expected a string or array of strings, got ${typeof value}`,
|
|
134
|
+
}));
|
|
135
|
+
}
|
|
136
|
+
if (patterns.length === 0)
|
|
137
|
+
return undefined;
|
|
138
|
+
// Validate each pattern (fail closed)
|
|
139
|
+
for (const pattern of patterns) {
|
|
140
|
+
if (!SKILL_ALLOWED_TOOL_PATTERN_REGEX.test(pattern)) {
|
|
141
|
+
throw toError(createError({
|
|
142
|
+
type: "agent",
|
|
143
|
+
message: `Skill "${skillName}" has invalid allowed-tools pattern "${pattern}". ` +
|
|
144
|
+
`Only exact tool IDs (e.g. "Read") and prefix wildcards (e.g. "api:*") are supported.`,
|
|
145
|
+
}));
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
return patterns;
|
|
149
|
+
}
|
|
150
|
+
/** Convert metadata object values to strings */
|
|
151
|
+
function parseMetadata(value) {
|
|
152
|
+
if (!value || typeof value !== "object" || Array.isArray(value))
|
|
153
|
+
return undefined;
|
|
154
|
+
const entries = Object.entries(value);
|
|
155
|
+
if (entries.length === 0)
|
|
156
|
+
return undefined;
|
|
157
|
+
const result = {};
|
|
158
|
+
for (const [k, v] of entries) {
|
|
159
|
+
result[k] = String(v);
|
|
160
|
+
}
|
|
161
|
+
return result;
|
|
162
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { FileSystemAdapter } from "../platform/adapters/base.js";
|
|
2
|
+
/**
|
|
3
|
+
* Validate that a requested path is safe within a skill's root directory.
|
|
4
|
+
*
|
|
5
|
+
* @param skillRoot - Absolute path to the skill directory
|
|
6
|
+
* @param requestedPath - Relative path requested (e.g. "references/CLAUSES.md")
|
|
7
|
+
* @param allowedSubdirs - Allowed top-level subdirectories (e.g. ["references", "assets"])
|
|
8
|
+
* @param fsAdapter - Optional file system adapter for VFS/cloud-backed projects
|
|
9
|
+
* @returns The validated canonical path
|
|
10
|
+
* @throws If the path is invalid, escapes the skill root, or the file doesn't exist
|
|
11
|
+
*/
|
|
12
|
+
export declare function validateSkillPath(skillRoot: string, requestedPath: string, allowedSubdirs: string[], fsAdapter?: FileSystemAdapter): Promise<string>;
|
|
13
|
+
/**
|
|
14
|
+
* List files in a skill subdirectory.
|
|
15
|
+
*
|
|
16
|
+
* @param skillRoot - Absolute path to the skill directory
|
|
17
|
+
* @param subdir - Subdirectory name (e.g. "references", "scripts")
|
|
18
|
+
* @param fsAdapter - Optional file system adapter for VFS/cloud-backed projects
|
|
19
|
+
* @returns Array of relative paths like "references/filename.md"
|
|
20
|
+
*/
|
|
21
|
+
export declare function listSkillSubdir(skillRoot: string, subdir: string, fsAdapter?: FileSystemAdapter): Promise<string[]>;
|
|
22
|
+
//# sourceMappingURL=path-safety.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"path-safety.d.ts","sourceRoot":"","sources":["../../../src/src/skill/path-safety.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAiFtE;;;;;;;;;GASG;AACH,wBAAsB,iBAAiB,CACrC,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,MAAM,EACrB,cAAc,EAAE,MAAM,EAAE,EACxB,SAAS,CAAC,EAAE,iBAAiB,GAC5B,OAAO,CAAC,MAAM,CAAC,CA2DjB;AAED;;;;;;;GAOG;AACH,wBAAsB,eAAe,CACnC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,iBAAiB,GAC5B,OAAO,CAAC,MAAM,EAAE,CAAC,CAkBnB"}
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Skill path safety
|
|
3
|
+
*
|
|
4
|
+
* Validates file paths within skill directories to prevent traversal attacks.
|
|
5
|
+
* Uses centralized validatePath() from #veryfront/security.
|
|
6
|
+
*
|
|
7
|
+
* @module
|
|
8
|
+
*/
|
|
9
|
+
import * as dntShim from "../../_dnt.shims.js";
|
|
10
|
+
import { validatePath } from "../security/index.js";
|
|
11
|
+
import { isAbsolute, join, relative, resolve } from "../platform/compat/path/index.js";
|
|
12
|
+
import { exists, readDir, stat } from "../platform/compat/fs.js";
|
|
13
|
+
import { createError, toError } from "../errors/veryfront-error.js";
|
|
14
|
+
function isInsideDir(baseDir, targetPath) {
|
|
15
|
+
const rel = relative(baseDir, targetPath);
|
|
16
|
+
return rel === "" || (!rel.startsWith("..") && !isAbsolute(rel));
|
|
17
|
+
}
|
|
18
|
+
async function pathExists(path, fsAdapter) {
|
|
19
|
+
return fsAdapter ? await fsAdapter.exists(path) : await exists(path);
|
|
20
|
+
}
|
|
21
|
+
async function assertIsFile(path, fsAdapter) {
|
|
22
|
+
const info = fsAdapter ? await fsAdapter.stat(path) : await stat(path);
|
|
23
|
+
if (!info.isFile) {
|
|
24
|
+
throw toError(createError({
|
|
25
|
+
type: "agent",
|
|
26
|
+
message: `Skill path must point to a file: "${path}"`,
|
|
27
|
+
}));
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
async function resolveLocalRealPath(path) {
|
|
31
|
+
if (typeof dntShim.Deno !== "undefined") {
|
|
32
|
+
return await dntShim.Deno.realPath(path);
|
|
33
|
+
}
|
|
34
|
+
const fs = await import("node:fs/promises");
|
|
35
|
+
return await fs.realpath(path);
|
|
36
|
+
}
|
|
37
|
+
async function isLocalSymlink(path) {
|
|
38
|
+
try {
|
|
39
|
+
if (typeof dntShim.Deno !== "undefined") {
|
|
40
|
+
const info = await dntShim.Deno.lstat(path);
|
|
41
|
+
return info.isSymlink;
|
|
42
|
+
}
|
|
43
|
+
const fs = await import("node:fs/promises");
|
|
44
|
+
const info = await fs.lstat(path);
|
|
45
|
+
return info.isSymbolicLink();
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
return false;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
async function isAdapterSymlink(fsAdapter, parentDir, segment) {
|
|
52
|
+
for await (const entry of fsAdapter.readDir(parentDir)) {
|
|
53
|
+
if (entry.name !== segment)
|
|
54
|
+
continue;
|
|
55
|
+
return entry.isSymlink;
|
|
56
|
+
}
|
|
57
|
+
return false;
|
|
58
|
+
}
|
|
59
|
+
async function hasSymlinkInPath(skillRoot, canonicalPath, fsAdapter) {
|
|
60
|
+
const resolvedRoot = resolve(skillRoot);
|
|
61
|
+
const resolvedTarget = resolve(canonicalPath);
|
|
62
|
+
const rel = relative(resolvedRoot, resolvedTarget).replaceAll("\\", "/");
|
|
63
|
+
if (!rel)
|
|
64
|
+
return false;
|
|
65
|
+
if (rel.startsWith("..") || isAbsolute(rel))
|
|
66
|
+
return true;
|
|
67
|
+
let current = resolvedRoot;
|
|
68
|
+
for (const segment of rel.split("/").filter(Boolean)) {
|
|
69
|
+
if (fsAdapter) {
|
|
70
|
+
if (await isAdapterSymlink(fsAdapter, current, segment))
|
|
71
|
+
return true;
|
|
72
|
+
}
|
|
73
|
+
else if (await isLocalSymlink(join(current, segment))) {
|
|
74
|
+
return true;
|
|
75
|
+
}
|
|
76
|
+
current = join(current, segment);
|
|
77
|
+
}
|
|
78
|
+
return false;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Validate that a requested path is safe within a skill's root directory.
|
|
82
|
+
*
|
|
83
|
+
* @param skillRoot - Absolute path to the skill directory
|
|
84
|
+
* @param requestedPath - Relative path requested (e.g. "references/CLAUSES.md")
|
|
85
|
+
* @param allowedSubdirs - Allowed top-level subdirectories (e.g. ["references", "assets"])
|
|
86
|
+
* @param fsAdapter - Optional file system adapter for VFS/cloud-backed projects
|
|
87
|
+
* @returns The validated canonical path
|
|
88
|
+
* @throws If the path is invalid, escapes the skill root, or the file doesn't exist
|
|
89
|
+
*/
|
|
90
|
+
export async function validateSkillPath(skillRoot, requestedPath, allowedSubdirs, fsAdapter) {
|
|
91
|
+
const result = await validatePath(requestedPath, {
|
|
92
|
+
baseDir: skillRoot,
|
|
93
|
+
allowedDirs: allowedSubdirs,
|
|
94
|
+
level: "strict",
|
|
95
|
+
allowAbsolute: false,
|
|
96
|
+
});
|
|
97
|
+
if (!result.valid) {
|
|
98
|
+
throw toError(createError({
|
|
99
|
+
type: "agent",
|
|
100
|
+
message: `Skill path validation failed for "${requestedPath}": ${result.error ?? "access denied"}`,
|
|
101
|
+
}));
|
|
102
|
+
}
|
|
103
|
+
const canonicalPath = result.canonicalPath;
|
|
104
|
+
// Verify the path exists and points to a file.
|
|
105
|
+
if (!(await pathExists(canonicalPath, fsAdapter))) {
|
|
106
|
+
throw toError(createError({
|
|
107
|
+
type: "agent",
|
|
108
|
+
message: `File not found: "${requestedPath}" in skill directory`,
|
|
109
|
+
}));
|
|
110
|
+
}
|
|
111
|
+
await assertIsFile(canonicalPath, fsAdapter);
|
|
112
|
+
// Enforce strict no-symlink policy for skill files.
|
|
113
|
+
if (await hasSymlinkInPath(skillRoot, canonicalPath, fsAdapter)) {
|
|
114
|
+
throw toError(createError({
|
|
115
|
+
type: "agent",
|
|
116
|
+
message: `Skill path contains a symlink and is not allowed: "${requestedPath}"`,
|
|
117
|
+
}));
|
|
118
|
+
}
|
|
119
|
+
// Defense-in-depth: local realpath check to block symlink escapes.
|
|
120
|
+
if (!fsAdapter) {
|
|
121
|
+
const [realRoot, realTarget] = await Promise.all([
|
|
122
|
+
resolveLocalRealPath(skillRoot),
|
|
123
|
+
resolveLocalRealPath(canonicalPath),
|
|
124
|
+
]);
|
|
125
|
+
if (!isInsideDir(realRoot, realTarget)) {
|
|
126
|
+
throw toError(createError({
|
|
127
|
+
type: "agent",
|
|
128
|
+
message: `Skill path escapes root directory via symlink: "${requestedPath}"`,
|
|
129
|
+
}));
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
return canonicalPath;
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* List files in a skill subdirectory.
|
|
136
|
+
*
|
|
137
|
+
* @param skillRoot - Absolute path to the skill directory
|
|
138
|
+
* @param subdir - Subdirectory name (e.g. "references", "scripts")
|
|
139
|
+
* @param fsAdapter - Optional file system adapter for VFS/cloud-backed projects
|
|
140
|
+
* @returns Array of relative paths like "references/filename.md"
|
|
141
|
+
*/
|
|
142
|
+
export async function listSkillSubdir(skillRoot, subdir, fsAdapter) {
|
|
143
|
+
const dirPath = join(skillRoot, subdir);
|
|
144
|
+
const dirExists = fsAdapter ? await fsAdapter.exists(dirPath) : await exists(dirPath);
|
|
145
|
+
if (!dirExists) {
|
|
146
|
+
return [];
|
|
147
|
+
}
|
|
148
|
+
const files = [];
|
|
149
|
+
const entries = fsAdapter ? fsAdapter.readDir(dirPath) : readDir(dirPath);
|
|
150
|
+
for await (const entry of entries) {
|
|
151
|
+
if (entry.isFile) {
|
|
152
|
+
files.push(`${subdir}/${entry.name}`);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
return files;
|
|
156
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Skill Prompt Augmentation
|
|
3
|
+
*
|
|
4
|
+
* Builds the skill manifest section that gets appended to agent system prompts.
|
|
5
|
+
*
|
|
6
|
+
* @module
|
|
7
|
+
*/
|
|
8
|
+
import type { Skill } from "./types.js";
|
|
9
|
+
/**
|
|
10
|
+
* Build the skill manifest prompt section for an agent's system prompt.
|
|
11
|
+
*
|
|
12
|
+
* Lists all available skills with their descriptions and instructions
|
|
13
|
+
* on how to use the skill tools (load-skill, load-skill-reference, execute-skill-script).
|
|
14
|
+
*
|
|
15
|
+
* @param skills - Map of resolved skills for the agent
|
|
16
|
+
* @returns Prompt section string, or empty string if no skills
|
|
17
|
+
*/
|
|
18
|
+
export declare function buildSkillManifestPrompt(skills: Map<string, Skill>): string;
|
|
19
|
+
//# sourceMappingURL=prompt-augmentation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt-augmentation.d.ts","sourceRoot":"","sources":["../../../src/src/skill/prompt-augmentation.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExC;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,MAAM,CA4B3E"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Skill Prompt Augmentation
|
|
3
|
+
*
|
|
4
|
+
* Builds the skill manifest section that gets appended to agent system prompts.
|
|
5
|
+
*
|
|
6
|
+
* @module
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Build the skill manifest prompt section for an agent's system prompt.
|
|
10
|
+
*
|
|
11
|
+
* Lists all available skills with their descriptions and instructions
|
|
12
|
+
* on how to use the skill tools (load-skill, load-skill-reference, execute-skill-script).
|
|
13
|
+
*
|
|
14
|
+
* @param skills - Map of resolved skills for the agent
|
|
15
|
+
* @returns Prompt section string, or empty string if no skills
|
|
16
|
+
*/
|
|
17
|
+
export function buildSkillManifestPrompt(skills) {
|
|
18
|
+
if (skills.size === 0)
|
|
19
|
+
return "";
|
|
20
|
+
const lines = [
|
|
21
|
+
"## Available Skills",
|
|
22
|
+
"",
|
|
23
|
+
"You have access to skills via tool calling. IMPORTANT: You MUST call the load-skill tool (not write it as text) to activate a skill before performing skill-related tasks.",
|
|
24
|
+
"",
|
|
25
|
+
];
|
|
26
|
+
for (const [id, skill] of skills) {
|
|
27
|
+
lines.push(`- **${id}**: ${skill.metadata.description}`);
|
|
28
|
+
}
|
|
29
|
+
lines.push("");
|
|
30
|
+
lines.push("### Skill Tools (call these as tools, never write them as text)");
|
|
31
|
+
lines.push("");
|
|
32
|
+
lines.push("- load-skill: Call with { skillId } to load a skill's full instructions and available references/scripts");
|
|
33
|
+
lines.push("- load-skill-reference: Call with { skillId, reference } to read a reference file from the skill");
|
|
34
|
+
lines.push("- execute-skill-script: Call with { skillId, script, args?, env?, timeoutMs? } to execute a script");
|
|
35
|
+
return lines.join("\n");
|
|
36
|
+
}
|