genaicode 0.14.1 → 0.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ai-service/ai-studio.d.ts +2 -18
- package/dist/ai-service/ai-studio.js +88 -32
- package/dist/ai-service/ai-studio.js.map +1 -1
- package/dist/ai-service/anthropic.js +87 -45
- package/dist/ai-service/anthropic.js.map +1 -1
- package/dist/ai-service/common-types.d.ts +36 -3
- package/dist/ai-service/common-types.js +0 -2
- package/dist/ai-service/common-types.js.map +1 -1
- package/dist/ai-service/common.js +0 -2
- package/dist/ai-service/common.js.map +1 -1
- package/dist/ai-service/files-api.d.ts +33 -0
- package/dist/ai-service/files-api.js +239 -0
- package/dist/ai-service/files-api.js.map +1 -0
- package/dist/ai-service/github-models.js +0 -2
- package/dist/ai-service/github-models.js.map +1 -1
- package/dist/ai-service/local-llm.js +0 -4
- package/dist/ai-service/local-llm.js.map +1 -1
- package/dist/ai-service/openai-responses.js +62 -16
- package/dist/ai-service/openai-responses.js.map +1 -1
- package/dist/ai-service/openai.js +157 -54
- package/dist/ai-service/openai.js.map +1 -1
- package/dist/ai-service/service-configurations-types.d.ts +0 -1
- package/dist/ai-service/service-configurations.js +19 -20
- package/dist/ai-service/service-configurations.js.map +1 -1
- package/dist/ai-service/vertex-ai.js +2 -1
- package/dist/ai-service/vertex-ai.js.map +1 -1
- package/dist/cli/cli-params.js +2 -2
- package/dist/cli/cli-params.js.map +1 -1
- package/dist/files/file-id-utils.js +1 -1
- package/dist/files/file-id-utils.js.map +1 -1
- package/dist/files/read-files.js +10 -6
- package/dist/files/read-files.js.map +1 -1
- package/dist/files/source-code-types.d.ts +9 -5
- package/dist/files/source-code-utils.d.ts +2 -1
- package/dist/files/source-code-utils.js +30 -12
- package/dist/files/source-code-utils.js.map +1 -1
- package/dist/files/summary-cache.d.ts +6 -4
- package/dist/files/summary-cache.js +3 -2
- package/dist/files/summary-cache.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/main/codegen-types.d.ts +2 -2
- package/dist/main/common/content-bus-types.d.ts +14 -0
- package/dist/main/common/content-bus.d.ts +3 -1
- package/dist/main/common/content-bus.js +28 -3
- package/dist/main/common/content-bus.js.map +1 -1
- package/dist/main/common/user-actions.d.ts +1 -1
- package/dist/main/config-types.d.ts +0 -3
- package/dist/main/config-types.js.map +1 -1
- package/dist/main/config.js +1 -1
- package/dist/main/config.js.map +1 -1
- package/dist/main/plugin-loader.d.ts +1 -1
- package/dist/main/ui/backend/endpoints/compress-context-endpoint.d.ts +1 -0
- package/dist/main/ui/backend/endpoints/compress-context-endpoint.js +18 -0
- package/dist/main/ui/backend/endpoints/compress-context-endpoint.js.map +1 -0
- package/dist/main/ui/backend/endpoints/config-endpoint.js +1 -1
- package/dist/main/ui/backend/endpoints/config-endpoint.js.map +1 -1
- package/dist/main/ui/backend/endpoints/context-endpoint.js +102 -0
- package/dist/main/ui/backend/endpoints/context-endpoint.js.map +1 -1
- package/dist/main/ui/backend/endpoints/edit-message-endpoint.js +9 -6
- package/dist/main/ui/backend/endpoints/edit-message-endpoint.js.map +1 -1
- package/dist/main/ui/backend/endpoints/index.d.ts +1 -0
- package/dist/main/ui/backend/endpoints/index.js +1 -0
- package/dist/main/ui/backend/endpoints/index.js.map +1 -1
- package/dist/main/ui/backend/endpoints/interrupt-execution-endpoint.js +1 -1
- package/dist/main/ui/backend/endpoints/interrupt-execution-endpoint.js.map +1 -1
- package/dist/main/ui/backend/service.d.ts +68 -7
- package/dist/main/ui/backend/service.js +301 -28
- package/dist/main/ui/backend/service.js.map +1 -1
- package/dist/main/ui/codegen-ui.js +2 -2
- package/dist/main/ui/codegen-ui.js.map +1 -1
- package/dist/main/ui/common/api-types.d.ts +6 -2
- package/dist/main/ui/common/api-types.js.map +1 -1
- package/dist/main/ui/frontend/assets/index-DAM_kJhM.js +3445 -0
- package/dist/main/ui/frontend/index.html +1 -1
- package/dist/prompt/context-utils.d.ts +7 -0
- package/dist/prompt/context-utils.js +33 -0
- package/dist/prompt/context-utils.js.map +1 -0
- package/dist/prompt/function-calling.js +4 -5
- package/dist/prompt/function-calling.js.map +1 -1
- package/dist/prompt/function-defs/code-execution.d.ts +7 -0
- package/dist/prompt/function-defs/code-execution.js +27 -0
- package/dist/prompt/function-defs/code-execution.js.map +1 -0
- package/dist/prompt/function-defs/conversation-graph.d.ts +1 -1
- package/dist/prompt/function-defs/conversation-graph.js +1 -1
- package/dist/prompt/function-defs/conversation-graph.js.map +1 -1
- package/dist/prompt/function-defs/get-source-code.js +3 -3
- package/dist/prompt/function-defs/iterate.d.ts +20 -0
- package/dist/prompt/function-defs/iterate.js +373 -0
- package/dist/prompt/function-defs/iterate.js.map +1 -0
- package/dist/prompt/function-defs/set-summaries.js +6 -2
- package/dist/prompt/function-defs/set-summaries.js.map +1 -1
- package/dist/prompt/limits.js +1 -1
- package/dist/prompt/prompt-service.js +13 -10
- package/dist/prompt/prompt-service.js.map +1 -1
- package/dist/prompt/source-code-optimize.d.ts +2 -0
- package/dist/prompt/source-code-optimize.js +27 -0
- package/dist/prompt/source-code-optimize.js.map +1 -0
- package/dist/prompt/steps/step-ask-question/step-ask-question.js +7 -1
- package/dist/prompt/steps/step-ask-question/step-ask-question.js.map +1 -1
- package/dist/prompt/steps/step-codegen-planning.js +6 -2
- package/dist/prompt/steps/step-codegen-planning.js.map +1 -1
- package/dist/prompt/steps/step-context-compression.js +5 -0
- package/dist/prompt/steps/step-context-compression.js.map +1 -1
- package/dist/prompt/steps/step-context-optimization.js +6 -3
- package/dist/prompt/steps/step-context-optimization.js.map +1 -1
- package/dist/prompt/steps/step-iterate/handlers/container-task/command-execution-loop.d.ts +7 -0
- package/dist/prompt/steps/step-iterate/handlers/container-task/command-execution-loop.js +301 -0
- package/dist/prompt/steps/step-iterate/handlers/container-task/command-execution-loop.js.map +1 -0
- package/dist/prompt/steps/step-iterate/handlers/container-task/commands/complete-task.d.ts +4 -0
- package/dist/prompt/steps/step-iterate/handlers/container-task/commands/complete-task.js +49 -0
- package/dist/prompt/steps/step-iterate/handlers/container-task/commands/complete-task.js.map +1 -0
- package/dist/prompt/steps/step-iterate/handlers/container-task/commands/copy-from-container.d.ts +4 -0
- package/dist/prompt/steps/step-iterate/handlers/container-task/commands/copy-from-container.js +190 -0
- package/dist/prompt/steps/step-iterate/handlers/container-task/commands/copy-from-container.js.map +1 -0
- package/dist/prompt/steps/step-iterate/handlers/container-task/commands/copy-to-container.d.ts +4 -0
- package/dist/prompt/steps/step-iterate/handlers/container-task/commands/copy-to-container.js +139 -0
- package/dist/prompt/steps/step-iterate/handlers/container-task/commands/copy-to-container.js.map +1 -0
- package/dist/prompt/steps/step-iterate/handlers/container-task/commands/edit-file.d.ts +10 -0
- package/dist/prompt/steps/step-iterate/handlers/container-task/commands/edit-file.js +93 -0
- package/dist/prompt/steps/step-iterate/handlers/container-task/commands/edit-file.js.map +1 -0
- package/dist/prompt/steps/step-iterate/handlers/container-task/commands/fail-task.d.ts +4 -0
- package/dist/prompt/steps/step-iterate/handlers/container-task/commands/fail-task.js +72 -0
- package/dist/prompt/steps/step-iterate/handlers/container-task/commands/fail-task.js.map +1 -0
- package/dist/prompt/steps/step-iterate/handlers/container-task/commands/gain-knowledge.d.ts +10 -0
- package/dist/prompt/steps/step-iterate/handlers/container-task/commands/gain-knowledge.js +125 -0
- package/dist/prompt/steps/step-iterate/handlers/container-task/commands/gain-knowledge.js.map +1 -0
- package/dist/prompt/steps/step-iterate/handlers/container-task/commands/interrupt-controller.d.ts +19 -0
- package/dist/prompt/steps/step-iterate/handlers/container-task/commands/interrupt-controller.js +33 -0
- package/dist/prompt/steps/step-iterate/handlers/container-task/commands/interrupt-controller.js.map +1 -0
- package/dist/prompt/steps/step-iterate/handlers/container-task/commands/query-knowledge.d.ts +8 -0
- package/dist/prompt/steps/step-iterate/handlers/container-task/commands/query-knowledge.js +85 -0
- package/dist/prompt/steps/step-iterate/handlers/container-task/commands/query-knowledge.js.map +1 -0
- package/dist/prompt/steps/step-iterate/handlers/container-task/commands/request-secret.d.ts +6 -0
- package/dist/prompt/steps/step-iterate/handlers/container-task/commands/request-secret.js +122 -0
- package/dist/prompt/steps/step-iterate/handlers/container-task/commands/request-secret.js.map +1 -0
- package/dist/prompt/steps/step-iterate/handlers/container-task/commands/run-command.d.ts +7 -0
- package/dist/prompt/steps/step-iterate/handlers/container-task/commands/run-command.js +146 -0
- package/dist/prompt/steps/step-iterate/handlers/container-task/commands/run-command.js.map +1 -0
- package/dist/prompt/steps/step-iterate/handlers/container-task/commands/send-message.d.ts +4 -0
- package/dist/prompt/steps/step-iterate/handlers/container-task/commands/send-message.js +56 -0
- package/dist/prompt/steps/step-iterate/handlers/container-task/commands/send-message.js.map +1 -0
- package/dist/prompt/steps/step-iterate/handlers/container-task/commands/set-execution-plan.d.ts +4 -0
- package/dist/prompt/steps/step-iterate/handlers/container-task/commands/set-execution-plan.js +56 -0
- package/dist/prompt/steps/step-iterate/handlers/container-task/commands/set-execution-plan.js.map +1 -0
- package/dist/prompt/steps/step-iterate/handlers/container-task/commands/update-execution-plan.d.ts +4 -0
- package/dist/prompt/steps/step-iterate/handlers/container-task/commands/update-execution-plan.js +39 -0
- package/dist/prompt/steps/step-iterate/handlers/container-task/commands/update-execution-plan.js.map +1 -0
- package/dist/prompt/steps/step-iterate/handlers/container-task/commands/view-file.d.ts +10 -0
- package/dist/prompt/steps/step-iterate/handlers/container-task/commands/view-file.js +95 -0
- package/dist/prompt/steps/step-iterate/handlers/container-task/commands/view-file.js.map +1 -0
- package/dist/prompt/steps/step-iterate/handlers/container-task/commands/web-search.d.ts +2 -0
- package/dist/prompt/steps/step-iterate/handlers/container-task/commands/web-search.js +96 -0
- package/dist/prompt/steps/step-iterate/handlers/container-task/commands/web-search.js.map +1 -0
- package/dist/prompt/steps/step-iterate/handlers/container-task/commands/wrap-context.d.ts +4 -0
- package/dist/prompt/steps/step-iterate/handlers/container-task/commands/wrap-context.js +123 -0
- package/dist/prompt/steps/step-iterate/handlers/container-task/commands/wrap-context.js.map +1 -0
- package/dist/prompt/steps/step-iterate/handlers/container-task/container-commands-registry.d.ts +11 -0
- package/dist/prompt/steps/step-iterate/handlers/container-task/container-commands-registry.js +50 -0
- package/dist/prompt/steps/step-iterate/handlers/container-task/container-commands-registry.js.map +1 -0
- package/dist/prompt/steps/step-iterate/handlers/container-task/container-commands-types.d.ts +28 -0
- package/dist/prompt/steps/step-iterate/handlers/container-task/container-commands-types.js +2 -0
- package/dist/prompt/steps/step-iterate/handlers/container-task/container-commands-types.js.map +1 -0
- package/dist/prompt/steps/step-iterate/handlers/container-task/container-task-orchestrator.d.ts +2 -0
- package/dist/prompt/steps/step-iterate/handlers/container-task/container-task-orchestrator.js +202 -0
- package/dist/prompt/steps/step-iterate/handlers/container-task/container-task-orchestrator.js.map +1 -0
- package/dist/prompt/steps/step-iterate/handlers/container-task/utils/docker-check.d.ts +4 -0
- package/dist/prompt/steps/step-iterate/handlers/container-task/utils/docker-check.js +15 -0
- package/dist/prompt/steps/step-iterate/handlers/container-task/utils/docker-check.js.map +1 -0
- package/dist/prompt/steps/step-iterate/handlers/container-task/utils/docker-utils.d.ts +50 -0
- package/dist/prompt/steps/step-iterate/handlers/container-task/utils/docker-utils.js +358 -0
- package/dist/prompt/steps/step-iterate/handlers/container-task/utils/docker-utils.js.map +1 -0
- package/dist/prompt/steps/step-iterate/handlers/file-request-utils.d.ts +47 -0
- package/dist/prompt/steps/step-iterate/handlers/file-request-utils.js +114 -0
- package/dist/prompt/steps/step-iterate/handlers/file-request-utils.js.map +1 -0
- package/dist/prompt/steps/step-iterate/handlers/handle-code-execution.d.ts +1 -0
- package/dist/prompt/steps/step-iterate/handlers/handle-code-execution.js +133 -0
- package/dist/prompt/steps/step-iterate/handlers/handle-code-execution.js.map +1 -0
- package/dist/prompt/steps/step-iterate/handlers/handle-code-generation.d.ts +4 -0
- package/dist/prompt/steps/step-iterate/handlers/handle-code-generation.js +177 -0
- package/dist/prompt/steps/step-iterate/handlers/handle-code-generation.js.map +1 -0
- package/dist/prompt/steps/step-iterate/handlers/handle-compound-action.d.ts +20 -0
- package/dist/prompt/steps/step-iterate/handlers/handle-compound-action.js +305 -0
- package/dist/prompt/steps/step-iterate/handlers/handle-compound-action.js.map +1 -0
- package/dist/prompt/steps/step-iterate/handlers/handle-confirm-code-generation.d.ts +2 -0
- package/dist/prompt/steps/step-iterate/handlers/handle-confirm-code-generation.js +40 -0
- package/dist/prompt/steps/step-iterate/handlers/handle-confirm-code-generation.js.map +1 -0
- package/dist/prompt/steps/step-iterate/handlers/handle-context-compression.d.ts +2 -0
- package/dist/prompt/steps/step-iterate/handlers/handle-context-compression.js +35 -0
- package/dist/prompt/steps/step-iterate/handlers/handle-context-compression.js.map +1 -0
- package/dist/prompt/steps/step-iterate/handlers/handle-context-optimization.d.ts +2 -0
- package/dist/prompt/steps/step-iterate/handlers/handle-context-optimization.js +34 -0
- package/dist/prompt/steps/step-iterate/handlers/handle-context-optimization.js.map +1 -0
- package/dist/prompt/steps/step-iterate/handlers/handle-conversation-graph.d.ts +11 -0
- package/dist/prompt/steps/step-iterate/handlers/handle-conversation-graph.js +503 -0
- package/dist/prompt/steps/step-iterate/handlers/handle-conversation-graph.js.map +1 -0
- package/dist/prompt/steps/step-iterate/handlers/handle-create-file.d.ts +2 -0
- package/dist/prompt/steps/step-iterate/handlers/handle-create-file.js +159 -0
- package/dist/prompt/steps/step-iterate/handlers/handle-create-file.js.map +1 -0
- package/dist/prompt/steps/step-iterate/handlers/handle-end-conversation.d.ts +2 -0
- package/dist/prompt/steps/step-iterate/handlers/handle-end-conversation.js +30 -0
- package/dist/prompt/steps/step-iterate/handlers/handle-end-conversation.js.map +1 -0
- package/dist/prompt/steps/step-iterate/handlers/handle-explore-external-directories.d.ts +2 -0
- package/dist/prompt/steps/step-iterate/handlers/handle-explore-external-directories.js +280 -0
- package/dist/prompt/steps/step-iterate/handlers/handle-explore-external-directories.js.map +1 -0
- package/dist/prompt/steps/step-iterate/handlers/handle-genaicode-help.d.ts +8 -0
- package/dist/prompt/steps/step-iterate/handlers/handle-genaicode-help.js +105 -0
- package/dist/prompt/steps/step-iterate/handlers/handle-genaicode-help.js.map +1 -0
- package/dist/prompt/steps/step-iterate/handlers/handle-generate-image.d.ts +2 -0
- package/dist/prompt/steps/step-iterate/handlers/handle-generate-image.js +110 -0
- package/dist/prompt/steps/step-iterate/handlers/handle-generate-image.js.map +1 -0
- package/dist/prompt/steps/step-iterate/handlers/handle-perform-analysis.d.ts +6 -0
- package/dist/prompt/steps/step-iterate/handlers/handle-perform-analysis.js +110 -0
- package/dist/prompt/steps/step-iterate/handlers/handle-perform-analysis.js.map +1 -0
- package/dist/prompt/steps/step-iterate/handlers/handle-project-command.d.ts +2 -0
- package/dist/prompt/steps/step-iterate/handlers/handle-project-command.js +280 -0
- package/dist/prompt/steps/step-iterate/handlers/handle-project-command.js.map +1 -0
- package/dist/prompt/steps/step-iterate/handlers/handle-pull-app-context.d.ts +9 -0
- package/dist/prompt/steps/step-iterate/handlers/handle-pull-app-context.js +94 -0
- package/dist/prompt/steps/step-iterate/handlers/handle-pull-app-context.js.map +1 -0
- package/dist/prompt/steps/step-iterate/handlers/handle-pull-console-logs.d.ts +2 -0
- package/dist/prompt/steps/step-iterate/handlers/handle-pull-console-logs.js +174 -0
- package/dist/prompt/steps/step-iterate/handlers/handle-pull-console-logs.js.map +1 -0
- package/dist/prompt/steps/step-iterate/handlers/handle-push-app-context.d.ts +9 -0
- package/dist/prompt/steps/step-iterate/handlers/handle-push-app-context.js +104 -0
- package/dist/prompt/steps/step-iterate/handlers/handle-push-app-context.js.map +1 -0
- package/dist/prompt/steps/step-iterate/handlers/handle-read-external-files.d.ts +2 -0
- package/dist/prompt/steps/step-iterate/handlers/handle-read-external-files.js +149 -0
- package/dist/prompt/steps/step-iterate/handlers/handle-read-external-files.js.map +1 -0
- package/dist/prompt/steps/step-iterate/handlers/handle-reasoning-inference.d.ts +7 -0
- package/dist/prompt/steps/step-iterate/handlers/handle-reasoning-inference.js +119 -0
- package/dist/prompt/steps/step-iterate/handlers/handle-reasoning-inference.js.map +1 -0
- package/dist/prompt/steps/step-iterate/handlers/handle-remove-files-from-context.d.ts +2 -0
- package/dist/prompt/steps/step-iterate/handlers/handle-remove-files-from-context.js +100 -0
- package/dist/prompt/steps/step-iterate/handlers/handle-remove-files-from-context.js.map +1 -0
- package/dist/prompt/steps/step-iterate/handlers/handle-request-files-content.d.ts +8 -0
- package/dist/prompt/steps/step-iterate/handlers/handle-request-files-content.js +146 -0
- package/dist/prompt/steps/step-iterate/handlers/handle-request-files-content.js.map +1 -0
- package/dist/prompt/steps/step-iterate/handlers/handle-request-files-fragments.d.ts +8 -0
- package/dist/prompt/steps/step-iterate/handlers/handle-request-files-fragments.js +197 -0
- package/dist/prompt/steps/step-iterate/handlers/handle-request-files-fragments.js.map +1 -0
- package/dist/prompt/steps/step-iterate/handlers/handle-request-git-context.d.ts +3 -0
- package/dist/prompt/steps/step-iterate/handlers/handle-request-git-context.js +251 -0
- package/dist/prompt/steps/step-iterate/handlers/handle-request-git-context.js.map +1 -0
- package/dist/prompt/steps/step-iterate/handlers/handle-request-permissions.d.ts +2 -0
- package/dist/prompt/steps/step-iterate/handlers/handle-request-permissions.js +83 -0
- package/dist/prompt/steps/step-iterate/handlers/handle-request-permissions.js.map +1 -0
- package/dist/prompt/steps/step-iterate/handlers/handle-run-bash-command.d.ts +2 -0
- package/dist/prompt/steps/step-iterate/handlers/handle-run-bash-command.js +185 -0
- package/dist/prompt/steps/step-iterate/handlers/handle-run-bash-command.js.map +1 -0
- package/dist/prompt/steps/step-iterate/handlers/handle-run-container-task.d.ts +2 -0
- package/dist/prompt/steps/step-iterate/handlers/handle-run-container-task.js +7 -0
- package/dist/prompt/steps/step-iterate/handlers/handle-run-container-task.js.map +1 -0
- package/dist/prompt/steps/step-iterate/handlers/handle-search-code.d.ts +2 -0
- package/dist/prompt/steps/step-iterate/handlers/handle-search-code.js +96 -0
- package/dist/prompt/steps/step-iterate/handlers/handle-search-code.js.map +1 -0
- package/dist/prompt/steps/step-iterate/handlers/handle-send-message.d.ts +2 -0
- package/dist/prompt/steps/step-iterate/handlers/handle-send-message.js +21 -0
- package/dist/prompt/steps/step-iterate/handlers/handle-send-message.js.map +1 -0
- package/dist/prompt/steps/step-iterate/handlers/handle-structured-question.d.ts +1 -0
- package/dist/prompt/steps/step-iterate/handlers/handle-structured-question.js +72 -0
- package/dist/prompt/steps/step-iterate/handlers/handle-structured-question.js.map +1 -0
- package/dist/prompt/steps/step-iterate/handlers/handle-update-file.d.ts +2 -0
- package/dist/prompt/steps/step-iterate/handlers/handle-update-file.js +161 -0
- package/dist/prompt/steps/step-iterate/handlers/handle-update-file.js.map +1 -0
- package/dist/prompt/steps/step-iterate/handlers/handle-web-search.d.ts +1 -0
- package/dist/prompt/steps/step-iterate/handlers/handle-web-search.js +85 -0
- package/dist/prompt/steps/step-iterate/handlers/handle-web-search.js.map +1 -0
- package/dist/prompt/steps/step-iterate/iterate-handler.d.ts +4 -0
- package/dist/prompt/steps/step-iterate/iterate-handler.js +14 -0
- package/dist/prompt/steps/step-iterate/iterate-handler.js.map +1 -0
- package/dist/prompt/steps/step-iterate/step-iterate-handlers.d.ts +3 -0
- package/dist/prompt/steps/step-iterate/step-iterate-handlers.js +5 -0
- package/dist/prompt/steps/step-iterate/step-iterate-handlers.js.map +1 -0
- package/dist/prompt/steps/step-iterate/step-iterate-types.d.ts +255 -0
- package/dist/prompt/steps/step-iterate/step-iterate-types.js +2 -0
- package/dist/prompt/steps/step-iterate/step-iterate-types.js.map +1 -0
- package/dist/prompt/steps/step-iterate/step-iterate.d.ts +37 -0
- package/dist/prompt/steps/step-iterate/step-iterate.js +132 -0
- package/dist/prompt/steps/step-iterate/step-iterate.js.map +1 -0
- package/dist/prompt/steps/step-summarization.js +9 -19
- package/dist/prompt/steps/step-summarization.js.map +1 -1
- package/dist/prompt/systemprompt.js +93 -168
- package/dist/prompt/systemprompt.js.map +1 -1
- package/dist/prompt/token-estimator.js +1 -1
- package/dist/prompt/token-estimator.js.map +1 -1
- package/dist/vite-genaicode/console-interceptor.d.ts +19 -6
- package/dist/vite-genaicode/console-interceptor.js +45 -13
- package/dist/vite-genaicode/console-interceptor.js.map +1 -1
- package/dist/vite-genaicode/vite-genaicode-frontend.js +1 -1
- package/dist/vite-genaicode/vite-genaicode-frontend.js.map +1 -1
- package/package.json +7 -6
- package/dist/main/ui/frontend/assets/index-5-emJmrg.js +0 -2881
|
@@ -0,0 +1,358 @@
|
|
|
1
|
+
import path from 'path';
|
|
2
|
+
import fs from 'fs';
|
|
3
|
+
import tar from 'tar-stream';
|
|
4
|
+
import { putContainerLog, putSystemMessage } from '../../../../../../main/common/content-bus.js';
|
|
5
|
+
import { rcConfig } from '../../../../../../main/config.js';
|
|
6
|
+
import { cacheContainerId, clearCachedContainerIds, getCachedContainerIds, removeCachedContainerId, } from '../../../../../../files/cache-file.js';
|
|
7
|
+
import { isProjectPath } from '../../../../../../files/path-utils.js';
|
|
8
|
+
import { isIgnoredPath } from '../../../../../../files/find-files.js';
|
|
9
|
+
/**
|
|
10
|
+
* Pull a Docker image
|
|
11
|
+
*/
|
|
12
|
+
export async function pullImage(docker, image) {
|
|
13
|
+
putContainerLog('info', `Pulling Docker image: ${image}`, undefined, 'docker');
|
|
14
|
+
return new Promise((resolve, reject) => {
|
|
15
|
+
docker
|
|
16
|
+
.pull(image)
|
|
17
|
+
.then((stream) => {
|
|
18
|
+
docker.modem.followProgress(stream, (err) => {
|
|
19
|
+
if (err) {
|
|
20
|
+
putContainerLog('error', `Failed to pull Docker image: ${err.message}`, undefined, 'docker');
|
|
21
|
+
reject(err);
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
putContainerLog('success', `Successfully pulled Docker image: ${image}`, undefined, 'docker');
|
|
25
|
+
putSystemMessage(`✅ Successfully pulled Docker image: ${image}`);
|
|
26
|
+
resolve();
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
})
|
|
30
|
+
.catch((error) => {
|
|
31
|
+
putContainerLog('error', `Failed to pull Docker image: ${error.message}`, undefined, 'docker');
|
|
32
|
+
putSystemMessage(`❌ Failed to pull Docker image: ${error.message}`);
|
|
33
|
+
reject(error);
|
|
34
|
+
});
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Create and start a Docker container
|
|
39
|
+
*/
|
|
40
|
+
export async function createAndStartContainer(docker, image) {
|
|
41
|
+
const container = await docker.createContainer({
|
|
42
|
+
Image: image,
|
|
43
|
+
Tty: true,
|
|
44
|
+
HostConfig: {
|
|
45
|
+
AutoRemove: true,
|
|
46
|
+
},
|
|
47
|
+
});
|
|
48
|
+
await container.start();
|
|
49
|
+
putContainerLog('info', `Container started (ID: ${container.id.substring(0, 12)})`, { image }, 'docker');
|
|
50
|
+
cacheContainerId(container.id);
|
|
51
|
+
putSystemMessage(`✅ Container started successfully (ID: ${container.id.substring(0, 12)})`);
|
|
52
|
+
return container;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Execute a command in a Docker container
|
|
56
|
+
*/
|
|
57
|
+
export async function executeCommand(container, shell, command, stdin, workingDir, abortSignal) {
|
|
58
|
+
putContainerLog('info', `Executing command in ${workingDir}: ${command}`, { stdin: !!stdin }, 'command');
|
|
59
|
+
const exec = await container.exec({
|
|
60
|
+
Cmd: [shell, '-c', command],
|
|
61
|
+
WorkingDir: workingDir,
|
|
62
|
+
AttachStdin: true,
|
|
63
|
+
Tty: false,
|
|
64
|
+
AttachStdout: true,
|
|
65
|
+
AttachStderr: true,
|
|
66
|
+
});
|
|
67
|
+
const stream = await exec.start({ hijack: true, stdin: true });
|
|
68
|
+
if (stdin) {
|
|
69
|
+
stream.write(stdin);
|
|
70
|
+
}
|
|
71
|
+
stream.end();
|
|
72
|
+
abortSignal?.addEventListener('abort', async () => {
|
|
73
|
+
const killExec = await container.exec({
|
|
74
|
+
Cmd: ['pkill', '-9', '-f', command],
|
|
75
|
+
AttachStdout: true,
|
|
76
|
+
AttachStderr: true,
|
|
77
|
+
});
|
|
78
|
+
await killExec.start({});
|
|
79
|
+
stream.destroy();
|
|
80
|
+
});
|
|
81
|
+
let output = '';
|
|
82
|
+
// Collect output from the stream
|
|
83
|
+
await new Promise((resolve) => {
|
|
84
|
+
stream.on('data', (chunk) => {
|
|
85
|
+
// Docker stream format: first 8 bytes are header, rest is data
|
|
86
|
+
const data = chunk.slice(8).toString();
|
|
87
|
+
output += data;
|
|
88
|
+
});
|
|
89
|
+
stream.on('end', () => {
|
|
90
|
+
resolve();
|
|
91
|
+
});
|
|
92
|
+
stream.on('error', () => {
|
|
93
|
+
resolve();
|
|
94
|
+
});
|
|
95
|
+
abortSignal?.addEventListener('abort', () => {
|
|
96
|
+
resolve();
|
|
97
|
+
});
|
|
98
|
+
});
|
|
99
|
+
if (abortSignal?.aborted) {
|
|
100
|
+
output += '\n\nAborted command execution';
|
|
101
|
+
}
|
|
102
|
+
const inspect = await exec.inspect();
|
|
103
|
+
putContainerLog('info', `Command finished with exit code: ${inspect.ExitCode || 0}`, { command }, 'command');
|
|
104
|
+
return { output: output.trim(), exitCode: inspect.ExitCode || 0 };
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Stop and clean up a Docker container
|
|
108
|
+
*/
|
|
109
|
+
export async function stopContainer(container) {
|
|
110
|
+
try {
|
|
111
|
+
await container.stop();
|
|
112
|
+
putContainerLog('info', 'Container stopped successfully', undefined, 'docker');
|
|
113
|
+
putSystemMessage('🛑 Container stopped successfully');
|
|
114
|
+
}
|
|
115
|
+
catch (error) {
|
|
116
|
+
putContainerLog('info', 'Container cleanup completed', undefined, 'docker');
|
|
117
|
+
putSystemMessage('🛑 Container cleanup completed');
|
|
118
|
+
}
|
|
119
|
+
finally {
|
|
120
|
+
removeCachedContainerId(container.id);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Clean up orphaned containers left over from previous runs.
|
|
125
|
+
*/
|
|
126
|
+
export async function cleanupOrphanedContainers(docker) {
|
|
127
|
+
const containerIds = getCachedContainerIds();
|
|
128
|
+
if (containerIds.length === 0) {
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
putContainerLog('info', `Found ${containerIds.length} potentially orphaned containers. Cleaning up...`);
|
|
132
|
+
putSystemMessage(`🧹 Found ${containerIds.length} potentially orphaned containers. Cleaning up...`);
|
|
133
|
+
const cleanupPromises = containerIds.map(async (id) => {
|
|
134
|
+
try {
|
|
135
|
+
const container = docker.getContainer(id);
|
|
136
|
+
const inspectInfo = await container.inspect();
|
|
137
|
+
if (inspectInfo.State.Running) {
|
|
138
|
+
await container.stop();
|
|
139
|
+
putContainerLog('info', `Stopped orphaned container ${id.substring(0, 12)}`);
|
|
140
|
+
putSystemMessage(`🛑 Stopped orphaned container ${id.substring(0, 12)}`);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
catch (error) {
|
|
144
|
+
// Ignore errors (e.g., container not found)
|
|
145
|
+
}
|
|
146
|
+
});
|
|
147
|
+
await Promise.all(cleanupPromises);
|
|
148
|
+
clearCachedContainerIds();
|
|
149
|
+
putContainerLog('success', 'Orphaned container cleanup complete.');
|
|
150
|
+
putSystemMessage('✅ Orphaned container cleanup complete.');
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Validates that the host path is within the project root directory.
|
|
154
|
+
* @param hostPath The path on the host machine. Can be absolute or relative to the project root.
|
|
155
|
+
* @returns The absolute, validated path.
|
|
156
|
+
*/
|
|
157
|
+
function validateHostPath(hostPath) {
|
|
158
|
+
const absoluteHostPath = path.resolve(rcConfig.rootDir, hostPath);
|
|
159
|
+
if (!absoluteHostPath.startsWith(rcConfig.rootDir)) {
|
|
160
|
+
throw new Error(`Invalid host path: ${hostPath} is outside the project root directory.`);
|
|
161
|
+
}
|
|
162
|
+
return absoluteHostPath;
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Recursively adds files and directories to a tar pack stream.
|
|
166
|
+
* @param pack The tar-stream pack instance.
|
|
167
|
+
* @param directoryPath The absolute path of the directory to add.
|
|
168
|
+
* @param relativeTo The base path for entries in the tar archive.
|
|
169
|
+
*/
|
|
170
|
+
function addDirectoryToPack(pack, directoryPath, relativeTo) {
|
|
171
|
+
if (isIgnoredPath(directoryPath)) {
|
|
172
|
+
return;
|
|
173
|
+
}
|
|
174
|
+
const items = fs.readdirSync(directoryPath);
|
|
175
|
+
const dirStats = fs.lstatSync(directoryPath);
|
|
176
|
+
pack.entry({
|
|
177
|
+
name: relativeTo.endsWith('/') ? relativeTo : relativeTo + '/',
|
|
178
|
+
type: 'directory',
|
|
179
|
+
mode: dirStats.mode & 0o777,
|
|
180
|
+
mtime: dirStats.mtime,
|
|
181
|
+
}, () => { });
|
|
182
|
+
for (const item of items) {
|
|
183
|
+
const fullPath = path.join(directoryPath, item);
|
|
184
|
+
const tarPath = path.join(relativeTo, item);
|
|
185
|
+
const stats = fs.lstatSync(fullPath);
|
|
186
|
+
if (stats.isDirectory()) {
|
|
187
|
+
addDirectoryToPack(pack, fullPath, tarPath);
|
|
188
|
+
}
|
|
189
|
+
else if (isIgnoredPath(fullPath)) {
|
|
190
|
+
// Skip ignored files
|
|
191
|
+
}
|
|
192
|
+
else if (stats.isSymbolicLink()) {
|
|
193
|
+
const linkname = fs.readlinkSync(fullPath);
|
|
194
|
+
pack.entry({
|
|
195
|
+
name: tarPath,
|
|
196
|
+
type: 'symlink',
|
|
197
|
+
linkname,
|
|
198
|
+
mode: 0o777,
|
|
199
|
+
mtime: stats.mtime,
|
|
200
|
+
}, () => { });
|
|
201
|
+
}
|
|
202
|
+
else if (stats.isFile()) {
|
|
203
|
+
const data = fs.readFileSync(fullPath);
|
|
204
|
+
pack.entry({
|
|
205
|
+
name: tarPath,
|
|
206
|
+
type: 'file',
|
|
207
|
+
mode: stats.mode & 0o777,
|
|
208
|
+
size: data.length,
|
|
209
|
+
mtime: stats.mtime,
|
|
210
|
+
}, data);
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Copy a file or directory from the host to the container.
|
|
216
|
+
*/
|
|
217
|
+
export async function copyToContainer(container, hostPath, containerPath) {
|
|
218
|
+
try {
|
|
219
|
+
const absoluteHostPath = validateHostPath(hostPath);
|
|
220
|
+
putContainerLog('info', `Copying from host:${absoluteHostPath} to container:${containerPath}`, undefined, 'copy');
|
|
221
|
+
putSystemMessage(`📦 Copying from host:${absoluteHostPath} to container:${containerPath}`);
|
|
222
|
+
const pack = tar.pack();
|
|
223
|
+
const stats = fs.statSync(absoluteHostPath);
|
|
224
|
+
if (stats.isDirectory()) {
|
|
225
|
+
addDirectoryToPack(pack, absoluteHostPath, '');
|
|
226
|
+
}
|
|
227
|
+
else if (!isIgnoredPath(absoluteHostPath)) {
|
|
228
|
+
pack.entry({ name: path.basename(absoluteHostPath) }, fs.readFileSync(absoluteHostPath));
|
|
229
|
+
}
|
|
230
|
+
pack.finalize();
|
|
231
|
+
await container.putArchive(pack, { path: containerPath });
|
|
232
|
+
putContainerLog('success', `Successfully copied to container.`, undefined, 'copy');
|
|
233
|
+
putSystemMessage(`✅ Successfully copied to container.`);
|
|
234
|
+
}
|
|
235
|
+
catch (error) {
|
|
236
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
237
|
+
putContainerLog('error', `Failed to copy to container: ${errorMessage}`, undefined, 'copy');
|
|
238
|
+
putSystemMessage(`❌ Failed to copy to container: ${errorMessage}`);
|
|
239
|
+
throw error;
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
/**
|
|
243
|
+
* Lists the files within a container archive without extracting them.
|
|
244
|
+
*/
|
|
245
|
+
export async function listFilesInContainerArchive(container, containerPath) {
|
|
246
|
+
const entries = [];
|
|
247
|
+
try {
|
|
248
|
+
const stream = await container.getArchive({ path: containerPath });
|
|
249
|
+
const extract = tar.extract();
|
|
250
|
+
extract.on('entry', (header, stream, next) => {
|
|
251
|
+
if (header.type === 'file' || header.type === 'directory') {
|
|
252
|
+
entries.push({
|
|
253
|
+
name: header.name,
|
|
254
|
+
type: header.type,
|
|
255
|
+
});
|
|
256
|
+
}
|
|
257
|
+
stream.on('end', () => next());
|
|
258
|
+
stream.resume(); // Discard the stream's data
|
|
259
|
+
});
|
|
260
|
+
await new Promise((resolve, reject) => {
|
|
261
|
+
extract.on('finish', resolve);
|
|
262
|
+
extract.on('error', reject);
|
|
263
|
+
stream.pipe(extract);
|
|
264
|
+
});
|
|
265
|
+
putContainerLog('debug', `Listed ${entries.length} entries in archive at: ${containerPath}`, undefined, 'copy');
|
|
266
|
+
return entries;
|
|
267
|
+
}
|
|
268
|
+
catch (error) {
|
|
269
|
+
// If the path doesn't exist, getArchive throws an error. Return an empty list.
|
|
270
|
+
return [];
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
/**
|
|
274
|
+
* Extracts a tar stream to a specified directory, with path validation.
|
|
275
|
+
* @param tarStream The readable tar stream.
|
|
276
|
+
* @param destinationHostPath The absolute path on the host to extract files to.
|
|
277
|
+
* @param pathValidator A function to validate each file path before writing.
|
|
278
|
+
*/
|
|
279
|
+
export async function extractTarStreamToDirectory(tarStream, destinationHostPath, pathValidator) {
|
|
280
|
+
const extract = tar.extract();
|
|
281
|
+
extract.on('entry', (header, stream, next) => {
|
|
282
|
+
const filePath = path.join(destinationHostPath, header.name);
|
|
283
|
+
const dir = path.dirname(filePath);
|
|
284
|
+
if (!pathValidator(filePath)) {
|
|
285
|
+
const errorMessage = `Refusing to write outside project root: ${filePath}`;
|
|
286
|
+
putContainerLog('error', errorMessage, undefined, 'copy');
|
|
287
|
+
// Pass an error to next() to stop the extraction process
|
|
288
|
+
stream.on('end', () => next(new Error(errorMessage)));
|
|
289
|
+
stream.resume();
|
|
290
|
+
return;
|
|
291
|
+
}
|
|
292
|
+
if (header.type === 'directory') {
|
|
293
|
+
if (!fs.existsSync(filePath)) {
|
|
294
|
+
fs.mkdirSync(filePath, { recursive: true });
|
|
295
|
+
}
|
|
296
|
+
stream.on('end', () => next());
|
|
297
|
+
stream.resume();
|
|
298
|
+
return;
|
|
299
|
+
}
|
|
300
|
+
// Ensure directory exists for the file
|
|
301
|
+
if (!fs.existsSync(dir)) {
|
|
302
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
303
|
+
}
|
|
304
|
+
const writeStream = fs.createWriteStream(filePath);
|
|
305
|
+
stream.pipe(writeStream);
|
|
306
|
+
writeStream.on('finish', () => next());
|
|
307
|
+
writeStream.on('error', (err) => {
|
|
308
|
+
console.error(`Error writing file ${filePath}:`, err);
|
|
309
|
+
next(err); // Pass error to tar-stream
|
|
310
|
+
});
|
|
311
|
+
stream.on('error', (err) => {
|
|
312
|
+
console.error(`Error in tar stream for ${filePath}:`, err);
|
|
313
|
+
next(err); // Pass error to tar-stream
|
|
314
|
+
});
|
|
315
|
+
});
|
|
316
|
+
return new Promise((resolve, reject) => {
|
|
317
|
+
tarStream.on('error', reject);
|
|
318
|
+
extract.on('finish', resolve);
|
|
319
|
+
extract.on('error', reject);
|
|
320
|
+
tarStream.pipe(extract);
|
|
321
|
+
});
|
|
322
|
+
}
|
|
323
|
+
/**
|
|
324
|
+
* Copy a file or directory from the container to the host.
|
|
325
|
+
*/
|
|
326
|
+
export async function copyFromContainer(container, containerPath, hostPath) {
|
|
327
|
+
try {
|
|
328
|
+
const absoluteHostPath = validateHostPath(hostPath);
|
|
329
|
+
putContainerLog('info', `Copying from container:${containerPath} to host:${absoluteHostPath}`, undefined, 'copy');
|
|
330
|
+
putSystemMessage(`📦 Copying from container:${containerPath} to host:${absoluteHostPath}`);
|
|
331
|
+
const stream = await container.getArchive({ path: containerPath });
|
|
332
|
+
await extractTarStreamToDirectory(stream, absoluteHostPath, isProjectPath);
|
|
333
|
+
putContainerLog('success', 'Successfully copied from container.', undefined, 'copy');
|
|
334
|
+
putSystemMessage(`✅ Successfully copied from container.`);
|
|
335
|
+
}
|
|
336
|
+
catch (error) {
|
|
337
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
338
|
+
putContainerLog('error', `Failed to copy from container: ${errorMessage}`, undefined, 'copy');
|
|
339
|
+
putSystemMessage(`❌ Failed to copy from container: ${errorMessage}`);
|
|
340
|
+
throw error;
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
export async function checkPathExistsInContainer(container, containerPath) {
|
|
344
|
+
const check = await executeCommand(container, '/bin/sh', `ls ${containerPath}`, '', '/');
|
|
345
|
+
return check.exitCode === 0;
|
|
346
|
+
}
|
|
347
|
+
export async function getFileContentFromContainer(container, filePath) {
|
|
348
|
+
const { output, exitCode } = await executeCommand(container, '/bin/sh', `cat "${filePath}"`, '', '/');
|
|
349
|
+
if (exitCode !== 0) {
|
|
350
|
+
// If cat fails, it might be because the file doesn't exist, which is a valid case for patching (creating a new file).
|
|
351
|
+
if (output.includes('No such file or directory')) {
|
|
352
|
+
return '';
|
|
353
|
+
}
|
|
354
|
+
throw new Error(`Failed to read file content: ${output}`);
|
|
355
|
+
}
|
|
356
|
+
return output;
|
|
357
|
+
}
|
|
358
|
+
//# sourceMappingURL=docker-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docker-utils.js","sourceRoot":"","sources":["../../../../../../../src/prompt/steps/step-iterate/handlers/container-task/utils/docker-utils.ts"],"names":[],"mappings":"AACA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,GAAG,MAAM,YAAY,CAAC;AAC7B,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,8CAA8C,CAAC;AAEjG,OAAO,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AAC5D,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,qBAAqB,EACrB,uBAAuB,GACxB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AAEtE;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,MAAc,EAAE,KAAyB;IACvE,eAAe,CAAC,MAAM,EAAE,yBAAyB,KAAK,EAAE,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IAE/E,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM;aACH,IAAI,CAAC,KAAK,CAAC;aACX,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;YACf,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE;gBAC1C,IAAI,GAAG,EAAE,CAAC;oBACR,eAAe,CAAC,OAAO,EAAE,gCAAgC,GAAG,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;oBAC7F,MAAM,CAAC,GAAG,CAAC,CAAC;gBACd,CAAC;qBAAM,CAAC;oBACN,eAAe,CAAC,SAAS,EAAE,qCAAqC,KAAK,EAAE,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;oBAC9F,gBAAgB,CAAC,uCAAuC,KAAK,EAAE,CAAC,CAAC;oBACjE,OAAO,EAAE,CAAC;gBACZ,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;YACf,eAAe,CAAC,OAAO,EAAE,gCAAgC,KAAK,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;YAC/F,gBAAgB,CAAC,kCAAkC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;YACpE,MAAM,CAAC,KAAK,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;IACP,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,MAAc,EAAE,KAAyB;IACrF,MAAM,SAAS,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC;QAC7C,KAAK,EAAE,KAAK;QACZ,GAAG,EAAE,IAAI;QACT,UAAU,EAAE;YACV,UAAU,EAAE,IAAI;SACjB;KACF,CAAC,CAAC;IAEH,MAAM,SAAS,CAAC,KAAK,EAAE,CAAC;IACxB,eAAe,CAAC,MAAM,EAAE,0BAA0B,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,EAAE,QAAQ,CAAC,CAAC;IACzG,gBAAgB,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IAC/B,gBAAgB,CAAC,yCAAyC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;IAE5F,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,SAA2B,EAC3B,KAA8B,EAC9B,OAAe,EACf,KAAyB,EACzB,UAAkB,EAClB,WAAyB;IAEzB,eAAe,CAAC,MAAM,EAAE,wBAAwB,UAAU,KAAK,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,SAAS,CAAC,CAAC;IACzG,MAAM,IAAI,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC;QAChC,GAAG,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC;QAC3B,UAAU,EAAE,UAAU;QACtB,WAAW,EAAE,IAAI;QACjB,GAAG,EAAE,KAAK;QACV,YAAY,EAAE,IAAI;QAClB,YAAY,EAAE,IAAI;KACnB,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/D,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACtB,CAAC;IACD,MAAM,CAAC,GAAG,EAAE,CAAC;IAEb,WAAW,EAAE,gBAAgB,CAAC,OAAO,EAAE,KAAK,IAAI,EAAE;QAChD,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,IAAI,CAAC;YACpC,GAAG,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC;YACnC,YAAY,EAAE,IAAI;YAClB,YAAY,EAAE,IAAI;SACnB,CAAC,CAAC;QACH,MAAM,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACzB,MAAM,CAAC,OAAO,EAAE,CAAC;IACnB,CAAC,CAAC,CAAC;IAEH,IAAI,MAAM,GAAG,EAAE,CAAC;IAEhB,iCAAiC;IACjC,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;QAClC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;YAClC,+DAA+D;YAC/D,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;YACvC,MAAM,IAAI,IAAI,CAAC;QACjB,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;YACpB,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YACtB,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC,CAAC;QAEH,WAAW,EAAE,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;YAC1C,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,IAAI,WAAW,EAAE,OAAO,EAAE,CAAC;QACzB,MAAM,IAAI,+BAA+B,CAAC;IAC5C,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;IACrC,eAAe,CAAC,MAAM,EAAE,oCAAoC,OAAO,CAAC,QAAQ,IAAI,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;IAC7G,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,IAAI,CAAC,EAAE,CAAC;AACpE,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,SAA2B;IAC7D,IAAI,CAAC;QACH,MAAM,SAAS,CAAC,IAAI,EAAE,CAAC;QACvB,eAAe,CAAC,MAAM,EAAE,gCAAgC,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;QAC/E,gBAAgB,CAAC,mCAAmC,CAAC,CAAC;IACxD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,eAAe,CAAC,MAAM,EAAE,6BAA6B,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;QAC5E,gBAAgB,CAAC,gCAAgC,CAAC,CAAC;IACrD,CAAC;YAAS,CAAC;QACT,uBAAuB,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IACxC,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAAC,MAAc;IAC5D,MAAM,YAAY,GAAG,qBAAqB,EAAE,CAAC;IAC7C,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO;IACT,CAAC;IACD,eAAe,CAAC,MAAM,EAAE,SAAS,YAAY,CAAC,MAAM,kDAAkD,CAAC,CAAC;IACxG,gBAAgB,CAAC,YAAY,YAAY,CAAC,MAAM,kDAAkD,CAAC,CAAC;IAEpG,MAAM,eAAe,GAAG,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE;QACpD,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;YAC1C,MAAM,WAAW,GAAG,MAAM,SAAS,CAAC,OAAO,EAAE,CAAC;YAC9C,IAAI,WAAW,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;gBAC9B,MAAM,SAAS,CAAC,IAAI,EAAE,CAAC;gBACvB,eAAe,CAAC,MAAM,EAAE,8BAA8B,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;gBAC7E,gBAAgB,CAAC,iCAAiC,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;YAC3E,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,4CAA4C;QAC9C,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IACnC,uBAAuB,EAAE,CAAC;IAC1B,eAAe,CAAC,SAAS,EAAE,sCAAsC,CAAC,CAAC;IACnE,gBAAgB,CAAC,wCAAwC,CAAC,CAAC;AAC7D,CAAC;AAED;;;;GAIG;AACH,SAAS,gBAAgB,CAAC,QAAgB;IACxC,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAClE,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACnD,MAAM,IAAI,KAAK,CAAC,sBAAsB,QAAQ,yCAAyC,CAAC,CAAC;IAC3F,CAAC;IACD,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED;;;;;GAKG;AACH,SAAS,kBAAkB,CAAC,IAAc,EAAE,aAAqB,EAAE,UAAkB;IACnF,IAAI,aAAa,CAAC,aAAa,CAAC,EAAE,CAAC;QACjC,OAAO;IACT,CAAC;IAED,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;IAC5C,MAAM,QAAQ,GAAG,EAAE,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;IAE7C,IAAI,CAAC,KAAK,CACR;QACE,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,GAAG,GAAG;QAC9D,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,QAAQ,CAAC,IAAI,GAAG,KAAK;QAC3B,KAAK,EAAE,QAAQ,CAAC,KAAK;KACtB,EACD,GAAG,EAAE,GAAE,CAAC,CACT,CAAC;IAEF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;QAChD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAC5C,MAAM,KAAK,GAAG,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAErC,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,kBAAkB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC9C,CAAC;aAAM,IAAI,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;YACnC,qBAAqB;QACvB,CAAC;aAAM,IAAI,KAAK,CAAC,cAAc,EAAE,EAAE,CAAC;YAClC,MAAM,QAAQ,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;YAC3C,IAAI,CAAC,KAAK,CACR;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,SAAS;gBACf,QAAQ;gBACR,IAAI,EAAE,KAAK;gBACX,KAAK,EAAE,KAAK,CAAC,KAAK;aACnB,EACD,GAAG,EAAE,GAAE,CAAC,CACT,CAAC;QACJ,CAAC;aAAM,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;YAC1B,MAAM,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;YACvC,IAAI,CAAC,KAAK,CACR;gBACE,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,KAAK,CAAC,IAAI,GAAG,KAAK;gBACxB,IAAI,EAAE,IAAI,CAAC,MAAM;gBACjB,KAAK,EAAE,KAAK,CAAC,KAAK;aACnB,EACD,IAAI,CACL,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,SAA2B,EAC3B,QAAgB,EAChB,aAAqB;IAErB,IAAI,CAAC;QACH,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QACpD,eAAe,CAAC,MAAM,EAAE,qBAAqB,gBAAgB,iBAAiB,aAAa,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QAClH,gBAAgB,CAAC,wBAAwB,gBAAgB,iBAAiB,aAAa,EAAE,CAAC,CAAC;QAE3F,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;QACxB,MAAM,KAAK,GAAG,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;QAE5C,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,kBAAkB,CAAC,IAAI,EAAE,gBAAgB,EAAE,EAAE,CAAC,CAAC;QACjD,CAAC;aAAM,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,EAAE,CAAC;YAC5C,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,EAAE,EAAE,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC,CAAC;QAC3F,CAAC;QACD,IAAI,CAAC,QAAQ,EAAE,CAAC;QAEhB,MAAM,SAAS,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC;QAC1D,eAAe,CAAC,SAAS,EAAE,mCAAmC,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QACnF,gBAAgB,CAAC,qCAAqC,CAAC,CAAC;IAC1D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5E,eAAe,CAAC,OAAO,EAAE,gCAAgC,YAAY,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QAC5F,gBAAgB,CAAC,kCAAkC,YAAY,EAAE,CAAC,CAAC;QACnE,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAOD;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,SAA2B,EAC3B,aAAqB;IAErB,MAAM,OAAO,GAAmB,EAAE,CAAC;IACnC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC;QACnE,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;QAE9B,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;YAC3C,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;gBAC1D,OAAO,CAAC,IAAI,CAAC;oBACX,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,IAAI,EAAE,MAAM,CAAC,IAAI;iBAClB,CAAC,CAAC;YACL,CAAC;YACD,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;YAC/B,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,4BAA4B;QAC/C,CAAC,CAAC,CAAC;QAEH,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC1C,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAC9B,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAC5B,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACvB,CAAC,CAAC,CAAC;QAEH,eAAe,CAAC,OAAO,EAAE,UAAU,OAAO,CAAC,MAAM,2BAA2B,aAAa,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QAEhH,OAAO,OAAO,CAAC;IACjB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,+EAA+E;QAC/E,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,SAAgC,EAChC,mBAA2B,EAC3B,aAA4C;IAE5C,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;IAE9B,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;QAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QAC7D,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAEnC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7B,MAAM,YAAY,GAAG,2CAA2C,QAAQ,EAAE,CAAC;YAC3E,eAAe,CAAC,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;YAC1D,yDAAyD;YACzD,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACtD,MAAM,CAAC,MAAM,EAAE,CAAC;YAChB,OAAO;QACT,CAAC;QAED,IAAI,MAAM,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAChC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC7B,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC9C,CAAC;YACD,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;YAC/B,MAAM,CAAC,MAAM,EAAE,CAAC;YAChB,OAAO;QACT,CAAC;QAED,uCAAuC;QACvC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACzC,CAAC;QAED,MAAM,WAAW,GAAG,EAAE,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;QACnD,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAEzB,WAAW,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;QACvC,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YAC9B,OAAO,CAAC,KAAK,CAAC,sBAAsB,QAAQ,GAAG,EAAE,GAAG,CAAC,CAAC;YACtD,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,2BAA2B;QACxC,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACzB,OAAO,CAAC,KAAK,CAAC,2BAA2B,QAAQ,GAAG,EAAE,GAAG,CAAC,CAAC;YAC3D,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,2BAA2B;QACxC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC3C,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC9B,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC9B,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC5B,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,SAA2B,EAC3B,aAAqB,EACrB,QAAgB;IAEhB,IAAI,CAAC;QACH,MAAM,gBAAgB,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QACpD,eAAe,CAAC,MAAM,EAAE,0BAA0B,aAAa,YAAY,gBAAgB,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QAClH,gBAAgB,CAAC,6BAA6B,aAAa,YAAY,gBAAgB,EAAE,CAAC,CAAC;QAE3F,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC,CAAC;QAEnE,MAAM,2BAA2B,CAAC,MAAM,EAAE,gBAAgB,EAAE,aAAa,CAAC,CAAC;QAE3E,eAAe,CAAC,SAAS,EAAE,qCAAqC,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QACrF,gBAAgB,CAAC,uCAAuC,CAAC,CAAC;IAC5D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5E,eAAe,CAAC,OAAO,EAAE,kCAAkC,YAAY,EAAE,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QAC9F,gBAAgB,CAAC,oCAAoC,YAAY,EAAE,CAAC,CAAC;QACrE,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAAC,SAA2B,EAAE,aAAqB;IACjG,MAAM,KAAK,GAAG,MAAM,cAAc,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,aAAa,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;IACzF,OAAO,KAAK,CAAC,QAAQ,KAAK,CAAC,CAAC;AAC9B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAAC,SAA2B,EAAE,QAAgB;IAC7F,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,cAAc,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,QAAQ,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;IACtG,IAAI,QAAQ,KAAK,CAAC,EAAE,CAAC;QACnB,sHAAsH;QACtH,IAAI,MAAM,CAAC,QAAQ,CAAC,2BAA2B,CAAC,EAAE,CAAC;YACjD,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,gCAAgC,MAAM,EAAE,CAAC,CAAC;IAC5D,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { PromptItem } from '../../../../ai-service/common-types.js';
|
|
2
|
+
import { CodegenOptions } from '../../../../main/codegen-types.js';
|
|
3
|
+
/**
|
|
4
|
+
* Checks if a file's content is already provided in the conversation history
|
|
5
|
+
* @param filePath The path of the file to check
|
|
6
|
+
* @param prompt The conversation history
|
|
7
|
+
* @returns true if the file content is already available in the history
|
|
8
|
+
*/
|
|
9
|
+
export declare function isFileContentAlreadyProvided(filePath: string, prompt: PromptItem[]): boolean;
|
|
10
|
+
/**
|
|
11
|
+
* Categorizes requested files into legitimate and illegitimate files
|
|
12
|
+
* @param requestedFiles Array of file paths to categorize
|
|
13
|
+
* @returns Object containing arrays of legitimate and illegitimate file paths
|
|
14
|
+
*/
|
|
15
|
+
export declare function categorizeLegitimateFiles(requestedFiles: string[]): {
|
|
16
|
+
legitimateFiles: string[];
|
|
17
|
+
illegitimateFiles: string[];
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* Checks if a file path is legitimate (exists in the source files)
|
|
21
|
+
* @param filePath The path of the file to check
|
|
22
|
+
* @returns true if the file path is legitimate
|
|
23
|
+
*/
|
|
24
|
+
export declare function isFilePathLegitimate(filePath: string): boolean;
|
|
25
|
+
/**
|
|
26
|
+
* Process file requests by checking if they are already provided and categorizing them
|
|
27
|
+
* @param requestedFiles Array of file paths to process
|
|
28
|
+
* @param prompt The conversation history
|
|
29
|
+
* @param options Codegen options
|
|
30
|
+
* @returns Processed file request information
|
|
31
|
+
*/
|
|
32
|
+
export declare function processFileRequests(requestedFiles: string[], prompt: PromptItem[], options: CodegenOptions): {
|
|
33
|
+
requestedFiles: string[];
|
|
34
|
+
alreadyProvidedFiles: string[];
|
|
35
|
+
legitimateFiles: string[];
|
|
36
|
+
illegitimateFiles: string[];
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* Generate a user-friendly message about file processing status
|
|
40
|
+
* @param alreadyProvidedFiles Files already provided in conversation
|
|
41
|
+
* @param requestedFiles Files that were requested
|
|
42
|
+
* @param legitimateFiles Files that are legitimate and will be processed
|
|
43
|
+
* @param illegitimateFiles Files that are not legitimate
|
|
44
|
+
* @param type Type of content being provided ('content' or 'fragments')
|
|
45
|
+
* @returns A formatted message string
|
|
46
|
+
*/
|
|
47
|
+
export declare function generateFilesContentPrompt(alreadyProvidedFiles: string[], requestedFiles: string[], legitimateFiles: string[], illegitimateFiles: string[], type: 'content' | 'fragments'): string;
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import { getSourceFiles } from '../../../../files/find-files.js';
|
|
2
|
+
import { refreshFiles } from '../../../../files/find-files.js';
|
|
3
|
+
import { getExpandedContextPaths } from '../../../../files/source-code-utils.js';
|
|
4
|
+
import { putSystemMessage } from '../../../../main/common/content-bus.js';
|
|
5
|
+
/**
|
|
6
|
+
* Checks if a file's content is already provided in the conversation history
|
|
7
|
+
* @param filePath The path of the file to check
|
|
8
|
+
* @param prompt The conversation history
|
|
9
|
+
* @returns true if the file content is already available in the history
|
|
10
|
+
*/
|
|
11
|
+
export function isFileContentAlreadyProvided(filePath, prompt) {
|
|
12
|
+
return prompt.some((item) => {
|
|
13
|
+
if (item.type !== 'user' || !item.functionResponses) {
|
|
14
|
+
return false;
|
|
15
|
+
}
|
|
16
|
+
return item.functionResponses.some((response) => {
|
|
17
|
+
if (response.name !== 'getSourceCode' || !response.content) {
|
|
18
|
+
return false;
|
|
19
|
+
}
|
|
20
|
+
try {
|
|
21
|
+
const sourceCodeMap = JSON.parse(response.content);
|
|
22
|
+
return (sourceCodeMap[filePath] &&
|
|
23
|
+
sourceCodeMap[filePath] &&
|
|
24
|
+
'content' in sourceCodeMap[filePath] &&
|
|
25
|
+
sourceCodeMap[filePath].content !== null);
|
|
26
|
+
}
|
|
27
|
+
catch (error) {
|
|
28
|
+
console.warn('Error parsing getSourceCode response:', error);
|
|
29
|
+
return false;
|
|
30
|
+
}
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Categorizes requested files into legitimate and illegitimate files
|
|
36
|
+
* @param requestedFiles Array of file paths to categorize
|
|
37
|
+
* @returns Object containing arrays of legitimate and illegitimate file paths
|
|
38
|
+
*/
|
|
39
|
+
export function categorizeLegitimateFiles(requestedFiles) {
|
|
40
|
+
const legitimateFiles = [];
|
|
41
|
+
const illegitimateFiles = [];
|
|
42
|
+
requestedFiles.forEach((filePath) => {
|
|
43
|
+
if (isFilePathLegitimate(filePath)) {
|
|
44
|
+
legitimateFiles.push(filePath);
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
illegitimateFiles.push(filePath);
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
return { legitimateFiles, illegitimateFiles };
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Checks if a file path is legitimate (exists in the source files)
|
|
54
|
+
* @param filePath The path of the file to check
|
|
55
|
+
* @returns true if the file path is legitimate
|
|
56
|
+
*/
|
|
57
|
+
export function isFilePathLegitimate(filePath) {
|
|
58
|
+
return getSourceFiles().includes(filePath);
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Process file requests by checking if they are already provided and categorizing them
|
|
62
|
+
* @param requestedFiles Array of file paths to process
|
|
63
|
+
* @param prompt The conversation history
|
|
64
|
+
* @param options Codegen options
|
|
65
|
+
* @returns Processed file request information
|
|
66
|
+
*/
|
|
67
|
+
export function processFileRequests(requestedFiles, prompt, options) {
|
|
68
|
+
// Expand context paths
|
|
69
|
+
requestedFiles = getExpandedContextPaths(requestedFiles, options);
|
|
70
|
+
// Check which files are already provided in the conversation history
|
|
71
|
+
const alreadyProvidedFiles = requestedFiles.filter((file) => isFileContentAlreadyProvided(file, prompt));
|
|
72
|
+
// Filter out already provided files
|
|
73
|
+
requestedFiles = requestedFiles.filter((file) => !isFileContentAlreadyProvided(file, prompt));
|
|
74
|
+
// Refresh files in case new files appeared
|
|
75
|
+
refreshFiles();
|
|
76
|
+
// Categorize files into legitimate and illegitimate
|
|
77
|
+
const { legitimateFiles, illegitimateFiles } = categorizeLegitimateFiles(requestedFiles);
|
|
78
|
+
putSystemMessage('Processing file requests', {
|
|
79
|
+
requestedFiles,
|
|
80
|
+
alreadyProvidedFiles,
|
|
81
|
+
legitimateFiles,
|
|
82
|
+
illegitimateFiles,
|
|
83
|
+
});
|
|
84
|
+
return {
|
|
85
|
+
requestedFiles,
|
|
86
|
+
alreadyProvidedFiles,
|
|
87
|
+
legitimateFiles,
|
|
88
|
+
illegitimateFiles,
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Generate a user-friendly message about file processing status
|
|
93
|
+
* @param alreadyProvidedFiles Files already provided in conversation
|
|
94
|
+
* @param requestedFiles Files that were requested
|
|
95
|
+
* @param legitimateFiles Files that are legitimate and will be processed
|
|
96
|
+
* @param illegitimateFiles Files that are not legitimate
|
|
97
|
+
* @param type Type of content being provided ('content' or 'fragments')
|
|
98
|
+
* @returns A formatted message string
|
|
99
|
+
*/
|
|
100
|
+
export function generateFilesContentPrompt(alreadyProvidedFiles, requestedFiles, legitimateFiles, illegitimateFiles, type) {
|
|
101
|
+
return ((alreadyProvidedFiles.length > 0
|
|
102
|
+
? `Some files were already provided in the conversation history:
|
|
103
|
+
${alreadyProvidedFiles.map((path) => `- ${path}`).join('\n')}
|
|
104
|
+
|
|
105
|
+
Providing ${type} for the remaining files:
|
|
106
|
+
${requestedFiles.map((path) => `- ${path}`).join('\n')}`
|
|
107
|
+
: `All requested file ${type} have been provided:
|
|
108
|
+
${legitimateFiles.map((path) => `- ${path}`).join('\n')}`) +
|
|
109
|
+
(illegitimateFiles.length > 0
|
|
110
|
+
? `\n\nSome files are not legitimate and their ${type} cannot be provided:
|
|
111
|
+
${illegitimateFiles.map((path) => `- ${path}`).join('\n')}`
|
|
112
|
+
: ''));
|
|
113
|
+
}
|
|
114
|
+
//# sourceMappingURL=file-request-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-request-utils.js","sourceRoot":"","sources":["../../../../../src/prompt/steps/step-iterate/handlers/file-request-utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|