@superblocksteam/vite-plugin-file-sync 2.0.0-next.13 → 2.0.0-next.130
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/app-interface/shell.d.ts.map +1 -1
- package/dist/ai-service/app-interface/shell.js +2 -0
- package/dist/ai-service/app-interface/shell.js.map +1 -1
- package/dist/ai-service/app-interface/source-tracker.d.ts +17 -0
- package/dist/ai-service/app-interface/source-tracker.d.ts.map +1 -0
- package/dist/ai-service/app-interface/source-tracker.js +41 -0
- package/dist/ai-service/app-interface/source-tracker.js.map +1 -0
- package/dist/ai-service/artifacts/bolt.js +1 -1
- package/dist/ai-service/artifacts/bolt.js.map +1 -1
- package/dist/ai-service/const.d.ts +8 -2
- package/dist/ai-service/const.d.ts.map +1 -1
- package/dist/ai-service/const.js +8 -2
- package/dist/ai-service/const.js.map +1 -1
- package/dist/ai-service/index.d.ts +5 -1
- package/dist/ai-service/index.d.ts.map +1 -1
- package/dist/ai-service/index.js +18 -0
- package/dist/ai-service/index.js.map +1 -1
- package/dist/ai-service/integrations/const.d.ts +1 -1
- package/dist/ai-service/integrations/const.js +1 -1
- package/dist/ai-service/integrations/const.js.map +1 -1
- package/dist/ai-service/integrations/to-sdk-prompt.js +210 -15
- package/dist/ai-service/integrations/to-sdk-prompt.js.map +1 -1
- package/dist/ai-service/prompts/generated/library-components/SbButtonPropsDocs.d.ts +1 -1
- package/dist/ai-service/prompts/generated/library-components/SbButtonPropsDocs.d.ts.map +1 -1
- package/dist/ai-service/prompts/generated/library-components/SbButtonPropsDocs.js +2 -2
- package/dist/ai-service/prompts/generated/library-components/SbButtonPropsDocs.js.map +1 -1
- package/dist/ai-service/prompts/generated/library-components/SbCheckboxPropsDocs.d.ts +1 -1
- package/dist/ai-service/prompts/generated/library-components/SbCheckboxPropsDocs.d.ts.map +1 -1
- package/dist/ai-service/prompts/generated/library-components/SbCheckboxPropsDocs.js +2 -2
- package/dist/ai-service/prompts/generated/library-components/SbCheckboxPropsDocs.js.map +1 -1
- package/dist/ai-service/prompts/generated/library-components/SbColumnPropsDocs.d.ts +1 -1
- package/dist/ai-service/prompts/generated/library-components/SbColumnPropsDocs.d.ts.map +1 -1
- package/dist/ai-service/prompts/generated/library-components/SbColumnPropsDocs.js +2 -2
- package/dist/ai-service/prompts/generated/library-components/SbColumnPropsDocs.js.map +1 -1
- package/dist/ai-service/prompts/generated/library-components/SbContainerPropsDocs.d.ts +1 -1
- package/dist/ai-service/prompts/generated/library-components/SbContainerPropsDocs.d.ts.map +1 -1
- package/dist/ai-service/prompts/generated/library-components/SbContainerPropsDocs.js +2 -2
- package/dist/ai-service/prompts/generated/library-components/SbContainerPropsDocs.js.map +1 -1
- package/dist/ai-service/prompts/generated/library-components/SbDatePickerPropsDocs.d.ts +1 -1
- package/dist/ai-service/prompts/generated/library-components/SbDatePickerPropsDocs.d.ts.map +1 -1
- package/dist/ai-service/prompts/generated/library-components/SbDatePickerPropsDocs.js +2 -2
- package/dist/ai-service/prompts/generated/library-components/SbDatePickerPropsDocs.js.map +1 -1
- package/dist/ai-service/prompts/generated/library-components/SbDropdownPropsDocs.d.ts +1 -1
- package/dist/ai-service/prompts/generated/library-components/SbDropdownPropsDocs.d.ts.map +1 -1
- package/dist/ai-service/prompts/generated/library-components/SbDropdownPropsDocs.js +2 -2
- package/dist/ai-service/prompts/generated/library-components/SbDropdownPropsDocs.js.map +1 -1
- package/dist/ai-service/prompts/generated/library-components/SbIconPropsDocs.d.ts +1 -1
- package/dist/ai-service/prompts/generated/library-components/SbIconPropsDocs.d.ts.map +1 -1
- package/dist/ai-service/prompts/generated/library-components/SbIconPropsDocs.js +2 -2
- package/dist/ai-service/prompts/generated/library-components/SbIconPropsDocs.js.map +1 -1
- package/dist/ai-service/prompts/generated/library-components/SbImagePropsDocs.d.ts +1 -1
- package/dist/ai-service/prompts/generated/library-components/SbImagePropsDocs.d.ts.map +1 -1
- package/dist/ai-service/prompts/generated/library-components/SbImagePropsDocs.js +2 -2
- package/dist/ai-service/prompts/generated/library-components/SbImagePropsDocs.js.map +1 -1
- package/dist/ai-service/prompts/generated/library-components/SbInputPropsDocs.d.ts +1 -1
- package/dist/ai-service/prompts/generated/library-components/SbInputPropsDocs.d.ts.map +1 -1
- package/dist/ai-service/prompts/generated/library-components/SbInputPropsDocs.js +2 -2
- package/dist/ai-service/prompts/generated/library-components/SbInputPropsDocs.js.map +1 -1
- package/dist/ai-service/prompts/generated/library-components/SbModalPropsDocs.d.ts +1 -1
- package/dist/ai-service/prompts/generated/library-components/SbModalPropsDocs.d.ts.map +1 -1
- package/dist/ai-service/prompts/generated/library-components/SbModalPropsDocs.js +2 -2
- package/dist/ai-service/prompts/generated/library-components/SbModalPropsDocs.js.map +1 -1
- package/dist/ai-service/prompts/generated/library-components/SbPagePropsDocs.d.ts +1 -1
- package/dist/ai-service/prompts/generated/library-components/SbPagePropsDocs.d.ts.map +1 -1
- package/dist/ai-service/prompts/generated/library-components/SbPagePropsDocs.js +2 -2
- package/dist/ai-service/prompts/generated/library-components/SbPagePropsDocs.js.map +1 -1
- package/dist/ai-service/prompts/generated/library-components/SbSectionPropsDocs.d.ts +1 -1
- package/dist/ai-service/prompts/generated/library-components/SbSectionPropsDocs.d.ts.map +1 -1
- package/dist/ai-service/prompts/generated/library-components/SbSectionPropsDocs.js +2 -2
- package/dist/ai-service/prompts/generated/library-components/SbSectionPropsDocs.js.map +1 -1
- package/dist/ai-service/prompts/generated/library-components/SbSlideoutPropsDocs.d.ts +1 -1
- package/dist/ai-service/prompts/generated/library-components/SbSlideoutPropsDocs.d.ts.map +1 -1
- package/dist/ai-service/prompts/generated/library-components/SbSlideoutPropsDocs.js +2 -2
- package/dist/ai-service/prompts/generated/library-components/SbSlideoutPropsDocs.js.map +1 -1
- package/dist/ai-service/prompts/generated/library-components/SbSwitchPropsDocs.d.ts +1 -1
- package/dist/ai-service/prompts/generated/library-components/SbSwitchPropsDocs.d.ts.map +1 -1
- package/dist/ai-service/prompts/generated/library-components/SbSwitchPropsDocs.js +2 -2
- package/dist/ai-service/prompts/generated/library-components/SbSwitchPropsDocs.js.map +1 -1
- package/dist/ai-service/prompts/generated/library-components/SbTablePropsDocs.d.ts +1 -1
- package/dist/ai-service/prompts/generated/library-components/SbTablePropsDocs.d.ts.map +1 -1
- package/dist/ai-service/prompts/generated/library-components/SbTablePropsDocs.js +2 -2
- package/dist/ai-service/prompts/generated/library-components/SbTablePropsDocs.js.map +1 -1
- package/dist/ai-service/prompts/generated/library-components/SbTextPropsDocs.d.ts +1 -1
- package/dist/ai-service/prompts/generated/library-components/SbTextPropsDocs.d.ts.map +1 -1
- package/dist/ai-service/prompts/generated/library-components/SbTextPropsDocs.js +2 -2
- package/dist/ai-service/prompts/generated/library-components/SbTextPropsDocs.js.map +1 -1
- package/dist/ai-service/prompts/generated/library-typedefs/Dim.js +1 -1
- package/dist/ai-service/prompts/generated/library-typedefs/SbEventFlow.d.ts +1 -1
- package/dist/ai-service/prompts/generated/library-typedefs/SbEventFlow.d.ts.map +1 -1
- package/dist/ai-service/prompts/generated/library-typedefs/SbEventFlow.js +2 -2
- package/dist/ai-service/prompts/generated/library-typedefs/SbEventFlow.js.map +1 -1
- package/dist/ai-service/prompts/generated/subprompts/index.d.ts +3 -0
- package/dist/ai-service/prompts/generated/subprompts/index.d.ts.map +1 -1
- package/dist/ai-service/prompts/generated/subprompts/index.js +3 -0
- package/dist/ai-service/prompts/generated/subprompts/index.js.map +1 -1
- package/dist/ai-service/prompts/generated/subprompts/superblocks-api.d.ts +1 -1
- package/dist/ai-service/prompts/generated/subprompts/superblocks-api.d.ts.map +1 -1
- package/dist/ai-service/prompts/generated/subprompts/superblocks-api.js +2 -2
- package/dist/ai-service/prompts/generated/subprompts/superblocks-api.js.map +1 -1
- package/dist/ai-service/prompts/generated/subprompts/superblocks-components-rules.d.ts +1 -1
- package/dist/ai-service/prompts/generated/subprompts/superblocks-components-rules.d.ts.map +1 -1
- package/dist/ai-service/prompts/generated/subprompts/superblocks-components-rules.js +2 -2
- package/dist/ai-service/prompts/generated/subprompts/superblocks-components-rules.js.map +1 -1
- package/dist/ai-service/prompts/generated/subprompts/superblocks-custom-components.js +1 -1
- package/dist/ai-service/prompts/generated/subprompts/superblocks-data-filtering.d.ts +2 -0
- package/dist/ai-service/prompts/generated/subprompts/superblocks-data-filtering.d.ts.map +1 -0
- package/dist/ai-service/prompts/generated/subprompts/superblocks-data-filtering.js +6 -0
- package/dist/ai-service/prompts/generated/subprompts/superblocks-data-filtering.js.map +1 -0
- package/dist/ai-service/prompts/generated/subprompts/superblocks-event-flow.d.ts +1 -1
- package/dist/ai-service/prompts/generated/subprompts/superblocks-event-flow.d.ts.map +1 -1
- package/dist/ai-service/prompts/generated/subprompts/superblocks-event-flow.js +2 -2
- package/dist/ai-service/prompts/generated/subprompts/superblocks-event-flow.js.map +1 -1
- package/dist/ai-service/prompts/generated/subprompts/superblocks-forms.d.ts +2 -0
- package/dist/ai-service/prompts/generated/subprompts/superblocks-forms.d.ts.map +1 -0
- package/dist/ai-service/prompts/generated/subprompts/superblocks-forms.js +6 -0
- package/dist/ai-service/prompts/generated/subprompts/superblocks-forms.js.map +1 -0
- package/dist/ai-service/prompts/generated/subprompts/superblocks-layouts.d.ts +1 -1
- package/dist/ai-service/prompts/generated/subprompts/superblocks-layouts.d.ts.map +1 -1
- package/dist/ai-service/prompts/generated/subprompts/superblocks-layouts.js +2 -2
- package/dist/ai-service/prompts/generated/subprompts/superblocks-layouts.js.map +1 -1
- package/dist/ai-service/prompts/generated/subprompts/superblocks-page.d.ts +1 -1
- package/dist/ai-service/prompts/generated/subprompts/superblocks-page.d.ts.map +1 -1
- package/dist/ai-service/prompts/generated/subprompts/superblocks-page.js +2 -2
- package/dist/ai-service/prompts/generated/subprompts/superblocks-page.js.map +1 -1
- package/dist/ai-service/prompts/generated/subprompts/superblocks-rbac.d.ts +2 -0
- package/dist/ai-service/prompts/generated/subprompts/superblocks-rbac.d.ts.map +1 -0
- package/dist/ai-service/prompts/generated/subprompts/superblocks-rbac.js +6 -0
- package/dist/ai-service/prompts/generated/subprompts/superblocks-rbac.js.map +1 -0
- package/dist/ai-service/prompts/generated/subprompts/superblocks-routes.d.ts +1 -1
- package/dist/ai-service/prompts/generated/subprompts/superblocks-routes.d.ts.map +1 -1
- package/dist/ai-service/prompts/generated/subprompts/superblocks-routes.js +2 -2
- package/dist/ai-service/prompts/generated/subprompts/superblocks-routes.js.map +1 -1
- package/dist/ai-service/prompts/generated/subprompts/superblocks-state.d.ts +1 -1
- package/dist/ai-service/prompts/generated/subprompts/superblocks-state.d.ts.map +1 -1
- package/dist/ai-service/prompts/generated/subprompts/superblocks-state.js +2 -2
- package/dist/ai-service/prompts/generated/subprompts/superblocks-state.js.map +1 -1
- package/dist/ai-service/prompts/generated/subprompts/superblocks-theming.js +1 -1
- package/dist/ai-service/prompts/generated/subprompts/system.d.ts +1 -1
- package/dist/ai-service/prompts/generated/subprompts/system.d.ts.map +1 -1
- package/dist/ai-service/prompts/generated/subprompts/system.js +2 -2
- package/dist/ai-service/prompts/generated/subprompts/system.js.map +1 -1
- package/dist/ai-service/prompts/system.d.ts.map +1 -1
- package/dist/ai-service/prompts/system.js +12 -0
- package/dist/ai-service/prompts/system.js.map +1 -1
- package/dist/ai-service/result-buffer/bolt.d.ts +3 -0
- package/dist/ai-service/result-buffer/bolt.d.ts.map +1 -1
- package/dist/ai-service/result-buffer/bolt.js +28 -1
- package/dist/ai-service/result-buffer/bolt.js.map +1 -1
- package/dist/ai-service/result-buffer/shared.d.ts +6 -2
- package/dist/ai-service/result-buffer/shared.d.ts.map +1 -1
- package/dist/ai-service/result-buffer/shared.js.map +1 -1
- package/dist/ai-service/state-machine/clark-fsm.d.ts +17 -2
- package/dist/ai-service/state-machine/clark-fsm.d.ts.map +1 -1
- package/dist/ai-service/state-machine/clark-fsm.js +1 -0
- package/dist/ai-service/state-machine/clark-fsm.js.map +1 -1
- package/dist/ai-service/state-machine/fsm.js +1 -1
- package/dist/ai-service/state-machine/fsm.js.map +1 -1
- package/dist/ai-service/state-machine/handlers/agent-planning.d.ts.map +1 -1
- package/dist/ai-service/state-machine/handlers/agent-planning.js +99 -34
- package/dist/ai-service/state-machine/handlers/agent-planning.js.map +1 -1
- package/dist/ai-service/state-machine/handlers/awaiting-user.d.ts.map +1 -1
- package/dist/ai-service/state-machine/handlers/awaiting-user.js +12 -0
- package/dist/ai-service/state-machine/handlers/awaiting-user.js.map +1 -1
- package/dist/ai-service/state-machine/handlers/llm-generating.d.ts +1 -1
- package/dist/ai-service/state-machine/handlers/llm-generating.d.ts.map +1 -1
- package/dist/ai-service/state-machine/handlers/llm-generating.js +94 -25
- package/dist/ai-service/state-machine/handlers/llm-generating.js.map +1 -1
- package/dist/ai-service/state-machine/handlers/post-processing.d.ts +6 -1
- package/dist/ai-service/state-machine/handlers/post-processing.d.ts.map +1 -1
- package/dist/ai-service/state-machine/handlers/post-processing.js +197 -38
- package/dist/ai-service/state-machine/handlers/post-processing.js.map +1 -1
- package/dist/ai-service/state-machine/handlers/runtime-reviewing.d.ts.map +1 -1
- package/dist/ai-service/state-machine/handlers/runtime-reviewing.js +50 -0
- package/dist/ai-service/state-machine/handlers/runtime-reviewing.js.map +1 -1
- package/dist/ai-service/state-machine/helpers/change-info.d.ts +8 -0
- package/dist/ai-service/state-machine/helpers/change-info.d.ts.map +1 -0
- package/dist/ai-service/state-machine/helpers/change-info.js +109 -0
- package/dist/ai-service/state-machine/helpers/change-info.js.map +1 -0
- package/dist/ai-service/state-machine/helpers/peer.d.ts +3 -2
- package/dist/ai-service/state-machine/helpers/peer.d.ts.map +1 -1
- package/dist/ai-service/state-machine/helpers/peer.js +35 -4
- package/dist/ai-service/state-machine/helpers/peer.js.map +1 -1
- package/dist/ai-service/state-machine/mocks.d.ts.map +1 -1
- package/dist/ai-service/state-machine/mocks.js +9 -1
- package/dist/ai-service/state-machine/mocks.js.map +1 -1
- package/dist/ai-service/transform/api-builder/shared.js +1 -1
- package/dist/ai-service/transform/api-builder/shared.js.map +1 -1
- package/dist/ai-service/transform/api-builder/to-sdk-transformer.js +1 -1
- package/dist/ai-service/transform/api-builder/to-sdk-transformer.js.map +1 -1
- package/dist/ai-service/transform/shared.d.ts +5 -0
- package/dist/ai-service/transform/shared.d.ts.map +1 -1
- package/dist/ai-service/transform/shared.js +24 -0
- package/dist/ai-service/transform/shared.js.map +1 -1
- package/dist/ai-service/types.d.ts +9 -0
- package/dist/ai-service/types.d.ts.map +1 -1
- package/dist/ai-service/types.js.map +1 -1
- package/dist/binding-extraction/extract-embedded-identifiers.d.ts +2 -11
- package/dist/binding-extraction/extract-embedded-identifiers.d.ts.map +1 -1
- package/dist/binding-extraction/extract-embedded-identifiers.js +9 -91
- package/dist/binding-extraction/extract-embedded-identifiers.js.map +1 -1
- package/dist/binding-extraction/template-strings.d.ts +1 -2
- package/dist/binding-extraction/template-strings.d.ts.map +1 -1
- package/dist/codegen.d.ts +2 -1
- package/dist/codegen.d.ts.map +1 -1
- package/dist/codegen.js +53 -17
- package/dist/codegen.js.map +1 -1
- package/dist/file-sync-vite-plugin.d.ts.map +1 -1
- package/dist/file-sync-vite-plugin.js +38 -26
- package/dist/file-sync-vite-plugin.js.map +1 -1
- package/dist/file-system-manager.d.ts +5 -4
- package/dist/file-system-manager.d.ts.map +1 -1
- package/dist/file-system-manager.js +50 -11
- package/dist/file-system-manager.js.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/inject-index-vite-plugin.d.ts +8 -0
- package/dist/inject-index-vite-plugin.d.ts.map +1 -0
- package/dist/inject-index-vite-plugin.js +41 -0
- package/dist/inject-index-vite-plugin.js.map +1 -0
- package/dist/lock-service/index.d.ts +13 -2
- package/dist/lock-service/index.d.ts.map +1 -1
- package/dist/lock-service/index.js +45 -16
- package/dist/lock-service/index.js.map +1 -1
- package/dist/parsing/ids.d.ts.map +1 -1
- package/dist/parsing/ids.js +2 -3
- package/dist/parsing/ids.js.map +1 -1
- package/dist/parsing/imports.d.ts +15 -0
- package/dist/parsing/imports.d.ts.map +1 -1
- package/dist/parsing/imports.js +42 -0
- package/dist/parsing/imports.js.map +1 -1
- package/dist/parsing/jsx-utils.d.ts +1 -1
- package/dist/parsing/jsx-utils.d.ts.map +1 -1
- package/dist/parsing/jsx-utils.js +1 -1
- package/dist/parsing/jsx-utils.js.map +1 -1
- package/dist/parsing/jsx.d.ts.map +1 -1
- package/dist/parsing/jsx.js +1 -12
- package/dist/parsing/jsx.js.map +1 -1
- package/dist/parsing/properties.d.ts.map +1 -1
- package/dist/parsing/properties.js +12 -2
- package/dist/parsing/properties.js.map +1 -1
- package/dist/parsing/scope.d.ts +0 -1
- package/dist/parsing/scope.d.ts.map +1 -1
- package/dist/parsing/scope.js +2 -6
- package/dist/parsing/scope.js.map +1 -1
- package/dist/parsing/theme.js +2 -2
- package/dist/parsing/theme.js.map +1 -1
- package/dist/parsing/util.d.ts +1 -0
- package/dist/parsing/util.d.ts.map +1 -1
- package/dist/parsing/util.js +3 -0
- package/dist/parsing/util.js.map +1 -1
- package/dist/plugin-options.d.ts +1 -1
- package/dist/plugin-options.d.ts.map +1 -1
- package/dist/refactor/javascript.d.ts.map +1 -1
- package/dist/refactor/javascript.js +7 -0
- package/dist/refactor/javascript.js.map +1 -1
- package/dist/rename-manager.d.ts.map +1 -1
- package/dist/rename-manager.js +19 -4
- package/dist/rename-manager.js.map +1 -1
- package/dist/routing.d.ts +2 -2
- package/dist/routing.d.ts.map +1 -1
- package/dist/routing.js +1 -2
- package/dist/routing.js.map +1 -1
- package/dist/sb-scope-manager.d.ts.map +1 -1
- package/dist/sb-scope-manager.js +8 -7
- package/dist/sb-scope-manager.js.map +1 -1
- package/dist/socket-manager.d.ts +4 -2
- package/dist/socket-manager.d.ts.map +1 -1
- package/dist/socket-manager.js +17 -4
- package/dist/socket-manager.js.map +1 -1
- package/dist/source-tracker.d.ts.map +1 -1
- package/dist/source-tracker.js +41 -30
- package/dist/source-tracker.js.map +1 -1
- package/dist/sync-service/draft-helpers.d.ts.map +1 -1
- package/dist/sync-service/draft-helpers.js +5 -90
- package/dist/sync-service/draft-helpers.js.map +1 -1
- package/dist/sync-service/index.d.ts +5 -0
- package/dist/sync-service/index.d.ts.map +1 -1
- package/dist/sync-service/index.js +51 -8
- package/dist/sync-service/index.js.map +1 -1
- package/dist/sync-service/server-rpc/client.d.ts +5 -1
- package/dist/sync-service/server-rpc/client.d.ts.map +1 -1
- package/dist/sync-service/server-rpc/client.js +9 -25
- package/dist/sync-service/server-rpc/client.js.map +1 -1
- package/dist/sync-service/server-rpc/handlers.d.ts +2 -2
- package/dist/sync-service/server-rpc/handlers.d.ts.map +1 -1
- package/dist/sync-service/server-rpc/handlers.js.map +1 -1
- package/dist/util/logger.d.ts.map +1 -1
- package/dist/util/logger.js +9 -8
- package/dist/util/logger.js.map +1 -1
- package/package.json +13 -8
|
@@ -1,71 +1,146 @@
|
|
|
1
1
|
import { Paths } from "../../const.js";
|
|
2
|
-
import {
|
|
3
|
-
import { ApiBuilderToYamlTransformer } from "../../transform/api-builder/to-yaml-transformer.js";
|
|
4
|
-
import { RemoveApiBuilderImportsTransformer } from "../../transform/remove-api-builder-imports/transformer.js";
|
|
5
|
-
import { applyFileTransformations, matchPath } from "../../transform/shared.js";
|
|
6
|
-
import { WorkaroundMissingSbApiTransformer } from "../../transform/workaround-missing-sbapi/transformer.js";
|
|
2
|
+
import { matchMultiplePaths } from "../../transform/shared.js";
|
|
7
3
|
import { LLM_FINISHED, POST_PROCESSING_ERRORED, POST_PROCESSING_FINISHED, } from "../clark-fsm.js";
|
|
4
|
+
import { sendChangeInfoHelper } from "../helpers/change-info.js";
|
|
8
5
|
import { sendUserMessageChannel } from "../helpers/peer.js";
|
|
9
6
|
import { transitionFrom } from "../helpers/transition.js";
|
|
10
|
-
export const doPostProcessing = (clark, {
|
|
7
|
+
export const doPostProcessing = (clark, { draftInterface, appShell }) => {
|
|
11
8
|
const transitionTo = transitionFrom(clark);
|
|
9
|
+
const sendChangeInfo = sendChangeInfoHelper(clark);
|
|
12
10
|
const sendUserMessage = sendUserMessageChannel(clark);
|
|
13
11
|
const createDraftFiles = (files) => {
|
|
12
|
+
for (const file of files) {
|
|
13
|
+
// ui > page/api change infos: ready dot
|
|
14
|
+
void sendChangeInfo({
|
|
15
|
+
type: "ready",
|
|
16
|
+
filePath: file.filePath,
|
|
17
|
+
});
|
|
18
|
+
}
|
|
14
19
|
return Promise.all(files.map((file) => draftInterface.createDraftFile(file.filePath, file.content)));
|
|
15
20
|
};
|
|
21
|
+
// send ui messages and invoke package installer
|
|
22
|
+
const handleDependencies = async (_packageJson) => {
|
|
23
|
+
// NOTE(colin): change info for packages is disabled for the demo
|
|
24
|
+
// const packageChanges = await parsePackageJsonChanges(
|
|
25
|
+
// draftInterface,
|
|
26
|
+
// packageJson.content,
|
|
27
|
+
// );
|
|
28
|
+
// ui > deps change infos: spin
|
|
29
|
+
// for (const change of packageChanges) {
|
|
30
|
+
// void sendChangeInfo({
|
|
31
|
+
// type: "pending",
|
|
32
|
+
// filePath: renderPath(DependencyInfoPath, {
|
|
33
|
+
// packageName: change.package,
|
|
34
|
+
// }),
|
|
35
|
+
// action: change.type,
|
|
36
|
+
// });
|
|
37
|
+
// }
|
|
38
|
+
// any previous package changes that are still marked ready
|
|
39
|
+
// should be treated as deleted
|
|
40
|
+
// const previousReadyChanges = Object.values(
|
|
41
|
+
// clark.context.generatedChangeInfo ?? {},
|
|
42
|
+
// ).filter(
|
|
43
|
+
// (change) =>
|
|
44
|
+
// change.status === "ready" &&
|
|
45
|
+
// change.action !== "delete" &&
|
|
46
|
+
// change.filePath.startsWith(DependencyInfoPath),
|
|
47
|
+
// );
|
|
48
|
+
// // ui > deps change infos: delete
|
|
49
|
+
// for (const change of previousReadyChanges) {
|
|
50
|
+
// sendChangeInfo({
|
|
51
|
+
// type: "ready",
|
|
52
|
+
// filePath: change.filePath,
|
|
53
|
+
// action: "delete",
|
|
54
|
+
// });
|
|
55
|
+
// }
|
|
56
|
+
await appShell.runNpmInstall(clark.context.abortController?.signal);
|
|
57
|
+
// ui > deps change infos: checkmark
|
|
58
|
+
// for (const change of packageChanges) {
|
|
59
|
+
// sendChangeInfo({
|
|
60
|
+
// type: "validated",
|
|
61
|
+
// filePath: renderPath(DependencyInfoPath, {
|
|
62
|
+
// packageName: change.package,
|
|
63
|
+
// }),
|
|
64
|
+
// });
|
|
65
|
+
// }
|
|
66
|
+
};
|
|
16
67
|
return async ({ event }) => {
|
|
17
68
|
switch (event.type) {
|
|
18
69
|
case LLM_FINISHED: {
|
|
19
70
|
const { files } = event;
|
|
71
|
+
const apiPaths = matchMultiplePaths(
|
|
72
|
+
// we have already drafted the generated apis into yaml at this point,
|
|
73
|
+
// but the api builder files are still in the event's files list
|
|
74
|
+
Paths.ApiYamls, Paths.GeneratedApis);
|
|
75
|
+
const scopePaths = matchMultiplePaths(Paths.PageScopes, Paths.AppScope);
|
|
20
76
|
try {
|
|
21
|
-
const
|
|
22
|
-
|
|
23
|
-
skipCleanup: true,
|
|
24
|
-
templateRenderer,
|
|
25
|
-
}),
|
|
26
|
-
new AddMetadataToApiYamlTransformer({
|
|
27
|
-
applicationId,
|
|
28
|
-
organizationId,
|
|
29
|
-
}),
|
|
30
|
-
new RemoveApiBuilderImportsTransformer(),
|
|
31
|
-
new WorkaroundMissingSbApiTransformer(),
|
|
32
|
-
]);
|
|
33
|
-
const scopePathMatcher = matchPath(Paths.AllScopes);
|
|
34
|
-
const apiPathMatcher = matchPath(Paths.ApiYamls);
|
|
35
|
-
// bucket files because order matters
|
|
36
|
-
const { packageJson, scopes, apiYamls, otherArtifacts } = transformed.reduce((acc, file) => {
|
|
37
|
-
if (file.filePath === "package.json") {
|
|
77
|
+
const { packageJson, scopes, notApiArtifacts } = files.reduce((acc, file) => {
|
|
78
|
+
if (file.filePath === Paths.PackageJson) {
|
|
38
79
|
acc.packageJson = file;
|
|
39
80
|
}
|
|
40
|
-
else if (
|
|
81
|
+
else if (scopePaths(file.filePath).matched) {
|
|
41
82
|
acc.scopes.push(file);
|
|
42
83
|
}
|
|
43
|
-
else if (
|
|
44
|
-
acc.
|
|
45
|
-
}
|
|
46
|
-
else {
|
|
47
|
-
acc.otherArtifacts.push(file);
|
|
84
|
+
else if (!apiPaths(file.filePath).matched) {
|
|
85
|
+
acc.notApiArtifacts.push(file);
|
|
48
86
|
}
|
|
49
87
|
return acc;
|
|
50
88
|
}, {
|
|
51
89
|
packageJson: null,
|
|
52
|
-
apiYamls: [],
|
|
53
90
|
scopes: [],
|
|
54
|
-
|
|
91
|
+
notApiArtifacts: [],
|
|
55
92
|
});
|
|
56
|
-
if (
|
|
57
|
-
sendUserMessage({
|
|
58
|
-
|
|
93
|
+
if (!clark.context.usedDebugging) {
|
|
94
|
+
void sendUserMessage({
|
|
95
|
+
type: "text",
|
|
96
|
+
group: "agent-engineer",
|
|
97
|
+
text: "Okay, my first pass at this app is complete. Let me pass off to the Security Agent to review.",
|
|
59
98
|
});
|
|
99
|
+
// ui > control message A: spin
|
|
100
|
+
void sendUserMessage({
|
|
101
|
+
type: "control",
|
|
102
|
+
group: "agent-security/libraries",
|
|
103
|
+
status: "pending",
|
|
104
|
+
text: "Checking external libraries",
|
|
105
|
+
}, 500);
|
|
106
|
+
// ui > control message A: checkmark
|
|
107
|
+
void sendUserMessage({
|
|
108
|
+
type: "control",
|
|
109
|
+
group: "agent-security/libraries",
|
|
110
|
+
status: "validated",
|
|
111
|
+
text: "Checking external libraries",
|
|
112
|
+
}, 1000);
|
|
113
|
+
}
|
|
114
|
+
if (packageJson) {
|
|
60
115
|
await createDraftFiles([packageJson]);
|
|
61
|
-
await
|
|
116
|
+
await handleDependencies(packageJson);
|
|
62
117
|
}
|
|
63
118
|
await createDraftFiles(scopes);
|
|
64
|
-
await createDraftFiles(
|
|
65
|
-
|
|
119
|
+
await createDraftFiles(notApiArtifacts);
|
|
120
|
+
if (!clark.context.usedDebugging) {
|
|
121
|
+
// ui > control message B: spin
|
|
122
|
+
void sendUserMessage({
|
|
123
|
+
type: "control",
|
|
124
|
+
group: "agent-security/authz",
|
|
125
|
+
status: "pending",
|
|
126
|
+
text: "Reviewing authorization logic",
|
|
127
|
+
});
|
|
128
|
+
// ui > control message B: checkmark
|
|
129
|
+
void sendUserMessage({
|
|
130
|
+
type: "control",
|
|
131
|
+
group: "agent-security/authz",
|
|
132
|
+
status: "validated",
|
|
133
|
+
text: "Reviewing authorization logic",
|
|
134
|
+
}, 1000);
|
|
135
|
+
void sendUserMessage({
|
|
136
|
+
type: "text",
|
|
137
|
+
group: "agent-security",
|
|
138
|
+
text: "Looks good to me! Handing off to the QA agent to review the functionality.",
|
|
139
|
+
});
|
|
140
|
+
}
|
|
66
141
|
transitionTo({
|
|
67
142
|
type: POST_PROCESSING_FINISHED,
|
|
68
|
-
files:
|
|
143
|
+
files: files,
|
|
69
144
|
});
|
|
70
145
|
}
|
|
71
146
|
catch (err) {
|
|
@@ -82,4 +157,88 @@ export const doPostProcessing = (clark, { applicationId, organizationId, draftIn
|
|
|
82
157
|
}
|
|
83
158
|
};
|
|
84
159
|
};
|
|
160
|
+
// get dependency changes to be shown in the ui
|
|
161
|
+
export const parsePackageJsonChanges = async (draftInterface, updatedPackageJsonContent) => {
|
|
162
|
+
// TODO: as an optimization, we could get the datastructure diff form rather than string
|
|
163
|
+
const diff = await draftInterface.getDraftDiff([Paths.PackageJson]);
|
|
164
|
+
if (!diff) {
|
|
165
|
+
return [];
|
|
166
|
+
}
|
|
167
|
+
let updatedPackageJson;
|
|
168
|
+
try {
|
|
169
|
+
updatedPackageJson = JSON.parse(updatedPackageJsonContent);
|
|
170
|
+
}
|
|
171
|
+
catch {
|
|
172
|
+
return [];
|
|
173
|
+
}
|
|
174
|
+
const allCurrentPackages = new Set([
|
|
175
|
+
// we only surface packages in the dependencies object
|
|
176
|
+
...Object.keys(updatedPackageJson.dependencies || {}),
|
|
177
|
+
]);
|
|
178
|
+
const changes = [];
|
|
179
|
+
const lines = diff.split("\n");
|
|
180
|
+
const addedPackages = new Set();
|
|
181
|
+
const removedPackages = new Set();
|
|
182
|
+
const packageRegex = /^\s*"([^"]+)":\s*"[^"]*",?$/;
|
|
183
|
+
for (const line of lines) {
|
|
184
|
+
// Skip non-diff content lines
|
|
185
|
+
if (!line.startsWith("+") && !line.startsWith("-")) {
|
|
186
|
+
continue;
|
|
187
|
+
}
|
|
188
|
+
// Skip diff metadata lines (like +++ or ---)
|
|
189
|
+
if (line.startsWith("+++") || line.startsWith("---")) {
|
|
190
|
+
continue;
|
|
191
|
+
}
|
|
192
|
+
const lineContent = line.slice(1); // Remove +, -, or space prefix
|
|
193
|
+
const match = lineContent.match(packageRegex);
|
|
194
|
+
if (match) {
|
|
195
|
+
const packageName = match[1];
|
|
196
|
+
if (!packageName) {
|
|
197
|
+
continue;
|
|
198
|
+
}
|
|
199
|
+
if (line.startsWith("+")) {
|
|
200
|
+
// For additions, verify the package is actually in the final dependencies
|
|
201
|
+
if (allCurrentPackages.has(packageName)) {
|
|
202
|
+
addedPackages.add(packageName);
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
else if (line.startsWith("-")) {
|
|
206
|
+
// For removals, exclude obvious top-level package.json fields
|
|
207
|
+
if (!commonTopLevelPackageJsonFields.has(packageName)) {
|
|
208
|
+
removedPackages.add(packageName);
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
// Determine the type of change for each package
|
|
214
|
+
for (const packageName of addedPackages) {
|
|
215
|
+
if (removedPackages.has(packageName)) {
|
|
216
|
+
// Package appears in both add and remove = edit
|
|
217
|
+
changes.push({ type: "edit", package: packageName });
|
|
218
|
+
}
|
|
219
|
+
else {
|
|
220
|
+
// Package only appears in add = addition
|
|
221
|
+
changes.push({ type: "create", package: packageName });
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
for (const packageName of removedPackages) {
|
|
225
|
+
if (!addedPackages.has(packageName)) {
|
|
226
|
+
changes.push({ type: "delete", package: packageName });
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
return changes;
|
|
230
|
+
};
|
|
231
|
+
const commonTopLevelPackageJsonFields = new Set([
|
|
232
|
+
"name",
|
|
233
|
+
"version",
|
|
234
|
+
"description",
|
|
235
|
+
"main",
|
|
236
|
+
"scripts",
|
|
237
|
+
"keywords",
|
|
238
|
+
"author",
|
|
239
|
+
"license",
|
|
240
|
+
"repository",
|
|
241
|
+
"homepage",
|
|
242
|
+
"bugs",
|
|
243
|
+
]);
|
|
85
244
|
//# sourceMappingURL=post-processing.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"post-processing.js","sourceRoot":"","sources":["../../../../src/ai-service/state-machine/handlers/post-processing.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AACvC,OAAO,EAAE
|
|
1
|
+
{"version":3,"file":"post-processing.js","sourceRoot":"","sources":["../../../../src/ai-service/state-machine/handlers/post-processing.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-reviewing.d.ts","sourceRoot":"","sources":["../../../../src/ai-service/state-machine/handlers/runtime-reviewing.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"runtime-reviewing.d.ts","sourceRoot":"","sources":["../../../../src/ai-service/state-machine/handlers/runtime-reviewing.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAKV,KAAK,EACL,eAAe,EAChB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAE/D,eAAO,MAAM,kBAAkB,GAC7B,OAAO,KAAK,EACZ,QAAQ,uBAAuB,MAMjB,WAAW,eAAe,KAAG,OAAO,CAAC,IAAI,CAsGxD,CAAC"}
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
import { APP_RUNTIME_UPDATED_WITHOUT_EDITS, POST_PROCESSING_FINISHED, RUNTIME_REVIEW_ERRORED, RUNTIME_REVIEW_FINISHED, USER_REJECTED_DRAFT, } from "../clark-fsm.js";
|
|
2
|
+
import { sendChangeInfoHelper } from "../helpers/change-info.js";
|
|
3
|
+
import { sendUserMessageChannel } from "../helpers/peer.js";
|
|
2
4
|
import { transitionFrom } from "../helpers/transition.js";
|
|
3
5
|
export const doRuntimeReviewing = (clark, params) => {
|
|
4
6
|
const transitionTo = transitionFrom(clark);
|
|
7
|
+
const sendChangeInfo = sendChangeInfoHelper(clark);
|
|
8
|
+
const sendUserMessage = sendUserMessageChannel(clark);
|
|
5
9
|
return async ({ event }) => {
|
|
6
10
|
switch (event.type) {
|
|
7
11
|
case USER_REJECTED_DRAFT:
|
|
@@ -18,6 +22,25 @@ export const doRuntimeReviewing = (clark, params) => {
|
|
|
18
22
|
...context,
|
|
19
23
|
hasSuggestions: context.hasSuggestions || files.length > 0,
|
|
20
24
|
}));
|
|
25
|
+
if (!clark.context.usedDebugging) {
|
|
26
|
+
void sendUserMessage({
|
|
27
|
+
type: "text",
|
|
28
|
+
group: "agent-qa",
|
|
29
|
+
text: "Great, I'll confirm this app works as expected.",
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
void sendUserMessage({
|
|
33
|
+
type: "control",
|
|
34
|
+
group: "agent-qa/user-flows",
|
|
35
|
+
status: "pending",
|
|
36
|
+
text: "Validating user flows",
|
|
37
|
+
});
|
|
38
|
+
void sendUserMessage({
|
|
39
|
+
type: "control",
|
|
40
|
+
group: "agent-qa/api",
|
|
41
|
+
status: "pending",
|
|
42
|
+
text: "Testing API execution",
|
|
43
|
+
});
|
|
21
44
|
const tsErrorsByPath = await params.appShell.runTypecheck(clark.context.abortController?.signal);
|
|
22
45
|
if (tsErrorsByPath) {
|
|
23
46
|
transitionTo({
|
|
@@ -26,6 +49,33 @@ export const doRuntimeReviewing = (clark, params) => {
|
|
|
26
49
|
});
|
|
27
50
|
}
|
|
28
51
|
else {
|
|
52
|
+
for (const filePath of Object.keys(clark.context.generatedChangeInfo ?? {})) {
|
|
53
|
+
void sendChangeInfo({
|
|
54
|
+
type: "validated",
|
|
55
|
+
filePath,
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
let delay = 500;
|
|
59
|
+
if (clark.context.usedDebugging) {
|
|
60
|
+
void sendUserMessage({
|
|
61
|
+
type: "text",
|
|
62
|
+
group: "agent-qa",
|
|
63
|
+
text: "Looks like the Engineer Agent has fixed the bugs I've reported. We're good to go!",
|
|
64
|
+
});
|
|
65
|
+
delay = 0;
|
|
66
|
+
}
|
|
67
|
+
void sendUserMessage({
|
|
68
|
+
type: "control",
|
|
69
|
+
group: "agent-qa/user-flows",
|
|
70
|
+
status: "validated",
|
|
71
|
+
text: "Validating user flows",
|
|
72
|
+
}, delay);
|
|
73
|
+
void sendUserMessage({
|
|
74
|
+
type: "control",
|
|
75
|
+
group: "agent-qa/api",
|
|
76
|
+
status: "validated",
|
|
77
|
+
text: "Testing API execution",
|
|
78
|
+
}, delay + 500);
|
|
29
79
|
transitionTo({
|
|
30
80
|
type: RUNTIME_REVIEW_FINISHED,
|
|
31
81
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-reviewing.js","sourceRoot":"","sources":["../../../../src/ai-service/state-machine/handlers/runtime-reviewing.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iCAAiC,EACjC,wBAAwB,EACxB,sBAAsB,EACtB,uBAAuB,EACvB,mBAAmB,GACpB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAW1D,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAChC,KAAY,EACZ,MAA+B,EAC/B,EAAE;IACF,MAAM,YAAY,GAAG,cAAc,CAAoB,KAAK,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"runtime-reviewing.js","sourceRoot":"","sources":["../../../../src/ai-service/state-machine/handlers/runtime-reviewing.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { Clark } from "../clark-fsm.js";
|
|
2
|
+
export declare const DependencyInfoPath = "package.json/:packageName";
|
|
3
|
+
export declare const sendChangeInfoHelper: (clark: Clark) => ({ type, filePath, action, }: {
|
|
4
|
+
type: "pending" | "error" | "ready" | "validated";
|
|
5
|
+
filePath: string;
|
|
6
|
+
action?: "create" | "edit" | "delete";
|
|
7
|
+
}) => Promise<void> | undefined;
|
|
8
|
+
//# sourceMappingURL=change-info.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"change-info.d.ts","sourceRoot":"","sources":["../../../../src/ai-service/state-machine/helpers/change-info.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAE7C,eAAO,MAAM,kBAAkB,8BAA8B,CAAC;AAE9D,eAAO,MAAM,oBAAoB,GAAI,OAAO,KAAK,MAsBvC,6BAIL;IACD,IAAI,EAAE,SAAS,GAAG,OAAO,GAAG,OAAO,GAAG,WAAW,CAAC;IAClD,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,QAAQ,CAAC;CACvC,8BA+FF,CAAC"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { basename } from "node:path";
|
|
2
|
+
import { getLogger } from "../../../util/logger.js";
|
|
3
|
+
import { Paths } from "../../const.js";
|
|
4
|
+
import { matchPath, renderPath } from "../../transform/shared.js";
|
|
5
|
+
import { sendChangeInfoChannel } from "./peer.js";
|
|
6
|
+
export const DependencyInfoPath = "package.json/:packageName";
|
|
7
|
+
export const sendChangeInfoHelper = (clark) => {
|
|
8
|
+
const apiPathMatcher = matchPath(Paths.GeneratedApis);
|
|
9
|
+
const componentPathMatcher = matchPath(Paths.Components);
|
|
10
|
+
const pagePathMatcher = matchPath(Paths.PageIndexes);
|
|
11
|
+
const dependencyPathMatcher = matchPath(DependencyInfoPath);
|
|
12
|
+
const sendChangeInfo = sendChangeInfoChannel(clark);
|
|
13
|
+
const push = (info) => {
|
|
14
|
+
clark.updateContext((context) => ({
|
|
15
|
+
...context,
|
|
16
|
+
generatedChangeInfo: {
|
|
17
|
+
...context.generatedChangeInfo,
|
|
18
|
+
[info.filePath]: info,
|
|
19
|
+
},
|
|
20
|
+
}));
|
|
21
|
+
return sendChangeInfo(info);
|
|
22
|
+
};
|
|
23
|
+
if (!clark.context.generatedChangeInfo) {
|
|
24
|
+
clark.updateContext({
|
|
25
|
+
generatedChangeInfo: {},
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
return ({ type, filePath, action, }) => {
|
|
29
|
+
const { initialFilePaths } = clark.context;
|
|
30
|
+
const existingChangeInfo = clark.context.generatedChangeInfo?.[filePath];
|
|
31
|
+
switch (type) {
|
|
32
|
+
case "ready":
|
|
33
|
+
case "validated":
|
|
34
|
+
case "error": {
|
|
35
|
+
if (!existingChangeInfo) {
|
|
36
|
+
getLogger().warn(`[ai-service] can't update changeInfo for unknown file: ${filePath} (type: ${type}, action: ${action})`);
|
|
37
|
+
getLogger().info(`[ai-service] ${JSON.stringify({
|
|
38
|
+
generatedChangeInfo: clark.context.generatedChangeInfo,
|
|
39
|
+
})}`);
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
return push({
|
|
43
|
+
...existingChangeInfo,
|
|
44
|
+
status: type,
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
case "pending": {
|
|
48
|
+
const { apis, components } = initialFilePaths ?? {};
|
|
49
|
+
if (existingChangeInfo) {
|
|
50
|
+
return push({
|
|
51
|
+
...existingChangeInfo,
|
|
52
|
+
status: "pending",
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
const dependencyPath = dependencyPathMatcher(filePath);
|
|
56
|
+
if (dependencyPath.matched) {
|
|
57
|
+
const { packageName } = dependencyPath.params;
|
|
58
|
+
return push({
|
|
59
|
+
type: "dependency",
|
|
60
|
+
name: packageName,
|
|
61
|
+
action: action ?? "create",
|
|
62
|
+
status: "pending",
|
|
63
|
+
filePath,
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
const componentPath = componentPathMatcher(filePath);
|
|
67
|
+
if (componentPath.matched) {
|
|
68
|
+
let { componentName } = componentPath.params;
|
|
69
|
+
componentName = basename(componentName, ".tsx");
|
|
70
|
+
return push({
|
|
71
|
+
type: "component",
|
|
72
|
+
name: componentName,
|
|
73
|
+
action: components?.includes(componentName) ? "edit" : "create",
|
|
74
|
+
status: "pending",
|
|
75
|
+
filePath,
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
const pagePath = pagePathMatcher(filePath);
|
|
79
|
+
if (pagePath.matched) {
|
|
80
|
+
const { pageName } = pagePath.params;
|
|
81
|
+
return push({
|
|
82
|
+
type: "page",
|
|
83
|
+
name: pageName,
|
|
84
|
+
action: "edit",
|
|
85
|
+
status: "pending",
|
|
86
|
+
filePath,
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
const apiPath = apiPathMatcher(filePath);
|
|
90
|
+
if (apiPath.matched) {
|
|
91
|
+
let { apiName } = apiPath.params;
|
|
92
|
+
apiName = basename(apiName, ".ts");
|
|
93
|
+
const yamlPath = renderPath(Paths.ApiYamls, {
|
|
94
|
+
...apiPath.params,
|
|
95
|
+
apiName,
|
|
96
|
+
});
|
|
97
|
+
return push({
|
|
98
|
+
type: "api",
|
|
99
|
+
name: apiName,
|
|
100
|
+
action: apis?.includes(yamlPath) ? "edit" : "create",
|
|
101
|
+
status: "pending",
|
|
102
|
+
filePath,
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
};
|
|
108
|
+
};
|
|
109
|
+
//# sourceMappingURL=change-info.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"change-info.js","sourceRoot":"","sources":["../../../../src/ai-service/state-machine/helpers/change-info.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { Clark } from "../clark-fsm.js";
|
|
2
2
|
import type { EditorClientMethods } from "@superblocksteam/library-shared/types";
|
|
3
|
-
export declare const sendUserMessageChannel: (clark: Clark) => (payload: Parameters<EditorClientMethods["aiPushMessage"]>[0]) =>
|
|
4
|
-
export declare const sendUserCompletionChannel: (clark: Clark) => (payload: Parameters<EditorClientMethods["aiSetCompleted"]>[0]) => Promise<
|
|
3
|
+
export declare const sendUserMessageChannel: (clark: Clark) => (payload: Parameters<EditorClientMethods["aiPushMessage"]>[0], delay?: number) => Promise<void>;
|
|
4
|
+
export declare const sendUserCompletionChannel: (clark: Clark) => (payload: Parameters<EditorClientMethods["aiSetCompleted"]>[0], delay?: number) => Promise<void>;
|
|
5
|
+
export declare const sendChangeInfoChannel: (clark: Clark) => (payload: Parameters<EditorClientMethods["aiPushChangeInfo"]>[0], delay?: number) => Promise<void>;
|
|
5
6
|
//# sourceMappingURL=peer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"peer.d.ts","sourceRoot":"","sources":["../../../../src/ai-service/state-machine/helpers/peer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"peer.d.ts","sourceRoot":"","sources":["../../../../src/ai-service/state-machine/helpers/peer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AAwBjF,eAAO,MAAM,sBAAsB,GAAI,OAAO,KAAK,MAG/C,SAAS,UAAU,CAAC,mBAAmB,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,EAC5D,cAAS,kBAOZ,CAAC;AAEF,eAAO,MAAM,yBAAyB,GAAI,OAAO,KAAK,MAGlD,SAAS,UAAU,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,EAC7D,cAAS,kBAOZ,CAAC;AAEF,eAAO,MAAM,qBAAqB,GAAI,OAAO,KAAK,MAG9C,SAAS,UAAU,CAAC,mBAAmB,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,EAC/D,cAAS,kBAOZ,CAAC"}
|
|
@@ -1,7 +1,38 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import { OperationQueue } from "../../../util/operation-queue.js";
|
|
2
|
+
const peerQueue = (clark) => {
|
|
3
|
+
const queue = clark.context.peerChannelQueue ?? new OperationQueue();
|
|
4
|
+
clark.updateContext({
|
|
5
|
+
peerChannelQueue: queue,
|
|
6
|
+
});
|
|
7
|
+
return (operation, delay = 0) => {
|
|
8
|
+
if (delay) {
|
|
9
|
+
queue.enqueue(() => new Promise((resolve) => {
|
|
10
|
+
setTimeout(() => {
|
|
11
|
+
operation().then(resolve);
|
|
12
|
+
}, delay);
|
|
13
|
+
}));
|
|
14
|
+
}
|
|
15
|
+
else {
|
|
16
|
+
queue.enqueue(operation);
|
|
17
|
+
}
|
|
18
|
+
};
|
|
3
19
|
};
|
|
4
|
-
export const
|
|
5
|
-
|
|
20
|
+
export const sendUserMessageChannel = (clark) => {
|
|
21
|
+
const queue = peerQueue(clark);
|
|
22
|
+
return async (payload, delay = 0) => {
|
|
23
|
+
return queue(async () => clark.context.peer?.call.aiPushMessage(payload), delay);
|
|
24
|
+
};
|
|
25
|
+
};
|
|
26
|
+
export const sendUserCompletionChannel = (clark) => {
|
|
27
|
+
const queue = peerQueue(clark);
|
|
28
|
+
return async (payload, delay = 0) => {
|
|
29
|
+
return queue(async () => clark.context.peer?.call.aiSetCompleted(payload), delay);
|
|
30
|
+
};
|
|
31
|
+
};
|
|
32
|
+
export const sendChangeInfoChannel = (clark) => {
|
|
33
|
+
const queue = peerQueue(clark);
|
|
34
|
+
return async (payload, delay = 0) => {
|
|
35
|
+
return queue(async () => clark.context.peer?.call.aiPushChangeInfo(payload), delay);
|
|
36
|
+
};
|
|
6
37
|
};
|
|
7
38
|
//# sourceMappingURL=peer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"peer.js","sourceRoot":"","sources":["../../../../src/ai-service/state-machine/helpers/peer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"peer.js","sourceRoot":"","sources":["../../../../src/ai-service/state-machine/helpers/peer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAIlE,MAAM,SAAS,GAAG,CAAC,KAAY,EAAE,EAAE;IACjC,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,gBAAgB,IAAI,IAAI,cAAc,EAAE,CAAC;IACrE,KAAK,CAAC,aAAa,CAAC;QAClB,gBAAgB,EAAE,KAAK;KACxB,CAAC,CAAC;IAEH,OAAO,CAAC,SAA8B,EAAE,KAAK,GAAG,CAAC,EAAE,EAAE;QACnD,IAAI,KAAK,EAAE,CAAC;YACV,KAAK,CAAC,OAAO,CACX,GAAG,EAAE,CACH,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;gBACtB,UAAU,CAAC,GAAG,EAAE;oBACd,SAAS,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC5B,CAAC,EAAE,KAAK,CAAC,CAAC;YACZ,CAAC,CAAC,CACL,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,KAAY,EAAE,EAAE;IACrD,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;IAC/B,OAAO,KAAK,EACV,OAA4D,EAC5D,KAAK,GAAG,CAAC,EACT,EAAE;QACF,OAAO,KAAK,CACV,KAAK,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,EAC3D,KAAK,CACN,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC,KAAY,EAAE,EAAE;IACxD,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;IAC/B,OAAO,KAAK,EACV,OAA6D,EAC7D,KAAK,GAAG,CAAC,EACT,EAAE;QACF,OAAO,KAAK,CACV,KAAK,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,EAC5D,KAAK,CACN,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,KAAY,EAAE,EAAE;IACpD,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;IAC/B,OAAO,KAAK,EACV,OAA+D,EAC/D,KAAK,GAAG,CAAC,EACT,EAAE;QACF,OAAO,KAAK,CACV,KAAK,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAC9D,KAAK,CACN,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mocks.d.ts","sourceRoot":"","sources":["../../../src/ai-service/state-machine/mocks.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,KAAK,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AACrE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AACjF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAE7D,eAAO,MAAM,QAAQ,EAML,aAAa,CAAC,mBAAmB,CAAC,CAAC;AAEnD,eAAO,MAAM,SAAS,EAQN,KAAK,CAAC;AAEtB,eAAO,MAAM,iBAAiB,
|
|
1
|
+
{"version":3,"file":"mocks.d.ts","sourceRoot":"","sources":["../../../src/ai-service/state-machine/mocks.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,KAAK,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AACrE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uCAAuC,CAAC;AACjF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAE7D,eAAO,MAAM,QAAQ,EAML,aAAa,CAAC,mBAAmB,CAAC,CAAC;AAEnD,eAAO,MAAM,SAAS,EAQN,KAAK,CAAC;AAEtB,eAAO,MAAM,iBAAiB,EA6Dd,uBAAuB,CAAC"}
|
|
@@ -33,9 +33,17 @@ export const mockHandlerParams = {
|
|
|
33
33
|
signals: {
|
|
34
34
|
emit: vi.fn(),
|
|
35
35
|
},
|
|
36
|
+
sourceTrackerInterface: {
|
|
37
|
+
getElementToFilePathMap: vi.fn(),
|
|
38
|
+
},
|
|
36
39
|
appShell: {
|
|
37
40
|
appRootDirPath: "/test/app",
|
|
38
|
-
readFiles: vi.fn()
|
|
41
|
+
readFiles: vi.fn().mockReturnValue([
|
|
42
|
+
{
|
|
43
|
+
name: "test.ts",
|
|
44
|
+
content: 'console.log("test");',
|
|
45
|
+
},
|
|
46
|
+
]),
|
|
39
47
|
runTypecheck: vi.fn(),
|
|
40
48
|
},
|
|
41
49
|
artifactProcessor: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mocks.js","sourceRoot":"","sources":["../../../src/ai-service/state-machine/mocks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,IAAI,CAAC;AAC5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAK5B,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,IAAI,EAAE;QACJ,aAAa,EAAE,EAAE,CAAC,EAAE,EAAE;QACtB,cAAc,EAAE,EAAE,CAAC,EAAE,EAAE;KACxB;IACD,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE;CACkC,CAAC;AAEnD,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,KAAK,EAAE,MAAM;IACb,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IAC3B,WAAW,EAAE,EAAE,CAAC,EAAE,EAAE;IACpB,aAAa,EAAE,EAAE,CAAC,EAAE,EAAE;IACtB,cAAc,EAAE,EAAE,CAAC,EAAE,EAAE;IACvB,gBAAgB,EAAE,EAAE,CAAC,EAAE,EAAE;IACzB,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE;CACM,CAAC;AAEtB,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,cAAc,EAAE;QACd,eAAe,EAAE,EAAE,CAAC,EAAE,EAAE;QACxB,YAAY,EAAE,EAAE,CAAC,EAAE,EAAE;KACtB;IACD,cAAc,EAAE,WAAW;IAC3B,gBAAgB,EAAE;QAChB,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE;QACZ,OAAO,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,kBAAkB,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;KACxD;IACD,gBAAgB,EAAE;QAChB,MAAM,EAAE,EAAE,CAAC,EAAE,EAAE;KAChB;IACD,OAAO,EAAE;QACP,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE;KACd;IACD,QAAQ,EAAE;QACR,cAAc,EAAE,WAAW;QAC3B,SAAS,EAAE,EAAE,CAAC,EAAE,EAAE;
|
|
1
|
+
{"version":3,"file":"mocks.js","sourceRoot":"","sources":["../../../src/ai-service/state-machine/mocks.ts"],"names":[],"mappings":"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"}
|