From 3d47227fbdc6ae970fd9151cefe05ce489ca111e Mon Sep 17 00:00:00 2001 From: t Date: Thu, 20 Aug 2026 21:46:55 +0800 Subject: [PATCH] refactor: split backend into standalone server project Remove embedded frontend and workflow editor assets, add standalone API deployment configuration, and retain the current backend service updates. --- .codex/skills/release-version/SKILL.md | 225 - .../skills/release-version/agents/openai.yaml | 4 - .../references/changelog-style.md | 61 - .../scripts/collect_release_context.py | 221 - .dockerignore | 9 - .github/workflows/docker-image.yml | 90 - .gitignore | 28 +- .gitmodules | 6 - .vscode/launch.json | 26 +- .vscode/tasks.json | 23 +- AGENTS.md | 512 +- Dockerfile | 29 +- Makefile | 219 +- README.md | 278 +- README_ZH.md | 275 +- Taskfile.yml | 251 +- cmd/enums/generator.go | 14 +- config/config.example.yaml | 11 +- docker-compose.lancedb.yml | 26 +- docker-compose.yml | 25 +- docker/agent-desk-lancedb.yaml | 11 +- docker/agent-desk-sqlite-lancedb.yaml | 7 +- docker/agent-desk.yaml | 11 +- docs | 1 - flowgram-editor/README.md | 386 - flowgram-editor/README.zh_CN.md | 386 - flowgram-editor/eslint.config.js | 20 - flowgram-editor/index.html | 12 - flowgram-editor/package.json | 78 - flowgram-editor/pnpm-lock.yaml | 10224 ---------------- flowgram-editor/rsbuild.config.ts | 41 - flowgram-editor/src/app.tsx | 18 - .../src/assets/icon-auto-layout.tsx | 13 - flowgram-editor/src/assets/icon-break.jpg | Bin 28182 -> 0 bytes flowgram-editor/src/assets/icon-cancel.tsx | 24 - flowgram-editor/src/assets/icon-comment.tsx | 24 - flowgram-editor/src/assets/icon-condition.svg | 9 - flowgram-editor/src/assets/icon-continue.jpg | Bin 38177 -> 0 bytes flowgram-editor/src/assets/icon-end.jpg | Bin 21016 -> 0 bytes flowgram-editor/src/assets/icon-http.svg | 5 - flowgram-editor/src/assets/icon-llm.jpg | Bin 11089 -> 0 bytes flowgram-editor/src/assets/icon-loop.jpg | Bin 25572 -> 0 bytes flowgram-editor/src/assets/icon-minimap.tsx | 24 - flowgram-editor/src/assets/icon-mouse.tsx | 41 - flowgram-editor/src/assets/icon-pad.tsx | 56 - flowgram-editor/src/assets/icon-script.png | Bin 3659 -> 0 bytes flowgram-editor/src/assets/icon-start.jpg | Bin 20971 -> 0 bytes flowgram-editor/src/assets/icon-success.tsx | 37 - .../src/assets/icon-switch-line.tsx | 15 - flowgram-editor/src/assets/icon-variable.png | Bin 3430 -> 0 bytes flowgram-editor/src/assets/icon-warning.tsx | 27 - .../src/components/add-node/index.tsx | 28 - .../src/components/add-node/use-add-node.ts | 115 - .../src/components/base-node/index.tsx | 49 - .../src/components/base-node/node-wrapper.tsx | 83 - .../src/components/base-node/styles.tsx | 39 - .../src/components/base-node/utils.ts | 23 - .../comment/components/blank-area.tsx | 48 - .../comment/components/border-area.tsx | 120 - .../comment/components/container.tsx | 50 - .../comment/components/content-drag-area.tsx | 94 - .../comment/components/drag-area.tsx | 48 - .../components/comment/components/editor.tsx | 66 - .../components/comment/components/index.css | 108 - .../components/comment/components/index.ts | 8 - .../comment/components/more-button.tsx | 26 - .../components/comment/components/render.tsx | 83 - .../comment/components/resize-area.tsx | 89 - .../src/components/comment/constant.ts | 27 - .../src/components/comment/hooks/index.ts | 7 - .../src/components/comment/hooks/use-model.ts | 55 - .../components/comment/hooks/use-overflow.ts | 50 - .../comment/hooks/use-placeholder.ts | 34 - .../src/components/comment/hooks/use-size.ts | 168 - .../src/components/comment/index.ts | 6 - .../src/components/comment/model.ts | 127 - .../src/components/comment/type.ts | 35 - flowgram-editor/src/components/group/color.ts | 105 - .../group/components/background.tsx | 55 - .../src/components/group/components/color.tsx | 50 - .../components/group/components/header.tsx | 41 - .../group/components/icon-group.tsx | 52 - .../src/components/group/components/index.ts | 7 - .../group/components/node-render.tsx | 82 - .../group/components/tips/global-store.ts | 38 - .../group/components/tips/icon-close.tsx | 14 - .../group/components/tips/index.tsx | 41 - .../group/components/tips/is-mac-os.ts | 6 - .../components/group/components/tips/style.ts | 79 - .../group/components/tips/use-control.ts | 71 - .../src/components/group/components/title.tsx | 38 - .../src/components/group/components/tools.tsx | 19 - .../components/group/components/ungroup.tsx | 36 - .../src/components/group/constant.ts | 12 - .../src/components/group/index.css | 117 - flowgram-editor/src/components/group/index.ts | 9 - flowgram-editor/src/components/index.ts | 10 - .../src/components/line-add-button/button.tsx | 31 - .../src/components/line-add-button/index.less | 13 - .../src/components/line-add-button/index.tsx | 129 - .../components/line-add-button/use-visible.ts | 28 - .../src/components/node-menu/index.tsx | 145 - .../src/components/node-panel/index.less | 60 - .../src/components/node-panel/index.tsx | 64 - .../src/components/node-panel/node-list.tsx | 115 - .../node-panel/node-placeholder.tsx | 31 - .../src/components/problem-panel/index.ts | 6 - .../problem-panel/problem-panel.tsx | 100 - .../problem-panel/use-watch-validate.ts | 46 - .../components/selector-box-popover/index.tsx | 103 - .../src/components/sidebar/index.tsx | 4 - .../components/sidebar/node-form-panel.tsx | 94 - .../sidebar/sidebar-node-renderer.tsx | 30 - .../src/components/testrun/hooks/index.ts | 8 - .../components/testrun/hooks/use-fields.ts | 34 - .../components/testrun/hooks/use-form-meta.ts | 45 - .../testrun/hooks/use-sync-default.ts | 37 - .../testrun/json-value-editor/index.tsx | 47 - .../node-status-bar/group/index.module.less | 28 - .../testrun/node-status-bar/group/index.tsx | 61 - .../node-status-bar/header/index.module.less | 57 - .../testrun/node-status-bar/header/index.tsx | 67 - .../testrun/node-status-bar/index.tsx | 55 - .../node-status-bar/render/index.module.less | 94 - .../testrun/node-status-bar/render/index.tsx | 187 - .../node-status-bar/viewer/index.module.less | 142 - .../testrun/node-status-bar/viewer/index.tsx | 189 - .../testrun/testrun-button/index.module.less | 16 - .../testrun/testrun-button/index.tsx | 78 - .../testrun/testrun-form/index.module.less | 127 - .../components/testrun/testrun-form/index.tsx | 130 - .../components/testrun/testrun-form/type.ts | 21 - .../testrun-json-input/index.module.less | 44 - .../testrun/testrun-json-input/index.tsx | 32 - .../testrun/testrun-panel/index.module.less | 143 - .../testrun/testrun-panel/index.tsx | 4 - .../testrun/testrun-panel/test-run-panel.tsx | 155 - .../src/components/tools/auto-layout.tsx | 44 - .../src/components/tools/comment.tsx | 84 - .../src/components/tools/download.tsx | 102 - .../src/components/tools/fit-view.tsx | 22 - .../src/components/tools/index.tsx | 86 - .../src/components/tools/interactive.tsx | 98 - .../src/components/tools/minimap-switch.tsx | 26 - .../src/components/tools/minimap.tsx | 35 - .../components/tools/mouse-pad-selector.less | 117 - .../components/tools/mouse-pad-selector.tsx | 122 - .../src/components/tools/readonly.tsx | 36 - flowgram-editor/src/components/tools/save.tsx | 71 - .../src/components/tools/styles.tsx | 52 - .../src/components/tools/switch-line.tsx | 24 - .../src/components/tools/zoom-select.tsx | 46 - flowgram-editor/src/context/index.ts | 7 - .../src/context/node-render-context.ts | 13 - .../src/context/sidebar-context.ts | 8 - flowgram-editor/src/editor.tsx | 101 - .../src/form-components/feedback.tsx | 40 - .../form-components/form-content/index.tsx | 29 - .../form-components/form-content/styles.tsx | 26 - .../src/form-components/form-header/index.tsx | 73 - .../form-components/form-header/styles.tsx | 41 - .../form-header/title-input.tsx | 50 - .../src/form-components/form-header/utils.tsx | 15 - .../src/form-components/form-inputs/index.tsx | 68 - .../form-components/form-inputs/styles.tsx | 8 - .../src/form-components/form-item/index.css | 14 - .../src/form-components/form-item/index.tsx | 95 - flowgram-editor/src/form-components/index.ts | 10 - flowgram-editor/src/hooks/index.ts | 9 - .../src/hooks/use-editor-props.tsx | 402 - flowgram-editor/src/hooks/use-is-sidebar.ts | 12 - .../src/hooks/use-node-render-context.ts | 12 - flowgram-editor/src/hooks/use-port-click.ts | 127 - flowgram-editor/src/index.ts | 6 - flowgram-editor/src/initial-data.ts | 611 - .../src/nodes/block-end/form-meta.tsx | 40 - flowgram-editor/src/nodes/block-end/index.ts | 46 - .../src/nodes/block-start/form-meta.tsx | 40 - .../src/nodes/block-start/index.ts | 46 - flowgram-editor/src/nodes/break/form-meta.tsx | 33 - flowgram-editor/src/nodes/break/index.ts | 44 - flowgram-editor/src/nodes/business.ts | 147 - .../src/nodes/code/components/code.tsx | 34 - .../src/nodes/code/components/inputs.tsx | 38 - .../src/nodes/code/components/outputs.tsx | 44 - flowgram-editor/src/nodes/code/form-meta.tsx | 32 - flowgram-editor/src/nodes/code/index.tsx | 86 - flowgram-editor/src/nodes/code/types.tsx | 20 - flowgram-editor/src/nodes/comment/index.tsx | 26 - .../condition/condition-inputs/index.tsx | 88 - .../condition/condition-inputs/styles.tsx | 12 - .../src/nodes/condition/form-meta.tsx | 35 - flowgram-editor/src/nodes/condition/index.ts | 50 - flowgram-editor/src/nodes/constants.ts | 26 - .../src/nodes/continue/form-meta.tsx | 33 - flowgram-editor/src/nodes/continue/index.ts | 44 - .../src/nodes/default-form-meta.tsx | 77 - flowgram-editor/src/nodes/end/form-meta.tsx | 61 - flowgram-editor/src/nodes/end/index.ts | 38 - flowgram-editor/src/nodes/group/index.tsx | 66 - .../src/nodes/http/components/api.tsx | 60 - .../src/nodes/http/components/body.tsx | 94 - .../src/nodes/http/components/headers.tsx | 39 - .../src/nodes/http/components/params.tsx | 39 - .../src/nodes/http/components/timeout.tsx | 51 - flowgram-editor/src/nodes/http/form-meta.tsx | 45 - flowgram-editor/src/nodes/http/index.tsx | 53 - flowgram-editor/src/nodes/http/types.tsx | 36 - flowgram-editor/src/nodes/index.ts | 57 - flowgram-editor/src/nodes/llm/index.ts | 97 - flowgram-editor/src/nodes/loop/form-meta.tsx | 96 - flowgram-editor/src/nodes/loop/index.ts | 114 - .../condition-inputs/index.tsx | 185 - .../condition-inputs/styles.tsx | 43 - .../src/nodes/multi-condition/form-meta.tsx | 45 - .../src/nodes/multi-condition/index.ts | 57 - flowgram-editor/src/nodes/start/form-meta.tsx | 66 - flowgram-editor/src/nodes/start/index.ts | 39 - .../src/nodes/variable/form-meta.tsx | 36 - flowgram-editor/src/nodes/variable/index.tsx | 48 - flowgram-editor/src/nodes/variable/types.tsx | 15 - .../context-menu-layer.tsx | 84 - .../context-menu-plugin.ts | 28 - .../src/plugins/context-menu-plugin/index.ts | 6 - flowgram-editor/src/plugins/index.ts | 9 - .../plugins/panel-manager-plugin/constants.ts | 10 - .../src/plugins/panel-manager-plugin/hooks.ts | 44 - .../plugins/panel-manager-plugin/index.tsx | 46 - .../runtime-plugin/client/base-client.ts | 22 - .../browser-client/business-debug-runtime.ts | 214 - .../client/browser-client/index.ts | 72 - .../plugins/runtime-plugin/client/index.ts | 8 - .../client/server-client/constant.ts | 12 - .../client/server-client/index.ts | 151 - .../client/server-client/type.ts | 9 - .../runtime-plugin/create-runtime-plugin.ts | 34 - .../src/plugins/runtime-plugin/index.ts | 7 - .../runtime-plugin/runtime-service/index.ts | 221 - .../src/plugins/runtime-plugin/type.ts | 21 - .../components/full-variable-list.tsx | 13 - .../components/global-variable-editor.tsx | 45 - .../components/index.module.less | 44 - .../components/variable-panel.tsx | 45 - .../plugins/variable-panel-plugin/index.ts | 6 - .../variable-panel-layer.tsx | 27 - .../variable-panel-plugin.ts | 69 - .../src/services/custom-service.ts | 47 - flowgram-editor/src/services/index.ts | 7 - .../src/services/validate-service.ts | 55 - .../src/shortcuts/collapse/index.ts | 35 - flowgram-editor/src/shortcuts/constants.ts | 22 - flowgram-editor/src/shortcuts/copy/index.ts | 274 - flowgram-editor/src/shortcuts/delete/index.ts | 127 - flowgram-editor/src/shortcuts/expand/index.ts | 35 - flowgram-editor/src/shortcuts/index.ts | 7 - flowgram-editor/src/shortcuts/paste/index.ts | 238 - .../src/shortcuts/paste/traverse.ts | 189 - .../src/shortcuts/paste/unique-workflow.ts | 113 - .../src/shortcuts/select-all/index.ts | 34 - flowgram-editor/src/shortcuts/shortcuts.ts | 28 - flowgram-editor/src/shortcuts/type.ts | 27 - .../src/shortcuts/zoom-in/index.ts | 32 - .../src/shortcuts/zoom-out/index.ts | 32 - flowgram-editor/src/styles/index.css | 90 - flowgram-editor/src/type.d.ts | 9 - flowgram-editor/src/typings/index.ts | 7 - flowgram-editor/src/typings/json-schema.ts | 9 - flowgram-editor/src/typings/node.ts | 86 - flowgram-editor/src/utils/can-contain-node.ts | 54 - flowgram-editor/src/utils/index.ts | 8 - flowgram-editor/src/utils/on-drag-line-end.ts | 100 - .../src/utils/toggle-loop-expanded.ts | 75 - flowgram-editor/tsconfig.json | 38 - go.mod | 5 + go.sum | 10 + internal/bootstrap/db.go | 31 +- internal/bootstrap/db_test.go | 39 + internal/bootstrap/server.go | 22 +- internal/bootstrap/server_route_test.go | 4 +- internal/handlers/api/auth_handler.go | 18 +- internal/models/models.go | 242 +- internal/pkg/config/config.go | 12 +- internal/services/ai_agent_service.go | 5 +- internal/services/ai_agent_service_test.go | 13 + internal/services/auth_service.go | 2 +- internal/services/auth_service_test.go | 48 + internal/services/channel_service.go | 17 +- internal/services/channel_service_test.go | 17 + .../conversation_human_dispatch_service.go | 10 + internal/services/conversation_service.go | 32 +- internal/services/message_service_test.go | 29 + .../services/wxwork_kf_inbound_service.go | 7 - qdrant | 1 - screenshots/1.png | Bin 197055 -> 0 bytes screenshots/2.png | Bin 212039 -> 0 bytes screenshots/3.png | Bin 194884 -> 0 bytes screenshots/4.png | Bin 387871 -> 0 bytes screenshots/5.png | Bin 137632 -> 0 bytes web/.env.example | 1 - web/.gitignore | 42 - web/README.md | 36 - web/app/dashboard/_components/alert-list.tsx | 74 - .../dashboard/_components/dashboard-home.tsx | 167 - .../dashboard/_components/summary-cards.tsx | 108 - .../dashboard/_components/team-load-panel.tsx | 112 - web/app/dashboard/_components/trend-panel.tsx | 141 - web/app/dashboard/agent-runs/page.tsx | 162 - .../_components/batch-schedule-dialog.tsx | 547 - .../_components/calendar-date-range.test.mjs | 19 - .../_components/calendar-date-range.ts | 72 - .../_components/calendar-time-layout.test.mjs | 59 - .../_components/calendar-time-layout.ts | 87 - .../_components/calendar.tsx | 603 - .../agent-team-schedules/_components/edit.tsx | 321 - .../dashboard/agent-team-schedules/page.tsx | 494 - web/app/dashboard/agents/_components/edit.tsx | 520 - .../agents/_components/team-edit.tsx | 361 - .../agents/_components/team-sidebar.tsx | 291 - web/app/dashboard/agents/page.tsx | 299 - .../config-workbench-copy.test.mjs | 79 - .../_components/config-workbench.tsx | 1074 -- web/app/dashboard/ai-agents/page.tsx | 337 - .../dashboard/ai-configs/_components/edit.tsx | 479 - web/app/dashboard/ai-configs/page.tsx | 299 - .../_components/workflow-run-audit-graph.tsx | 113 - web/app/dashboard/ai-workflow-runs/page.tsx | 523 - .../_components/official-workflow-editor.tsx | 97 - .../_components/workflow-usage-dialog.tsx | 82 - .../_components/workflow-versions-dialog.tsx | 114 - .../_components/workflow-workbench.tsx | 434 - web/app/dashboard/ai-workflows/page.tsx | 166 - .../dashboard/channels/_components/edit.tsx | 995 -- web/app/dashboard/channels/page.tsx | 208 - web/app/dashboard/companies/page.tsx | 211 - .../_components/detail.tsx | 539 - .../dashboard/conversation-monitor/page.tsx | 927 -- .../_components/agent-message-editor.tsx | 72 - .../conversations/_components/chat-panel.tsx | 931 -- .../_components/conversation-info-panel.tsx | 1061 -- .../_components/conversation-list.tsx | 102 - .../_components/conversation-tag-picker.tsx | 125 - .../_components/conversation-workbench.tsx | 535 - web/app/dashboard/conversations/page.tsx | 12 - .../dashboard/customers/_components/edit.tsx | 4 - web/app/dashboard/customers/page.tsx | 266 - web/app/dashboard/help/page.tsx | 21 - .../knowledge/_components/debug-panel.tsx | 232 - .../knowledge/_components/document-edit.tsx | 314 - .../knowledge/_components/document-list.tsx | 814 -- .../knowledge/_components/faq-edit.tsx | 289 - .../_components/faq-import-dialog.tsx | 255 - .../knowledge/_components/faq-list.tsx | 653 - .../_components/knowledge-base-edit.tsx | 492 - .../knowledge-bulk-move-dialog.tsx | 106 - .../_components/knowledge-content-detail.tsx | 213 - .../_components/knowledge-directory-panel.tsx | 765 -- .../knowledge-directory-sort.test.mjs | 120 - .../_components/knowledge-directory-sort.ts | 233 - .../_components/retrieve-log-detail.tsx | 282 - .../_components/retrieve-log-list.tsx | 301 - .../_components/selection-checkbox.tsx | 26 - web/app/dashboard/knowledge/detail/page.tsx | 163 - web/app/dashboard/knowledge/page.tsx | 170 - web/app/dashboard/layout.tsx | 75 - .../dashboard/login/oidc/callback/page.tsx | 67 - web/app/dashboard/login/page.tsx | 14 - .../dashboard/login/wxwork/callback/page.tsx | 69 - web/app/dashboard/mcp/page.tsx | 382 - web/app/dashboard/notifications/page.tsx | 128 - web/app/dashboard/page.tsx | 5 - web/app/dashboard/permissions/page.tsx | 169 - web/app/dashboard/quick-replies/page.tsx | 244 - .../roles/_components/assign-permissions.tsx | 292 - .../dashboard/roles/_components/create.tsx | 192 - web/app/dashboard/roles/page.tsx | 427 - web/app/dashboard/settings/page.tsx | 21 - .../_components/debug-dialog.tsx | 529 - .../skill-definition/_components/edit.tsx | 396 - web/app/dashboard/skill-definition/page.tsx | 254 - web/app/dashboard/tags/_components/edit.tsx | 259 - web/app/dashboard/tags/page.tsx | 656 - ...create-ticket-from-conversation-dialog.tsx | 66 - .../dashboard/tickets/_components/edit.tsx | 342 - .../_components/ticket-assign-dialog.tsx | 226 - .../_components/ticket-detail-dialog.tsx | 639 - .../_components/ticket-status-badge.tsx | 30 - web/app/dashboard/tickets/page.tsx | 426 - .../users/_components/assign-roles.tsx | 345 - .../dashboard/users/_components/create.tsx | 390 - web/app/dashboard/users/_components/edit.tsx | 281 - .../_components/initial-password-dialog.tsx | 80 - .../users/_components/reset-password.tsx | 106 - web/app/dashboard/users/page.tsx | 510 - web/app/dashboard/wxwork-outbox/page.tsx | 206 - web/app/favicon.ico | Bin 17548 -> 0 bytes web/app/globals.css | 368 - web/app/layout.tsx | 68 - web/app/legal/privacy/page.tsx | 5 - web/app/legal/terms/page.tsx | 5 - web/app/page.tsx | 9 - web/app/support/chat/closed/page.tsx | 25 - web/app/support/chat/page.tsx | 5 - web/app/support/demo/page.tsx | 5 - web/app/support/page.tsx | 5 - web/app/workbench/layout.tsx | 69 - web/app/workbench/page.tsx | 5 - web/app/workbench/tickets/page.tsx | 3 - web/components.json | 25 - .../agent-realtime-provider.test.mjs | 38 - web/components/agent-realtime-provider.tsx | 9 - web/components/app-sidebar.tsx | 77 - web/components/auth-provider.test.mjs | 15 - web/components/auth-provider.tsx | 135 - web/components/change-password-dialog.tsx | 155 - web/components/chart-area-interactive.tsx | 159 - .../chat/conversation-message-bubble.tsx | 63 - .../chat/conversation-message-row.tsx | 109 - .../chat/conversation-message-scroller.tsx | 151 - web/components/chat/shared-message-editor.tsx | 491 - web/components/company-picker.tsx | 289 - web/components/confirm-provider.tsx | 122 - web/components/content-editor/convert.ts | 26 - .../content-editor/editor-mode-switch.tsx | 60 - web/components/content-editor/html-editor.tsx | 370 - web/components/content-editor/index.tsx | 176 - .../content-editor/markdown-editor.css | 48 - .../content-editor/markdown-editor.tsx | 170 - web/components/content-editor/toolbar.css | 12 - web/components/content-editor/toolbar.tsx | 142 - web/components/content-editor/types.ts | 44 - .../conversation-actions/close-dialog.tsx | 164 - .../conversation-actions/transfer-dialog.tsx | 254 - web/components/customer-form-dialog.tsx | 90 - web/components/customer-form.tsx | 490 - .../customer-link-or-create-dialog.tsx | 279 - web/components/dashboard-page.tsx | 100 - web/components/dashboard-placeholder.tsx | 73 - .../crud/dashboard-crud-field-control.tsx | 306 - .../crud/dashboard-crud-form-dialog.tsx | 295 - .../dashboard/crud/dashboard-crud-page.tsx | 741 -- .../dashboard/crud/dashboard-crud-presets.tsx | 130 - .../crud/dashboard-crud-utils.test.mjs | 250 - .../dashboard/crud/dashboard-crud-utils.ts | 261 - web/components/dashboard/crud/index.ts | 30 - .../crud/use-dashboard-crud-filters.ts | 65 - .../dashboard/list/dashboard-list-page.tsx | 290 - web/components/dashboard/list/index.ts | 12 - .../list/use-dashboard-paged-list.ts | 136 - web/components/data-table.tsx | 146 - web/components/editor/DESIGN.md | 235 - web/components/editor/html.tsx | 150 - web/components/editor/index.tsx | 49 - web/components/editor/markdown.tsx | 172 - web/components/editor/toolbar.tsx | 63 - web/components/editor/types.ts | 21 - web/components/im-message-html.tsx | 86 - web/components/image-input.tsx | 151 - web/components/image-lightbox.tsx | 376 - web/components/json-code-editor.tsx | 77 - web/components/json-tree-viewer.tsx | 70 - web/components/json-viewer.tsx | 79 - web/components/legal-document-page.tsx | 95 - web/components/list-pagination.tsx | 90 - web/components/login-form.tsx | 277 - web/components/nav-documents.tsx | 97 - web/components/nav-main.test.mjs | 20 - web/components/nav-main.tsx | 143 - web/components/nav-secondary.tsx | 51 - web/components/nav-user.tsx | 155 - web/components/notification-provider.tsx | 164 - web/components/option-combobox.tsx | 192 - web/components/palette-toggle.test.mjs | 28 - web/components/palette-toggle.tsx | 113 - web/components/project-dialog.tsx | 178 - web/components/realtime-connection-status.tsx | 64 - web/components/safe-rich-html.tsx | 156 - web/components/section-cards.tsx | 111 - web/components/site-header.test.mjs | 14 - web/components/site-header.tsx | 86 - web/components/support-center/help-center.tsx | 145 - web/components/support-chat/chat-shell.tsx | 485 - .../support-chat/close-navigation.test.mjs | 29 - .../support-chat/close-navigation.ts | 5 - .../support-chat/connection-status.tsx | 38 - .../support-chat/customer-message-editor.tsx | 34 - .../support-chat/demo-navigation.test.mjs | 29 - .../support-chat/demo-navigation.ts | 5 - web/components/support-chat/message-list.tsx | 278 - web/components/support-chat/widget-demo.tsx | 466 - web/components/tag-selector.tsx | 355 - web/components/theme-provider.tsx | 17 - web/components/theme-toggle.tsx | 68 - web/components/ui/avatar.tsx | 109 - web/components/ui/badge.tsx | 52 - web/components/ui/breadcrumb.tsx | 125 - web/components/ui/bubble.tsx | 128 - web/components/ui/button-group.tsx | 87 - web/components/ui/button.tsx | 60 - web/components/ui/calendar.tsx | 221 - web/components/ui/card.tsx | 103 - web/components/ui/chart.tsx | 356 - web/components/ui/checkbox.tsx | 29 - web/components/ui/collapsible.tsx | 21 - web/components/ui/combobox.tsx | 297 - web/components/ui/command.tsx | 196 - web/components/ui/context-menu.tsx | 271 - web/components/ui/dialog.tsx | 157 - web/components/ui/drawer.tsx | 131 - web/components/ui/dropdown-menu.tsx | 268 - web/components/ui/field.tsx | 238 - web/components/ui/input-group.tsx | 158 - web/components/ui/input.tsx | 20 - web/components/ui/label.tsx | 20 - web/components/ui/menubar.tsx | 280 - web/components/ui/message-scroller.tsx | 131 - web/components/ui/message.tsx | 92 - web/components/ui/popover.tsx | 90 - web/components/ui/resizable.tsx | 50 - web/components/ui/scroll-area.tsx | 55 - web/components/ui/select.tsx | 201 - web/components/ui/separator.tsx | 25 - web/components/ui/sheet.tsx | 135 - web/components/ui/sidebar.tsx | 744 -- web/components/ui/skeleton.tsx | 13 - web/components/ui/sonner.tsx | 49 - web/components/ui/switch.tsx | 32 - web/components/ui/table.tsx | 116 - web/components/ui/tabs.tsx | 82 - web/components/ui/textarea.tsx | 18 - web/components/ui/toggle-group.tsx | 89 - web/components/ui/toggle.tsx | 45 - web/components/ui/tooltip.tsx | 66 - web/components/workbench-header.tsx | 140 - web/components/workbench-rail.tsx | 86 - web/components/workspace-switcher.test.mjs | 39 - web/components/workspace-switcher.tsx | 141 - web/e2e/workbench-function.spec.ts | 127 - web/embed.go | 8 - web/embed_dev.go | 10 - web/embed_test.go | 20 - web/eslint.config.mjs | 18 - web/hooks/use-agent-conversation-realtime.ts | 211 - web/hooks/use-lg-media.ts | 25 - web/hooks/use-mobile.ts | 19 - web/i18n/config.test.mjs | 45 - web/i18n/config.ts | 48 - web/i18n/legal-messages.test.mjs | 29 - web/i18n/messages.ts | 51 - web/i18n/provider.tsx | 87 - web/lib/agent-conversation-realtime.test.mjs | 27 - web/lib/agent-conversation-realtime.ts | 18 - web/lib/api/admin.ts | 2437 ---- web/lib/api/agent.ts | 253 - web/lib/api/auth.ts | 51 - web/lib/api/client.ts | 119 - web/lib/api/company.ts | 77 - web/lib/api/config.ts | 19 - web/lib/api/customer-contact.ts | 77 - web/lib/api/customer.ts | 108 - web/lib/api/dashboard.ts | 81 - web/lib/api/im.ts | 458 - web/lib/api/notification.ts | 82 - web/lib/api/ticket.ts | 239 - web/lib/api/websocket.ts | 16 - web/lib/auth.ts | 63 - web/lib/enums.ts | 15 - web/lib/generated/enums.ts | 389 - web/lib/im-editor-image.ts | 232 - web/lib/im-message-merge.ts | 177 - web/lib/im-message.ts | 153 - web/lib/im-realtime-state.ts | 172 - web/lib/im-realtime.ts | 35 - web/lib/knowledge-i18n.test.mjs | 56 - web/lib/knowledge-i18n.ts | 48 - web/lib/navigation-active.test.mjs | 92 - web/lib/navigation-active.ts | 40 - web/lib/navigation.tsx | 320 - web/lib/notification-i18n.test.mjs | 53 - web/lib/notification-i18n.ts | 117 - web/lib/permission-i18n.test.mjs | 38 - web/lib/permission-i18n.ts | 111 - web/lib/realtime-connection.ts | 190 - web/lib/role-i18n.test.mjs | 38 - web/lib/role-i18n.ts | 18 - web/lib/sdk/agent-desk-sdk.test.mjs | 178 - web/lib/sdk/agent-desk-sdk.ts | 610 - web/lib/sdk/config-types.ts | 40 - web/lib/sdk/runtime-config.ts | 54 - web/lib/services/notification.ts | 42 - web/lib/stores/agent-conversations.ts | 618 - web/lib/stores/support-chat.ts | 639 - web/lib/support-host-bridge.ts | 85 - web/lib/tag-tree.test.mjs | 115 - web/lib/tag-tree.ts | 126 - web/lib/utils.ts | 50 - web/messages/en-US.json | 2389 ---- web/messages/zh-CN.json | 2389 ---- web/next.config.ts | 39 - web/package.json | 69 - web/pnpm-lock.yaml | 8678 ------------- web/pnpm-workspace.yaml | 7 - web/postcss.config.mjs | 7 - web/public/images/login-illustration.svg | 89 - web/public/images/logo.jpg | Bin 18574 -> 0 bytes web/public/images/logo.png | Bin 61669 -> 0 bytes web/public/images/logo.svg | 41 - web/public/images/wxwork.svg | 1 - web/public/sdk/agent-desk-sdk.min.js | 1 - web/scripts/build-sdk.mjs | 47 - web/styles/main.scss | 30 - web/tsconfig.json | 34 - web/types/styles.d.ts | 2 - 612 files changed, 515 insertions(+), 97334 deletions(-) delete mode 100644 .codex/skills/release-version/SKILL.md delete mode 100644 .codex/skills/release-version/agents/openai.yaml delete mode 100644 .codex/skills/release-version/references/changelog-style.md delete mode 100755 .codex/skills/release-version/scripts/collect_release_context.py delete mode 100644 .github/workflows/docker-image.yml delete mode 100644 .gitmodules delete mode 160000 docs delete mode 100644 flowgram-editor/README.md delete mode 100644 flowgram-editor/README.zh_CN.md delete mode 100644 flowgram-editor/eslint.config.js delete mode 100644 flowgram-editor/index.html delete mode 100644 flowgram-editor/package.json delete mode 100644 flowgram-editor/pnpm-lock.yaml delete mode 100644 flowgram-editor/rsbuild.config.ts delete mode 100644 flowgram-editor/src/app.tsx delete mode 100644 flowgram-editor/src/assets/icon-auto-layout.tsx delete mode 100644 flowgram-editor/src/assets/icon-break.jpg delete mode 100644 flowgram-editor/src/assets/icon-cancel.tsx delete mode 100644 flowgram-editor/src/assets/icon-comment.tsx delete mode 100644 flowgram-editor/src/assets/icon-condition.svg delete mode 100644 flowgram-editor/src/assets/icon-continue.jpg delete mode 100644 flowgram-editor/src/assets/icon-end.jpg delete mode 100644 flowgram-editor/src/assets/icon-http.svg delete mode 100644 flowgram-editor/src/assets/icon-llm.jpg delete mode 100644 flowgram-editor/src/assets/icon-loop.jpg delete mode 100644 flowgram-editor/src/assets/icon-minimap.tsx delete mode 100644 flowgram-editor/src/assets/icon-mouse.tsx delete mode 100644 flowgram-editor/src/assets/icon-pad.tsx delete mode 100644 flowgram-editor/src/assets/icon-script.png delete mode 100644 flowgram-editor/src/assets/icon-start.jpg delete mode 100644 flowgram-editor/src/assets/icon-success.tsx delete mode 100644 flowgram-editor/src/assets/icon-switch-line.tsx delete mode 100644 flowgram-editor/src/assets/icon-variable.png delete mode 100644 flowgram-editor/src/assets/icon-warning.tsx delete mode 100644 flowgram-editor/src/components/add-node/index.tsx delete mode 100644 flowgram-editor/src/components/add-node/use-add-node.ts delete mode 100644 flowgram-editor/src/components/base-node/index.tsx delete mode 100644 flowgram-editor/src/components/base-node/node-wrapper.tsx delete mode 100644 flowgram-editor/src/components/base-node/styles.tsx delete mode 100644 flowgram-editor/src/components/base-node/utils.ts delete mode 100644 flowgram-editor/src/components/comment/components/blank-area.tsx delete mode 100644 flowgram-editor/src/components/comment/components/border-area.tsx delete mode 100644 flowgram-editor/src/components/comment/components/container.tsx delete mode 100644 flowgram-editor/src/components/comment/components/content-drag-area.tsx delete mode 100644 flowgram-editor/src/components/comment/components/drag-area.tsx delete mode 100644 flowgram-editor/src/components/comment/components/editor.tsx delete mode 100644 flowgram-editor/src/components/comment/components/index.css delete mode 100644 flowgram-editor/src/components/comment/components/index.ts delete mode 100644 flowgram-editor/src/components/comment/components/more-button.tsx delete mode 100644 flowgram-editor/src/components/comment/components/render.tsx delete mode 100644 flowgram-editor/src/components/comment/components/resize-area.tsx delete mode 100644 flowgram-editor/src/components/comment/constant.ts delete mode 100644 flowgram-editor/src/components/comment/hooks/index.ts delete mode 100644 flowgram-editor/src/components/comment/hooks/use-model.ts delete mode 100644 flowgram-editor/src/components/comment/hooks/use-overflow.ts delete mode 100644 flowgram-editor/src/components/comment/hooks/use-placeholder.ts delete mode 100644 flowgram-editor/src/components/comment/hooks/use-size.ts delete mode 100644 flowgram-editor/src/components/comment/index.ts delete mode 100644 flowgram-editor/src/components/comment/model.ts delete mode 100644 flowgram-editor/src/components/comment/type.ts delete mode 100644 flowgram-editor/src/components/group/color.ts delete mode 100644 flowgram-editor/src/components/group/components/background.tsx delete mode 100644 flowgram-editor/src/components/group/components/color.tsx delete mode 100644 flowgram-editor/src/components/group/components/header.tsx delete mode 100644 flowgram-editor/src/components/group/components/icon-group.tsx delete mode 100644 flowgram-editor/src/components/group/components/index.ts delete mode 100644 flowgram-editor/src/components/group/components/node-render.tsx delete mode 100644 flowgram-editor/src/components/group/components/tips/global-store.ts delete mode 100644 flowgram-editor/src/components/group/components/tips/icon-close.tsx delete mode 100644 flowgram-editor/src/components/group/components/tips/index.tsx delete mode 100644 flowgram-editor/src/components/group/components/tips/is-mac-os.ts delete mode 100644 flowgram-editor/src/components/group/components/tips/style.ts delete mode 100644 flowgram-editor/src/components/group/components/tips/use-control.ts delete mode 100644 flowgram-editor/src/components/group/components/title.tsx delete mode 100644 flowgram-editor/src/components/group/components/tools.tsx delete mode 100644 flowgram-editor/src/components/group/components/ungroup.tsx delete mode 100644 flowgram-editor/src/components/group/constant.ts delete mode 100644 flowgram-editor/src/components/group/index.css delete mode 100644 flowgram-editor/src/components/group/index.ts delete mode 100644 flowgram-editor/src/components/index.ts delete mode 100644 flowgram-editor/src/components/line-add-button/button.tsx delete mode 100644 flowgram-editor/src/components/line-add-button/index.less delete mode 100644 flowgram-editor/src/components/line-add-button/index.tsx delete mode 100644 flowgram-editor/src/components/line-add-button/use-visible.ts delete mode 100644 flowgram-editor/src/components/node-menu/index.tsx delete mode 100644 flowgram-editor/src/components/node-panel/index.less delete mode 100644 flowgram-editor/src/components/node-panel/index.tsx delete mode 100644 flowgram-editor/src/components/node-panel/node-list.tsx delete mode 100644 flowgram-editor/src/components/node-panel/node-placeholder.tsx delete mode 100644 flowgram-editor/src/components/problem-panel/index.ts delete mode 100644 flowgram-editor/src/components/problem-panel/problem-panel.tsx delete mode 100644 flowgram-editor/src/components/problem-panel/use-watch-validate.ts delete mode 100644 flowgram-editor/src/components/selector-box-popover/index.tsx delete mode 100644 flowgram-editor/src/components/sidebar/index.tsx delete mode 100644 flowgram-editor/src/components/sidebar/node-form-panel.tsx delete mode 100644 flowgram-editor/src/components/sidebar/sidebar-node-renderer.tsx delete mode 100644 flowgram-editor/src/components/testrun/hooks/index.ts delete mode 100644 flowgram-editor/src/components/testrun/hooks/use-fields.ts delete mode 100644 flowgram-editor/src/components/testrun/hooks/use-form-meta.ts delete mode 100644 flowgram-editor/src/components/testrun/hooks/use-sync-default.ts delete mode 100644 flowgram-editor/src/components/testrun/json-value-editor/index.tsx delete mode 100644 flowgram-editor/src/components/testrun/node-status-bar/group/index.module.less delete mode 100644 flowgram-editor/src/components/testrun/node-status-bar/group/index.tsx delete mode 100644 flowgram-editor/src/components/testrun/node-status-bar/header/index.module.less delete mode 100644 flowgram-editor/src/components/testrun/node-status-bar/header/index.tsx delete mode 100644 flowgram-editor/src/components/testrun/node-status-bar/index.tsx delete mode 100644 flowgram-editor/src/components/testrun/node-status-bar/render/index.module.less delete mode 100644 flowgram-editor/src/components/testrun/node-status-bar/render/index.tsx delete mode 100644 flowgram-editor/src/components/testrun/node-status-bar/viewer/index.module.less delete mode 100644 flowgram-editor/src/components/testrun/node-status-bar/viewer/index.tsx delete mode 100644 flowgram-editor/src/components/testrun/testrun-button/index.module.less delete mode 100644 flowgram-editor/src/components/testrun/testrun-button/index.tsx delete mode 100644 flowgram-editor/src/components/testrun/testrun-form/index.module.less delete mode 100644 flowgram-editor/src/components/testrun/testrun-form/index.tsx delete mode 100644 flowgram-editor/src/components/testrun/testrun-form/type.ts delete mode 100644 flowgram-editor/src/components/testrun/testrun-json-input/index.module.less delete mode 100644 flowgram-editor/src/components/testrun/testrun-json-input/index.tsx delete mode 100644 flowgram-editor/src/components/testrun/testrun-panel/index.module.less delete mode 100644 flowgram-editor/src/components/testrun/testrun-panel/index.tsx delete mode 100644 flowgram-editor/src/components/testrun/testrun-panel/test-run-panel.tsx delete mode 100644 flowgram-editor/src/components/tools/auto-layout.tsx delete mode 100644 flowgram-editor/src/components/tools/comment.tsx delete mode 100644 flowgram-editor/src/components/tools/download.tsx delete mode 100644 flowgram-editor/src/components/tools/fit-view.tsx delete mode 100644 flowgram-editor/src/components/tools/index.tsx delete mode 100644 flowgram-editor/src/components/tools/interactive.tsx delete mode 100644 flowgram-editor/src/components/tools/minimap-switch.tsx delete mode 100644 flowgram-editor/src/components/tools/minimap.tsx delete mode 100644 flowgram-editor/src/components/tools/mouse-pad-selector.less delete mode 100644 flowgram-editor/src/components/tools/mouse-pad-selector.tsx delete mode 100644 flowgram-editor/src/components/tools/readonly.tsx delete mode 100644 flowgram-editor/src/components/tools/save.tsx delete mode 100644 flowgram-editor/src/components/tools/styles.tsx delete mode 100644 flowgram-editor/src/components/tools/switch-line.tsx delete mode 100644 flowgram-editor/src/components/tools/zoom-select.tsx delete mode 100644 flowgram-editor/src/context/index.ts delete mode 100644 flowgram-editor/src/context/node-render-context.ts delete mode 100644 flowgram-editor/src/context/sidebar-context.ts delete mode 100644 flowgram-editor/src/editor.tsx delete mode 100644 flowgram-editor/src/form-components/feedback.tsx delete mode 100644 flowgram-editor/src/form-components/form-content/index.tsx delete mode 100644 flowgram-editor/src/form-components/form-content/styles.tsx delete mode 100644 flowgram-editor/src/form-components/form-header/index.tsx delete mode 100644 flowgram-editor/src/form-components/form-header/styles.tsx delete mode 100644 flowgram-editor/src/form-components/form-header/title-input.tsx delete mode 100644 flowgram-editor/src/form-components/form-header/utils.tsx delete mode 100644 flowgram-editor/src/form-components/form-inputs/index.tsx delete mode 100644 flowgram-editor/src/form-components/form-inputs/styles.tsx delete mode 100644 flowgram-editor/src/form-components/form-item/index.css delete mode 100644 flowgram-editor/src/form-components/form-item/index.tsx delete mode 100644 flowgram-editor/src/form-components/index.ts delete mode 100644 flowgram-editor/src/hooks/index.ts delete mode 100644 flowgram-editor/src/hooks/use-editor-props.tsx delete mode 100644 flowgram-editor/src/hooks/use-is-sidebar.ts delete mode 100644 flowgram-editor/src/hooks/use-node-render-context.ts delete mode 100644 flowgram-editor/src/hooks/use-port-click.ts delete mode 100644 flowgram-editor/src/index.ts delete mode 100644 flowgram-editor/src/initial-data.ts delete mode 100644 flowgram-editor/src/nodes/block-end/form-meta.tsx delete mode 100644 flowgram-editor/src/nodes/block-end/index.ts delete mode 100644 flowgram-editor/src/nodes/block-start/form-meta.tsx delete mode 100644 flowgram-editor/src/nodes/block-start/index.ts delete mode 100644 flowgram-editor/src/nodes/break/form-meta.tsx delete mode 100644 flowgram-editor/src/nodes/break/index.ts delete mode 100644 flowgram-editor/src/nodes/business.ts delete mode 100644 flowgram-editor/src/nodes/code/components/code.tsx delete mode 100644 flowgram-editor/src/nodes/code/components/inputs.tsx delete mode 100644 flowgram-editor/src/nodes/code/components/outputs.tsx delete mode 100644 flowgram-editor/src/nodes/code/form-meta.tsx delete mode 100644 flowgram-editor/src/nodes/code/index.tsx delete mode 100644 flowgram-editor/src/nodes/code/types.tsx delete mode 100644 flowgram-editor/src/nodes/comment/index.tsx delete mode 100644 flowgram-editor/src/nodes/condition/condition-inputs/index.tsx delete mode 100644 flowgram-editor/src/nodes/condition/condition-inputs/styles.tsx delete mode 100644 flowgram-editor/src/nodes/condition/form-meta.tsx delete mode 100644 flowgram-editor/src/nodes/condition/index.ts delete mode 100644 flowgram-editor/src/nodes/constants.ts delete mode 100644 flowgram-editor/src/nodes/continue/form-meta.tsx delete mode 100644 flowgram-editor/src/nodes/continue/index.ts delete mode 100644 flowgram-editor/src/nodes/default-form-meta.tsx delete mode 100644 flowgram-editor/src/nodes/end/form-meta.tsx delete mode 100644 flowgram-editor/src/nodes/end/index.ts delete mode 100644 flowgram-editor/src/nodes/group/index.tsx delete mode 100644 flowgram-editor/src/nodes/http/components/api.tsx delete mode 100644 flowgram-editor/src/nodes/http/components/body.tsx delete mode 100644 flowgram-editor/src/nodes/http/components/headers.tsx delete mode 100644 flowgram-editor/src/nodes/http/components/params.tsx delete mode 100644 flowgram-editor/src/nodes/http/components/timeout.tsx delete mode 100644 flowgram-editor/src/nodes/http/form-meta.tsx delete mode 100644 flowgram-editor/src/nodes/http/index.tsx delete mode 100644 flowgram-editor/src/nodes/http/types.tsx delete mode 100644 flowgram-editor/src/nodes/index.ts delete mode 100644 flowgram-editor/src/nodes/llm/index.ts delete mode 100644 flowgram-editor/src/nodes/loop/form-meta.tsx delete mode 100644 flowgram-editor/src/nodes/loop/index.ts delete mode 100644 flowgram-editor/src/nodes/multi-condition/condition-inputs/index.tsx delete mode 100644 flowgram-editor/src/nodes/multi-condition/condition-inputs/styles.tsx delete mode 100644 flowgram-editor/src/nodes/multi-condition/form-meta.tsx delete mode 100644 flowgram-editor/src/nodes/multi-condition/index.ts delete mode 100644 flowgram-editor/src/nodes/start/form-meta.tsx delete mode 100644 flowgram-editor/src/nodes/start/index.ts delete mode 100644 flowgram-editor/src/nodes/variable/form-meta.tsx delete mode 100644 flowgram-editor/src/nodes/variable/index.tsx delete mode 100644 flowgram-editor/src/nodes/variable/types.tsx delete mode 100644 flowgram-editor/src/plugins/context-menu-plugin/context-menu-layer.tsx delete mode 100644 flowgram-editor/src/plugins/context-menu-plugin/context-menu-plugin.ts delete mode 100644 flowgram-editor/src/plugins/context-menu-plugin/index.ts delete mode 100644 flowgram-editor/src/plugins/index.ts delete mode 100644 flowgram-editor/src/plugins/panel-manager-plugin/constants.ts delete mode 100644 flowgram-editor/src/plugins/panel-manager-plugin/hooks.ts delete mode 100644 flowgram-editor/src/plugins/panel-manager-plugin/index.tsx delete mode 100644 flowgram-editor/src/plugins/runtime-plugin/client/base-client.ts delete mode 100644 flowgram-editor/src/plugins/runtime-plugin/client/browser-client/business-debug-runtime.ts delete mode 100644 flowgram-editor/src/plugins/runtime-plugin/client/browser-client/index.ts delete mode 100644 flowgram-editor/src/plugins/runtime-plugin/client/index.ts delete mode 100644 flowgram-editor/src/plugins/runtime-plugin/client/server-client/constant.ts delete mode 100644 flowgram-editor/src/plugins/runtime-plugin/client/server-client/index.ts delete mode 100644 flowgram-editor/src/plugins/runtime-plugin/client/server-client/type.ts delete mode 100644 flowgram-editor/src/plugins/runtime-plugin/create-runtime-plugin.ts delete mode 100644 flowgram-editor/src/plugins/runtime-plugin/index.ts delete mode 100644 flowgram-editor/src/plugins/runtime-plugin/runtime-service/index.ts delete mode 100644 flowgram-editor/src/plugins/runtime-plugin/type.ts delete mode 100644 flowgram-editor/src/plugins/variable-panel-plugin/components/full-variable-list.tsx delete mode 100644 flowgram-editor/src/plugins/variable-panel-plugin/components/global-variable-editor.tsx delete mode 100644 flowgram-editor/src/plugins/variable-panel-plugin/components/index.module.less delete mode 100644 flowgram-editor/src/plugins/variable-panel-plugin/components/variable-panel.tsx delete mode 100644 flowgram-editor/src/plugins/variable-panel-plugin/index.ts delete mode 100644 flowgram-editor/src/plugins/variable-panel-plugin/variable-panel-layer.tsx delete mode 100644 flowgram-editor/src/plugins/variable-panel-plugin/variable-panel-plugin.ts delete mode 100644 flowgram-editor/src/services/custom-service.ts delete mode 100644 flowgram-editor/src/services/index.ts delete mode 100644 flowgram-editor/src/services/validate-service.ts delete mode 100644 flowgram-editor/src/shortcuts/collapse/index.ts delete mode 100644 flowgram-editor/src/shortcuts/constants.ts delete mode 100644 flowgram-editor/src/shortcuts/copy/index.ts delete mode 100644 flowgram-editor/src/shortcuts/delete/index.ts delete mode 100644 flowgram-editor/src/shortcuts/expand/index.ts delete mode 100644 flowgram-editor/src/shortcuts/index.ts delete mode 100644 flowgram-editor/src/shortcuts/paste/index.ts delete mode 100644 flowgram-editor/src/shortcuts/paste/traverse.ts delete mode 100644 flowgram-editor/src/shortcuts/paste/unique-workflow.ts delete mode 100644 flowgram-editor/src/shortcuts/select-all/index.ts delete mode 100644 flowgram-editor/src/shortcuts/shortcuts.ts delete mode 100644 flowgram-editor/src/shortcuts/type.ts delete mode 100644 flowgram-editor/src/shortcuts/zoom-in/index.ts delete mode 100644 flowgram-editor/src/shortcuts/zoom-out/index.ts delete mode 100644 flowgram-editor/src/styles/index.css delete mode 100644 flowgram-editor/src/type.d.ts delete mode 100644 flowgram-editor/src/typings/index.ts delete mode 100644 flowgram-editor/src/typings/json-schema.ts delete mode 100644 flowgram-editor/src/typings/node.ts delete mode 100644 flowgram-editor/src/utils/can-contain-node.ts delete mode 100644 flowgram-editor/src/utils/index.ts delete mode 100644 flowgram-editor/src/utils/on-drag-line-end.ts delete mode 100644 flowgram-editor/src/utils/toggle-loop-expanded.ts delete mode 100644 flowgram-editor/tsconfig.json delete mode 160000 qdrant delete mode 100644 screenshots/1.png delete mode 100644 screenshots/2.png delete mode 100644 screenshots/3.png delete mode 100644 screenshots/4.png delete mode 100644 screenshots/5.png delete mode 100644 web/.env.example delete mode 100644 web/.gitignore delete mode 100644 web/README.md delete mode 100644 web/app/dashboard/_components/alert-list.tsx delete mode 100644 web/app/dashboard/_components/dashboard-home.tsx delete mode 100644 web/app/dashboard/_components/summary-cards.tsx delete mode 100644 web/app/dashboard/_components/team-load-panel.tsx delete mode 100644 web/app/dashboard/_components/trend-panel.tsx delete mode 100644 web/app/dashboard/agent-runs/page.tsx delete mode 100644 web/app/dashboard/agent-team-schedules/_components/batch-schedule-dialog.tsx delete mode 100644 web/app/dashboard/agent-team-schedules/_components/calendar-date-range.test.mjs delete mode 100644 web/app/dashboard/agent-team-schedules/_components/calendar-date-range.ts delete mode 100644 web/app/dashboard/agent-team-schedules/_components/calendar-time-layout.test.mjs delete mode 100644 web/app/dashboard/agent-team-schedules/_components/calendar-time-layout.ts delete mode 100644 web/app/dashboard/agent-team-schedules/_components/calendar.tsx delete mode 100644 web/app/dashboard/agent-team-schedules/_components/edit.tsx delete mode 100644 web/app/dashboard/agent-team-schedules/page.tsx delete mode 100644 web/app/dashboard/agents/_components/edit.tsx delete mode 100644 web/app/dashboard/agents/_components/team-edit.tsx delete mode 100644 web/app/dashboard/agents/_components/team-sidebar.tsx delete mode 100644 web/app/dashboard/agents/page.tsx delete mode 100644 web/app/dashboard/ai-agents/_components/config-workbench-copy.test.mjs delete mode 100644 web/app/dashboard/ai-agents/_components/config-workbench.tsx delete mode 100644 web/app/dashboard/ai-agents/page.tsx delete mode 100644 web/app/dashboard/ai-configs/_components/edit.tsx delete mode 100644 web/app/dashboard/ai-configs/page.tsx delete mode 100644 web/app/dashboard/ai-workflow-runs/_components/workflow-run-audit-graph.tsx delete mode 100644 web/app/dashboard/ai-workflow-runs/page.tsx delete mode 100644 web/app/dashboard/ai-workflows/_components/official-workflow-editor.tsx delete mode 100644 web/app/dashboard/ai-workflows/_components/workflow-usage-dialog.tsx delete mode 100644 web/app/dashboard/ai-workflows/_components/workflow-versions-dialog.tsx delete mode 100644 web/app/dashboard/ai-workflows/_components/workflow-workbench.tsx delete mode 100644 web/app/dashboard/ai-workflows/page.tsx delete mode 100644 web/app/dashboard/channels/_components/edit.tsx delete mode 100644 web/app/dashboard/channels/page.tsx delete mode 100644 web/app/dashboard/companies/page.tsx delete mode 100644 web/app/dashboard/conversation-monitor/_components/detail.tsx delete mode 100644 web/app/dashboard/conversation-monitor/page.tsx delete mode 100644 web/app/dashboard/conversations/_components/agent-message-editor.tsx delete mode 100644 web/app/dashboard/conversations/_components/chat-panel.tsx delete mode 100644 web/app/dashboard/conversations/_components/conversation-info-panel.tsx delete mode 100644 web/app/dashboard/conversations/_components/conversation-list.tsx delete mode 100644 web/app/dashboard/conversations/_components/conversation-tag-picker.tsx delete mode 100644 web/app/dashboard/conversations/_components/conversation-workbench.tsx delete mode 100644 web/app/dashboard/conversations/page.tsx delete mode 100644 web/app/dashboard/customers/_components/edit.tsx delete mode 100644 web/app/dashboard/customers/page.tsx delete mode 100644 web/app/dashboard/help/page.tsx delete mode 100644 web/app/dashboard/knowledge/_components/debug-panel.tsx delete mode 100644 web/app/dashboard/knowledge/_components/document-edit.tsx delete mode 100644 web/app/dashboard/knowledge/_components/document-list.tsx delete mode 100644 web/app/dashboard/knowledge/_components/faq-edit.tsx delete mode 100644 web/app/dashboard/knowledge/_components/faq-import-dialog.tsx delete mode 100644 web/app/dashboard/knowledge/_components/faq-list.tsx delete mode 100644 web/app/dashboard/knowledge/_components/knowledge-base-edit.tsx delete mode 100644 web/app/dashboard/knowledge/_components/knowledge-bulk-move-dialog.tsx delete mode 100644 web/app/dashboard/knowledge/_components/knowledge-content-detail.tsx delete mode 100644 web/app/dashboard/knowledge/_components/knowledge-directory-panel.tsx delete mode 100644 web/app/dashboard/knowledge/_components/knowledge-directory-sort.test.mjs delete mode 100644 web/app/dashboard/knowledge/_components/knowledge-directory-sort.ts delete mode 100644 web/app/dashboard/knowledge/_components/retrieve-log-detail.tsx delete mode 100644 web/app/dashboard/knowledge/_components/retrieve-log-list.tsx delete mode 100644 web/app/dashboard/knowledge/_components/selection-checkbox.tsx delete mode 100644 web/app/dashboard/knowledge/detail/page.tsx delete mode 100644 web/app/dashboard/knowledge/page.tsx delete mode 100644 web/app/dashboard/layout.tsx delete mode 100644 web/app/dashboard/login/oidc/callback/page.tsx delete mode 100644 web/app/dashboard/login/page.tsx delete mode 100644 web/app/dashboard/login/wxwork/callback/page.tsx delete mode 100644 web/app/dashboard/mcp/page.tsx delete mode 100644 web/app/dashboard/notifications/page.tsx delete mode 100644 web/app/dashboard/page.tsx delete mode 100644 web/app/dashboard/permissions/page.tsx delete mode 100644 web/app/dashboard/quick-replies/page.tsx delete mode 100644 web/app/dashboard/roles/_components/assign-permissions.tsx delete mode 100644 web/app/dashboard/roles/_components/create.tsx delete mode 100644 web/app/dashboard/roles/page.tsx delete mode 100644 web/app/dashboard/settings/page.tsx delete mode 100644 web/app/dashboard/skill-definition/_components/debug-dialog.tsx delete mode 100644 web/app/dashboard/skill-definition/_components/edit.tsx delete mode 100644 web/app/dashboard/skill-definition/page.tsx delete mode 100644 web/app/dashboard/tags/_components/edit.tsx delete mode 100644 web/app/dashboard/tags/page.tsx delete mode 100644 web/app/dashboard/tickets/_components/create-ticket-from-conversation-dialog.tsx delete mode 100644 web/app/dashboard/tickets/_components/edit.tsx delete mode 100644 web/app/dashboard/tickets/_components/ticket-assign-dialog.tsx delete mode 100644 web/app/dashboard/tickets/_components/ticket-detail-dialog.tsx delete mode 100644 web/app/dashboard/tickets/_components/ticket-status-badge.tsx delete mode 100644 web/app/dashboard/tickets/page.tsx delete mode 100644 web/app/dashboard/users/_components/assign-roles.tsx delete mode 100644 web/app/dashboard/users/_components/create.tsx delete mode 100644 web/app/dashboard/users/_components/edit.tsx delete mode 100644 web/app/dashboard/users/_components/initial-password-dialog.tsx delete mode 100644 web/app/dashboard/users/_components/reset-password.tsx delete mode 100644 web/app/dashboard/users/page.tsx delete mode 100644 web/app/dashboard/wxwork-outbox/page.tsx delete mode 100644 web/app/favicon.ico delete mode 100644 web/app/globals.css delete mode 100644 web/app/layout.tsx delete mode 100644 web/app/legal/privacy/page.tsx delete mode 100644 web/app/legal/terms/page.tsx delete mode 100644 web/app/page.tsx delete mode 100644 web/app/support/chat/closed/page.tsx delete mode 100644 web/app/support/chat/page.tsx delete mode 100644 web/app/support/demo/page.tsx delete mode 100644 web/app/support/page.tsx delete mode 100644 web/app/workbench/layout.tsx delete mode 100644 web/app/workbench/page.tsx delete mode 100644 web/app/workbench/tickets/page.tsx delete mode 100644 web/components.json delete mode 100644 web/components/agent-realtime-provider.test.mjs delete mode 100644 web/components/agent-realtime-provider.tsx delete mode 100644 web/components/app-sidebar.tsx delete mode 100644 web/components/auth-provider.test.mjs delete mode 100644 web/components/auth-provider.tsx delete mode 100644 web/components/change-password-dialog.tsx delete mode 100644 web/components/chart-area-interactive.tsx delete mode 100644 web/components/chat/conversation-message-bubble.tsx delete mode 100644 web/components/chat/conversation-message-row.tsx delete mode 100644 web/components/chat/conversation-message-scroller.tsx delete mode 100644 web/components/chat/shared-message-editor.tsx delete mode 100644 web/components/company-picker.tsx delete mode 100644 web/components/confirm-provider.tsx delete mode 100644 web/components/content-editor/convert.ts delete mode 100644 web/components/content-editor/editor-mode-switch.tsx delete mode 100644 web/components/content-editor/html-editor.tsx delete mode 100644 web/components/content-editor/index.tsx delete mode 100644 web/components/content-editor/markdown-editor.css delete mode 100644 web/components/content-editor/markdown-editor.tsx delete mode 100644 web/components/content-editor/toolbar.css delete mode 100644 web/components/content-editor/toolbar.tsx delete mode 100644 web/components/content-editor/types.ts delete mode 100644 web/components/conversation-actions/close-dialog.tsx delete mode 100644 web/components/conversation-actions/transfer-dialog.tsx delete mode 100644 web/components/customer-form-dialog.tsx delete mode 100644 web/components/customer-form.tsx delete mode 100644 web/components/customer-link-or-create-dialog.tsx delete mode 100644 web/components/dashboard-page.tsx delete mode 100644 web/components/dashboard-placeholder.tsx delete mode 100644 web/components/dashboard/crud/dashboard-crud-field-control.tsx delete mode 100644 web/components/dashboard/crud/dashboard-crud-form-dialog.tsx delete mode 100644 web/components/dashboard/crud/dashboard-crud-page.tsx delete mode 100644 web/components/dashboard/crud/dashboard-crud-presets.tsx delete mode 100644 web/components/dashboard/crud/dashboard-crud-utils.test.mjs delete mode 100644 web/components/dashboard/crud/dashboard-crud-utils.ts delete mode 100644 web/components/dashboard/crud/index.ts delete mode 100644 web/components/dashboard/crud/use-dashboard-crud-filters.ts delete mode 100644 web/components/dashboard/list/dashboard-list-page.tsx delete mode 100644 web/components/dashboard/list/index.ts delete mode 100644 web/components/dashboard/list/use-dashboard-paged-list.ts delete mode 100644 web/components/data-table.tsx delete mode 100644 web/components/editor/DESIGN.md delete mode 100644 web/components/editor/html.tsx delete mode 100644 web/components/editor/index.tsx delete mode 100644 web/components/editor/markdown.tsx delete mode 100644 web/components/editor/toolbar.tsx delete mode 100644 web/components/editor/types.ts delete mode 100644 web/components/im-message-html.tsx delete mode 100644 web/components/image-input.tsx delete mode 100644 web/components/image-lightbox.tsx delete mode 100644 web/components/json-code-editor.tsx delete mode 100644 web/components/json-tree-viewer.tsx delete mode 100644 web/components/json-viewer.tsx delete mode 100644 web/components/legal-document-page.tsx delete mode 100644 web/components/list-pagination.tsx delete mode 100644 web/components/login-form.tsx delete mode 100644 web/components/nav-documents.tsx delete mode 100644 web/components/nav-main.test.mjs delete mode 100644 web/components/nav-main.tsx delete mode 100644 web/components/nav-secondary.tsx delete mode 100644 web/components/nav-user.tsx delete mode 100644 web/components/notification-provider.tsx delete mode 100644 web/components/option-combobox.tsx delete mode 100644 web/components/palette-toggle.test.mjs delete mode 100644 web/components/palette-toggle.tsx delete mode 100644 web/components/project-dialog.tsx delete mode 100644 web/components/realtime-connection-status.tsx delete mode 100644 web/components/safe-rich-html.tsx delete mode 100644 web/components/section-cards.tsx delete mode 100644 web/components/site-header.test.mjs delete mode 100644 web/components/site-header.tsx delete mode 100644 web/components/support-center/help-center.tsx delete mode 100644 web/components/support-chat/chat-shell.tsx delete mode 100644 web/components/support-chat/close-navigation.test.mjs delete mode 100644 web/components/support-chat/close-navigation.ts delete mode 100644 web/components/support-chat/connection-status.tsx delete mode 100644 web/components/support-chat/customer-message-editor.tsx delete mode 100644 web/components/support-chat/demo-navigation.test.mjs delete mode 100644 web/components/support-chat/demo-navigation.ts delete mode 100644 web/components/support-chat/message-list.tsx delete mode 100644 web/components/support-chat/widget-demo.tsx delete mode 100644 web/components/tag-selector.tsx delete mode 100644 web/components/theme-provider.tsx delete mode 100644 web/components/theme-toggle.tsx delete mode 100644 web/components/ui/avatar.tsx delete mode 100644 web/components/ui/badge.tsx delete mode 100644 web/components/ui/breadcrumb.tsx delete mode 100644 web/components/ui/bubble.tsx delete mode 100644 web/components/ui/button-group.tsx delete mode 100644 web/components/ui/button.tsx delete mode 100644 web/components/ui/calendar.tsx delete mode 100644 web/components/ui/card.tsx delete mode 100644 web/components/ui/chart.tsx delete mode 100644 web/components/ui/checkbox.tsx delete mode 100644 web/components/ui/collapsible.tsx delete mode 100644 web/components/ui/combobox.tsx delete mode 100644 web/components/ui/command.tsx delete mode 100644 web/components/ui/context-menu.tsx delete mode 100644 web/components/ui/dialog.tsx delete mode 100644 web/components/ui/drawer.tsx delete mode 100644 web/components/ui/dropdown-menu.tsx delete mode 100644 web/components/ui/field.tsx delete mode 100644 web/components/ui/input-group.tsx delete mode 100644 web/components/ui/input.tsx delete mode 100644 web/components/ui/label.tsx delete mode 100644 web/components/ui/menubar.tsx delete mode 100644 web/components/ui/message-scroller.tsx delete mode 100644 web/components/ui/message.tsx delete mode 100644 web/components/ui/popover.tsx delete mode 100644 web/components/ui/resizable.tsx delete mode 100644 web/components/ui/scroll-area.tsx delete mode 100644 web/components/ui/select.tsx delete mode 100644 web/components/ui/separator.tsx delete mode 100644 web/components/ui/sheet.tsx delete mode 100644 web/components/ui/sidebar.tsx delete mode 100644 web/components/ui/skeleton.tsx delete mode 100644 web/components/ui/sonner.tsx delete mode 100644 web/components/ui/switch.tsx delete mode 100644 web/components/ui/table.tsx delete mode 100644 web/components/ui/tabs.tsx delete mode 100644 web/components/ui/textarea.tsx delete mode 100644 web/components/ui/toggle-group.tsx delete mode 100644 web/components/ui/toggle.tsx delete mode 100644 web/components/ui/tooltip.tsx delete mode 100644 web/components/workbench-header.tsx delete mode 100644 web/components/workbench-rail.tsx delete mode 100644 web/components/workspace-switcher.test.mjs delete mode 100644 web/components/workspace-switcher.tsx delete mode 100644 web/e2e/workbench-function.spec.ts delete mode 100644 web/embed.go delete mode 100644 web/embed_dev.go delete mode 100644 web/embed_test.go delete mode 100644 web/eslint.config.mjs delete mode 100644 web/hooks/use-agent-conversation-realtime.ts delete mode 100644 web/hooks/use-lg-media.ts delete mode 100644 web/hooks/use-mobile.ts delete mode 100644 web/i18n/config.test.mjs delete mode 100644 web/i18n/config.ts delete mode 100644 web/i18n/legal-messages.test.mjs delete mode 100644 web/i18n/messages.ts delete mode 100644 web/i18n/provider.tsx delete mode 100644 web/lib/agent-conversation-realtime.test.mjs delete mode 100644 web/lib/agent-conversation-realtime.ts delete mode 100644 web/lib/api/admin.ts delete mode 100644 web/lib/api/agent.ts delete mode 100644 web/lib/api/auth.ts delete mode 100644 web/lib/api/client.ts delete mode 100644 web/lib/api/company.ts delete mode 100644 web/lib/api/config.ts delete mode 100644 web/lib/api/customer-contact.ts delete mode 100644 web/lib/api/customer.ts delete mode 100644 web/lib/api/dashboard.ts delete mode 100644 web/lib/api/im.ts delete mode 100644 web/lib/api/notification.ts delete mode 100644 web/lib/api/ticket.ts delete mode 100644 web/lib/api/websocket.ts delete mode 100644 web/lib/auth.ts delete mode 100644 web/lib/enums.ts delete mode 100644 web/lib/generated/enums.ts delete mode 100644 web/lib/im-editor-image.ts delete mode 100644 web/lib/im-message-merge.ts delete mode 100644 web/lib/im-message.ts delete mode 100644 web/lib/im-realtime-state.ts delete mode 100644 web/lib/im-realtime.ts delete mode 100644 web/lib/knowledge-i18n.test.mjs delete mode 100644 web/lib/knowledge-i18n.ts delete mode 100644 web/lib/navigation-active.test.mjs delete mode 100644 web/lib/navigation-active.ts delete mode 100644 web/lib/navigation.tsx delete mode 100644 web/lib/notification-i18n.test.mjs delete mode 100644 web/lib/notification-i18n.ts delete mode 100644 web/lib/permission-i18n.test.mjs delete mode 100644 web/lib/permission-i18n.ts delete mode 100644 web/lib/realtime-connection.ts delete mode 100644 web/lib/role-i18n.test.mjs delete mode 100644 web/lib/role-i18n.ts delete mode 100644 web/lib/sdk/agent-desk-sdk.test.mjs delete mode 100644 web/lib/sdk/agent-desk-sdk.ts delete mode 100644 web/lib/sdk/config-types.ts delete mode 100644 web/lib/sdk/runtime-config.ts delete mode 100644 web/lib/services/notification.ts delete mode 100644 web/lib/stores/agent-conversations.ts delete mode 100644 web/lib/stores/support-chat.ts delete mode 100644 web/lib/support-host-bridge.ts delete mode 100644 web/lib/tag-tree.test.mjs delete mode 100644 web/lib/tag-tree.ts delete mode 100644 web/lib/utils.ts delete mode 100644 web/messages/en-US.json delete mode 100644 web/messages/zh-CN.json delete mode 100644 web/next.config.ts delete mode 100644 web/package.json delete mode 100644 web/pnpm-lock.yaml delete mode 100644 web/pnpm-workspace.yaml delete mode 100644 web/postcss.config.mjs delete mode 100644 web/public/images/login-illustration.svg delete mode 100644 web/public/images/logo.jpg delete mode 100644 web/public/images/logo.png delete mode 100644 web/public/images/logo.svg delete mode 100644 web/public/images/wxwork.svg delete mode 100644 web/public/sdk/agent-desk-sdk.min.js delete mode 100644 web/scripts/build-sdk.mjs delete mode 100644 web/styles/main.scss delete mode 100644 web/tsconfig.json delete mode 100644 web/types/styles.d.ts diff --git a/.codex/skills/release-version/SKILL.md b/.codex/skills/release-version/SKILL.md deleted file mode 100644 index 157faea..0000000 --- a/.codex/skills/release-version/SKILL.md +++ /dev/null @@ -1,225 +0,0 @@ ---- -name: release-version -description: Use when preparing or publishing a new semantic version release, updating bilingual changelogs, creating Git tags, or publishing GitHub/Gitee release pages for this repository. ---- - -# Release Version - -## Overview - -Create releases with a strict `vx.y.z` tag, produce bilingual changelog entries from actual Git history, publish both the `docs` submodule update and repository tag, and create the GitHub and Gitee Release page entries in one controlled workflow. - -Run the workflow from the repository root. Read [references/changelog-style.md](references/changelog-style.md) before drafting the human-facing update notes. - -## Workflow - -1. Validate the requested version. -2. Inspect the repository and determine the comparison range. -3. Draft bilingual changelog entries from the actual diff. -4. Commit and push the `docs` submodule. -5. Commit the parent repository update if the submodule pointer changed. -6. Create and push the annotated tag. -7. Create GitHub and Gitee Release page entries for the tag. -8. Verify both remote tags and both Release pages. - -Do not skip the repository inspection step. Release notes must come from the real diff between tags, not from guesswork. - -## Validate The Version - -- Accept only tags that match `^v\d+\.\d+\.\d+$`. -- Reject date-style tags such as `v20260414`. -- Confirm the target tag does not already exist locally or on any configured remote. -- Prefer the latest reachable semver tag as the previous release tag. -- If no earlier semver tag exists, fall back to the latest reachable tag of any format and state that fallback in the changelog drafting notes. - -Use the helper script first: - -```bash -python3 .codex/skills/release-version/scripts/collect_release_context.py \ - --repo . \ - --tag v1.2.3 -``` - -If the caller already specifies the previous tag, pass it explicitly: - -```bash -python3 .codex/skills/release-version/scripts/collect_release_context.py \ - --repo . \ - --tag v1.2.3 \ - --previous-tag v1.2.2 -``` - -If the repository-local helper is unavailable, fall back to `~/.codex/skills/release-version/scripts/collect_release_context.py`. - -## Inspect The Repository - -- Check `git status --short` in the parent repo. -- Check `git -C docs status --short` in the `docs` submodule. -- Read the JSON output of `collect_release_context.py`. -- Use the commit list, changed files, and insertions/deletions to decide what is user-visible. -- Prioritize behavior changes, new features, fixes, migrations, API changes, configuration changes, and documentation changes that matter to adopters. -- Ignore pure formatting churn unless it changes usage. - -If the working tree contains unrelated changes that would be risky to include in the release, stop and ask the user before proceeding. - -## Draft The Changelog - -Update these files: - -- `docs/zh/docs/changelog.md` -- `docs/en/docs/changelog.md` - -Prepend a new entry using this exact structure: - -```md -## ${tag} (${yyyy-MM-dd}) - -### 更新内容 - -${content} - -### 发布地址 - -- Github: -- Gitee: -``` - -For the English file, keep the same links and heading level, but translate the section heading and content naturally: - -```md -## ${tag} (${yyyy-MM-dd}) - -### Updates - -${content} - -### Release Links - -- Github: -- Gitee: -``` - -Changelog writing rules: - -- Write concise, user-facing summaries instead of raw commit subjects. -- Keep Chinese and English entries semantically aligned. -- Prefer 3-6 bullets unless the release is extremely small. -- Group related changes into a single bullet when that reads better. -- Mention compatibility-sensitive changes explicitly. -- If the comparison baseline is a non-semver fallback tag, note that in your private reasoning, not in the public changelog unless the user asks for it. - -## Commit And Push The Docs Submodule - -After editing the changelog files: - -1. Run `git -C docs status --short`. -2. Review the diff with `git -C docs diff -- zh/docs/changelog.md en/docs/changelog.md`. -3. Commit inside the `docs` submodule with a focused message such as `docs: update changelog for v1.2.3`. -4. Push the `docs` submodule commit to its remote branch. - -Branch rule: - -- If `docs` is on a local branch, push that branch. -- If `docs` is detached, push `HEAD` to `origin/main` unless the repository clearly uses another default branch. - -## Commit The Parent Repository - -If the `docs` submodule pointer changed in the parent repository, commit it before tagging. Otherwise the release tag will not reference the new changelog revision. - -Recommended flow: - -```bash -git status --short -git add docs -git commit -m "chore: update docs submodule for v1.2.3" -``` - -Only include unrelated parent-repo changes if the user explicitly wants them in the release commit. - -## Create And Push The Tag - -Create an annotated tag after the repository state is ready: - -```bash -git tag -a v1.2.3 -m "Release v1.2.3" -``` - -Push the commit branch first if needed, then push the tag to every configured remote that should publish releases: - -```bash -git push github HEAD -git push origin HEAD -git push github v1.2.3 -git push origin v1.2.3 -``` - -Adjust the branch name if `HEAD` is not tracking the intended release branch. - -## Create GitHub And Gitee Releases - -Pushing tags is not enough. The release is incomplete until both Release pages exist: - -- GitHub: `https://github.com/huabeitech/agent-desk/releases/tag/${tag}` -- Gitee: `https://gitee.com/huabeitech/agent-desk/releases/tag/${tag}` - -Use the same concise release notes derived from the changelog. Prefer a bilingual body with Chinese first and English second. - -Required credentials: - -- GitHub: `GITHUB_TOKEN` or `GH_TOKEN` with access to `huabeitech/agent-desk` and permission to create releases. For a fine-grained PAT, use an organization-allowed lifetime and grant the repository at least `Contents: Read and write` plus `Metadata: Read`. -- Gitee: `GITEE_ACCESS_TOKEN` or `GITEE_TOKEN` with release write access to `huabeitech/agent-desk`. - -Never print tokens in command output or final responses. If the user pastes a token into the conversation, use it only for the requested release operation and recommend rotation after use. - -Build the release body from the new changelog entry, for example: - -```bash -mkdir -p /tmp/agent-desk-release -awk 'BEGIN{p=0} /^## v1\.2\.3 /{p=1; next} /^## v[0-9]/{if(p) exit} p{print}' \ - docs/zh/docs/changelog.md | sed '/^### 发布地址/,$d' > /tmp/agent-desk-release/v1.2.3-zh.md -awk 'BEGIN{p=0} /^## v1\.2\.3 /{p=1; next} /^## v[0-9]/{if(p) exit} p{print}' \ - docs/en/docs/changelog.md | sed '/^### Release Links/,$d' > /tmp/agent-desk-release/v1.2.3-en.md -{ - printf '## 更新内容\n\n' - sed '1,/^### 更新内容$/d' /tmp/agent-desk-release/v1.2.3-zh.md - printf '\n## Updates\n\n' - sed '1,/^### Updates$/d' /tmp/agent-desk-release/v1.2.3-en.md -} > /tmp/agent-desk-release/v1.2.3-release-body.md -``` - -Create the GitHub Release: - -```bash -token="${GITHUB_TOKEN:-$GH_TOKEN}" -curl -sS -o /tmp/github_release_v1.2.3.json -w '%{http_code}' \ - -X POST https://api.github.com/repos/huabeitech/agent-desk/releases \ - -H "Authorization: Bearer ${token}" \ - -H 'Accept: application/vnd.github+json' \ - -H 'X-GitHub-Api-Version: 2022-11-28' \ - -H 'Content-Type: application/json' \ - -d @<(jq -n --rawfile body /tmp/agent-desk-release/v1.2.3-release-body.md \ - '{tag_name:"v1.2.3", target_commitish:"main", name:"v1.2.3", body:$body, draft:false, prerelease:false}') -``` - -Create the Gitee Release: - -```bash -token="${GITEE_ACCESS_TOKEN:-$GITEE_TOKEN}" -curl -sS -o /tmp/gitee_release_v1.2.3.json -w '%{http_code}' \ - -X POST https://gitee.com/api/v5/repos/huabeitech/agent-desk/releases \ - -H 'Content-Type: application/json' \ - -d @<(jq -n --rawfile body /tmp/agent-desk-release/v1.2.3-release-body.md --arg token "${token}" \ - '{access_token:$token, tag_name:"v1.2.3", target_commitish:"main", name:"v1.2.3", body:$body, prerelease:false}') -``` - -If creation returns `422`/already exists, fetch the existing release and verify it references the target tag before treating it as complete. If GitHub returns `Resource not accessible by personal access token`, inspect the API message and ask for a token that satisfies the organization policy and repository permissions. - -## Final Verification - -- Confirm `git rev-parse v1.2.3^{tag}` succeeds. -- Confirm `git ls-remote --tags github v1.2.3` and `git ls-remote --tags origin v1.2.3` show the new tag. -- Confirm `curl -sS -o /tmp/github_release_verify.json -w '%{http_code}' https://api.github.com/repos/huabeitech/agent-desk/releases/tags/v1.2.3` returns `200`. -- Confirm `curl -sS -o /tmp/gitee_release_verify.json -w '%{http_code}' https://gitee.com/api/v5/repos/huabeitech/agent-desk/releases/tags/v1.2.3` returns `200`. -- Confirm the `docs` submodule remote contains the changelog commit. -- Confirm both parent and `docs` working trees are clean. -- Summarize the previous tag used for comparison, the files updated, the commit hashes created, the remotes pushed, and the GitHub/Gitee Release URLs. diff --git a/.codex/skills/release-version/agents/openai.yaml b/.codex/skills/release-version/agents/openai.yaml deleted file mode 100644 index 7732fdf..0000000 --- a/.codex/skills/release-version/agents/openai.yaml +++ /dev/null @@ -1,4 +0,0 @@ -interface: - display_name: "Release Version" - short_description: "Create semver tags and changelog drafts" - default_prompt: "Use $release-version to create a new vx.y.z release, update changelogs, and push docs plus tags." diff --git a/.codex/skills/release-version/references/changelog-style.md b/.codex/skills/release-version/references/changelog-style.md deleted file mode 100644 index 3376da6..0000000 --- a/.codex/skills/release-version/references/changelog-style.md +++ /dev/null @@ -1,61 +0,0 @@ -# Changelog Style - -Use this guide when drafting `docs/zh/changelog.md` and `docs/en/changelog.md`. - -## Goal - -Turn Git history into short release notes that explain what changed for adopters. - -## Keep - -- New user-facing features. -- Bug fixes with clear impact. -- Breaking or compatibility-sensitive changes. -- API, configuration, deployment, model, workflow, or schema changes that affect usage. -- Important documentation updates when they unlock new workflows. - -## Drop Or Compress - -- Pure refactors with no visible effect. -- Formatting-only changes. -- Internal rename churn. -- Mechanical dependency updates unless they fix a real issue. - -## Chinese Style - -- Use concise bullets. -- Prefer product or workflow language over commit jargon. -- Start with the effect, then mention the area if needed. -- Keep terms consistent across bullets. - -Example: - -```md -- 优化会话列表查询与筛选逻辑,减少后台定位问题时的人工排查成本。 -- 修复消息发送链路中的异常处理,避免部分失败场景下页面状态不同步。 -``` - -## English Style - -- Mirror the Chinese meaning instead of translating word by word. -- Use direct release-note phrasing. -- Prefer active wording and concrete impact. - -Example: - -```md -- Improved conversation list querying and filtering so operators can locate problem cases faster. -- Fixed error handling in the message send flow to prevent UI state from drifting after partial failures. -``` - -## Grouping Heuristics - -- Merge multiple commits into one bullet when they deliver one outcome. -- Separate bullets when the audience or impact differs. -- Keep both language versions aligned in bullet count when possible. - -## Before Finalizing - -- Re-check that every bullet is supported by the diff. -- Remove statements that depend on assumptions you cannot verify from code, tests, or commits. -- Keep the notes short enough to scan in under a minute. diff --git a/.codex/skills/release-version/scripts/collect_release_context.py b/.codex/skills/release-version/scripts/collect_release_context.py deleted file mode 100755 index 9d95869..0000000 --- a/.codex/skills/release-version/scripts/collect_release_context.py +++ /dev/null @@ -1,221 +0,0 @@ -#!/usr/bin/env python3 -"""Collect release context between a target tag and its comparison baseline.""" - -from __future__ import annotations - -import argparse -import json -import re -import subprocess -import sys -from pathlib import Path - -SEMVER_TAG_RE = re.compile(r"^v(\d+)\.(\d+)\.(\d+)$") - - -def run_git( - repo: Path, - args: list[str], - allow_failure: bool = False, - timeout_seconds: int = 15, -) -> str: - try: - result = subprocess.run( - ["git", *args], - cwd=repo, - capture_output=True, - text=True, - check=False, - timeout=timeout_seconds, - ) - except subprocess.TimeoutExpired: - if allow_failure: - return "" - raise RuntimeError(f"git command timed out: git {' '.join(args)}") - if result.returncode != 0 and not allow_failure: - raise RuntimeError(result.stderr.strip() or "git command failed") - return result.stdout.strip() - - -def parse_semver(tag: str) -> tuple[int, int, int] | None: - match = SEMVER_TAG_RE.match(tag) - if not match: - return None - return tuple(int(part) for part in match.groups()) - - -def list_reachable_tags(repo: Path) -> list[str]: - output = run_git(repo, ["tag", "--merged", "HEAD"]) - return [line.strip() for line in output.splitlines() if line.strip()] - - -def choose_previous_tag(repo: Path, tags: list[str], target_tag: str | None) -> tuple[str | None, str | None]: - semver_tags: list[tuple[tuple[int, int, int], str]] = [] - other_tags: list[str] = [] - target_semver = parse_semver(target_tag) if target_tag else None - - for tag in tags: - if target_tag and tag == target_tag: - continue - parsed = parse_semver(tag) - if parsed is None: - other_tags.append(tag) - continue - if target_semver is not None and parsed >= target_semver: - continue - semver_tags.append((parsed, tag)) - - if semver_tags: - semver_tags.sort(key=lambda item: item[0], reverse=True) - return semver_tags[0][1], "semver" - - if not other_tags: - return None, None - - candidates: list[tuple[int, str]] = [] - for tag in other_tags: - ts = run_git(repo, ["log", "-1", "--format=%ct", tag], allow_failure=True) - try: - candidates.append((int(ts), tag)) - except ValueError: - continue - if not candidates: - return other_tags[-1], "fallback" - candidates.sort(reverse=True) - return candidates[0][1], "fallback" - - -def ensure_tag_absent(repo: Path, tag: str) -> None: - local = run_git(repo, ["tag", "--list", tag]) - if local: - raise ValueError(f"target tag already exists locally: {tag}") - - remotes_output = run_git(repo, ["remote"]) - for remote in [line.strip() for line in remotes_output.splitlines() if line.strip()]: - remote_hit = run_git( - repo, - ["ls-remote", "--tags", remote, tag], - allow_failure=True, - timeout_seconds=8, - ) - if remote_hit: - raise ValueError(f"target tag already exists on remote {remote}: {tag}") - - -def ensure_tag_exists(repo: Path, tag: str) -> None: - hit = run_git(repo, ["rev-parse", "--verify", "--quiet", tag], allow_failure=True) - if not hit: - raise ValueError(f"previous tag does not exist locally: {tag}") - - -def get_commit_list(repo: Path, rev_range: str) -> list[dict[str, str]]: - output = run_git(repo, ["log", "--reverse", "--date=short", "--pretty=format:%H%x09%ad%x09%s", rev_range]) - commits: list[dict[str, str]] = [] - for line in output.splitlines(): - commit_hash, date_str, subject = line.split("\t", 2) - commits.append( - { - "hash": commit_hash, - "short_hash": commit_hash[:7], - "date": date_str, - "subject": subject, - } - ) - return commits - - -def get_changed_files(repo: Path, rev_range: str) -> list[str]: - output = run_git(repo, ["diff", "--name-only", rev_range]) - return [line.strip() for line in output.splitlines() if line.strip()] - - -def get_numstat(repo: Path, rev_range: str) -> dict[str, int]: - output = run_git(repo, ["diff", "--numstat", rev_range]) - changed_files = 0 - insertions = 0 - deletions = 0 - for line in output.splitlines(): - parts = line.split("\t") - if len(parts) < 3: - continue - added, removed = parts[0], parts[1] - changed_files += 1 - if added.isdigit(): - insertions += int(added) - if removed.isdigit(): - deletions += int(removed) - return { - "changed_files": changed_files, - "insertions": insertions, - "deletions": deletions, - } - - -def build_parser() -> argparse.ArgumentParser: - parser = argparse.ArgumentParser(description=__doc__) - parser.add_argument("--repo", default=".", help="Repository root. Defaults to current directory.") - parser.add_argument("--tag", help="Target release tag to validate, for example v1.2.3.") - parser.add_argument("--previous-tag", help="Explicit comparison baseline.") - return parser - - -def main() -> int: - args = build_parser().parse_args() - repo_path = Path(args.repo).expanduser().resolve() - - if not (repo_path / ".git").exists(): - print(json.dumps({"error": f"not a git repository: {repo_path}"})) - return 1 - - if args.tag and parse_semver(args.tag) is None: - print(json.dumps({"error": f"invalid tag format: {args.tag}", "expected": "vx.y.z"})) - return 1 - - try: - if args.tag: - ensure_tag_absent(repo_path, args.tag) - if args.previous_tag: - ensure_tag_exists(repo_path, args.previous_tag) - except ValueError as exc: - print(json.dumps({"error": str(exc)})) - return 1 - - tags = list_reachable_tags(repo_path) - previous_tag = args.previous_tag - previous_tag_source = "explicit" if previous_tag else None - - if previous_tag is None: - previous_tag, previous_tag_source = choose_previous_tag(repo_path, tags, args.tag) - - rev_range = "HEAD" - if previous_tag: - rev_range = f"{previous_tag}..HEAD" - - try: - commits = get_commit_list(repo_path, rev_range) - changed_files = get_changed_files(repo_path, rev_range) - stats = get_numstat(repo_path, rev_range) - head_commit = run_git(repo_path, ["rev-parse", "HEAD"]) - except RuntimeError as exc: - print(json.dumps({"error": str(exc)})) - return 1 - - payload: dict[str, object] = { - "repo": str(repo_path), - "target_tag": args.tag, - "previous_tag": previous_tag, - "previous_tag_source": previous_tag_source, - "rev_range": rev_range, - "head_commit": head_commit, - "commit_count": len(commits), - "commits": commits, - "changed_files": changed_files, - } - payload.update(stats) - - print(json.dumps(payload, indent=2, ensure_ascii=False)) - return 0 - - -if __name__ == "__main__": - sys.exit(main()) diff --git a/.dockerignore b/.dockerignore index ae0f909..5f31beb 100644 --- a/.dockerignore +++ b/.dockerignore @@ -20,12 +20,3 @@ config/config.yaml node_modules .pnpm-store - -web/node_modules -web/.next -web/out -web/coverage -web/tsconfig.tsbuildinfo -web/next-env.d.ts -web/.env* -!web/.env.example diff --git a/.github/workflows/docker-image.yml b/.github/workflows/docker-image.yml deleted file mode 100644 index 4fcda90..0000000 --- a/.github/workflows/docker-image.yml +++ /dev/null @@ -1,90 +0,0 @@ -name: Docker Image - -on: - push: - tags: - - "v*" - -permissions: - contents: read - -env: - IMAGE_NAME: mlogclub/agent-desk - -jobs: - build: - name: Build and push Docker image - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Validate Docker Hub credentials - env: - DOCKERHUB_USERNAME: ${{ secrets.DOCKERHUB_USERNAME }} - DOCKERHUB_TOKEN: ${{ secrets.DOCKERHUB_TOKEN }} - run: | - if [ -z "${DOCKERHUB_USERNAME}" ]; then - echo "Secret DOCKERHUB_USERNAME is required" >&2 - exit 1 - fi - if [ -z "${DOCKERHUB_TOKEN}" ]; then - echo "Secret DOCKERHUB_TOKEN is required" >&2 - exit 1 - fi - - - name: Set up QEMU - uses: docker/setup-qemu-action@v3 - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 - - - name: Log in to Docker Hub - uses: docker/login-action@v3 - with: - username: ${{ secrets.DOCKERHUB_USERNAME }} - password: ${{ secrets.DOCKERHUB_TOKEN }} - - - name: Extract Docker metadata - id: meta - uses: docker/metadata-action@v5 - with: - images: ${{ env.IMAGE_NAME }} - tags: | - type=ref,event=tag - type=semver,pattern={{version}} - type=semver,pattern={{major}}.{{minor}} - type=raw,value=latest,enable=${{ !contains(github.ref_name, '-') }} - - - name: Extract LanceDB Docker metadata - id: meta-lancedb - uses: docker/metadata-action@v5 - with: - images: ${{ env.IMAGE_NAME }} - tags: | - type=ref,event=tag - type=semver,pattern={{version}} - type=semver,pattern={{major}}.{{minor}} - type=raw,value=latest,enable=${{ !contains(github.ref_name, '-') }} - flavor: | - suffix=-lancedb,onlatest=true - - - name: Build and push - uses: docker/build-push-action@v6 - with: - context: . - target: app - platforms: linux/amd64 - push: true - tags: ${{ steps.meta.outputs.tags }} - labels: ${{ steps.meta.outputs.labels }} - - - name: Build and push LanceDB - uses: docker/build-push-action@v6 - with: - context: . - target: app-lancedb - platforms: linux/amd64 - push: true - tags: ${{ steps.meta-lancedb.outputs.tags }} - labels: ${{ steps.meta-lancedb.outputs.labels }} diff --git a/.gitignore b/.gitignore index a2f8ad3..2f38b6e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,23 +1,15 @@ .DS_Store -.worktrees -.idea -.pnpm-store +.idea/ +.vscode/ +.worktrees/ -data/ config/config.yaml -/include/ -/lib/ - +data/ dist/ +include/ +lib/ + +*.log __debug_bin* -node_modules/ -.next/ -.task/ -*.tsbuildinfo - -.superpowers - -agent-desk - -test-reports -web/public/flowgram-editor/ +test-reports/ +/server diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index 450ea96..0000000 --- a/.gitmodules +++ /dev/null @@ -1,6 +0,0 @@ -[submodule "qdrant"] - path = qdrant - url = git@github.com:huabeitech/agent-desk-qdrant.git -[submodule "docs"] - path = docs - url = git@github.com:huabeitech/agent-desk-docs.git diff --git a/.vscode/launch.json b/.vscode/launch.json index 008a5f3..cfd8810 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -2,39 +2,17 @@ "version": "0.2.0", "configurations": [ { - "name": "server", + "name": "Agent Desk API", "type": "go", "request": "launch", "mode": "auto", "program": "${workspaceFolder}/cmd/server/main.go", "cwd": "${workspaceFolder}", - "buildFlags": "-tags=dev,lancedb", - "env": { - "CGO_ENABLED": "1", - "CGO_CFLAGS": "-I${workspaceFolder}/include", - "CGO_LDFLAGS": "${workspaceFolder}/lib/darwin_arm64/liblancedb_go.a -framework Security -framework CoreFoundation" - }, + "buildFlags": "-tags=dev", "args": [ "-config", "${workspaceFolder}/config/config.yaml" ] - }, - { - "name": "web", - "type": "node-terminal", - "request": "launch", - "command": "pnpm dev", - "cwd": "${workspaceFolder}/web" - } - ], - "compounds": [ - { - "name": "server + web", - "configurations": [ - "server", - "web" - ], - "stopAll": true } ] } diff --git a/.vscode/tasks.json b/.vscode/tasks.json index ae1d924..e3f188f 100644 --- a/.vscode/tasks.json +++ b/.vscode/tasks.json @@ -2,29 +2,14 @@ "version": "2.0.0", "tasks": [ { - "label": "web:dev", + "label": "server:dev", "type": "shell", - "command": "pnpm dev", + "command": "make dev", "options": { - "cwd": "${workspaceFolder}/web" + "cwd": "${workspaceFolder}" }, "isBackground": true, - "presentation": { - "reveal": "always", - "panel": "dedicated", - "group": "web" - }, - "problemMatcher": { - "owner": "custom", - "pattern": { - "regexp": "." - }, - "background": { - "activeOnStart": true, - "beginsPattern": ".", - "endsPattern": "Ready in|Local:" - } - } + "problemMatcher": [] } ] } diff --git a/AGENTS.md b/AGENTS.md index aa525ba..e3e0704 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -1,505 +1,19 @@ # AGENTS.md -This file defines mandatory development rules for AI Agents in this project. Unless the user explicitly requests a deviation, these rules must be followed. +This repository contains the Agent Desk backend only. -## 1. Basic Principles +- Stack: Go + Gin + GORM + `github.com/mlogclub/simple` +- Database compatibility: SQLite and MySQL must remain supported; PostgreSQL is also supported. +- Layer direction: models -> repositories -> services -> handlers. +- Handlers must not call repositories directly or return GORM models. +- Services own business rules and transaction boundaries. +- Repositories own data access and accept `db *gorm.DB` consistently. +- Use request/response DTOs and the common `httpx.WriteJSON` response wrapper. +- Use `log/slog` for logging and `any` instead of `interface{}` in new code. +- Run `gofmt` and `go test ./...` after backend changes. -- Scope: the repository root and all subdirectories -- Priority: explicit user instructions > this file > default implementation habits -- If these rules conflict with the user's request: follow the user's request first, and note the deviation in the change summary +The sibling frontend project is normally `../agent-desk-web`. Shared frontend enums are generated with: -## 2. Fixed Technology Stack - -- Backend: `Golang` + `Gin` + `GORM` + `github.com/mlogclub/simple` -- Database: must be compatible with both `SQLite` and `MySQL` -- Frontend: `Next.js(App Router)` + `React` + `shadcn/ui` + `Tailwind CSS` -- Frontend package manager: `pnpm` - -## 3. Directory Conventions - -```text -. -├── cmd/ -│ ├── server/ -│ ├── migration/ -│ └── generator/ -├── internal/ -│ ├── bootstrap/ -│ ├── builders/ -│ ├── handlers/ -│ │ ├── api/ -│ │ ├── dashboard/ -│ │ └── third/ -│ ├── middleware/ -│ ├── migration/ -│ ├── models/ -│ ├── repositories/ -│ ├── services/ -│ └── pkg/ -│ ├── config/ -│ ├── dto/ -│ ├── enums/ -│ ├── errorsx/ -│ ├── httpx/ -│ ├── logx/ -│ └── utils/ -├── web/ -└── docs/ +```bash +make enums FRONTEND_DIR=../agent-desk-web ``` - -## 4. Backend Layering - -The backend must follow one-way dependencies: `models -> repositories -> services -> handlers` - -- `models`: only define entities and table mappings -- `repositories`: only encapsulate data access -- `services`: handle business rules, transaction orchestration, and aggregation logic -- `handlers`: only parse parameters, check permissions, call services, and wrap responses - -Forbidden: - -- Handlers directly calling repositories -- Returning GORM models directly to the frontend -- Writing business orchestration in models or repositories - -## 4.1 Full Layer Flow (`models -> repositories -> services -> handlers -> builders`) - -This section is an executable refinement of the layering rules: each layer must do only what belongs to that layer. Data should flow around DTOs, GORM details should be concentrated in repositories, transaction boundaries should be concentrated in services, and response assembly should be concentrated in builders/handlers. - -### 4.1.1 Dependency Direction (Required) - -Only the following one-way dependencies are allowed: - -- `models` -> must not depend on any business layer -- `repositories` -> may depend on `models` and base libraries (`gorm`/`simple/sqls`) -- `services` -> may depend on `repositories`, `models`, and `enums/errorsx/utils`; responsible for transactions and business orchestration -- `builders` -> may depend on `models` and `dto/response`; if necessary, may depend on a small number of `services` to supplement display fields, but aggregation in the service layer is preferred -- `handlers` -> may depend on `services`, `builders`, `pkg/dto/request`, `pkg/httpx/params`, and `pkg/httpx` response wrappers - -Reverse dependencies are forbidden: - -- `repositories` must not depend on `services/handlers/builders` -- `models` must not depend on `repositories/services/handlers/builders` -- `handlers` must not depend on `repositories` (they must go through services) - -### 4.1.2 Data Shape and Flow (Recommended Standard) - -A typical CRUD/business action data flow: - -1. The **handler** reads parameters (`query/body/form/path`), performs permission checks, and calls the **service** -2. The **service** executes business rules (validation, idempotency, state machines, aggregation), starts a transaction when needed, and calls the **repository** -3. The **repository** only performs data reads/writes (`CRUD + queries`) and returns `models` or necessary aggregate structures -4. **builders** map `models`/aggregate results into `response DTO` -5. The **handler** returns `httpx.WriteJSON(...)` - -Strong constraints: - -- **Handler inputs use request DTOs** -- **Handler outputs use response DTOs** -- **Models must not be returned directly to the frontend** - -### 4.1.3 Per-Layer Allow/Forbid Checklist - -#### models (Entity Layer) - -- **Allowed** - - Field definitions, table names, index/constraint tags, associations (GORM tags) - - Lightweight constants/enum field types (prefer `internal/pkg/enums`) -- **Forbidden** - - Business methods (for example, rule checks such as `CanDispatch()` belong in services) - - DB access, transactions, complex calculations - -#### repositories (Data Access Layer) - -- **Allowed** - - CRUD: `Get/Take/Find/FindOne/FindPageBy.../Create/Update/Updates/UpdateColumn/Delete` - - Reusable query-related methods: `FindByUserID`, `CountByStatus`, `FindActiveBy...` - - Anything that is a data-access detail belongs here (SQL conditions, sorting, pagination, locks) -- **Forbidden** - - Business orchestration (cross-table workflows, state transitions, event publishing, etc.) - - Permission checks or login-state checks - - Directly assembling response DTOs (DTO mapping belongs in builders/handlers) - -Repository best practices: - -- **Prefer unified primary-key read/write methods**: `Get/Updates/Delete`, avoiding repeated `id = ?` logic in services -- **Prefer query conditions through `sqls.Cnd` / `sqls.NewCnd()`** -- **Repository method signatures should consistently accept `db *gorm.DB`** (supporting both `sqls.DB()` and `ctx.Tx`) - -#### services (Business Layer) - -- **Allowed** - - Business rules: parameter normalization, cross-entity validation, state machines, idempotency, concurrency semantics - - Aggregation: combining results from multiple repositories when needed - - Transaction orchestration: `sqls.WithTransaction(func(ctx *sqls.TxContext) error { ... })` - - Domain-object preparation before calling builders (when builders stay cleaner as pure mappers) -- **Forbidden** - - Handler responsibilities: parameter parsing, HTTP details, response wrapping - - Repository responsibilities: scattered GORM queries (unless it is a one-off complex SQL query that is not worth extracting) - -Service best practices: - -- **Open transactions only where atomicity is required**, and ensure every DB operation inside the transaction uses `ctx.Tx` -- **Call repositories from services**; do not mix repository usage with direct GORM calls in a way that splits style and ownership - -#### builders (Output Construction Layer) - -Purpose: convert `models` (or service aggregate results) into `response DTO`, avoiding repetitive mapping boilerplate in handlers. - -- **Allowed** - - Pure `Model -> ResponseDTO` mapping - - Time formatting and enum label filling when needed - - Batch builders: `BuildXxxList([]models.Xxx) []response.Xxx` -- **Forbidden** - - DB access (builders should not query the database) - - Permission checks, transactions, complex business processes - -Recommended builder form: - -- Location: `internal/builders/*_builder.go` -- Methods: `BuildXxx(item *models.Xxx) *response.Xxx` / `BuildXxxList(list []models.Xxx) []response.Xxx` - -#### handlers (API Layer) - -- **Allowed** - - Parameter parsing: `params.ReadJSON/ReadForm/NewPagedSqlCnd/GetInt64...` - - Permissions: `AuthService.GetAuthPrincipal/RequirePermission/HasPermission` - - Calling services, calling builders, and wrapping with `httpx.WriteJSON` -- **Forbidden** - - Direct repository calls - - Directly returning models - - Writing business orchestration inside handlers (for example, "write A, then write B") - -### 4.1.4 Transaction Best Practices - -Transaction boundaries should be decided by the service layer. Principles: - -- **A transaction is required** (`sqls.WithTransaction`) for: - - Multiple write SQL statements (for example, updating the main table and writing a log/event/relation table) - - Read-modify-write flows that require consistency (must not break under concurrency) - - Writes across multiple repositories that must be atomic -- **A transaction is not required** for: - - A single write SQL statement (one `Create/Updates/UpdateColumn/Delete`) - - A single write SQL statement plus pure calculation/parameter cleanup - -Rules inside a transaction: - -- Inside a transaction, all DB calls must use `ctx.Tx` (pass `ctx.Tx` as the repository method's `db` argument) -- Do not mix in `sqls.DB()` inside a transaction (it escapes the transaction) - -### 4.1.5 Standard Endpoint Skeleton (Example) - -```go -// Handler: parameters/permissions/response -func XxxUpdate(ctx *gin.Context) { - operator, err := services.AuthService.RequirePermission(ctx, constants.PermissionXxxUpdate) - if err != nil { - httpx.WriteJSON(ctx, err) - return - } - req := request.UpdateXxxRequest{} - if err := params.ReadJSON(ctx, &req); err != nil { - httpx.WriteJSON(ctx, err) - return - } - if err := services.XxxService.UpdateXxx(req, operator); err != nil { - httpx.WriteJSON(ctx, err) - return - } - httpx.WriteJSON(ctx, nil) -} -``` - -```go -// Service: business rules + transaction orchestration + repository calls -func (s *xxxService) UpdateXxx(req request.UpdateXxxRequest, operator *dto.AuthPrincipal) error { - current := repositories.XxxRepository.Get(sqls.DB(), req.ID) - if current == nil { - return errorsx.InvalidParam("object does not exist") - } - // Single write SQL statement: no transaction required - return repositories.XxxRepository.Updates(sqls.DB(), req.ID, map[string]any{ - "name": strings.TrimSpace(req.Name), - "update_user_id": operator.UserID, - "update_user_name": operator.Username, - "updated_at": time.Now(), - }) -} -``` - -```go -// Builder: Model -> ResponseDTO -func BuildXxx(item *models.Xxx) *response.Xxx { - if item == nil { - return nil - } - return &response.Xxx{ - id: item.ID, - // ... - } -} -``` - -## 5. `simple` Usage Conventions - -- Prefer `sqls.Cnd` for query conditions -- Prefer `internal/pkg/httpx/params` for parameter binding -- Use `internal/pkg/httpx.WriteJSON` for all HTTP responses -- Write transaction boundaries must follow **4.1.4 Transaction Best Practices** (avoid slogan-style rules such as "always open a transaction even for a single write SQL statement") - -## 6. Database Compatibility Rules - -- Use compatible field types: `varchar`, `text`, `int`, `bigint`, `datetime` -- Primary keys must consistently use `int64` -- Avoid database-private syntax and dialect-specific features -- Keep time storage and parsing strategies consistent; MySQL must use `parseTime=True` - -## 7. Code Generation and Migration - -### 7.1 Code Generation - -- Entry point: `cmd/generator/generator.go` -- Command: `task generator` -- Generation library: `github.com/mlogclub/codegen` -- Registration method: `codegen.GetGenerateStruct(&models.XXX{})` -- Generated files should be placed in the `generated` directory and named `*_gen.go` -- Generated code is only responsible for basic CRUD; business logic must be written manually in services/handlers - -Standard process: - -1. Define or modify the model -2. Register it in the generator -3. Run `task generator` -4. Add business logic in the handwritten layers -5. Run tests and self-checks - -### 7.2 Migration - -- DDL changes do not go through `internal/migration/runner.go` by default -- New tables, table changes, and index changes are handled uniformly through `sqls.DB().AutoMigrate(models.Models...)` -- `internal/migration/runner.go` is only for DML: initial data, backfills, repairs, remapping, etc. -- Migrations must be idempotent, and `version` must increase monotonically -- Execution order: run `AutoMigrate` first, then `migration.Migrate(...)` - -## 8. API Conventions - -### 8.1 DTOs and Responses - -- Separate DTOs: define `request` and `response` separately -- JSON fields must consistently use `camelCase` -- Do not leak underlying SQL errors directly -- Error code ranges: - - `1000-1999` parameter errors - - `2000-2999` business errors - - `3000-3999` authentication/authorization errors - - `5000-5999` system errors - -### 8.2 Path Layers - -- `/api/dashboard/*`: business dashboard APIs -- `/api/third/*`: third-party platform callback/call APIs -- `/api/*`: open APIs - -Do not add version prefixes such as `/api/v1`. - -### 8.3 Dashboard API Style - -- Prefer flat resource paths, such as `/api/dashboard/project` -- Prefer `/list`, `/create`, `/update`, and `/delete` for list/create/update/delete -- Prefer passing query conditions through `query` or `body` -- Avoid path params except for detail endpoints -- Detail endpoints may use `GET /api/dashboard/project/{id}` -- Prefer filtering subordinate resources through ordinary parameters such as `projectId` and `episodeId`; deep nested routes are discouraged - -### 8.4 Route Registration - -- The Gin engine is created uniformly in `internal/bootstrap/server.go`, and middleware is also registered there in order -- Routes should be split into grouping functions in `internal/bootstrap/routes.go` and `internal/bootstrap/*_routes.go` -- Business dashboard routes are registered through `dashboardGroup := app.Group("/api/dashboard", middleware.AuthMiddleware)` -- Open APIs should be organized under `/api/*` groups by domain, and third-party callbacks under `/api/third/*` -- Inside groups, mount handlers explicitly through `group.GET/POST/PUT/DELETE/Any(...)` -- Do not create a separate top-level `app.Group("/api/dashboard/xxx")` for each resource -- Authentication and authorization middleware should preferably be mounted at the `/api/dashboard` or `/api/admin` layer - -### 8.5 Gin Explicit Route Rules - -This project uses explicit Gin routes and does not use framework automatic routing. Handler method names are only for code organization; final URLs are determined by the paths registered in `internal/bootstrap/*_routes.go`. - -- Route mounting example: - -```go -func registerDashboardQuickReplyRoutes(group *gin.RouterGroup) { - group.GET("/:id", dashboard.QuickReplyGetBy) - group.Any("/list", dashboard.QuickReplyList) - group.POST("/create", dashboard.QuickReplyPostCreate) - group.POST("/update", dashboard.QuickReplyPostUpdate) - group.POST("/delete", dashboard.QuickReplyPostDelete) -} -``` - -- With the registration above, the resource base path is determined by the outer `dashboardGroup.Group("/quick-reply")`; the final full paths are `/api/dashboard/quick-reply/list`, `/api/dashboard/quick-reply/{id}`, etc. -- Handler names should keep the existing readable prefixes: `XxxList`, `XxxGetBy`, `XxxPostCreate`, `XxxPostUpdate`, `XxxPostDelete` -- Handler names do not create routes; before adding an endpoint, the corresponding `register...Routes` function must be modified -- The HTTP method must be determined by the Gin registration method: - - List queries: prefer `group.Any("/list", XxxList)`, used by the frontend as `GET /list` - - Detail queries: prefer `group.GET("/:id", XxxGetBy)` - - Write APIs: consistently use `group.POST("/create|/update|/delete", XxxPost...)` - - Business actions: use explicit paths, such as `group.POST("/send_message", ConversationPostSend_message)` -- Path params should be used only for detail endpoints or strong path-semantics scenarios; ordinary filters should continue using query/body - -Common correct mappings in the current project: - -- `registerDashboardUserRoutes(dashboardGroup.Group("/user"))` - - `group.GET("/:id", dashboard.UserGetBy)` -> `GET /api/dashboard/user/{id}` - - `group.Any("/list", dashboard.UserList)` -> `ANY /api/dashboard/user/list` - - `group.POST("/create", dashboard.UserPostCreate)` -> `POST /api/dashboard/user/create` - - `group.POST("/update", dashboard.UserPostUpdate)` -> `POST /api/dashboard/user/update` - - `group.POST("/delete", dashboard.UserPostDelete)` -> `POST /api/dashboard/user/delete` -- `registerDashboardConversationRoutes(dashboardGroup.Group("/conversation"))` - - `group.GET("/:id", dashboard.ConversationGetBy)` -> `GET /api/dashboard/conversation/{id}` - - `group.Any("/list", dashboard.ConversationList)` -> `ANY /api/dashboard/conversation/list` - - `group.Any("/message/list", dashboard.ConversationMessage_list)` -> `ANY /api/dashboard/conversation/message/list` - - `group.POST("/send_message", dashboard.ConversationPostSend_message)` -> `POST /api/dashboard/conversation/send_message` - -Easy mistakes: - -- Do not assume adding an `XxxList` method automatically creates a `/list` route; it must be explicitly registered in the routes file -- Do not register detail endpoints as `/detail`; the current convention is `GET /:id` -- Do not casually add deeply nested routes; subordinate resources should preferably be filtered by ordinary parameters such as `projectId` and `conversationId` -- If an API contract requires an underscore path, write the underscore path directly in the Gin route, for example `group.POST("/send_message", ...)` -- Before adding a handler method, first write the corresponding Gin route registration and confirm that the final URL matches the frontend contract - -### 8.6 Handler Conventions - -- One handler file per resource, located at `internal/handlers/{api|dashboard|third}/*_handler.go` -- Handler functions should use the uniform form: `func XxxPostCreate(ctx *gin.Context)` -- Recommended method names: - - `XxxList(ctx *gin.Context)` - - `XxxGetBy(ctx *gin.Context)` - - `XxxPostCreate(ctx *gin.Context)` - - `XxxPostUpdate(ctx *gin.Context)` - - `XxxPostDelete(ctx *gin.Context)` - - Business actions may extend this pattern with names such as `XxxPostTest(ctx *gin.Context)` or `XxxPostGenerate(ctx *gin.Context)` - -- Requirements for paginated `List` endpoints: - - Use `params.NewPagedSqlCnd(...)` - - Declare each filter field explicitly through `params.QueryFilter` - - Prefer default sorting with `.Desc("id")`; special sorting requires an explicit reason - - Prefer `FindPageByCnd(...)` in the service layer - - Perform DTO mapping in the handler layer; do not return model lists directly - -- Paginated responses must use: - -```go -httpx.WriteJSON(ctx, &web.PageResult{Results: results, Page: paging}) -``` - -- Paginated `data` structure must be: - - `data.results` - - `data.page.page` - - `data.page.limit` - - `data.page.total` - -- Detail endpoints should preferably return `httpx.WriteJSON(ctx, dto)` -- Delete endpoints should preferably return `httpx.WriteJSON(ctx, nil)` -- JSON bodies should preferably be read with `params.ReadJSON` -- Form parameters should preferably be read with `params.ReadForm` -- Single parameters may be retrieved with `params.GetInt64`, `params.GetInt64Arr`, `params.Get`, etc. -- Pagination and query parameters should preferably use `params.NewPagedSqlCnd` -- Authenticated users should be retrieved through `services.AuthService.GetAuthPrincipal(ctx)` or `RequirePermission(ctx, ...)` -- Permission checks should consistently use `services.AuthService.HasPermission(...)` or `RequirePermission(...)` -- Authentication/authorization failures should consistently return `httpx.WriteJSON(ctx, err)` -- Errors such as `gorm.ErrRecordNotFound` should be converted into clear business messages -- When returning backend data, logic that converts data into response DTOs may be placed under `internal/builders` - -### 8.7 Enum Definitions - -- System constants should be defined uniformly under `/internal/pkg/enums` -- Model statuses should preferably use `Status` from `/internal/pkg/enums/enums.go`; only add a new status enum when it does not meet the requirement -- Enums shared by backend and frontend must follow [docs/design/specs/backend-frontend-enum-ast-spec.md](docs/design/specs/backend-frontend-enum-ast-spec.md) -- Shared backend/frontend enums may only be defined in the backend; the frontend must generate results with `task enums`, and handwritten duplicate business enums are forbidden - -## 9. Go Code Standards - -- Logs must consistently use the standard library `log/slog` -- New logs must not introduce other logging libraries -- Log fields should preferably use structured key-value pairs -- New Go code must consistently use `any`; do not add new `interface{}` -- Run `gofmt` after modifying Go code - -## 10. Frontend Standards - -### 10.1 Project Facts - -- Frontend directory: `web` -- Framework: `Next.js 16` + App Router -- Page directory: `web/app/*` -- Component directory: `web/components/*` -- shadcn/ui base component directory: `web/components/ui/*` -- Utility directories: `web/lib/*`, `web/hooks/*` -- Alias: `@/*` -- Style entry: `web/app/globals.css` -- shadcn config: `web/components.json` - -### 10.2 Components and Pages - -- Prefer base components from `shadcn/ui` -- If an existing `shadcn/ui` component covers the use case, do not duplicate an equivalent base component -- If missing base components such as `dialog`, `textarea`, or `select` are truly needed for business logic, install them according to the standard process instead of hand-writing substitutes -- Do not modify `web/components/ui/*` -- Business components should live in `web/components/*` or the corresponding business directory -- API calls must be uniformly encapsulated in the service layer; do not scatter raw `fetch` calls in pages -- Frontend business APIs must be called through service methods under `web/lib/api/*`; raw `fetch` must not be used directly in `page.tsx`, business components, or stores -- `web/lib/api/client.ts` is the default request entry point; new business APIs should preferably reuse `request()` instead of implementing another request client -- When the backend returns the unified `JsonResult`, the frontend must handle `success`, `errorCode`, `message`, and `data` consistently; success must not be determined only by HTTP status -- Business code must not parse `JsonResult.data`, assemble generic error handling, or hand-write auth-refresh logic by itself; these concerns must be centralized in the common request wrapper -- Requests that require login state must reuse the unified wrapper with auth headers, `3000/3002` token refresh, and login-expiration cleanup; do not handle these separately at the page layer -- Direct use of low-level `fetch` is allowed only for third-party external services, binary downloads, SSE/streaming responses, WebSocket handshakes, or other cases not yet supported by the unified wrapper; such usage must include a code comment explaining the reason - -### 10.3 shadcn Usage Process - -- First confirm that `web/components.json` exists; if it exists, do not run `init` again -- Commands must be run from the `web` directory -- Dependencies must be installed with `pnpm` -- Prefer adding new base components with: - - `cd web && pnpm dlx shadcn@latest add button` - - `cd web && pnpm dlx shadcn@latest add button dialog form table` - -### 10.4 Next.js Conventions - -- Prefer App Router -- Add `"use client"` explicitly when client state or side effects are required -- Pages and layouts should follow the `layout.tsx` and `page.tsx` conventions -- Checks should preferably reuse existing scripts: `dev`, `build`, `start`, `lint`, `format`, `typecheck` - -### 10.5 Enum Management - -- All frontend enums should be defined uniformly in `web/lib/enums.ts` -- Enums are defined by the backend; frontend enums are generated with `task enums` - -### 10.6 Dashboard List and Form Baseline - -- Dashboard CRUD pages should preferably follow: `docs/design/specs/frontend-list-form-best-practice.md` -- Baseline example: `web/app/dashboard/quick-replies` -- Default to a two-layer structure: `page.tsx` manages the list and state, `_components/edit.tsx` manages the dialog form -- Forms should default to: `react-hook-form` + `zod` + `web/components/ui/field.tsx` -- API calls should stay in the page layer or service layer; form components should not call APIs directly -- After adding or modifying dashboard list/form pages, the AI Agent must first self-check compliance with that document, then run `cd web && pnpm typecheck` - -### 10.7 Other Frontend Standards - -- All frontend display times must be formatted as `yyyy-MM-dd HH:mm:ss`; preferably use `formatDateTime` from `web/lib/utils.ts` -- Dropdown components should not use the shadcn `select` component; use the shadcn `combobox` component instead. The project has a general dropdown wrapper at `web/components/option-combobox.tsx`; use it where possible. -- If data is used inside a component, the component should load it itself as much as possible instead of receiving it from outside. Preserve component independence. - -## 11. Pre-Commit Checklist - -After each change, at minimum confirm: - -1. There are no cross-layer calls or reverse dependencies -2. Write operations have clear transaction boundaries -3. Responses still follow the unified `JsonResult` structure -4. Compatibility with both SQLite and MySQL is preserved -5. Necessary tests were added, at least covering core service paths -6. `gofmt` was run for Go changes -7. Frontend changes passed at least `pnpm lint` or `pnpm typecheck` from the `web` directory diff --git a/Dockerfile b/Dockerfile index 77572bc..08c2a85 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,28 +1,5 @@ # syntax=docker/dockerfile:1.7 -FROM node:24-alpine AS flowgram-editor-builder -WORKDIR /src/flowgram-editor - -RUN corepack enable && corepack prepare pnpm@10.30.2 --activate -COPY flowgram-editor/package.json flowgram-editor/pnpm-lock.yaml ./ -RUN --mount=type=cache,target=/root/.local/share/pnpm/store \ - pnpm install --frozen-lockfile - -COPY flowgram-editor/ ./ -RUN pnpm build - -FROM node:24-alpine AS web-builder -WORKDIR /src/web - -RUN corepack enable && corepack prepare pnpm@10.30.2 --activate -COPY web/package.json web/pnpm-lock.yaml web/pnpm-workspace.yaml ./ -RUN --mount=type=cache,target=/root/.local/share/pnpm/store \ - pnpm install --frozen-lockfile - -COPY web/ ./ -COPY --from=flowgram-editor-builder /src/web/public/flowgram-editor ./public/flowgram-editor -RUN pnpm build:sdk && pnpm build - FROM golang:1.26-alpine AS server-builder WORKDIR /src @@ -32,7 +9,6 @@ RUN --mount=type=cache,target=/go/pkg/mod \ go mod download COPY . ./ -COPY --from=web-builder /src/web/out ./web/out ARG TARGETOS=linux ARG TARGETARCH @@ -57,7 +33,6 @@ RUN --mount=type=cache,target=/go/pkg/mod \ go mod download COPY . ./ -COPY --from=web-builder /src/web/out ./web/out RUN --mount=type=cache,target=/go/pkg/mod \ --mount=type=cache,target=/root/.cache/go-build \ @@ -106,7 +81,7 @@ EXPOSE 8083 VOLUME ["/app/data"] HEALTHCHECK --interval=30s --timeout=5s --start-period=20s --retries=3 \ - CMD wget -qO- http://127.0.0.1:8083/ >/dev/null || exit 1 + CMD wget -qO- http://127.0.0.1:8083/api/health >/dev/null || exit 1 CMD ["/app/agent-desk", "-config", "/app/config/config.yaml"] @@ -126,6 +101,6 @@ EXPOSE 8083 VOLUME ["/app/data"] HEALTHCHECK --interval=30s --timeout=5s --start-period=20s --retries=3 \ - CMD wget -qO- http://127.0.0.1:8083/ >/dev/null || exit 1 + CMD wget -qO- http://127.0.0.1:8083/api/health >/dev/null || exit 1 CMD ["/app/agent-desk", "-config", "/app/config/config.yaml"] diff --git a/Makefile b/Makefile index 78abc6a..0f94254 100644 --- a/Makefile +++ b/Makefile @@ -1,219 +1,40 @@ -APP := agent-desk +APP := agent-desk-server MAIN := ./cmd/server -WEB_DIR := web DIST_DIR := dist +FRONTEND_DIR ?= ../agent-desk-web GO ?= go -PNPM ?= pnpm -GOOS ?= $(shell $(GO) env GOOS) -GOARCH ?= $(shell $(GO) env GOARCH) DEV_PORT ?= 8083 -DEV_API_BASE_URL ?= http://127.0.0.1:$(DEV_PORT) -DEV_SERVER_URL ?= $(DEV_API_BASE_URL)/api/health -LANCEDB_VERSION ?= v0.1.2 -LANCEDB_DOWNLOAD_SCRIPT ?= https://raw.githubusercontent.com/lancedb/lancedb-go/main/scripts/download-artifacts.sh -LANCEDB ?= 0 - -UNAME_S := $(shell uname -s) -UNAME_M := $(shell uname -m) - -ifeq ($(GOOS),windows) - APP_EXT := .exe -else - APP_EXT := -endif - -ifeq ($(LANCEDB),1) - BUILD_NAME_SUFFIX := -lancedb - BUILD_TAGS := -tags lancedb - BUILD_CGO_ENABLED := 1 -else - BUILD_NAME_SUFFIX := - BUILD_TAGS := - BUILD_CGO_ENABLED := -endif - -BUILD_OUTPUT := $(DIST_DIR)/$(APP)$(BUILD_NAME_SUFFIX)$(APP_EXT) - -ifeq ($(UNAME_M),x86_64) - LANCEDB_ARCH := amd64 -else ifeq ($(UNAME_M),amd64) - LANCEDB_ARCH := amd64 -else ifeq ($(UNAME_M),arm64) - LANCEDB_ARCH := arm64 -else ifeq ($(UNAME_M),aarch64) - LANCEDB_ARCH := arm64 -else - LANCEDB_ARCH := unsupported -endif - -ifeq ($(UNAME_S),Darwin) - LANCEDB_PLATFORM := darwin - LANCEDB_SYSTEM_LDFLAGS := -framework Security -framework CoreFoundation -else ifeq ($(UNAME_S),Linux) - LANCEDB_PLATFORM := linux - LANCEDB_SYSTEM_LDFLAGS := -lm -ldl -lpthread -else ifneq (,$(findstring MINGW,$(UNAME_S))) - LANCEDB_PLATFORM := windows - LANCEDB_ARCH := amd64 - LANCEDB_SYSTEM_LDFLAGS := -else ifneq (,$(findstring MSYS,$(UNAME_S))) - LANCEDB_PLATFORM := windows - LANCEDB_ARCH := amd64 - LANCEDB_SYSTEM_LDFLAGS := -else ifneq (,$(findstring CYGWIN,$(UNAME_S))) - LANCEDB_PLATFORM := windows - LANCEDB_ARCH := amd64 - LANCEDB_SYSTEM_LDFLAGS := -else - LANCEDB_PLATFORM := unsupported - LANCEDB_SYSTEM_LDFLAGS := -endif - -LANCEDB_PLATFORM_ARCH := $(LANCEDB_PLATFORM)_$(LANCEDB_ARCH) -LANCEDB_NATIVE_LIB := $(CURDIR)/lib/$(LANCEDB_PLATFORM_ARCH)/liblancedb_go.a -LANCEDB_CGO_CFLAGS := -I$(CURDIR)/include -LANCEDB_CGO_LDFLAGS := $(LANCEDB_NATIVE_LIB) $(LANCEDB_SYSTEM_LDFLAGS) .DEFAULT_GOAL := build -.PHONY: help dev build release generator enums \ - _web-build-spa _web-dev _prepare-dist _lancedb-artifacts _lancedb-check _lancedb-release-check +.PHONY: help dev build test generator enums clean help: @echo "Available targets:" - @echo " make dev Start backend and frontend development servers" - @echo " make build Build the current system into dist/" - @echo " make build LANCEDB=1" - @echo " Build the current-platform LanceDB binary into dist/" - @echo " make release Build linux/darwin/windows release binaries into dist/" - @echo " make release LANCEDB=1" - @echo " Build LanceDB release binaries into dist/" - @echo " make generator Run code generation" - @echo " make enums Generate frontend enums" - @echo " make help Show this help" + @echo " make dev Start the API server on port $(DEV_PORT)" + @echo " make build Build the API binary into $(DIST_DIR)/" + @echo " make test Run all Go tests" + @echo " make generator Run backend code generation" + @echo " make enums Generate frontend enums into $(FRONTEND_DIR)" + @echo " make clean Remove backend build output" -dev: _lancedb-check - @AGENT_DESK_SERVER_PORT="$(DEV_PORT)" CGO_ENABLED=1 CGO_CFLAGS="$(LANCEDB_CGO_CFLAGS)" CGO_LDFLAGS="$(LANCEDB_CGO_LDFLAGS)" \ - $(GO) run -tags "dev lancedb" $(MAIN) & \ - server_pid=$$!; \ - trap 'kill $$server_pid 2>/dev/null || true' EXIT INT TERM; \ - echo "Waiting for server at $(DEV_SERVER_URL)..."; \ - until curl -fsS "$(DEV_SERVER_URL)" >/dev/null 2>&1; do \ - if ! kill -0 $$server_pid 2>/dev/null; then \ - wait $$server_pid; \ - exit $$?; \ - fi; \ - sleep 1; \ - done; \ - echo "Server is ready; starting web dev server..."; \ - $(MAKE) _web-dev +dev: + @AGENT_DESK_SERVER_PORT="$(DEV_PORT)" $(GO) run -tags dev $(MAIN) -ifeq ($(LANCEDB),1) -build: _lancedb-check _prepare-dist _web-build-spa -else -build: _prepare-dist _web-build-spa -endif - @echo "Building $(BUILD_OUTPUT)..." -ifeq ($(LANCEDB),1) - @CGO_ENABLED=$(BUILD_CGO_ENABLED) CGO_CFLAGS="$(LANCEDB_CGO_CFLAGS)" CGO_LDFLAGS="$(LANCEDB_CGO_LDFLAGS)" \ - $(GO) build $(BUILD_TAGS) -v -o $(BUILD_OUTPUT) $(MAIN) -else - @$(GO) build -v -o $(BUILD_OUTPUT) $(MAIN) -endif +build: + @mkdir -p $(DIST_DIR) + @$(GO) build -v -o $(DIST_DIR)/$(APP) $(MAIN) -ifeq ($(LANCEDB),1) -release: _lancedb-release-check _prepare-dist _web-build-spa -else -release: _prepare-dist _web-build-spa -endif - @echo "Building release binaries in $(DIST_DIR)..." - @if [ "$(LANCEDB)" = "1" ]; then \ - set -e; \ - if [ ! -f "$(CURDIR)/include/lancedb.h" ]; then \ - echo "Missing LanceDB header: $(CURDIR)/include/lancedb.h"; \ - exit 1; \ - fi; \ - build_lancedb() { \ - platform="$$1"; \ - arch="$$2"; \ - ext="$$3"; \ - system_ldflags="$$4"; \ - native_lib="$(CURDIR)/lib/$${platform}_$${arch}/liblancedb_go.a"; \ - output="$(DIST_DIR)/$(APP)-lancedb-$${platform}-$${arch}$${ext}"; \ - if [ ! -f "$$native_lib" ]; then \ - echo "Missing LanceDB native library for $${platform}/$${arch}: $$native_lib"; \ - echo "LanceDB release builds require matching native artifacts and a CGO-capable toolchain for each target platform."; \ - exit 1; \ - fi; \ - echo "Building $$output..."; \ - CGO_ENABLED=1 CGO_CFLAGS="-I$(CURDIR)/include" CGO_LDFLAGS="$$native_lib $$system_ldflags" \ - GOOS="$$platform" GOARCH="$$arch" $(GO) build -tags lancedb -v -o "$$output" $(MAIN); \ - }; \ - build_lancedb linux amd64 "" "-lm -ldl -lpthread"; \ - build_lancedb linux arm64 "" "-lm -ldl -lpthread"; \ - build_lancedb darwin amd64 "" "-framework Security -framework CoreFoundation"; \ - build_lancedb darwin arm64 "" "-framework Security -framework CoreFoundation"; \ - build_lancedb windows amd64 ".exe" ""; \ - else \ - GOOS=linux GOARCH=amd64 $(GO) build -v -o $(DIST_DIR)/$(APP)-linux-amd64 $(MAIN); \ - GOOS=linux GOARCH=arm64 $(GO) build -v -o $(DIST_DIR)/$(APP)-linux-arm64 $(MAIN); \ - GOOS=darwin GOARCH=amd64 $(GO) build -v -o $(DIST_DIR)/$(APP)-darwin-amd64 $(MAIN); \ - GOOS=darwin GOARCH=arm64 $(GO) build -v -o $(DIST_DIR)/$(APP)-darwin-arm64 $(MAIN); \ - GOOS=windows GOARCH=amd64 $(GO) build -v -o $(DIST_DIR)/$(APP)-windows-amd64.exe $(MAIN); \ - fi +test: + @$(GO) test ./... generator: @$(GO) run ./cmd/generator/generator.go enums: - @$(GO) run ./cmd/enums/generator.go + @$(GO) run ./cmd/enums/generator.go -output "$(FRONTEND_DIR)/lib/generated/enums.ts" -_web-build-spa: - @cd $(WEB_DIR) && $(PNPM) build:sdk && $(PNPM) build - -_web-dev: - @cd $(WEB_DIR) && NEXT_PUBLIC_API_BASE_URL="" NEXT_API_BASE_URL="$(DEV_API_BASE_URL)" $(PNPM) dev - -_prepare-dist: - @mkdir -p $(DIST_DIR) - -_lancedb-artifacts: - @if [ "$(LANCEDB_PLATFORM)" = "unsupported" ] || [ "$(LANCEDB_ARCH)" = "unsupported" ]; then \ - echo "Unsupported LanceDB platform: $(UNAME_S)/$(UNAME_M)"; \ - exit 1; \ - fi - @if [ -f "$(LANCEDB_NATIVE_LIB)" ] && [ -f "$(CURDIR)/include/lancedb.h" ]; then \ - echo "LanceDB native artifacts already exist for $(LANCEDB_PLATFORM_ARCH)."; \ - else \ - echo "Downloading LanceDB native artifacts $(LANCEDB_VERSION) for $(LANCEDB_PLATFORM_ARCH)..."; \ - curl -sSL "$(LANCEDB_DOWNLOAD_SCRIPT)" | bash -s "$(LANCEDB_VERSION)"; \ - fi - -_lancedb-check: _lancedb-artifacts - @if [ ! -f "$(LANCEDB_NATIVE_LIB)" ]; then \ - echo "Missing LanceDB native library: $(LANCEDB_NATIVE_LIB)"; \ - exit 1; \ - fi - @if [ ! -f "$(CURDIR)/include/lancedb.h" ]; then \ - echo "Missing LanceDB header: $(CURDIR)/include/lancedb.h"; \ - exit 1; \ - fi - -_lancedb-release-check: - @if [ ! -f "$(CURDIR)/include/lancedb.h" ]; then \ - echo "Missing LanceDB header: $(CURDIR)/include/lancedb.h"; \ - exit 1; \ - fi - @missing=0; \ - for target in linux_amd64 linux_arm64 darwin_amd64 darwin_arm64 windows_amd64; do \ - native_lib="$(CURDIR)/lib/$${target}/liblancedb_go.a"; \ - if [ ! -f "$$native_lib" ]; then \ - echo "Missing LanceDB native library: $$native_lib"; \ - missing=1; \ - fi; \ - done; \ - if [ "$$missing" = "1" ]; then \ - echo "LanceDB release builds require matching native artifacts and a CGO-capable toolchain for each target platform."; \ - exit 1; \ - fi +clean: + @$(GO) clean + @find $(DIST_DIR) -mindepth 1 -maxdepth 1 -type f -delete 2>/dev/null || true diff --git a/README.md b/README.md index 95c03a0..2df44b0 100644 --- a/README.md +++ b/README.md @@ -1,278 +1,42 @@ -# AgentDesk +# Agent Desk Server -English | [简体中文](README_ZH.md) +Customer-service API server built with Go, Gin, GORM, and `github.com/mlogclub/simple`. -An open-source AI Agent customer support system with knowledge-based answers, human handoff, ticket workflows, and self-hosted deployment. +The frontend is an independent sibling project, normally located at `../agent-desk-web`. -> Built for teams that need online support, knowledge-base Q&A, human collaboration, and service tracking in one system. It is not just an LLM inside a chat box; it is an AI Helpdesk foundation designed around real support operations. - -## Product Preview - -Customer chat, agent workspace, knowledge base, model configuration, and AI Agent orchestration are managed in one system. - -### Customer Chat - -![Customer Chat](screenshots/1.png) - -Customers can start a conversation from the web chat page. The AI Agent responds first with knowledge-grounded answers. When the user explicitly asks for a human, the system can start a handoff confirmation flow. - -### Agent Workspace - -![Agent Workspace](screenshots/2.png) - -The support workspace includes conversation lists, message handling, AI-to-human handoff, agent replies, conversation tags, linked customers, and ticket context for daily support work. - -### Knowledge Base and AI Agent Configuration - -| Knowledge Base FAQ | AI Agent Configuration | -| --- | --- | -| ![Knowledge Base FAQ](screenshots/4.png) | ![AI Agent Configuration](screenshots/5.png) | - -The knowledge base stores FAQs, documents, and retrievable content. AI Agents can be bound to model configurations, knowledge bases, Skills, and tools to create support agents for specific scenarios. - -### Model Configuration - -![Model Configuration](screenshots/3.png) - -Model configuration supports OpenAI-compatible providers. You can configure LLMs, embedding models, rerank models, context limits, output settings, timeout, retry behavior, and enablement state. - -## Why Use It - -- **AI-first support**: Let AI Agents handle common questions, standard procedures, and knowledge-base answers first. -- **Knowledge-constrained replies**: Use RAG and the Answerability Gate to decide whether retrieved knowledge is strong enough to answer, reducing unsupported responses. -- **Natural human handoff**: Move to human agents when knowledge is insufficient, the user asks for help, or a workflow requires human confirmation. -- **Conversation-to-ticket loop**: Online chat, support handling, ticket creation, status flow, and progress records stay in one system. -- **Built for extension**: The backend uses Go, the frontend uses Next.js, and the runtime supports Skills, MCP, and OpenAI-compatible model access. -- **Self-host friendly**: Supports SQLite / MySQL and Qdrant for local trials, intranet deployment, and enterprise self-hosting. - -## Core Capabilities - -- **AI Agent support**: AI replies first, with fallback, confirmation, tool calling, and human collaboration. -- **Online conversation system**: Visitor sessions, message send/receive, unread status, assignment, transfer, and close flows. -- **Agent workspace**: Agents can take over conversations, reply to users, transfer teammates, link customers, and create tickets. -- **Knowledge-base RAG**: Knowledge bases, documents, FAQs, chunking, vector retrieval, retrieval logs, and quality analysis. -- **Answerability Gate**: Checks whether retrieved content can support an answer; otherwise returns a fallback and recommends human support. -- **Ticket system**: Create tickets from conversations, categorize, assign, move through status flows, record progress, and close the loop. -- **Support organization management**: Agent profiles, teams, schedules, and automatic assignment. -- **AI extensibility**: Skills, MCP debugging, and external tool integration. -- **Multiple entry points**: Admin dashboard, agent workspace, customer-facing web pages, and embeddable SDK. - -## Use Cases - -- Website live support -- SaaS product support -- AI + human hybrid support -- Internal enterprise service desk -- After-sales service, incident reporting, complaints, and operations support -- Support teams that need knowledge-base Q&A with human collaboration - -## Quick Start - -The fastest way to try the full stack is Docker Compose: - -```bash -docker compose up -d --build -``` - -For the full English setup guide, see [Docker Compose Quick Start](https://agent-desk.huabei.pro/docs/getting-started/docker-compose.html). - -To embed customer support on your website, see [Web Widget Integration](https://agent-desk.huabei.pro/docs/integration/web-widget.html). - -To connect OpenAI-compatible model providers, see [Model Provider Configuration](https://agent-desk.huabei.pro/docs/config/model-provider.html). - -Compose starts: - -- `agent-desk`: application service on port `8083` -- `mysql`: MySQL 8.4 with the `mysql-data` volume -- `qdrant`: vector database with the `qdrant-data` volume, ports `6333` / `6334` - -After startup, open: - -- Admin dashboard: `http://localhost:8083/dashboard` -- Agent workspace: `http://localhost:8083/dashboard/conversations` -- Customer web integration demo: `http://localhost:8083/support/demo` -- Customer chat page: `http://localhost:8083/support/chat` - -Default administrator account: - -- Username: `admin` -- Password: `ChangeMe123!` - -> Before exposing the system to the public internet or a team environment, change the default administrator password and configure independent authentication, session, and model secrets. - -## Local Development - -### Requirements - -- Go `1.26+` -- Node.js `20+` -- `pnpm` -- Qdrant - -### Prepare Configuration +## Development ```bash cp config/config.example.yaml config/config.yaml +go mod download +make dev ``` -The default configuration uses: - -- SQLite: `data/app.db` -- Backend: `http://127.0.0.1:8083` -- Qdrant gRPC: `127.0.0.1:6334` - -If Qdrant is not running locally, start it with Docker: - -```bash -docker run -p 6333:6333 -p 6334:6334 qdrant/qdrant -``` - -Install frontend dependencies: - -```bash -cd web -pnpm install -cd .. -``` - -Start backend and frontend development servers together: - -```bash -task dev -``` - -Default development URLs: - -- Admin dashboard: `http://localhost:3000/dashboard` -- Agent workspace: `http://localhost:3000/dashboard/conversations` -- Customer web integration demo: `http://localhost:3000/support/demo` -- Customer chat page: `http://localhost:3000/support/chat` - -## Tech Stack - -- Backend: Golang + Gin + GORM + `github.com/mlogclub/simple` -- Frontend: Next.js 16 + React 19 + shadcn/ui + Tailwind CSS -- Database: SQLite / MySQL -- Vector DB: Qdrant -- AI: OpenAI-compatible LLM / Embedding + RAG + Skills + MCP - -## Project Structure +The API listens on `http://127.0.0.1:8083` by default. Health check: ```text -. -├── cmd/ # server / migration / generator / testdata -├── internal/ -│ ├── bootstrap/ # startup, routes, database, and migration initialization -│ ├── builders/ # model / aggregate result to response DTO mapping -│ ├── handlers/ # dashboard / api / third HTTP handlers -│ ├── middleware/ # Gin middleware -│ ├── migration/ # idempotent data migrations -│ ├── models/ # GORM models -│ ├── repositories/ # data access layer -│ ├── services/ # business orchestration and transaction boundaries -│ ├── ai/ # LLM / RAG / Runtime / Skills / MCP -│ └── pkg/ # config / dto / enums / httpx / utils and shared packages -├── web/ # Next.js frontend project -│ ├── app/dashboard/ # admin dashboard and agent workspace -│ ├── app/support/ # customer integration and chat pages -│ ├── components/ # React components -│ ├── lib/ # API client, SDK source, and utilities -│ └── public/sdk/ # built embeddable SDK -├── config/ # configuration files -├── docker/ # Docker configuration -└── docs/ # documentation site +GET http://127.0.0.1:8083/api/health ``` -## Common Commands +Set `server.frontendUrl` and `server.cors.allowedOrigins` in `config/config.yaml` to the frontend origin. Local defaults use `http://127.0.0.1:3000`. + +## Commands ```bash -task dev # start backend and frontend development servers -task build # build the frontend SPA and current-platform Go binary into dist/ -task build:lancedb # build the current-platform LanceDB binary into dist/ -task release # build linux/darwin/windows release binaries into dist/ -task release:lancedb # build LanceDB release binaries into dist/ -task generator # run code generation -task enums # generate frontend enums -task --list # show available tasks +make dev +make build +make test +make generator +make enums FRONTEND_DIR=../agent-desk-web ``` -## AI Agent Workflow +`make enums` writes the backend-owned shared enums into the frontend project. -```mermaid -flowchart TD - A[User starts a support request
Web support entry / Open API] --> B[Create or match a conversation] - B --> C[Customer sends a message] - C --> D[Trigger AI Reply Runtime] - D --> E[Load conversation history / AI configuration] - E --> F[Retrieve from bound knowledge bases] - F --> G{Are retrieved chunks enough to answer?} - G -- No --> Z[Return knowledge fallback
and recommend human support] - G -- Yes --> H[Prepare Skills / MCP Tools] - H --> I[Pass trusted knowledge context to the Agent] - I --> J{Direct reply?} - J -- Yes --> K[LLM generates a knowledge-grounded reply] - J -- No --> N{Call Graph / MCP Tool?} - N -- Yes --> O[Run Skill / Graph / MCP Tool] - O --> P{Need user confirmation?} - P -- No --> I - P -- Yes --> Q[Ask the user to confirm] - Q --> R{Confirmation result} - R -- Confirm handoff --> S[Move conversation to human handoff pool] - S --> T[Automatic or manual assignment] - T --> U[Agent workspace takeover] - U --> V{Need ticket tracking?} - V -- Yes --> W[Create or link a ticket] - V -- No --> X[Human agent continues handling] - W --> X - X --> Y[Resolve and close] - R -- Confirm ticket --> AA[Create a ticket from the current conversation] - AA --> I - R -- Cancel --> K - N -- No --> K -``` - -## Support Loop - -```mermaid -flowchart LR - A[Customer request] --> B[AI Agent handles first] - B --> C{Can the knowledge base answer?} - C -- Yes --> D[AI replies with trusted knowledge] - C -- No --> E[Fallback / recommend human support] - D --> F{Need a human?} - E --> G[Human takeover] - F -- No --> H[Conversation ends or data is retained] - F -- Yes --> G - G --> I[Agent workspace handles the case] - I --> J{Need follow-up tracking?} - J -- Yes --> K[Create / link a ticket] - J -- No --> L[Resolve directly] - K --> M[Ticket status flow and progress records] - M --> N[Complete] - L --> N -``` - -## Docker Image - -If you only need to build the application image, prepare MySQL and Qdrant yourself and mount a configuration file: +## Docker ```bash -docker build -t mlogclub/agent-desk . -docker run --rm -p 8083:8083 \ - -v $(pwd)/docker/agent-desk.yaml:/app/config/config.yaml:ro \ - -v agent-desk-data:/app/data \ - mlogclub/agent-desk +docker build --target app -t agent-desk-server . +docker run --rm -p 8083:8083 agent-desk-server ``` -Compose uses [docker/agent-desk.yaml](docker/agent-desk.yaml) as the in-container configuration. The application reaches `mysql` and `qdrant` through Docker service names. - -## Open-source Positioning - -`AgentDesk` is useful as an open-source foundation for: - -- AI customer support systems -- AI Helpdesk / AI Support Platform projects -- RAG answerability + human handoff implementation references -- Enterprise AI Agent application frameworks - -If you are looking for a customer support system centered on AI Agents rather than a simple LLM chat box, this project is designed for that purpose. +The Docker image contains only the API service. Deploy the frontend separately. diff --git a/README_ZH.md b/README_ZH.md index 6a59a11..feac4a2 100644 --- a/README_ZH.md +++ b/README_ZH.md @@ -1,278 +1,33 @@ -# AgentDesk +# Agent Desk 后端 -[English](README.md) | 简体中文 +客服系统后端 API 项目,使用 Go、Gin、GORM 和 `github.com/mlogclub/simple`。 -开源的 AI Agent 客服系统,支持知识库问答、人工接管、工单闭环和私有化部署。 - -> 面向需要同时处理在线咨询、知识库问答、人工协同和服务跟踪的团队。它不是把 LLM 接进聊天框,而是一套围绕客服场景设计的 AI Helpdesk 基础系统。 - -## 产品预览 - -客户侧在线咨询、客服工作台、知识库、模型配置和 AI Agent 编排都在同一套系统中完成。 - -### 客户侧在线咨询 - -![客户侧在线咨询](screenshots/1.png) - -客户可以在 Web 聊天页中直接发起咨询。AI Agent 会先接待,基于知识库回答问题;当用户明确要求人工介入时,会触发转人工确认流程。 - -### 客服工作台 - -![客服工作台](screenshots/2.png) - -客服工作台支持会话列表、消息处理、AI 转人工、客服回复、会话标签、关联客户和工单信息查看,适合客服日常接待使用。 - -### 知识库与 AI 配置 - -| 知识库 FAQ | AI Agent 配置 | -| --- | --- | -| ![知识库 FAQ](screenshots/4.png) | ![AI Agent 配置](screenshots/5.png) | - -知识库用于沉淀 FAQ、文档和可检索内容;AI Agent 可以绑定模型配置、知识库、Skills 和工具能力,形成面向具体客服场景的智能客服实例。 - -### 模型配置 - -![模型配置](screenshots/3.png) - -模型配置支持 OpenAI-compatible 接入方式,可分别配置大语言模型、向量模型和重排模型,并管理上下文、输出、超时、重试和启用状态。 - -## 为什么选择它 - -- **AI 先接待**:让 AI Agent 优先处理常见问题、标准流程和知识库问答。 -- **知识约束回答**:通过 RAG 和 Answerability Gate 判断知识片段是否足以回答,减少超出知识库范围的乱答。 -- **自然转人工**:当知识库不足、用户明确要求或流程需要人工确认时,进入人工接管。 -- **会话到工单闭环**:在线会话、客服接待、工单创建、状态流转和处理记录在同一套系统里完成。 -- **适合二次开发**:后端使用 Go,前端使用 Next.js,支持 Skills、MCP 和 OpenAI-compatible 模型接入。 -- **可私有化部署**:支持 SQLite / MySQL 和 Qdrant,适合本地体验、内网部署和企业自托管。 - -## 核心能力 - -- **AI Agent 客服**:AI 优先回复,支持兜底、确认、工具调用和人工协同。 -- **在线会话系统**:支持访客会话、消息收发、未读状态、会话分配、转接和关闭。 -- **客服工作台**:客服可接管会话、回复用户、转接同事、关联客户和创建工单。 -- **知识库 RAG**:支持知识库、文档、FAQ、切片、向量检索、检索日志和质量分析。 -- **Answerability Gate**:判断检索内容是否足以支撑回答,不足时返回兜底提示并建议联系人工。 -- **工单系统**:支持从会话创建工单、分类、指派、状态流转、进展记录和闭环处理。 -- **客服组织管理**:支持客服档案、客服组、排班和自动分配能力。 -- **AI 扩展能力**:支持 Skills、MCP 调试和外部工具接入。 -- **多入口接入**:提供管理后台、客服工作台、客户侧 Web 页面和嵌入式 SDK。 - -## 适用场景 - -- 官网在线客服 -- SaaS 产品支持 -- AI + 人工混合接待 -- 企业内部服务台 -- 售后、报障、投诉和运营支持 -- 需要知识库问答与人工协同的客服团队 - -## 快速开始 - -推荐先用 Docker Compose 体验完整服务: - -```bash -docker compose up -d --build -``` - -完整英文配置与排查说明见 [Docker Compose Quick Start](https://agent-desk.huabei.pro/zh/docs/getting-started/docker-compose.html)。 - -如需在官网或产品中嵌入客服入口,见 [Web Widget Integration](https://agent-desk.huabei.pro/zh/docs/integration/web-widget.html)。 - -如需接入 OpenAI-compatible 模型供应商,见 [Model Provider Configuration](https://agent-desk.huabei.pro/zh/docs/config/model-provider.html)。 - -Compose 默认会启动: - -- `agent-desk`:应用服务,端口 `8083` -- `mysql`:MySQL 8.4,数据卷 `mysql-data` -- `qdrant`:向量数据库,数据卷 `qdrant-data`,端口 `6333` / `6334` - -启动后访问: - -- 管理后台:`http://localhost:8083/dashboard` -- 客服工作台:`http://localhost:8083/dashboard/conversations` -- 客户侧 Web 接入示例:`http://localhost:8083/support/demo` -- 客户侧聊天页:`http://localhost:8083/support/chat` - -默认管理员账号: - -- 用户名:`admin` -- 密码:`ChangeMe123!` - -> 首次用于公网或团队环境前,请务必修改默认管理员密码,并配置独立的鉴权、会话和模型密钥。 +前端已拆分为独立项目,默认位于同级目录 `../agent-desk-web`。 ## 本地开发 -### 环境要求 - -- Go `1.26+` -- Node.js `20+` -- `pnpm` -- Qdrant - -### 准备配置 - ```bash cp config/config.example.yaml config/config.yaml +go mod download +make dev ``` -默认配置使用: - -- SQLite:`data/app.db` -- Backend:`http://127.0.0.1:8083` -- Qdrant gRPC:`127.0.0.1:6334` - -如果本地还没有 Qdrant,可以用 Docker 启动: - -```bash -docker run -p 6333:6333 -p 6334:6334 qdrant/qdrant -``` - -安装前端依赖: - -```bash -cd web -pnpm install -cd .. -``` - -同时启动后端和前端开发服务: - -```bash -task dev -``` - -开发环境默认入口: - -- 管理后台:`http://localhost:3000/dashboard` -- 客服工作台:`http://localhost:3000/dashboard/conversations` -- 客户侧 Web 接入示例:`http://localhost:3000/support/demo` -- 客户侧聊天页:`http://localhost:3000/support/chat` - -## 技术栈 - -- Backend:Golang + Gin + GORM + `github.com/mlogclub/simple` -- Frontend:Next.js 16 + React 19 + shadcn/ui + Tailwind CSS -- Database:SQLite / MySQL -- Vector DB:Qdrant -- AI:OpenAI-compatible LLM / Embedding + RAG + Skills + MCP - -## 项目结构 +默认 API 地址:`http://127.0.0.1:8083`,健康检查: ```text -. -├── cmd/ # server / migration / generator / testdata -├── internal/ -│ ├── bootstrap/ # 启动、路由、数据库和迁移初始化 -│ ├── builders/ # model / 聚合结果到 response DTO 的映射 -│ ├── handlers/ # dashboard / api / third HTTP handlers -│ ├── middleware/ # Gin middleware -│ ├── migration/ # 幂等数据迁移 -│ ├── models/ # GORM models -│ ├── repositories/ # 数据访问层 -│ ├── services/ # 业务编排和事务边界 -│ ├── ai/ # LLM / RAG / Runtime / Skills / MCP -│ └── pkg/ # config / dto / enums / httpx / utils 等基础包 -├── web/ # Next.js 前端工程 -│ ├── app/dashboard/ # 管理后台与客服工作台 -│ ├── app/support/ # 客户侧接入和聊天页面 -│ ├── components/ # React 组件 -│ ├── lib/ # API client、SDK 源码和工具函数 -│ └── public/sdk/ # 构建后的嵌入式 SDK -├── config/ # 配置文件 -├── docker/ # Docker 配置 -└── docs/ # 项目文档 +GET http://127.0.0.1:8083/api/health ``` +在 `config/config.yaml` 中将 `server.frontendUrl` 和 `server.cors.allowedOrigins` 配置为前端地址,本地默认为 `http://127.0.0.1:3000`。 + ## 常用命令 ```bash -task dev # 同时启动后端和前端开发服务 -task build # 构建前端 SPA 和当前平台 Go 二进制 -task build:lancedb # 构建当前平台 LanceDB 二进制 -task release # 构建常用平台二进制 -task release:lancedb # 构建 LanceDB 发布二进制 -task generator # 执行代码生成 -task enums # 生成前端枚举 -task --list # 查看可用任务 +make dev +make build +make test +make generator +make enums FRONTEND_DIR=../agent-desk-web ``` -## AI Agent 工作流 - -```mermaid -flowchart TD - A[用户发起咨询
Web 客服入口 / Open API] --> B[创建或匹配会话] - B --> C[客户发送消息] - C --> D[触发 AI Reply Runtime] - D --> E[加载会话历史 / AI 配置] - E --> F[按绑定知识库执行检索] - F --> G{知识片段是否足以回答?} - G -- 否 --> Z[返回知识库兜底提示
并建议联系人工客服] - G -- 是 --> H[准备 Skills / MCP Tools] - H --> I[将可信知识上下文交给 Agent] - I --> J{直接回复?} - J -- 是 --> K[LLM 基于知识生成回复并返回用户] - J -- 否 --> N{是否调用 Graph / MCP Tool?} - N -- 是 --> O[执行 Skill / Graph / MCP Tool] - O --> P{需要用户确认?} - P -- 否 --> I - P -- 是 --> Q[向用户发起确认] - Q --> R{用户确认结果} - R -- 确认转人工 --> S[会话转人工并进入待接入池] - S --> T[自动分配或人工分配] - T --> U[客服工作台接管] - U --> V{是否需要工单跟踪?} - V -- 是 --> W[创建或关联工单] - V -- 否 --> X[人工继续处理] - W --> X - X --> Y[问题解决并关闭] - R -- 确认建单 --> AA[从当前会话创建工单] - AA --> I - R -- 取消 --> K - N -- 否 --> K -``` - -## 业务闭环 - -```mermaid -flowchart LR - A[客户咨询] --> B[AI Agent 接待] - B --> C{知识库可回答?} - C -- 是 --> D[AI 基于可信知识回复] - C -- 否 --> E[兜底提示 / 建议人工] - D --> F{是否需要人工?} - E --> G[人工接管] - F -- 否 --> H[会话结束或沉淀数据] - F -- 是 --> G - G --> I[客服工作台处理] - I --> J{是否需要跟踪?} - J -- 是 --> K[创建 / 关联工单] - J -- 否 --> L[直接解决] - K --> M[工单流转与进展记录] - M --> N[处理完成] - L --> N -``` - -## Docker 镜像 - -如果只需要构建应用镜像,可以自行准备 MySQL 和 Qdrant,并挂载配置文件: - -```bash -docker build -t mlogclub/agent-desk . -docker run --rm -p 8083:8083 \ - -v $(pwd)/docker/agent-desk.yaml:/app/config/config.yaml:ro \ - -v agent-desk-data:/app/data \ - mlogclub/agent-desk -``` - -Compose 使用 [docker/agent-desk.yaml](docker/agent-desk.yaml) 作为容器内配置,应用会通过 Docker 内部服务名访问 `mysql` 和 `qdrant`。 - -## 开源定位 - -`AgentDesk` 适合作为以下方向的开源基础项目: - -- AI 客服系统 -- AI Helpdesk / AI Support Platform -- RAG 可回答性判定 + Human Handoff 的落地样板 -- 面向企业场景的 AI Agent 应用框架 - -如果你在寻找一个以 AI Agent 为中心,而不是仅仅把 LLM 嵌进聊天框的客服系统,这个项目就是为此设计的。 +`make enums` 会把后端定义的共享枚举生成到前端项目。 diff --git a/Taskfile.yml b/Taskfile.yml index 78c1814..b23e2ca 100644 --- a/Taskfile.yml +++ b/Taskfile.yml @@ -3,264 +3,43 @@ version: '3' silent: true vars: - APP: agent-desk + APP: agent-desk-server MAIN: ./cmd/server - WEB_DIR: web DIST_DIR: dist GO: sh: 'printf "%s" "${GO:-go}"' - PNPM: - sh: 'printf "%s" "${PNPM:-pnpm}"' DEV_PORT: sh: 'printf "%s" "${DEV_PORT:-8083}"' - DEV_API_BASE_URL: - sh: 'printf "%s" "${DEV_API_BASE_URL:-http://127.0.0.1:${DEV_PORT:-8083}}"' - LANCEDB_VERSION: - sh: 'printf "%s" "${LANCEDB_VERSION:-v0.1.2}"' - LANCEDB_DOWNLOAD_SCRIPT: - sh: 'printf "%s" "${LANCEDB_DOWNLOAD_SCRIPT:-https://raw.githubusercontent.com/lancedb/lancedb-go/main/scripts/download-artifacts.sh}"' - HOST_OS: - sh: uname -s - HOST_ARCH: - sh: uname -m - HOST_GOOS: - sh: '${GO:-go} env GOOS' - HOST_LANCEDB_PLATFORM: - sh: | - case "$(uname -s)" in - Darwin) printf darwin ;; - Linux) printf linux ;; - MINGW*|MSYS*|CYGWIN*) printf windows ;; - *) printf unsupported ;; - esac - HOST_LANCEDB_ARCH: - sh: | - case "$(uname -m)" in - x86_64|amd64) printf amd64 ;; - arm64|aarch64) printf arm64 ;; - *) printf unsupported ;; - esac - HOST_LANCEDB_TARGET: - sh: | - case "$(uname -s)" in - Darwin) platform=darwin ;; - Linux) platform=linux ;; - MINGW*|MSYS*|CYGWIN*) platform=windows ;; - *) platform=unsupported ;; - esac - case "$(uname -m)" in - x86_64|amd64) arch=amd64 ;; - arm64|aarch64) arch=arm64 ;; - *) arch=unsupported ;; - esac - printf "%s_%s" "$platform" "$arch" - HOST_LANCEDB_LIB: - sh: | - case "$(uname -s)" in - Darwin) platform=darwin ;; - Linux) platform=linux ;; - MINGW*|MSYS*|CYGWIN*) platform=windows ;; - *) platform=unsupported ;; - esac - case "$(uname -m)" in - x86_64|amd64) arch=amd64 ;; - arm64|aarch64) arch=arm64 ;; - *) arch=unsupported ;; - esac - printf "%s/lib/%s_%s/liblancedb_go.a" "{{.ROOT_DIR}}" "$platform" "$arch" - LANCEDB_CGO_CFLAGS: '-I{{.ROOT_DIR}}/include' + FRONTEND_DIR: + sh: 'printf "%s" "${FRONTEND_DIR:-../agent-desk-web}"' tasks: default: - desc: Show available tasks cmds: - task --list dev: - desc: Start backend and frontend development servers - deps: - - task: dev:backend - - task: dev:frontend + desc: Start the API server + cmds: + - 'AGENT_DESK_SERVER_PORT="{{.DEV_PORT}}" {{.GO}} run -tags dev {{.MAIN}}' build: - desc: Build the frontend SPA and current-platform Go binary into dist/ - deps: - - task: build:web - - task: build:dist + desc: Build the API binary cmds: - - | - ext="" - if [ "{{.HOST_GOOS}}" = "windows" ]; then - ext=".exe" - fi - output="{{.DIST_DIR}}/{{.APP}}${ext}" - echo "Building $output..." - {{.GO}} build -v -o "$output" {{.MAIN}} + - mkdir -p {{.DIST_DIR}} + - '{{.GO}} build -v -o {{.DIST_DIR}}/{{.APP}} {{.MAIN}}' - build:lancedb: - desc: Build the current-platform LanceDB binary into dist/ - deps: - - task: lancedb:ensure-current - - task: build:web - - task: build:dist + test: + desc: Run all Go tests cmds: - - | - case "$(uname -s)" in - Darwin) system_ldflags="-framework Security -framework CoreFoundation" ;; - Linux) system_ldflags="-lm -ldl -lpthread" ;; - *) system_ldflags="" ;; - esac - ext="" - if [ "{{.HOST_GOOS}}" = "windows" ]; then - ext=".exe" - fi - output="{{.DIST_DIR}}/{{.APP}}-lancedb${ext}" - echo "Building $output..." - CGO_ENABLED=1 CGO_CFLAGS="{{.LANCEDB_CGO_CFLAGS}}" CGO_LDFLAGS="{{.HOST_LANCEDB_LIB}} $system_ldflags" \ - {{.GO}} build -tags lancedb -v -o "$output" {{.MAIN}} - - release: - desc: Build linux/darwin/windows release binaries into dist/ - deps: - - task: build:web - - task: build:dist - cmds: - - | - echo "Building release binaries in {{.DIST_DIR}}..." - GOOS=linux GOARCH=amd64 {{.GO}} build -v -o "{{.DIST_DIR}}/{{.APP}}-linux-amd64" {{.MAIN}} - GOOS=linux GOARCH=arm64 {{.GO}} build -v -o "{{.DIST_DIR}}/{{.APP}}-linux-arm64" {{.MAIN}} - GOOS=darwin GOARCH=amd64 {{.GO}} build -v -o "{{.DIST_DIR}}/{{.APP}}-darwin-amd64" {{.MAIN}} - GOOS=darwin GOARCH=arm64 {{.GO}} build -v -o "{{.DIST_DIR}}/{{.APP}}-darwin-arm64" {{.MAIN}} - GOOS=windows GOARCH=amd64 {{.GO}} build -v -o "{{.DIST_DIR}}/{{.APP}}-windows-amd64.exe" {{.MAIN}} - - release:lancedb: - desc: Build LanceDB release binaries into dist/ - deps: - - task: lancedb:check-release - - task: build:web - - task: build:dist - cmds: - - | - echo "Building LanceDB release binaries in {{.DIST_DIR}}..." - build_lancedb() { - platform="$1" - arch="$2" - ext="$3" - system_ldflags="$4" - native_lib="{{.ROOT_DIR}}/lib/${platform}_${arch}/liblancedb_go.a" - output="{{.DIST_DIR}}/{{.APP}}-lancedb-${platform}-${arch}${ext}" - echo "Building $output..." - CGO_ENABLED=1 CGO_CFLAGS="-I{{.ROOT_DIR}}/include" CGO_LDFLAGS="$native_lib $system_ldflags" \ - GOOS="$platform" GOARCH="$arch" {{.GO}} build -tags lancedb -v -o "$output" {{.MAIN}} - } - build_lancedb linux amd64 "" "-lm -ldl -lpthread" - build_lancedb linux arm64 "" "-lm -ldl -lpthread" - build_lancedb darwin amd64 "" "-framework Security -framework CoreFoundation" - build_lancedb darwin arm64 "" "-framework Security -framework CoreFoundation" - build_lancedb windows amd64 ".exe" "" + - '{{.GO}} test ./...' generator: - desc: Run code generation + desc: Run backend code generation cmds: - '{{.GO}} run ./cmd/generator/generator.go' enums: - desc: Generate frontend enums + desc: Generate TypeScript enums into the sibling frontend project cmds: - - '{{.GO}} run ./cmd/enums/generator.go' - - dev:backend: - internal: true - cmds: - - task: lancedb:ensure-current - - | - echo "Starting backend on http://127.0.0.1:{{.DEV_PORT}} ..." - case "$(uname -s)" in - Darwin) system_ldflags="-framework Security -framework CoreFoundation" ;; - Linux) system_ldflags="-lm -ldl -lpthread" ;; - *) system_ldflags="" ;; - esac - AGENT_DESK_SERVER_PORT="{{.DEV_PORT}}" CGO_ENABLED=1 CGO_CFLAGS="{{.LANCEDB_CGO_CFLAGS}}" CGO_LDFLAGS="{{.HOST_LANCEDB_LIB}} $system_ldflags" \ - {{.GO}} run -tags "dev lancedb" {{.MAIN}} - - dev:frontend: - internal: true - deps: - - task: build:flowgram-editor - cmds: - - | - echo "Starting frontend on http://localhost:3000 ..." - cd {{.WEB_DIR}} && NEXT_PUBLIC_API_BASE_URL="" NEXT_API_BASE_URL="{{.DEV_API_BASE_URL}}" {{.PNPM}} dev - - build:web: - internal: true - deps: - - task: build:flowgram-editor - cmds: - - 'cd {{.WEB_DIR}} && {{.PNPM}} build:sdk && {{.PNPM}} build' - - build:flowgram-editor: - internal: true - sources: - - flowgram-editor/src/**/* - - flowgram-editor/package.json - - flowgram-editor/pnpm-lock.yaml - - flowgram-editor/rsbuild.config.ts - generates: - - web/public/flowgram-editor/index.html - cmds: - - 'cd flowgram-editor && {{.PNPM}} install --frozen-lockfile' - - 'cd flowgram-editor && {{.PNPM}} build' - - build:dist: - internal: true - cmds: - - 'mkdir -p {{.DIST_DIR}}' - - lancedb:ensure-current: - internal: true - cmds: - - | - if [ "{{.HOST_LANCEDB_PLATFORM}}" = "unsupported" ] || [ "{{.HOST_LANCEDB_ARCH}}" = "unsupported" ]; then - echo "Unsupported LanceDB platform: {{.HOST_OS}}/{{.HOST_ARCH}}" - exit 1 - fi - - | - if [ -f "{{.HOST_LANCEDB_LIB}}" ] && [ -f "{{.ROOT_DIR}}/include/lancedb.h" ]; then - echo "LanceDB native artifacts already exist for {{.HOST_LANCEDB_TARGET}}." - else - echo "Downloading LanceDB native artifacts {{.LANCEDB_VERSION}} for {{.HOST_LANCEDB_TARGET}}..." - curl -sSL "{{.LANCEDB_DOWNLOAD_SCRIPT}}" | bash -s "{{.LANCEDB_VERSION}}" - fi - - | - if [ ! -f "{{.HOST_LANCEDB_LIB}}" ]; then - echo "Missing LanceDB native library: {{.HOST_LANCEDB_LIB}}" - exit 1 - fi - - | - if [ ! -f "{{.ROOT_DIR}}/include/lancedb.h" ]; then - echo "Missing LanceDB header: {{.ROOT_DIR}}/include/lancedb.h" - exit 1 - fi - - lancedb:check-release: - internal: true - cmds: - - | - if [ ! -f "{{.ROOT_DIR}}/include/lancedb.h" ]; then - echo "Missing LanceDB header: {{.ROOT_DIR}}/include/lancedb.h" - exit 1 - fi - - | - missing=0 - for target in linux_amd64 linux_arm64 darwin_amd64 darwin_arm64 windows_amd64; do - native_lib="{{.ROOT_DIR}}/lib/${target}/liblancedb_go.a" - if [ ! -f "$native_lib" ]; then - echo "Missing LanceDB native library: $native_lib" - missing=1 - fi - done - if [ "$missing" = "1" ]; then - echo "LanceDB release builds require matching native artifacts and a CGO-capable toolchain for each target platform." - exit 1 - fi + - '{{.GO}} run ./cmd/enums/generator.go -output "{{.FRONTEND_DIR}}/lib/generated/enums.ts"' diff --git a/cmd/enums/generator.go b/cmd/enums/generator.go index 7cf1cb7..8a1edd9 100644 --- a/cmd/enums/generator.go +++ b/cmd/enums/generator.go @@ -2,6 +2,7 @@ package main import ( "bytes" + "flag" "fmt" "go/ast" "go/token" @@ -15,9 +16,9 @@ import ( ) const ( - enumsPkgName = "enums" - enumsDir = "internal/pkg/enums" - outputPath = "web/lib/generated/enums.ts" + enumsPkgName = "enums" + enumsDir = "internal/pkg/enums" + defaultOutputPath = "dist/enums.ts" ) type enumValueType string @@ -47,15 +48,18 @@ type enumDef struct { } func main() { + outputPath := flag.String("output", defaultOutputPath, "TypeScript enum output path") + flag.Parse() + defs, err := parseEnums(enumsDir) if err != nil { panic(err) } content := buildTSFile(defs) - if err := os.MkdirAll(filepath.Dir(outputPath), 0o755); err != nil { + if err := os.MkdirAll(filepath.Dir(*outputPath), 0o755); err != nil { panic(err) } - if err := os.WriteFile(outputPath, []byte(content), 0o644); err != nil { + if err := os.WriteFile(*outputPath, []byte(content), 0o644); err != nil { panic(err) } } diff --git a/config/config.example.yaml b/config/config.example.yaml index 58fe904..18af117 100644 --- a/config/config.example.yaml +++ b/config/config.example.yaml @@ -2,20 +2,23 @@ language: zh-CN server: port: 8083 + # Public address of the independently deployed frontend. Login callbacks redirect here. + frontendUrl: http://127.0.0.1:3000 cors: # Browser CORS allowlist. In production, replace this with the actual frontend or embedded-site domains, such as https://support.example.com. # Leave it empty to reject cross-origin browser requests. Same-origin and non-browser calls are still supported. allowedOrigins: - - http://127.0.0.1:8083 - - http://localhost:8083 + - http://127.0.0.1:3000 + - http://localhost:3000 db: - # Database driver. Supported values: sqlite, mysql. + # Database driver. Supported values: sqlite, mysql, postgres (postgresql is also accepted). type: sqlite # Database connection string. # SQLite example: file:./data/app.db?_busy_timeout=5000 # MySQL example: user:password@tcp(127.0.0.1:3306)/cs_ai_agent_db?charset=utf8mb4&parseTime=True&multiStatements=true&loc=Local # For MySQL, keep parseTime=True so datetime fields are scanned into Go time values correctly. + # PostgreSQL example: host=127.0.0.1 user=cs_ai_agent password=change-me dbname=cs_ai_agent port=5432 sslmode=disable TimeZone=Asia/Shanghai dsn: file:./data/app.db?_busy_timeout=5000 # Maximum number of idle connections kept in the pool. Values <= 0 use the database/sql default. maxIdleConns: 5 @@ -61,7 +64,7 @@ storage: root: data/storage # Public URL prefix used when returning local file URLs. The server must expose this path as static files. # Example: storage key "images/a.png" becomes "/storage/images/a.png". - baseUrl: /storage + baseUrl: http://127.0.0.1:8083/storage oss: # Aliyun OSS endpoint. Both "oss-cn-hangzhou.aliyuncs.com" and "https://oss-cn-hangzhou.aliyuncs.com" are accepted. endpoint: "" diff --git a/docker-compose.lancedb.yml b/docker-compose.lancedb.yml index 007242a..aa5d9fc 100644 --- a/docker-compose.lancedb.yml +++ b/docker-compose.lancedb.yml @@ -1,24 +1,4 @@ services: - mysql: - image: mysql:8.4 - restart: unless-stopped - environment: - MYSQL_DATABASE: cs_ai_agent - MYSQL_USER: cs_ai_agent - MYSQL_PASSWORD: cs_ai_agent_password - MYSQL_ROOT_PASSWORD: cs_ai_agent_root_password - TZ: Asia/Shanghai - command: - - --character-set-server=utf8mb4 - - --collation-server=utf8mb4_unicode_ci - volumes: - - mysql-data:/var/lib/mysql - healthcheck: - test: ["CMD-SHELL", "mysqladmin ping -h 127.0.0.1 -u\"$${MYSQL_USER}\" -p\"$${MYSQL_PASSWORD}\" --silent"] - interval: 10s - timeout: 5s - retries: 10 - agent-desk: build: context: . @@ -28,9 +8,6 @@ services: LANCEDB_VERSION: v0.1.2 image: mlogclub/agent-desk:latest-lancedb restart: unless-stopped - depends_on: - mysql: - condition: service_healthy ports: - "8083:8083" volumes: @@ -38,7 +15,8 @@ services: - ./docker/agent-desk-lancedb.yaml:/app/config/config.yaml:ro environment: TZ: Asia/Shanghai + AGENT_DESK_DB_TYPE: postgres + AGENT_DESK_DB_DSN: ${AGENT_DESK_DB_DSN:-host=host.docker.internal user=cs_ai_agent password=cs_ai_agent_password dbname=cs_ai_agent port=5432 sslmode=disable TimeZone=Asia/Shanghai} volumes: - mysql-data: agent-desk-data: diff --git a/docker-compose.yml b/docker-compose.yml index cd43fe4..8085ae4 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,24 +1,4 @@ services: - mysql: - image: mysql:8.4 - restart: unless-stopped - environment: - MYSQL_DATABASE: cs_ai_agent - MYSQL_USER: cs_ai_agent - MYSQL_PASSWORD: cs_ai_agent_password - MYSQL_ROOT_PASSWORD: cs_ai_agent_root_password - TZ: Asia/Shanghai - command: - - --character-set-server=utf8mb4 - - --collation-server=utf8mb4_unicode_ci - volumes: - - mysql-data:/var/lib/mysql - healthcheck: - test: ["CMD-SHELL", "mysqladmin ping -h 127.0.0.1 -u\"$${MYSQL_USER}\" -p\"$${MYSQL_PASSWORD}\" --silent"] - interval: 10s - timeout: 5s - retries: 10 - qdrant: image: qdrant/qdrant:latest restart: unless-stopped @@ -35,8 +15,6 @@ services: image: mlogclub/agent-desk:latest restart: unless-stopped depends_on: - mysql: - condition: service_healthy qdrant: condition: service_started ports: @@ -46,8 +24,9 @@ services: - ./docker/agent-desk.yaml:/app/config/config.yaml:ro environment: TZ: Asia/Shanghai + AGENT_DESK_DB_TYPE: postgres + AGENT_DESK_DB_DSN: ${AGENT_DESK_DB_DSN:-host=host.docker.internal user=cs_ai_agent password=cs_ai_agent_password dbname=cs_ai_agent port=5432 sslmode=disable TimeZone=Asia/Shanghai} volumes: - mysql-data: qdrant-data: agent-desk-data: diff --git a/docker/agent-desk-lancedb.yaml b/docker/agent-desk-lancedb.yaml index 9fdb643..647d2b9 100644 --- a/docker/agent-desk-lancedb.yaml +++ b/docker/agent-desk-lancedb.yaml @@ -2,14 +2,15 @@ language: zh-CN server: port: 8083 + frontendUrl: http://127.0.0.1:3000 cors: allowedOrigins: - - http://localhost:8083 - - http://127.0.0.1:8083 + - http://localhost:3000 + - http://127.0.0.1:3000 db: - type: mysql - dsn: cs_ai_agent:cs_ai_agent_password@tcp(mysql:3306)/cs_ai_agent?charset=utf8mb4&parseTime=True&loc=Local + type: postgres + dsn: host=host.docker.internal user=cs_ai_agent password=cs_ai_agent_password dbname=cs_ai_agent port=5432 sslmode=disable TimeZone=Asia/Shanghai logger: level: info @@ -26,7 +27,7 @@ storage: maxUploadSizeMB: 5 local: root: /app/data/storage - baseUrl: /storage + baseUrl: http://127.0.0.1:8083/storage oss: endpoint: "" bucket: "" diff --git a/docker/agent-desk-sqlite-lancedb.yaml b/docker/agent-desk-sqlite-lancedb.yaml index 95b4eb7..bef90fc 100644 --- a/docker/agent-desk-sqlite-lancedb.yaml +++ b/docker/agent-desk-sqlite-lancedb.yaml @@ -2,10 +2,11 @@ language: zh-CN server: port: 8083 + frontendUrl: http://127.0.0.1:3000 cors: allowedOrigins: - - http://localhost:8083 - - http://127.0.0.1:8083 + - http://localhost:3000 + - http://127.0.0.1:3000 db: type: sqlite @@ -35,7 +36,7 @@ storage: maxUploadSizeMB: 20 local: root: /app/data/storage - baseUrl: /storage + baseUrl: http://127.0.0.1:8083/storage oss: endpoint: "" bucket: "" diff --git a/docker/agent-desk.yaml b/docker/agent-desk.yaml index cce0540..6a121bc 100644 --- a/docker/agent-desk.yaml +++ b/docker/agent-desk.yaml @@ -2,15 +2,16 @@ language: zh-CN server: port: 8083 + frontendUrl: http://127.0.0.1:3000 cors: # 浏览器跨域白名单。生产部署时改为实际前端/嵌入站点域名。 allowedOrigins: - - http://127.0.0.1:8083 - - http://localhost:8083 + - http://127.0.0.1:3000 + - http://localhost:3000 db: - type: mysql - dsn: cs_ai_agent:cs_ai_agent_password@tcp(mysql:3306)/cs_ai_agent?charset=utf8mb4&parseTime=True&multiStatements=true&loc=Local + type: postgres + dsn: host=host.docker.internal user=cs_ai_agent password=cs_ai_agent_password dbname=cs_ai_agent port=5432 sslmode=disable TimeZone=Asia/Shanghai maxIdleConns: 5 maxOpenConns: 20 connMaxIdleTimeSeconds: 300 @@ -36,7 +37,7 @@ storage: maxUploadSizeMB: 20 local: root: /app/data/storage - baseUrl: /storage + baseUrl: http://127.0.0.1:8083/storage oss: endpoint: "" bucket: "" diff --git a/docs b/docs deleted file mode 160000 index 23fdf31..0000000 --- a/docs +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 23fdf317bf3aa528e6e6509454453f5e85850938 diff --git a/flowgram-editor/README.md b/flowgram-editor/README.md deleted file mode 100644 index 8513e06..0000000 --- a/flowgram-editor/README.md +++ /dev/null @@ -1,386 +0,0 @@ -# FlowGram.AI - Demo Free Layout - -Best-practice demo for free layout - -## Installation - -```shell -npx @flowgram.ai/create-app@latest free-layout -``` - -## Project Overview - -### Core Tech Stack -- **Frontend framework**: React 18 + TypeScript -- **Build tool**: Rsbuild (a modern build tool based on Rspack) -- **Styling**: Less + Styled Components + CSS Variables -- **UI library**: Semi Design (@douyinfe/semi-ui) -- **State management**: Flowgram’s in-house editor framework -- **Dependency injection**: Inversify - -### Core Dependencies - -- **@flowgram.ai/free-layout-editor**: Core dependency for the free layout editor -- **@flowgram.ai/free-snap-plugin**: Auto-alignment and guide-lines plugin -- **@flowgram.ai/free-lines-plugin**: Connection line rendering plugin -- **@flowgram.ai/free-node-panel-plugin**: Node add-panel rendering plugin -- **@flowgram.ai/minimap-plugin**: Minimap plugin -- **@flowgram.ai/export-plugin**: Download/export plugin -- **@flowgram.ai/free-container-plugin**: Sub-canvas plugin -- **@flowgram.ai/free-group-plugin**: Grouping plugin -- **@flowgram.ai/form-materials**: Form materials -- **@flowgram.ai/runtime-interface**: Runtime interfaces -- **@flowgram.ai/runtime-js**: JS runtime module -- **@flowgram.ai/panel-manager-plugin**: Sidebar panel management - -## Code Guide - -### Directory Structure -``` -src/ -├── app.tsx # Application entry file -├── editor.tsx # Main editor component -├── initial-data.ts # Initial data configuration -├── assets/ # Static assets -├── components/ # Component library -│ ├── index.ts -│ ├── add-node/ # Add-node component -│ ├── base-node/ # Base node components -│ ├── comment/ # Comment components -│ ├── group/ # Group components -│ ├── line-add-button/ # Connection add button -│ ├── node-menu/ # Node menu -│ ├── node-panel/ # Node add panel -│ ├── selector-box-popover/ # Selection box popover -│ ├── sidebar/ # Sidebar -│ ├── testrun/ # Test-run module -│ │ ├── hooks/ # Test-run hooks -│ │ ├── node-status-bar/ # Node status bar -│ │ ├── testrun-button/ # Test-run button -│ │ ├── testrun-form/ # Test-run form -│ │ ├── testrun-json-input/ # JSON input component -│ │ └── testrun-panel/ # Test-run panel -│ └── tools/ # Utility components -├── context/ # React Context -│ ├── node-render-context.ts # Current rendering node context -│ ├── sidebar-context # Sidebar context -├── form-components/ # Form component library -│ ├── form-content/ # Form content -│ ├── form-header/ # Form header -│ ├── form-inputs/ # Form inputs -│ └── form-item/ # Form item -│ └── feedback.tsx # Validation error rendering -├── hooks/ -│ ├── index.ts -│ ├── use-editor-props.tsx # Editor props hook -│ ├── use-is-sidebar.ts # Sidebar state hook -│ ├── use-node-render-context.ts # Node render context hook -│ └── use-port-click.ts # Port click hook -├── nodes/ # Node definitions -│ ├── index.ts -│ ├── constants.ts # Node constants -│ ├── default-form-meta.ts # Default form metadata -│ ├── block-end/ # Block end node -│ ├── block-start/ # Block start node -│ ├── break/ # Break node -│ ├── code/ # Code node -│ ├── comment/ # Comment node -│ ├── condition/ # Condition node -│ ├── continue/ # Continue node -│ ├── end/ # End node -│ ├── group/ # Group node -│ ├── http/ # HTTP node -│ ├── llm/ # LLM node -│ ├── loop/ # Loop node -│ ├── start/ # Start node -│ └── variable/ # Variable node -├── plugins/ # Plugin system -│ ├── index.ts -│ ├── context-menu-plugin/ # Right-click context menu plugin -│ ├── runtime-plugin/ # Runtime plugin -│ │ ├── client/ # Client -│ │ │ ├── browser-client/ # Browser client -│ │ │ └── server-client/ # Server client -│ │ └── runtime-service/ # Runtime service -│ └── variable-panel-plugin/ # Variable panel plugin -│ └── components/ # Variable panel components -├── services/ # Service layer -│ ├── index.ts -│ └── custom-service.ts # Custom service -├── shortcuts/ # Shortcuts system -│ ├── index.ts -│ ├── constants.ts # Shortcut constants -│ ├── shortcuts.ts # Shortcut definitions -│ ├── type.ts # Type definitions -│ ├── collapse/ # Collapse shortcut -│ ├── copy/ # Copy shortcut -│ ├── delete/ # Delete shortcut -│ ├── expand/ # Expand shortcut -│ ├── paste/ # Paste shortcut -│ ├── select-all/ # Select-all shortcut -│ ├── zoom-in/ # Zoom-in shortcut -│ └── zoom-out/ # Zoom-out shortcut -├── styles/ # Styles -├── typings/ # Type definitions -│ ├── index.ts -│ ├── json-schema.ts # JSON Schema types -│ └── node.ts # Node type definitions -└── utils/ # Utility functions - ├── index.ts - └── on-drag-line-end.ts # Handle end of drag line -``` - -### Key Directory Functions - -#### 1. `/components` - Component Library -- **base-node**: Base rendering components for all nodes -- **testrun**: Complete test-run module, including status bar, form, and panel -- **sidebar**: Sidebar components providing tools and property panels -- **node-panel**: Node add panel with drag-to-add capability - -#### 2. `/nodes` - Node System -Each node type has its own directory, including: -- Node registration (`index.ts`) -- Form metadata (`form-meta.ts`) -- Node-specific components and logic - -#### 3. `/plugins` - Plugin System -- **runtime-plugin**: Supports both browser and server modes -- **context-menu-plugin**: Right-click context menu -- **variable-panel-plugin**: Variable management panel - -#### 4. `/shortcuts` - Shortcuts System -Complete keyboard shortcut support, including: -- Basic actions: copy, paste, delete, select-all -- View actions: zoom-in, zoom-out, collapse, expand -- Each shortcut has its own implementation module - -## Application Architecture - -### Core Design Patterns - -#### 1. Plugin Architecture -Highly modular plugin system; each feature is an independent plugin: - -```typescript -plugins: () => [ - createFreeLinesPlugin({ renderInsideLine: LineAddButton }), - createMinimapPlugin({ /* config */ }), - createFreeSnapPlugin({ /* alignment config */ }), - createFreeNodePanelPlugin({ renderer: NodePanel }), - createContainerNodePlugin({}), - createFreeGroupPlugin({ groupNodeRender: GroupNodeRender }), - createContextMenuPlugin({}), - createRuntimePlugin({ mode: 'browser' }), - createVariablePanelPlugin({}) -] -``` - -#### 2. Node Registry Pattern -Manage different workflow node types via a registry: - -```typescript -export const nodeRegistries: FlowNodeRegistry[] = [ - ConditionNodeRegistry, // Condition node - StartNodeRegistry, // Start node - EndNodeRegistry, // End node - LLMNodeRegistry, // LLM node - LoopNodeRegistry, // Loop node - CommentNodeRegistry, // Comment node - HTTPNodeRegistry, // HTTP node - CodeNodeRegistry, // Code node - // ... more node types -]; -``` - -#### 3. Dependency Injection -Use Inversify for service DI: - -```typescript -onBind: ({ bind }) => { - bind(CustomService).toSelf().inSingletonScope(); -} -``` -## Core Features - -### 1. Editor Configuration System - -`useEditorProps` is the configuration center of the editor: - -```typescript -export function useEditorProps( - initialData: FlowDocumentJSON, - nodeRegistries: FlowNodeRegistry[] -): FreeLayoutProps { - return useMemo(() => ({ - background: true, // Background grid - readonly: false, // Readonly mode - initialData, // Initial data - nodeRegistries, // Node registries - - // Core feature configs - playground: { preventGlobalGesture: true /* Prevent Mac browser swipe gestures */ }, - nodeEngine: { enable: true }, - variableEngine: { enable: true }, - history: { enable: true, enableChangeNode: true }, - - // Business rules - canAddLine: (ctx, fromPort, toPort) => { /* Connection rules */ }, - canDeleteLine: (ctx, line) => { /* Line deletion rules */ }, - canDeleteNode: (ctx, node) => { /* Node deletion rules */ }, - canDropToNode: (ctx, params) => { /* Drag-and-drop rules */ }, - - // Plugins - plugins: () => [/* Plugin list */], - - // Events - onContentChange: debounce((ctx, event) => { /* Auto save */ }, 1000), - onInit: (ctx) => { /* Initialization */ }, - onAllLayersRendered: (ctx) => { /* After render */ } - }), []); -} -``` - -### 2. Node Type System - -The app supports multiple workflow node types: - -```typescript -export enum WorkflowNodeType { - Start = 'start', // Start node - End = 'end', // End node - LLM = 'llm', // Large language model node - HTTP = 'http', // HTTP request node - Code = 'code', // Code execution node - Variable = 'variable', // Variable node - Condition = 'condition', // Conditional node - Loop = 'loop', // Loop node - BlockStart = 'block-start', // Sub-canvas start node - BlockEnd = 'block-end', // Sub-canvas end node - Comment = 'comment', // Comment node - Continue = 'continue', // Continue node - Break = 'break', // Break node -} -``` - -Each node follows a unified registration pattern: - -```typescript -export const StartNodeRegistry: FlowNodeRegistry = { - type: WorkflowNodeType.Start, - meta: { - isStart: true, - deleteDisable: true, // Not deletable - copyDisable: true, // Not copyable - nodePanelVisible: false, // Hidden in node panel - defaultPorts: [{ type: 'output' }], - size: { width: 360, height: 211 } - }, - info: { - icon: iconStart, - description: 'The starting node of the workflow, used to set up information needed to launch the workflow.' - }, - formMeta, // Form configuration - canAdd() { return false; } // Disallow multiple start nodes -}; -``` - -### 3. Plugin Architecture - -App features are modularized via the plugin system: - -#### Core Plugin List -1. **FreeLinesPlugin** - Connection rendering and interaction -2. **MinimapPlugin** - Minimap navigation -3. **FreeSnapPlugin** - Auto-alignment and guide-lines -4. **FreeNodePanelPlugin** - Node add panel -5. **ContainerNodePlugin** - Container nodes (e.g., loop nodes) -6. **FreeGroupPlugin** - Node grouping -7. **ContextMenuPlugin** - Right-click context menu -8. **RuntimePlugin** - Workflow runtime -9. **VariablePanelPlugin** - Variable management panel - -### 4. Runtime System - -Two run modes are supported: - -```typescript -createRuntimePlugin({ - mode: 'browser', // Browser mode - // mode: 'server', // Server mode - // serverConfig: { - // domain: 'localhost', - // port: 4000, - // protocol: 'http', - // }, -}) -``` - -## Design Philosophy and Advantages - -### 1. Highly Modular -- **Plugin architecture**: Each feature is an independent plugin, easy to extend and maintain -- **Node registry system**: Add new node types without changing core code -- **Componentized UI**: Highly reusable components with clear responsibilities - -### 2. Type Safety -- **Full TypeScript support**: End-to-end type safety from configuration to runtime -- **JSON Schema integration**: Node data validated by schemas -- **Strongly typed plugin interfaces**: Clear type constraints for plugin development - -### 3. User Experience -- **Real-time preview**: Run and debug workflows live -- **Rich interactions**: Dragging, zooming, snapping, shortcuts for a complete editing experience -- **Visual feedback**: Minimap, status indicators, line animations - -### 4. Extensibility -- **Open plugin system**: Third parties can easily develop custom plugins -- **Flexible node system**: Custom node types and form configurations supported -- **Multiple runtimes**: Both browser and server modes - -### 5. Performance -- **On-demand loading**: Components and plugins support lazy loading -- **Debounce**: Performance optimizations for high-frequency operations like auto-save - -## Technical Highlights - -### 1. In-house Editor Framework -Based on `@flowgram.ai/free-layout-editor`, providing: -- Free-layout canvas system -- Full undo/redo functionality -- Lifecycle management for nodes and connections -- Variable engine and expression system - -### 2. Advanced Build Configuration -Using Rsbuild as the build tool: - -```typescript -export default defineConfig({ - plugins: [pluginReact(), pluginLess()], - source: { - entry: { index: './src/app.tsx' }, - decorators: { version: 'legacy' } // Enable decorators - }, - tools: { - rspack: { - ignoreWarnings: [/Critical dependency/] // Ignore specific warnings - } - } -}); -``` - -### 3. Internationalization -Built-in multilingual support: - -```typescript -i18n: { - locale: navigator.language, - languages: { - 'zh-CN': { - 'Never Remind': '不再提示', - 'Hold {{key}} to drag node out': '按住 {{key}} 可以将节点拖出', - }, - 'en-US': {}, - } -} -``` diff --git a/flowgram-editor/README.zh_CN.md b/flowgram-editor/README.zh_CN.md deleted file mode 100644 index 7e8d456..0000000 --- a/flowgram-editor/README.zh_CN.md +++ /dev/null @@ -1,386 +0,0 @@ -# FlowGram.AI - Demo Free Layout - -自由布局最佳实践 demo - -## 安装 - -```shell -npx @flowgram.ai/create-app@latest free-layout -``` - -## 项目概览 - -### 核心技术栈 -- **前端框架**: React 18 + TypeScript -- **构建工具**: Rsbuild (基于 Rspack 的现代构建工具) -- **样式方案**: Less + Styled Components + CSS Variables -- **UI 组件库**: Semi Design (@douyinfe/semi-ui) -- **状态管理**: 基于 Flowgram 自研的编辑器框架 -- **依赖注入**: Inversify - -### 核心依赖包 - -- **@flowgram.ai/free-layout-editor**: 自由布局编辑器核心依赖 -- **@flowgram.ai/free-snap-plugin**: 自动对齐及辅助线插件 -- **@flowgram.ai/free-lines-plugin**: 连线渲染插件 -- **@flowgram.ai/free-node-panel-plugin**: 节点添加面板渲染插件 -- **@flowgram.ai/minimap-plugin**: 缩略图插件 -- **@flowgram.ai/export-plugin**: 下载导出插件 -- **@flowgram.ai/free-container-plugin**: 子画布插件 -- **@flowgram.ai/free-group-plugin**: 分组插件 -- **@flowgram.ai/form-materials**: 表单物料 -- **@flowgram.ai/runtime-interface**: 运行时接口 -- **@flowgram.ai/runtime-js**: js 运行时模块 -- **@flowgram.ai/panel-manager-plugin**: 侧边栏面板管理 - -## 代码说明 - -### 目录结构 -``` -src/ -├── app.tsx # 应用入口文件 -├── editor.tsx # 编辑器主组件 -├── initial-data.ts # 初始化数据配置 -├── assets/ # 静态资源 -├── components/ # 组件库 -│ ├── index.ts -│ ├── add-node/ # 添加节点组件 -│ ├── base-node/ # 基础节点组件 -│ ├── comment/ # 注释组件 -│ ├── group/ # 分组组件 -│ ├── line-add-button/ # 连线添加按钮 -│ ├── node-menu/ # 节点菜单 -│ ├── node-panel/ # 节点添加面板 -│ ├── selector-box-popover/ # 选择框弹窗 -│ ├── sidebar/ # 侧边栏 -│ ├── testrun/ # 测试运行组件 -│ │ ├── hooks/ # 测试运行钩子 -│ │ ├── node-status-bar/ # 节点状态栏 -│ │ ├── testrun-button/ # 测试运行按钮 -│ │ ├── testrun-form/ # 测试运行表单 -│ │ ├── testrun-json-input/ # JSON输入组件 -│ │ └── testrun-panel/ # 测试运行面板 -│ └── tools/ # 工具组件 -├── context/ # React Context -│ ├── node-render-context.ts # 当前渲染节点 Context -│ ├── sidebar-context # 侧边栏 Context -├── form-components/ # 表单组件库 -│ ├── form-content/ # 表单内容 -│ ├── form-header/ # 表单头部 -│ ├── form-inputs/ # 表单输入 -│ └── form-item/ # 表单项 -│ └── feedback.tsx # 表单校验错误渲染 -├── hooks/ -│ ├── index.ts -│ ├── use-editor-props.tsx # 编辑器属性钩子 -│ ├── use-is-sidebar.ts # 侧边栏状态钩子 -│ ├── use-node-render-context.ts # 节点渲染上下文钩子 -│ └── use-port-click.ts # 端口点击钩子 -├── nodes/ # 节点定义 -│ ├── index.ts -│ ├── constants.ts # 节点常量定义 -│ ├── default-form-meta.ts # 默认表单元数据 -│ ├── block-end/ # 块结束节点 -│ ├── block-start/ # 块开始节点 -│ ├── break/ # 中断节点 -│ ├── code/ # 代码节点 -│ ├── comment/ # 注释节点 -│ ├── condition/ # 条件节点 -│ ├── continue/ # 继续节点 -│ ├── end/ # 结束节点 -│ ├── group/ # 分组节点 -│ ├── http/ # HTTP节点 -│ ├── llm/ # LLM节点 -│ ├── loop/ # 循环节点 -│ ├── start/ # 开始节点 -│ └── variable/ # 变量节点 -├── plugins/ # 插件系统 -│ ├── index.ts -│ ├── context-menu-plugin/ # 右键菜单插件 -│ ├── runtime-plugin/ # 运行时插件 -│ │ ├── client/ # 客户端 -│ │ │ ├── browser-client/ # 浏览器客户端 -│ │ │ └── server-client/ # 服务器客户端 -│ │ └── runtime-service/ # 运行时服务 -│ └── variable-panel-plugin/ # 变量面板插件 -│ └── components/ # 变量面板组件 -├── services/ # 服务层 -│ ├── index.ts -│ └── custom-service.ts # 自定义服务 -├── shortcuts/ # 快捷键系统 -│ ├── index.ts -│ ├── constants.ts # 快捷键常量 -│ ├── shortcuts.ts # 快捷键定义 -│ ├── type.ts # 类型定义 -│ ├── collapse/ # 折叠快捷键 -│ ├── copy/ # 复制快捷键 -│ ├── delete/ # 删除快捷键 -│ ├── expand/ # 展开快捷键 -│ ├── paste/ # 粘贴快捷键 -│ ├── select-all/ # 全选快捷键 -│ ├── zoom-in/ # 放大快捷键 -│ └── zoom-out/ # 缩小快捷键 -├── styles/ # 样式文件 -├── typings/ # 类型定义 -│ ├── index.ts -│ ├── json-schema.ts # JSON Schema类型 -│ └── node.ts # 节点类型定义 -└── utils/ # 工具函数 - ├── index.ts - └── on-drag-line-end.ts # 拖拽连线结束处理 -``` - -### 关键目录功能说明 - -#### 1. `/components` - 组件库 -- **base-node**: 所有节点的基础渲染组件 -- **testrun**: 完整的测试运行功能模块,包含状态栏、表单、面板等 -- **sidebar**: 侧边栏组件,提供工具和属性面板 -- **node-panel**: 节点添加面板,支持拖拽添加新节点 - -#### 2. `/nodes` - 节点系统 -每个节点类型都有独立的目录,包含: -- 节点注册信息 (`index.ts`) -- 表单元数据定义 (`form-meta.ts`) -- 节点特定的组件和逻辑 - -#### 3. `/plugins` - 插件系统 -- **runtime-plugin**: 支持浏览器和服务器两种运行模式 -- **context-menu-plugin**: 右键菜单功能 -- **variable-panel-plugin**: 变量管理面板 - -#### 4. `/shortcuts` - 快捷键系统 -完整的快捷键支持,包括: -- 基础操作:复制、粘贴、删除、全选 -- 视图操作:放大、缩小、折叠、展开 -- 每个快捷键都有独立的实现模块 - -## 应用架构设计 - -### 核心设计模式 - -#### 1. 插件化架构 (Plugin Architecture) -应用采用高度模块化的插件系统,每个功能都作为独立插件存在: - -```typescript -plugins: () => [ - createFreeLinesPlugin({ renderInsideLine: LineAddButton }), - createMinimapPlugin({ /* 配置 */ }), - createFreeSnapPlugin({ /* 对齐配置 */ }), - createFreeNodePanelPlugin({ renderer: NodePanel }), - createContainerNodePlugin({}), - createFreeGroupPlugin({ groupNodeRender: GroupNodeRender }), - createContextMenuPlugin({}), - createRuntimePlugin({ mode: 'browser' }), - createVariablePanelPlugin({}) -] -``` - -#### 2. 节点注册系统 (Node Registry Pattern) -通过注册表模式管理不同类型的工作流节点: - -```typescript -export const nodeRegistries: FlowNodeRegistry[] = [ - ConditionNodeRegistry, // 条件节点 - StartNodeRegistry, // 开始节点 - EndNodeRegistry, // 结束节点 - LLMNodeRegistry, // LLM节点 - LoopNodeRegistry, // 循环节点 - CommentNodeRegistry, // 注释节点 - HTTPNodeRegistry, // HTTP节点 - CodeNodeRegistry, // 代码节点 - // ... 更多节点类型 -]; -``` - -#### 3. 依赖注入模式 (Dependency Injection) -使用 Inversify 框架实现服务的依赖注入: - -```typescript -onBind: ({ bind }) => { - bind(CustomService).toSelf().inSingletonScope(); -} -``` -## 核心功能分析 - -### 1. 编辑器配置系统 - -`useEditorProps` 是整个编辑器的配置中心,包含: - -```typescript -export function useEditorProps( - initialData: FlowDocumentJSON, - nodeRegistries: FlowNodeRegistry[] -): FreeLayoutProps { - return useMemo(() => ({ - background: true, // 背景网格 - readonly: false, // 是否只读 - initialData, // 初始数据 - nodeRegistries, // 节点注册表 - - // 核心功能配置 - playground: { preventGlobalGesture: true /* 阻止 mac 浏览器手势翻页 */ }, - nodeEngine: { enable: true }, - variableEngine: { enable: true }, - history: { enable: true, enableChangeNode: true }, - - // 业务逻辑配置 - canAddLine: (ctx, fromPort, toPort) => { /* 连线规则 */ }, - canDeleteLine: (ctx, line) => { /* 删除连线规则 */ }, - canDeleteNode: (ctx, node) => { /* 删除节点规则 */ }, - canDropToNode: (ctx, params) => { /* 拖拽规则 */ }, - - // 插件配置 - plugins: () => [/* 插件列表 */], - - // 事件处理 - onContentChange: debounce((ctx, event) => { /* 自动保存 */ }, 1000), - onInit: (ctx) => { /* 初始化 */ }, - onAllLayersRendered: (ctx) => { /* 渲染完成 */ } - }), []); -} -``` - -### 2. 节点类型系统 - -应用支持多种工作流节点类型: - -```typescript -export enum WorkflowNodeType { - Start = 'start', // 开始节点 - End = 'end', // 结束节点 - LLM = 'llm', // 大语言模型节点 - HTTP = 'http', // HTTP请求节点 - Code = 'code', // 代码执行节点 - Variable = 'variable', // 变量节点 - Condition = 'condition', // 条件判断节点 - Loop = 'loop', // 循环节点 - BlockStart = 'block-start', // 子画布开始节点 - BlockEnd = 'block-end', // 子画布结束节点 - Comment = 'comment', // 注释节点 - Continue = 'continue', // 继续节点 - Break = 'break', // 中断节点 -} -``` - -每个节点都遵循统一的注册模式: - -```typescript -export const StartNodeRegistry: FlowNodeRegistry = { - type: WorkflowNodeType.Start, - meta: { - isStart: true, - deleteDisable: true, // 不可删除 - copyDisable: true, // 不可复制 - nodePanelVisible: false, // 不在节点面板显示 - defaultPorts: [{ type: 'output' }], - size: { width: 360, height: 211 } - }, - info: { - icon: iconStart, - description: '工作流的起始节点,用于设置启动工作流所需的信息。' - }, - formMeta, // 表单配置 - canAdd() { return false; } // 不允许添加多个开始节点 -}; -``` - -### 3. 插件化架构 - -应用的功能通过插件系统实现模块化: - -#### 核心插件列表 -1. **FreeLinesPlugin** - 连线渲染和交互 -2. **MinimapPlugin** - 缩略图导航 -3. **FreeSnapPlugin** - 自动对齐和辅助线 -4. **FreeNodePanelPlugin** - 节点添加面板 -5. **ContainerNodePlugin** - 容器节点(如循环节点) -6. **FreeGroupPlugin** - 节点分组功能 -7. **ContextMenuPlugin** - 右键菜单 -8. **RuntimePlugin** - 工作流运行时 -9. **VariablePanelPlugin** - 变量管理面板 - -### 4. 运行时系统 - -应用支持两种运行模式: - -```typescript -createRuntimePlugin({ - mode: 'browser', // 浏览器模式 - // mode: 'server', // 服务器模式 - // serverConfig: { - // domain: 'localhost', - // port: 4000, - // protocol: 'http', - // }, -}) -``` - -## 设计理念与架构优势 - -### 1. 高度模块化 -- **插件化架构**: 每个功能都是独立插件,易于扩展和维护 -- **节点注册系统**: 新节点类型可以轻松添加,无需修改核心代码 -- **组件化设计**: UI组件高度复用,职责清晰 - -### 2. 类型安全 -- **完整的TypeScript支持**: 从配置到运行时的全链路类型保护 -- **JSON Schema集成**: 节点数据结构通过Schema验证 -- **强类型的插件接口**: 插件开发有明确的类型约束 - -### 3. 用户体验优化 -- **实时预览**: 支持工作流的实时运行和调试 -- **丰富的交互**: 拖拽、缩放、对齐、快捷键等完整的编辑体验 -- **可视化反馈**: 缩略图、状态指示、连线动画等视觉反馈 - -### 4. 扩展性设计 -- **开放的插件系统**: 第三方可以轻松开发自定义插件 -- **灵活的节点系统**: 支持自定义节点类型和表单配置 -- **多运行时支持**: 浏览器和服务器双模式运行 - -### 5. 性能优化 -- **按需加载**: 组件和插件支持按需加载 -- **防抖处理**: 自动保存等高频操作的性能优化 - -## 技术亮点 - -### 1. 自研编辑器框架 -基于 `@flowgram.ai/free-layout-editor` 自研框架,提供: -- 自由布局的画布系统 -- 完整的撤销/重做功能 -- 节点和连线的生命周期管理 -- 变量引擎和表达式系统 - -### 2. 先进的构建配置 -使用 Rsbuild 作为构建工具: - -```typescript -export default defineConfig({ - plugins: [pluginReact(), pluginLess()], - source: { - entry: { index: './src/app.tsx' }, - decorators: { version: 'legacy' } // 支持装饰器 - }, - tools: { - rspack: { - ignoreWarnings: [/Critical dependency/] // 忽略特定警告 - } - } -}); -``` - -### 3. 国际化支持 -内置多语言支持: - -```typescript -i18n: { - locale: navigator.language, - languages: { - 'zh-CN': { - 'Never Remind': '不再提示', - 'Hold {{key}} to drag node out': '按住 {{key}} 可以将节点拖出', - }, - 'en-US': {}, - } -} -``` diff --git a/flowgram-editor/eslint.config.js b/flowgram-editor/eslint.config.js deleted file mode 100644 index 461d0f3..0000000 --- a/flowgram-editor/eslint.config.js +++ /dev/null @@ -1,20 +0,0 @@ -/** - * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates - * SPDX-License-Identifier: MIT - */ - -const { defineFlatConfig } = require('@flowgram.ai/eslint-config'); - -module.exports = defineFlatConfig({ - preset: 'web', - packageRoot: __dirname, - rules: { - 'no-console': 'off', - 'react/prop-types': 'off', - }, - settings: { - react: { - version: 'detect', - }, - }, -}); diff --git a/flowgram-editor/index.html b/flowgram-editor/index.html deleted file mode 100644 index 7327a04..0000000 --- a/flowgram-editor/index.html +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - Flow FreeLayoutEditor Demo - - -
- - diff --git a/flowgram-editor/package.json b/flowgram-editor/package.json deleted file mode 100644 index e5ced5d..0000000 --- a/flowgram-editor/package.json +++ /dev/null @@ -1,78 +0,0 @@ -{ - "name": "@agent-desk/flowgram-editor", - "version": "1.0.4", - "description": "", - "keywords": [], - "license": "MIT", - "private": true, - "main": "./src/index.ts", - "files": [ - "src/", - "eslint.config.js", - ".gitignore", - "index.html", - "package.json", - "rsbuild.config.ts", - "tsconfig.json", - "README.md", - "README.zh_CN.md" - ], - "dependencies": { - "@douyinfe/semi-icons": "^2.80.0", - "@douyinfe/semi-ui": "^2.80.0", - "lodash-es": "^4.17.21", - "nanoid": "^5.0.9", - "react": "^18", - "react-dom": "^18", - "styled-components": "^5", - "classnames": "^2.5.1", - "@flowgram.ai/runtime-interface": "1.0.12", - "@flowgram.ai/free-snap-plugin": "1.0.12", - "@flowgram.ai/free-node-panel-plugin": "1.0.12", - "@flowgram.ai/minimap-plugin": "1.0.12", - "@flowgram.ai/free-lines-plugin": "1.0.12", - "@flowgram.ai/free-layout-editor": "1.0.12", - "@flowgram.ai/export-plugin": "1.0.12", - "@flowgram.ai/free-container-plugin": "1.0.12", - "@flowgram.ai/free-group-plugin": "1.0.12", - "@flowgram.ai/panel-manager-plugin": "1.0.12", - "@flowgram.ai/form-materials": "1.0.12", - "@flowgram.ai/free-stack-plugin": "1.0.12", - "@flowgram.ai/runtime-js": "1.0.12" - }, - "devDependencies": { - "@rsbuild/core": "^1.2.16", - "@rsbuild/plugin-react": "^1.1.1", - "@rsbuild/plugin-less": "^1.1.1", - "@types/lodash-es": "^4.17.12", - "@types/node": "^18", - "@types/react": "^18", - "@types/react-dom": "^18", - "@types/styled-components": "^5", - "typescript": "^5.8.3", - "eslint": "^9.0.0", - "cross-env": "~7.0.3", - "@flowgram.ai/eslint-config": "1.0.12", - "@flowgram.ai/ts-config": "1.0.12" - }, - "publishConfig": { - "access": "public", - "registry": "https://registry.npmjs.org/" - }, - "scripts": { - "build": "cross-env MODE=app NODE_ENV=production rsbuild build", - "build:fast": "exit 0", - "build:watch": "exit 0", - "build:prod": "cross-env MODE=app NODE_ENV=production rsbuild build", - "build:analyze": "BUNDLE_ANALYZE=true rsbuild build", - "clean": "rimraf dist", - "dev": "cross-env MODE=app NODE_ENV=development rsbuild dev --open", - "lint": "eslint ./src --cache", - "lint:fix": "eslint ./src --fix", - "ts-check": "tsc --noEmit", - "start": "cross-env NODE_ENV=development rsbuild dev --open", - "test": "exit", - "test:cov": "exit", - "watch": "exit 0" - } -} diff --git a/flowgram-editor/pnpm-lock.yaml b/flowgram-editor/pnpm-lock.yaml deleted file mode 100644 index f647c23..0000000 --- a/flowgram-editor/pnpm-lock.yaml +++ /dev/null @@ -1,10224 +0,0 @@ -lockfileVersion: '9.0' - -settings: - autoInstallPeers: true - excludeLinksFromLockfile: false - -importers: - - .: - dependencies: - '@douyinfe/semi-icons': - specifier: ^2.80.0 - version: 2.101.1(react@18.3.1) - '@douyinfe/semi-ui': - specifier: ^2.80.0 - version: 2.101.1(@floating-ui/dom@1.8.0)(@tiptap/suggestion@3.29.0(@floating-ui/dom@1.8.0)(@tiptap/core@3.29.0(@tiptap/pm@3.29.0))(@tiptap/pm@3.29.0))(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/export-plugin': - specifier: 1.0.12 - version: 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/form-materials': - specifier: 1.0.12 - version: 1.0.12(@babel/core@8.0.1)(@babel/template@8.0.0)(@codemirror/autocomplete@6.20.3)(@codemirror/language@6.12.4)(@codemirror/merge@6.12.2)(@coze-editor/code-language-shared@0.1.0-alpha.868621(@codemirror/autocomplete@6.20.3)(@codemirror/language@6.12.4)(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(@lezer/common@1.5.2))(@floating-ui/dom@1.8.0)(@lezer/common@1.5.2)(@tiptap/suggestion@3.29.0(@floating-ui/dom@1.8.0)(@tiptap/core@3.29.0(@tiptap/pm@3.29.0))(@tiptap/pm@3.29.0))(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@5.3.11(@babel/core@8.0.1)(react-dom@18.3.1(react@18.3.1))(react-is@16.13.1)(react@18.3.1))(vue@3.5.40(typescript@5.9.3)) - '@flowgram.ai/free-container-plugin': - specifier: 1.0.12 - version: 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@5.3.11(@babel/core@8.0.1)(react-dom@18.3.1(react@18.3.1))(react-is@16.13.1)(react@18.3.1)) - '@flowgram.ai/free-group-plugin': - specifier: 1.0.12 - version: 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@5.3.11(@babel/core@8.0.1)(react-dom@18.3.1(react@18.3.1))(react-is@16.13.1)(react@18.3.1)) - '@flowgram.ai/free-layout-editor': - specifier: 1.0.12 - version: 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@5.3.11(@babel/core@8.0.1)(react-dom@18.3.1(react@18.3.1))(react-is@16.13.1)(react@18.3.1)) - '@flowgram.ai/free-lines-plugin': - specifier: 1.0.12 - version: 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@5.3.11(@babel/core@8.0.1)(react-dom@18.3.1(react@18.3.1))(react-is@16.13.1)(react@18.3.1)) - '@flowgram.ai/free-node-panel-plugin': - specifier: 1.0.12 - version: 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/free-snap-plugin': - specifier: 1.0.12 - version: 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@5.3.11(@babel/core@8.0.1)(react-dom@18.3.1(react@18.3.1))(react-is@16.13.1)(react@18.3.1)) - '@flowgram.ai/free-stack-plugin': - specifier: 1.0.12 - version: 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@5.3.11(@babel/core@8.0.1)(react-dom@18.3.1(react@18.3.1))(react-is@16.13.1)(react@18.3.1)) - '@flowgram.ai/minimap-plugin': - specifier: 1.0.12 - version: 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/panel-manager-plugin': - specifier: 1.0.12 - version: 1.0.12(@types/react@18.3.31)(immer@10.1.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(reflect-metadata@0.2.2) - '@flowgram.ai/runtime-interface': - specifier: 1.0.12 - version: 1.0.12 - '@flowgram.ai/runtime-js': - specifier: 1.0.12 - version: 1.0.12(openai@5.23.2(zod@3.25.76)) - classnames: - specifier: ^2.5.1 - version: 2.5.1 - lodash-es: - specifier: ^4.17.21 - version: 4.18.1 - nanoid: - specifier: ^5.0.9 - version: 5.1.16 - react: - specifier: ^18 - version: 18.3.1 - react-dom: - specifier: ^18 - version: 18.3.1(react@18.3.1) - styled-components: - specifier: ^5 - version: 5.3.11(@babel/core@8.0.1)(react-dom@18.3.1(react@18.3.1))(react-is@16.13.1)(react@18.3.1) - devDependencies: - '@flowgram.ai/eslint-config': - specifier: 1.0.12 - version: 1.0.12(@types/node@18.19.130)(jiti@2.7.0)(typescript@5.9.3) - '@flowgram.ai/ts-config': - specifier: 1.0.12 - version: 1.0.12 - '@rsbuild/core': - specifier: ^1.2.16 - version: 1.7.6 - '@rsbuild/plugin-less': - specifier: ^1.1.1 - version: 1.6.4(@rsbuild/core@1.7.6)(@rspack/core@1.7.12(@swc/helpers@0.5.23)) - '@rsbuild/plugin-react': - specifier: ^1.1.1 - version: 1.4.6(@rsbuild/core@1.7.6) - '@types/lodash-es': - specifier: ^4.17.12 - version: 4.17.12 - '@types/node': - specifier: ^18 - version: 18.19.130 - '@types/react': - specifier: ^18 - version: 18.3.31 - '@types/react-dom': - specifier: ^18 - version: 18.3.7(@types/react@18.3.31) - '@types/styled-components': - specifier: ^5 - version: 5.1.36 - cross-env: - specifier: ~7.0.3 - version: 7.0.3 - eslint: - specifier: ^9.0.0 - version: 9.39.5(jiti@2.7.0) - typescript: - specifier: ^5.8.3 - version: 5.9.3 - -packages: - - '@babel/code-frame@7.29.7': - resolution: {integrity: sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==} - engines: {node: '>=6.9.0'} - - '@babel/code-frame@8.0.0': - resolution: {integrity: sha512-dYYg153EyN2Ekbqw2zAsbd6/JR+9N2SEoC7YV2GyyqMM7x9bLDTjBD6XBhSMLH0wtIVyJj03jWNriQhaN+eoCw==} - engines: {node: ^22.18.0 || >=24.11.0} - - '@babel/compat-data@7.29.7': - resolution: {integrity: sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==} - engines: {node: '>=6.9.0'} - - '@babel/compat-data@8.0.0': - resolution: {integrity: sha512-DOjnob/cXOUgDOozCDeq/aK2p5y8dUIVdf6tNhEV1HQRd6I8aQ4f4fbtHRVEvb6lP3BGomrKHiS8ICAASSVQSw==} - engines: {node: ^22.18.0 || >=24.11.0} - - '@babel/core@8.0.1': - resolution: {integrity: sha512-5FgxM4dLQpMJHSiVATk8foW263dVHQHBVpXYiimNECVWG01f4nFyEbQixeT6Mwvg7TayREJ2gpKl3o2RoMdnqw==} - engines: {node: ^22.18.0 || >=24.11.0} - - '@babel/eslint-parser@7.19.1': - resolution: {integrity: sha512-AqNf2QWt1rtu2/1rLswy6CDP7H9Oh3mMhk177Y67Rg8d7RD9WfOLLv8CGn6tisFvS2htm86yIe1yLF6I1UDaGQ==} - engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} - peerDependencies: - '@babel/core': '>=7.11.0' - eslint: ^7.5.0 || ^8.0.0 - - '@babel/eslint-plugin@7.29.7': - resolution: {integrity: sha512-9qag/N0IHYLNf0nCNvHctNGBpoY4Idr7JkPeYUf2p5J9UpvHpd+Xx6VGjHDhJKmueVBa4/cq6MPl3uxj6/8knw==} - engines: {node: ^10.13.0 || ^12.13.0 || >=14.0.0} - peerDependencies: - '@babel/eslint-parser': ^7.11.0 - eslint: ^7.5.0 || ^8.0.0 || ^9.0.0 - - '@babel/generator@7.29.7': - resolution: {integrity: sha512-DkXD5OJQaAQIdZ1bt3UZdEnHAn9Imd3IVBdX03UFe+ony9Ojw5pzr9YVKGDY1jt+Gcn/FnGkNf8r+Vj5NOJWtQ==} - engines: {node: '>=6.9.0'} - - '@babel/generator@8.0.0': - resolution: {integrity: sha512-NT9NrVwJsbSV6Y2FSstWa71EETOnzrjkL5/wX3D2mYHtKM+qvqB1DvR4D0Setb/gDBsHzRICifwEWMO8CnTF6g==} - engines: {node: ^22.18.0 || >=24.11.0} - - '@babel/helper-annotate-as-pure@7.29.7': - resolution: {integrity: sha512-OoK6239jHPuSQOoS0kfTVKn0b/rVTk0seKq4Gd2UMLtmOVLjDC0ki3e+c90Trqv2gMfvJFqkiljrr568+qddiw==} - engines: {node: '>=6.9.0'} - - '@babel/helper-compilation-targets@7.29.7': - resolution: {integrity: sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==} - engines: {node: '>=6.9.0'} - - '@babel/helper-compilation-targets@8.0.0': - resolution: {integrity: sha512-JwculLABZvyPvyLBpwU/E/IbH2uM3mnxNtIJpxnIfb24y1PrdVxK5Dqjle4DpgqpGRnwgC7G8IkzPdSXZrO1Ew==} - engines: {node: ^22.18.0 || >=24.11.0} - - '@babel/helper-create-class-features-plugin@7.29.7': - resolution: {integrity: sha512-IY3ZD9Tmooqr3TUhc3DUWxiuo8xx1DWLhd5M7hQ+ZWJamqM2BbalrBJb2MisSLoYorOj75U03qULCxQTY9r3hg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-create-regexp-features-plugin@7.29.7': - resolution: {integrity: sha512-907Uymvqgg1dwUA+7IGwFAOSYzQOuzPXKNJ1yxzwPffzkYFg2q2eHi1fIOs6sXkG9NbIUMunnUlkYsfRFNvomg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-define-polyfill-provider@0.3.3': - resolution: {integrity: sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==} - peerDependencies: - '@babel/core': ^7.4.0-0 - - '@babel/helper-environment-visitor@7.24.7': - resolution: {integrity: sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==} - engines: {node: '>=6.9.0'} - - '@babel/helper-globals@7.29.7': - resolution: {integrity: sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==} - engines: {node: '>=6.9.0'} - - '@babel/helper-globals@8.0.0': - resolution: {integrity: sha512-lLozHOM6sWWlxNo8CYqHy4MBZeTvHXNgVPBfPOGsjPKUzHC2Az9QwB6gxdQmpwHl6GlQtbGgS+lj5887guDiLw==} - engines: {node: ^22.18.0 || >=24.11.0} - - '@babel/helper-member-expression-to-functions@7.29.7': - resolution: {integrity: sha512-j+7JYmk1JYDtACIGj0QJqqWZjoUpMoEikQGADMaHgCMCSDqd2+P32rfcibUNrGOMWrlzK1WJBdxrB3JJQZwWtg==} - engines: {node: '>=6.9.0'} - - '@babel/helper-module-imports@7.29.7': - resolution: {integrity: sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==} - engines: {node: '>=6.9.0'} - - '@babel/helper-module-transforms@7.29.7': - resolution: {integrity: sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-optimise-call-expression@7.29.7': - resolution: {integrity: sha512-+kmGVjcT9RGYzoDwdwEqEvGgKe3BYq+O1iGzjFubaNgZHwYHP6lsF2Yghf4kEuv9BV7tYDZ913aBW9am6YKong==} - engines: {node: '>=6.9.0'} - - '@babel/helper-plugin-utils@7.29.7': - resolution: {integrity: sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw==} - engines: {node: '>=6.9.0'} - - '@babel/helper-remap-async-to-generator@7.29.7': - resolution: {integrity: sha512-16AMiW26DbXWBbr3B8wNozKM0ydMLB892vaOaJW/fPJdnT8vJk5sdkQcU/isqUxyCE0cEoa8wZOcbgDuC4b6Og==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-replace-supers@7.29.7': - resolution: {integrity: sha512-atfGXWSeCiF4DnKZIfmJfQRkSw9b9gNNXR1kqKjbhG4pGYCOnkp8OcTB8E3NXjBu8NpheSnOeNKz8KT7UNFTmQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-skip-transparent-expression-wrappers@7.29.7': - resolution: {integrity: sha512-brcMGQaVzIeUb+6/bs1Av0f8YuNNjKY2JyvfRCsFuFsdKccEQ5Ges2y74D74NZ1Rz8lKJ9ksJkfqwQFJ/iNEyQ==} - engines: {node: '>=6.9.0'} - - '@babel/helper-string-parser@7.29.7': - resolution: {integrity: sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==} - engines: {node: '>=6.9.0'} - - '@babel/helper-string-parser@8.0.0': - resolution: {integrity: sha512-6mJgmFFFIIO82vvoLt9XtRC7/TkzXfts1t/SpRX4IHSzMgqoPYCWesVu1udUPUWioAE/2fcG6WuI8zrkE1gwrg==} - engines: {node: ^22.18.0 || >=24.11.0} - - '@babel/helper-validator-identifier@7.29.7': - resolution: {integrity: sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==} - engines: {node: '>=6.9.0'} - - '@babel/helper-validator-identifier@8.0.4': - resolution: {integrity: sha512-4wFaiLd0bVo4cIoTXI3zKI038NIWE/cr3jvBjejOVYVxV/m8Ltav1USiGzG1fmS5J2RhgEOgXNNK46cRPnRsrg==} - engines: {node: ^22.18.0 || >=24.11.0} - - '@babel/helper-validator-option@7.29.7': - resolution: {integrity: sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==} - engines: {node: '>=6.9.0'} - - '@babel/helper-validator-option@8.0.0': - resolution: {integrity: sha512-U4Dybxh4WESWHt5XhBeExi4DrY0/DNK1aHpQbsrQXCUbFHuMweT0TpLEWKvaraV2Y6fS+ZXunsZ8zIuZIgvF2Q==} - engines: {node: ^22.18.0 || >=24.11.0} - - '@babel/helper-wrap-function@7.29.7': - resolution: {integrity: sha512-iES0Skag9ERIF68aXadpO6dbXa03mNWK3sEqJaMnLNs/eC3l0lkImdfoy6Y09/SfkpawdAB4RjQ7PVA7TcVGdw==} - engines: {node: '>=6.9.0'} - - '@babel/helpers@8.0.0': - resolution: {integrity: sha512-wfbi91pM3py96oIiJEz7qIpyXDytgr9zQC1HEWwlGNVRAEmItuU/0a41ZUKu1sJGyhhOIpc4t5vk4PYzt8wpsg==} - engines: {node: ^22.18.0 || >=24.11.0} - - '@babel/parser@7.29.7': - resolution: {integrity: sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg==} - engines: {node: '>=6.0.0'} - hasBin: true - - '@babel/parser@8.0.4': - resolution: {integrity: sha512-srpptsAkEbbNIC/q8nT7o+m6CQe8CJUTV/t7MYc9NnWlgYVtHOb7JH6SorxMhN0kuRJjVqXbKClG6xSbPtzz+g==} - engines: {node: ^22.18.0 || >=24.11.0} - hasBin: true - - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.29.7': - resolution: {integrity: sha512-GE1TFSiuFeGsCxmYXZl8HwoPrVlwe4rHPFE8weieGKZqnDORK+Ar3vgWMgW+AOxQ6/2TgLSKx9p6W7O4rC6qgQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.29.7': - resolution: {integrity: sha512-QQt9qKHZ2sg/kivaLr7lnQr8HVrQDdBNSfCsTjiDxRuX/K5ORyKq+Bu8Xr0cDE3Dfkv0cw28Ve0EKyKMvulkOw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.13.0 - - '@babel/plugin-proposal-async-generator-functions@7.20.7': - resolution: {integrity: sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==} - engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-async-generator-functions instead. - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-proposal-class-properties@7.18.6': - resolution: {integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==} - engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead. - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-proposal-class-static-block@7.21.0': - resolution: {integrity: sha512-XP5G9MWNUskFuP30IfFSEFB0Z6HzLIUcjYM4bYOPHXl7eiJ9HFv8tWj6TXTN5QODiEhDZAeI4hLok2iHFFV4hw==} - engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-static-block instead. - peerDependencies: - '@babel/core': ^7.12.0 - - '@babel/plugin-proposal-dynamic-import@7.18.6': - resolution: {integrity: sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==} - engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-dynamic-import instead. - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-proposal-export-namespace-from@7.18.9': - resolution: {integrity: sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==} - engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-export-namespace-from instead. - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-proposal-json-strings@7.18.6': - resolution: {integrity: sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==} - engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-json-strings instead. - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-proposal-logical-assignment-operators@7.20.7': - resolution: {integrity: sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==} - engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-logical-assignment-operators instead. - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-proposal-nullish-coalescing-operator@7.18.6': - resolution: {integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==} - engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead. - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-proposal-numeric-separator@7.18.6': - resolution: {integrity: sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==} - engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-numeric-separator instead. - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-proposal-object-rest-spread@7.20.7': - resolution: {integrity: sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==} - engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-object-rest-spread instead. - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-proposal-optional-catch-binding@7.18.6': - resolution: {integrity: sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==} - engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-catch-binding instead. - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-proposal-optional-chaining@7.21.0': - resolution: {integrity: sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==} - engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead. - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-proposal-private-methods@7.18.6': - resolution: {integrity: sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==} - engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-methods instead. - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-proposal-private-property-in-object@7.21.11': - resolution: {integrity: sha512-0QZ8qP/3RLDVBwBFoWAwCtgcDZJVwA5LUJRZU8x2YFfKNuFq161wK3cuGrALu5yiPu+vzwTAg/sMWVNeWeNyaw==} - engines: {node: '>=6.9.0'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-private-property-in-object instead. - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-proposal-unicode-property-regex@7.18.6': - resolution: {integrity: sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==} - engines: {node: '>=4'} - deprecated: This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-unicode-property-regex instead. - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-async-generators@7.8.4': - resolution: {integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-class-properties@7.12.13': - resolution: {integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-class-static-block@7.14.5': - resolution: {integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-dynamic-import@7.8.3': - resolution: {integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-export-namespace-from@7.8.3': - resolution: {integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-import-assertions@7.29.7': - resolution: {integrity: sha512-/An1OCBN93thpBAGyfsK2pcf0jvju1SAtKkL2Ny++B5Sy6sqgzXDQH1cZxWbF96Wuk+bn41MDA9bLd4VVAw6rw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-json-strings@7.8.3': - resolution: {integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-jsx@7.29.7': - resolution: {integrity: sha512-TSu8+mHCoEaaCDEZ0I3+6mvTBYR4PCxQwf2z9/r5Tbztv6NaLR3B9thGTTxX2WGuGHJqRiAbKPeGTJ5XWXVg6A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-logical-assignment-operators@7.10.4': - resolution: {integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3': - resolution: {integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-numeric-separator@7.10.4': - resolution: {integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-object-rest-spread@7.8.3': - resolution: {integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-optional-catch-binding@7.8.3': - resolution: {integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-optional-chaining@7.8.3': - resolution: {integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-private-property-in-object@7.14.5': - resolution: {integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-top-level-await@7.14.5': - resolution: {integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-arrow-functions@7.29.7': - resolution: {integrity: sha512-N7zArUXWzAMzm+/N0uPBeVB3Fam5lMxtUwMmDK5f/IBBS7a7p1qeUoxd/6CckXoxUdgsntq1Dh8xNW06maZbDQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-async-to-generator@7.29.7': - resolution: {integrity: sha512-pcUb2SS+RMo9TWVBwKGI5ShtoG7R+zBsFmCKDa6fe8c+hPr3XJlZgoE5j6i8W7gDjhyvy+85vmYexanvXh3d1w==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-block-scoped-functions@7.29.7': - resolution: {integrity: sha512-cUSmjh72N+rN4PrkFlN1dJwNCwjVp5d38/CQrEsFggkD10UiFlBFgdH3tv5dNsLuHY+3S8db2xCHjhZcv5WgvA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-block-scoping@7.29.7': - resolution: {integrity: sha512-ONyr4+AZhKh8yKWInVxU9AXA9EbsyeLcL6V0dJy6M2/62vuvpGm29zzuymbTpdc451GEpDIdAyPLP3r+P61yKQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-classes@7.29.7': - resolution: {integrity: sha512-qV0OGGBVacduzQHE649JyCneOFI/maT+YKsO+K4Yi3xv2wTPNjM/W2o2gdzMwEAZz7fXNTHAe0NcSg30bIN69g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-computed-properties@7.29.7': - resolution: {integrity: sha512-RK7/IyU5phpuCdBAuig5VkzG/EnbDaui5SQGdU9BFrHdV+mV4cUjLMQ9lJDjLNtWHsqtiefpGZUXQP2BiTYMsA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-destructuring@7.29.7': - resolution: {integrity: sha512-iPX8aD6H9zV5s7ZsqTdNocPN/MGQ5sSMnElKrktxjJRMnB2jN/1p2+R7GkfD6CAYoVFqy5A4XnSIUeGgJzIWpg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-dotall-regex@7.29.7': - resolution: {integrity: sha512-3qc18hsD2RdZiyJNDNc7HQpv6xbncwh8FYtxNFFzclSyh/trPD9KkVR9BDECUjDLvb7yJVF15GfYUuC+LMkkiQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-duplicate-keys@7.29.7': - resolution: {integrity: sha512-6IvRRriEMqnBwD6chtxdLpMYCHWEzN+oL5cyQtjykya19UgzbmKhxmhZgKC/LHxS2nYr9Q/qYPZ5Lr6jOL9+yQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-exponentiation-operator@7.29.7': - resolution: {integrity: sha512-zFpMOTLZBdW5LfObqcSbL6kefg4R4eLdmvS0wbN9M6D5Mym/sKm9toOoWyVOa+xDjvCnuWcHls2YonXwHvH3CQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-for-of@7.29.7': - resolution: {integrity: sha512-zeSIHh0+E1Um1WJRXCFlHQYu2ieJNdivLLjlBEp+dIBu3S51n+SZZmIXjxnItw6pz56Cn+KvK68BIBVsxq2JiQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-function-name@7.29.7': - resolution: {integrity: sha512-otRWaHXE6fbAGkePvaj/kvs3HsqXfPhlnzwSOlnFgbqCPMd975dW+4wZ00WFBt+/YlBGcJwNrARQTOJOb4ZrIg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-literals@7.29.7': - resolution: {integrity: sha512-DZ/oLP21ZuWx1vKqnoNv6/tvEK48AQOBRai40CX9dTjGluvT/YZCyY3rryDtyUqCEoyNroy5KKPwX2iQCiRvyw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-member-expression-literals@7.29.7': - resolution: {integrity: sha512-hl1kwFZCCiDyfH25Xmco9jTrkPgnS9pmOzSG7W5I4SaGbLeqKv417hcU2RKmaxoPEgsoJh7ZPOrnPGq99bHoUg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-modules-amd@7.29.7': - resolution: {integrity: sha512-fxtQoH3m5ywUSIfaH0FGCzWu4McsYon5bD3K4XnskC7f+OyQMj7rsOMi4NvvmJ83WwBAg4UCe+ov4VZlqEvyew==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-modules-commonjs@7.29.7': - resolution: {integrity: sha512-j0vCldybPC5b5dwCQOJ21uKtHzt7hxLygJTg9eF1ScfaikEDNfzn94XoW5Fi+seBR0nCyL23xaBFFkq7dTM8XQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-modules-systemjs@7.29.7': - resolution: {integrity: sha512-TM2ZcQLoG2/y4HODiStCo10DibYhWhGWAwVv+EQKmG/7GFl0N+AAmUiXOMKM+aiJ9XBJ9AHVZBvTzMnJ2sM3cQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-modules-umd@7.29.7': - resolution: {integrity: sha512-B4UkaTK3QpgCwJnrxKfMPKdo92CN7OKXAlpAAnM3UPu0Q0lCCk57ylA9AJbRy2v8dDKOPAAWcoR6CMyeoHwRCA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-named-capturing-groups-regex@7.29.7': - resolution: {integrity: sha512-vuFoLwr4qnv2xbZ16SQd6uPcH5FNrLHhk/Jzo++0XJFcaDsr4gjJVg6j398oMHiC+83k/GiBzviwF5KBJkPUtQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-transform-new-target@7.29.7': - resolution: {integrity: sha512-fEo41GmsOUhOBlw8ioo6zvjX5Xc2Lqkzlyfqbpsk3eB6TReV18uhxZ0esfEokVbY2+PVJAQHNKxER6lGrzNd3A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-object-super@7.29.7': - resolution: {integrity: sha512-Ea/diGcw0twB5IlZPO5sgET6fJsLJqPABqTuFWIR+iMPGPZJkATEIWx0wa+aEQ5UY1CBQyP/gkAiLEqn1vBiQA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-optional-chaining@7.29.7': - resolution: {integrity: sha512-6GM1dhvK3gNODkXcEcMCOLEDCLSoZ/sBbro2Ax8HURyasQ4NshagQixkRFdh5niI6E4gmA/jYI/4aT7rRos3ZQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-parameters@7.29.7': - resolution: {integrity: sha512-ZDOBqV/qLYJI0YElr8DcENEyARsFQeESqWXH6gZlghYXuPPjvweuDhP4VyEi4BlUBlLRFZVjxoZDMjxhLW766g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-property-literals@7.29.7': - resolution: {integrity: sha512-bOMRLQuI0A5ZqHq3OWJ89/rXpJ/NJrbVhXiP4zwPGMs6kpcVsuTUNjwoE30K0Qm3mf48a/TnRYYD6vPNqcg6jA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-react-display-name@7.29.7': - resolution: {integrity: sha512-+1wdDMGNb4UPeY3Q4L5yLiYe6TXPXubs4NjrgRFw13hPRLJfEMw2Q5OXkee6/IfdqePIeW4Jjwe3aBh7SdKz4Q==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-react-jsx-development@7.29.7': - resolution: {integrity: sha512-Xfy3UVMF04+ypnFbkhvfqtmvwfe92qwQdbGZVonhE+6v35GzlofmOnA1szaZqzb9xYWr0nl1e5EMmzi0DNON1g==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-react-jsx@7.29.7': - resolution: {integrity: sha512-WsZulLVBUHXVj2cUcPVx6UE21TpalB6bHbSFErKT0Ib++ax24jjXe73FqlWvdylFOjiuPHYi6VCcgRad1ItN+A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-react-pure-annotations@7.29.7': - resolution: {integrity: sha512-H5E+HBgDpr6Q5t+Aj11tL7XkIui1jhbIoArVQnqjgXo5/3YxkN7ZEBcWF4RQlB0T4rrxJQbXS6kiFV6B7XTqUA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-regenerator@7.29.7': - resolution: {integrity: sha512-rNNFV0DBAJp988xW2DOntfDoYn1eR8GGF5AT5vYc+rjyfaQkM242c9tZUHHPe7KYaiJizXPWhQTzzdbXySyhBw==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-reserved-words@7.29.7': - resolution: {integrity: sha512-5+YhdpVgmfSmwZyLMftfaiffLRMHjzIRHFHHLdibcSyJm2pasMrKHrO3Ptrt2DRshjvpgjEJJ1zVW14WPq/6QA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-shorthand-properties@7.29.7': - resolution: {integrity: sha512-I+WYbGBAiCn7nA6xBrlgPH+MB7HWb4u8pv5S0Pv7OtwNvIFvCCb24YlttKEeUFVurfBCEaOTnuhlqsb7f0Z5Dg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-spread@7.29.7': - resolution: {integrity: sha512-/u5K1QWada7tbYNqTjMh96718g9NTwh9tfPJMsSmVsQwGT447FskV+KcfeXkXq2GWki4EM/MuTdmBec+hOuVTQ==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-sticky-regex@7.29.7': - resolution: {integrity: sha512-BCHzNYJGe9l7EpwwDBN/ztlL2NYFFq8hp9ddjtUEM9f2O7S7kKV/lL6Fwo7IF7NSkYhPK2vO+86nIGltA90MsA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-template-literals@7.29.7': - resolution: {integrity: sha512-NCSEJ4sLFU2gqAub45HYh4fus2yQ36rr6ei6vpU7NdoJqCpxvEG8E6eJpscGyXP3VHD2Ny+fSXr04k1hoUrFqA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-typeof-symbol@7.29.7': - resolution: {integrity: sha512-223mNGoTkBiTEWFoK+Q6Go3tueMRclO8vxxxxquNCYuNI4jWOofFKJRRDu6SDrB8Sgo1UEGW9T4GAQ8ZyRso1A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-unicode-escapes@7.29.7': - resolution: {integrity: sha512-jCfXxSjf94lf4E0hKE0AByxF6F3/pVFqRdUUNkDJhsY0m1ZKjnN6ZYyMeHNpzflxb/0q5b7t3p+BE+SLF1WOtA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-unicode-regex@7.29.7': - resolution: {integrity: sha512-7D/x/23/d/3VqZ0QA+LGbZMlGwZjztBygSWWWsfTPoQ1oQ6Q1P6Mr3d0kk42XabyUVw+fha3LqdRsFqeKqvCyA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/preset-env@7.20.2': - resolution: {integrity: sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/preset-modules@0.1.6': - resolution: {integrity: sha512-ID2yj6K/4lKfhuU3+EX4UvNbIt7eACFbHmNUjzA+ep+B5971CknnA/9DEWKbRokfbbtblxxxXFJJrH47UEAMVg==} - peerDependencies: - '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 - - '@babel/preset-react@7.13.13': - resolution: {integrity: sha512-gx+tDLIE06sRjKJkVtpZ/t3mzCDOnPG+ggHZG9lffUbX8+wC739x20YQc9V35Do6ZAxaUc/HhVHIiOzz5MvDmA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/runtime@7.29.7': - resolution: {integrity: sha512-Nq8OhGWiZIZGV6hLHoyAKLLcJihP/xFeBMGJoUrxTX2psI8dCifzLhZISFb+VWS3wFMRDmCGw5R+dOySCqPLhw==} - engines: {node: '>=6.9.0'} - - '@babel/template@7.29.7': - resolution: {integrity: sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==} - engines: {node: '>=6.9.0'} - - '@babel/template@8.0.0': - resolution: {integrity: sha512-eAD0QW/AlbamBbw0FeGiwasbCVPq5ncW0HNVyLP3B9czqLyh4gvw+5JTSNt6le9+ziAU7mqDZsKTHf3jTb4chQ==} - engines: {node: ^22.18.0 || >=24.11.0} - - '@babel/traverse@7.29.7': - resolution: {integrity: sha512-EhlfNQtZ+NK22w5BM61ciuiq1m58ed33Wr1Xan//ZRTy6hgjnwyCffRYwzsGXdASJSUJ1guZILsErh1eQcl+zw==} - engines: {node: '>=6.9.0'} - - '@babel/traverse@8.0.4': - resolution: {integrity: sha512-bZnmqzGG8UZneG1lLxBoWIH0G6Gr1D846Yu4/3XnY6FhCndMR49u26nTY08u/dAxWmLWF9vGQOuC+84FfIUoeg==} - engines: {node: ^22.18.0 || >=24.11.0} - - '@babel/types@7.29.7': - resolution: {integrity: sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==} - engines: {node: '>=6.9.0'} - - '@babel/types@8.0.4': - resolution: {integrity: sha512-eY+Yn3dCqTGmyiq2QRU66lA5FL8lqqqvecHt0fF3uHONIa7ToYsaCiWV8lOKqAs0Rb2SjixiKFROngnulPtt2g==} - engines: {node: ^22.18.0 || >=24.11.0} - - '@cfworker/json-schema@4.1.1': - resolution: {integrity: sha512-gAmrUZSGtKc3AiBL71iNWxDsyUC5uMaKKGdvzYsBoTW/xi42JQHl7eKV2OYzCUqvc+D2RCcf7EXY2iCyFIk6og==} - - '@codemirror/autocomplete@6.20.3': - resolution: {integrity: sha512-tlosUqb+3BbxCxZdu4tKeRghPFC+QM7q4X5YhKV2eCmPG+1r2F3f4AaSz5sCrFqUtX4Jh20VFTKecl16MgiV9g==} - - '@codemirror/commands@6.10.4': - resolution: {integrity: sha512-Ryk9y9T0FFVF0cUGhAknveAyUOl/A1qReTFi+qPKtOh2Z9F4AUBz3XOrYD4ZEgZirdugVzHvd/2/Wcwy5OliTg==} - - '@codemirror/lang-javascript@6.2.5': - resolution: {integrity: sha512-zD4e5mS+50htS7F+TYjBPsiIFGanfVqg4HyUz6WNFikgOPf2BgKlx+TQedI1w6n/IqRBVBbBWmGFdLB/7uxO4A==} - - '@codemirror/lang-python@6.2.1': - resolution: {integrity: sha512-IRjC8RUBhn9mGR9ywecNhB51yePWCGgvHfY1lWN/Mrp3cKuHr0isDKia+9HnvhiWNnMpbGhWrkhuWOc09exRyw==} - - '@codemirror/lang-sql@6.10.0': - resolution: {integrity: sha512-6ayPkEd/yRw0XKBx5uAiToSgGECo/GY2NoJIHXIIQh1EVwLuKoU8BP/qK0qH5NLXAbtJRLuT73hx7P9X34iO4w==} - - '@codemirror/language@6.12.4': - resolution: {integrity: sha512-1q4PaT+o6PbgpkJt4Q8Fv5XJxTy4FUZ4MWETtyiDw3J0Pyr9E2vqcKL+k9wcvjNTIsauxvE7OfmWj3FRPHQ76A==} - - '@codemirror/lint@6.9.7': - resolution: {integrity: sha512-28/+iWLYxKxsvGYhSYL7zaCZqLz5+FFFDq9tVsvGv9kv8RY4fFAchJ5WX9M3YrrRlTIsECjsXPqeNgnSmNP2dg==} - - '@codemirror/merge@6.12.2': - resolution: {integrity: sha512-V8JvyAPjHbPupqP7BeMcsdsYCbyPij74jxIbaIJDORI+VZzW44zFmon8bF+oxGWvOKhcRmkiUMXd8MxHr3YA2w==} - - '@codemirror/search@6.7.1': - resolution: {integrity: sha512-uMe5UO6PamJtSHrXhhHOzSX3ReWtiJrva6GnPMwSOrZtiExb5X5eExhr2OUZQVvdxPsKpY3Ro2mFbQadpPWmHA==} - - '@codemirror/state@6.7.1': - resolution: {integrity: sha512-9QzNDgE4EYDnAHfrTlR2lwiPciiOymLtwKK+8yHQzCc7GXhAP9xdEbEJFy2IWB1j9UGUl9BsgMmTo/ImA02T7A==} - - '@codemirror/view@6.43.6': - resolution: {integrity: sha512-EVunGSYN1wz1p75WY1s3Xg7t3i8Yol0kGZGizNdX9BUFgMFILYVe8/u6EVpo7Ff5PwbZuILb4QAq7IZoKzIEQA==} - - '@coze-editor/code-language-json@0.1.0-alpha.868621': - resolution: {integrity: sha512-DiS8+k2fvuKqnbCAfIxJm3UNSVrve9GsAsSVmOMDBYPi+hjtIo2/cyfJIKocJTuUpzKNP+r3iIYr89TynSFHHw==} - peerDependencies: - '@codemirror/language': ^6.0.0 - '@codemirror/state': ^6.4.1 - '@codemirror/view': ^6.26.1 - '@coze-editor/code-language-shared': 0.1.0-alpha.868621 - - '@coze-editor/code-language-python@0.1.0-alpha.868621': - resolution: {integrity: sha512-DYw0M/34x11zEWQGhiGImexeyEACSzd/Dq0SUWpL56fe+md3jEKH/i2qTpd+lGmriRjFxqJO1J7ZpS7gaqvlPQ==} - peerDependencies: - '@codemirror/state': ^6.4.1 - '@codemirror/view': ^6.26.1 - '@coze-editor/code-language-shared': 0.1.0-alpha.868621 - - '@coze-editor/code-language-shared@0.1.0-alpha.868621': - resolution: {integrity: sha512-/E7OWlfOn8WeZfAdWGpVtITuahKVq8Kh1yPZAR+v4z77EkFv3dkU7LLs2oZO55k5t6IHBILa6VH/gNpBrTnQCQ==} - peerDependencies: - '@codemirror/autocomplete': ^6.18.0 - '@codemirror/language': ^6.0.0 - '@codemirror/state': ^6.4.1 - '@codemirror/view': ^6.26.1 - - '@coze-editor/code-language-shell@0.1.0-alpha.868621': - resolution: {integrity: sha512-EJf42+XWvf8ai+h/0/ieIj6SglWyx+LtcAHjG7GZzAiGusWLQun4MtKLw4uh/uwn5mRrlX4A9P1xZPw8sDeOYQ==} - peerDependencies: - '@codemirror/language': ^6.0.0 - '@codemirror/state': ^6.4.1 - '@codemirror/view': ^6.26.1 - '@coze-editor/code-language-shared': 0.1.0-alpha.868621 - - '@coze-editor/code-language-sql@0.1.0-alpha.868621': - resolution: {integrity: sha512-h+i1Ma3R6idDE/8OKjur2+RLdbDrifc+Wsf1IXlyeq4fHfIzot7qlAWg+KvME+HyejnosS6lJAb8YFqRDddzOQ==} - peerDependencies: - '@codemirror/state': ^6.4.1 - '@codemirror/view': ^6.26.1 - '@coze-editor/code-language-shared': 0.1.0-alpha.868621 - - '@coze-editor/code-language-typescript@0.1.0-alpha.868621': - resolution: {integrity: sha512-FgmtJP/TfArYOPu16X79TsdmWhq+ijB604lzon6kJE5uEkC5pdV9GX2V155r2yq7AYLbMwFfRaDHGpb+6VauVw==} - peerDependencies: - '@codemirror/language': ^6.0.0 - '@codemirror/state': ^6.4.1 - '@codemirror/view': ^6.26.1 - '@coze-editor/code-language-shared': 0.1.0-alpha.868621 - typescript: '*' - - '@coze-editor/core-plugins@0.1.0-alpha.868621': - resolution: {integrity: sha512-uU/uL+odFUoQTaiHHsnSREgHA0YRkhSxhU3gYcLkbaBnDqtSKXI2wfXfLmStWYgOgokvF5je1SRAcpmUB3NEng==} - peerDependencies: - '@codemirror/commands': ^6.3.3 - '@codemirror/state': ^6.4.1 - '@codemirror/view': ^6.26.1 - - '@coze-editor/core@0.1.0-alpha.868621': - resolution: {integrity: sha512-LIJkSNY5+2ZtvmKIoHRa+pBuymlg7nBdTL0hfZ0PF97cTyLdP5S25w/sTW4hMP2difvdUdDj41ipd6u4QtW9Zg==} - peerDependencies: - '@codemirror/state': ^6.4.1 - '@codemirror/view': ^6.26.1 - - '@coze-editor/editor@0.1.0-alpha.868621': - resolution: {integrity: sha512-GyjGyOpyAYXaDBjQmJlONQA9MtjV/7Vl6QgpSgb8NJVyLV/VUJaSiY24fkAr+TQTHE1U4zFPArwmmiB3SjCWQw==} - peerDependencies: - '@codemirror/state': ^6.4.1 - '@codemirror/view': ^6.26.1 - react: '>=16.8' - react-dom: '>=16.8' - - '@coze-editor/extension-completion-icons@0.1.0-alpha.868621': - resolution: {integrity: sha512-bBEqHc0U8afTFUNn6+ah6/DcG+xDJma79gi+3RTEgGsUn8hGPCEdx1gUYFM4a7AT+MsSi4YMOL+9CLG5Id9xtw==} - peerDependencies: - '@codemirror/state': ^6.4.1 - '@codemirror/view': ^6.26.1 - - '@coze-editor/extension-json-ast@0.1.0-alpha.868621': - resolution: {integrity: sha512-oFWfRqXo2xtrbP180MhFAoj6MbGke30aNEJzITdDE+ULPOnkgcg3yc0V5ZYW7NDlQKEWvQfLNEhJezpbMLXoTA==} - peerDependencies: - '@codemirror/state': ^6.4.1 - '@codemirror/view': ^6.26.1 - - '@coze-editor/extension-json-empty-string-value-completion@0.1.0-alpha.868621': - resolution: {integrity: sha512-pLMNaUYOF5Xky1xHrGxMpTttwDdgE1XFYYCdbvY/SW0cHlGcFLt7tG1QDnkVQ4NRNWD72bRoJYEG70C3UtIxhg==} - peerDependencies: - '@codemirror/state': ^6.4.1 - '@codemirror/view': ^6.26.1 - - '@coze-editor/extension-json-hover@0.1.0-alpha.868621': - resolution: {integrity: sha512-rupoEE5P6MkrwHgT8logYoJlRwTA/aY+yHbyr3vorc5RcVigooxphMNrtITiVJphpRftKj+HaRBoRNpnZ66tNw==} - peerDependencies: - '@codemirror/state': ^6.4.1 - '@codemirror/view': ^6.26.1 - - '@coze-editor/extension-json-unnecessary-properties@0.1.0-alpha.868621': - resolution: {integrity: sha512-QQBiNJTWYHQ2pWKwqT1+Z1zvDSd6QpPpPLs/UFrPzQVUgh8o+CrXUe/C9GZK3o5aTjeZmDmgZWd67XR7zdLckA==} - peerDependencies: - '@codemirror/state': ^6.4.1 - '@codemirror/view': ^6.26.1 - - '@coze-editor/extension-links@0.1.0-alpha.868621': - resolution: {integrity: sha512-v9+WheHGJB6fjvyhgTOEAC6IfLnqlxhJFHlOe4cjIRa/A+WmyVFy628g2KlbCHJ9n3JSRhMN8AR2WFU+omGvWw==} - peerDependencies: - '@codemirror/state': ^6.4.1 - '@codemirror/view': ^6.26.1 - - '@coze-editor/extension-lint@0.1.0-alpha.868621': - resolution: {integrity: sha512-YgO5bDSNQMM3ZKbr0fF1A7PZ91q/wceZtLGOTxUgxV/iMxs1WhSAgiUm8qL4QoonNZ4fqe6iGedjAFKl499VjA==} - peerDependencies: - '@codemirror/state': ^6.4.1 - '@codemirror/view': ^6.26.1 - - '@coze-editor/extension-placeholder@0.1.0-alpha.868621': - resolution: {integrity: sha512-FdnIjDRBzVErJ5zdefiKUqynbbtNXYDaRd9dP4htX4Mk2dHZOTcO7abAg74Aqrv1iIO1C/hsHZwAPtj2igfhpA==} - peerDependencies: - '@codemirror/state': ^6.4.1 - '@codemirror/view': ^6.26.1 - - '@coze-editor/extension-regexp-decorator@0.1.0-alpha.868621': - resolution: {integrity: sha512-q3keVCFvXxhnKCjWbj7wccMMFi7RtPwFTCNTqm078upBA5FqBOabjjfm9XYeMeqFPfj13Dj+QYl1glQ1POrXkw==} - peerDependencies: - '@codemirror/state': ^6.4.1 - '@codemirror/view': ^6.26.1 - - '@coze-editor/extension-scrollbar@0.1.0-alpha.868621': - resolution: {integrity: sha512-3iNR3bwJlge2XmkwqiT9GRRa+6HaxaG8A9pThu/atXGrSqob0/xOUIJHz/2Zl/9hvEv28pwdE5BGgci1CQ8I3A==} - peerDependencies: - '@codemirror/state': ^6.4.1 - '@codemirror/view': ^6.26.1 - - '@coze-editor/extensions@0.1.0-alpha.868621': - resolution: {integrity: sha512-wSHUr9FoTtYihX97ExDto4wR9m/zqzX4ehEFgM3BM++/m7bLduP4BLJFEpz5UTYWNe7Poy2bhgTps0+vrnOxbA==} - peerDependencies: - '@codemirror/language': ^6.0.0 - '@codemirror/state': ^6.4.1 - '@codemirror/view': ^6.26.1 - - '@coze-editor/lezer-parser-jinja2@0.1.0-alpha.868621': - resolution: {integrity: sha512-/0UHn/jYOCr4O4MPmh40kQLm+0oatPpkA3Db/eOfvxixXuGdf9opaKLreCJMKAGW9zk2IFUn0ApzzbR+ylm+HQ==} - - '@coze-editor/lezer-parser-json@0.1.0-alpha.868621': - resolution: {integrity: sha512-obdwpIIWmCbmk85YsYe4S1UR6XQl3LjiRvsHOTHkVx3d55C5YZtIGi35t+GRV4eWKxWKLXCe7b0ymnzt0K1GxA==} - - '@coze-editor/lezer-parser-template@0.1.0-alpha.868621': - resolution: {integrity: sha512-IM7tIYy+ffaEfbbdZ017jLvmU/4Syh7yC08RivTYWQE2SRumOwQc/mA1Bwvd+eQP6aoXnjT1bwbNXNh32Rh35g==} - - '@coze-editor/parser-json@0.1.0-alpha.868621': - resolution: {integrity: sha512-EUQBEXQSstMoeEfzuM5F/Hp244y6CfnPBM+tfvXv6KK6QgiTHML8E85ZkpnMU83EctoqvKyPo+XADEAfA06jIQ==} - - '@coze-editor/preset-code@0.1.0-alpha.868621': - resolution: {integrity: sha512-Z+8YQ6H27QhwBbveigi+PYHJl+4BZH9+StwBs2OQR/bmt3r4fPcxjXjTJcoDeEOxUt342rtahIp2TgKFONruQA==} - peerDependencies: - '@codemirror/commands': ^6.3.3 - '@codemirror/state': ^6.4.1 - '@codemirror/view': ^6.26.1 - '@coze-editor/code-language-shared': 0.1.0-alpha.868621 - - '@coze-editor/preset-expression@0.1.0-alpha.868621': - resolution: {integrity: sha512-Nm/ZK4CLkvRgHsOrMeXKbP5nciWUhTt6/lsdNke9JDSRWJ0E3/jwctsvQDKrobS/Y3HHXSeklApCUdKAa4tmLw==} - peerDependencies: - '@codemirror/commands': ^6.3.3 - '@codemirror/state': ^6.4.1 - '@codemirror/view': ^6.26.1 - - '@coze-editor/preset-none@0.1.0-alpha.868621': - resolution: {integrity: sha512-Lxj9uEeJxbUGn471TdbKvjePdUsagcgss+2kPyZNhuM9yUEBvbMwg6y08Q9juvSsRwEjEddyOgQUM1r+xtaU1g==} - peerDependencies: - '@codemirror/state': ^6.4.1 - '@codemirror/view': ^6.26.1 - - '@coze-editor/preset-prompt@0.1.0-alpha.868621': - resolution: {integrity: sha512-xvtBWVKGSyR+j48r0ekEeBDdYsjC4EuGVBPRRYRWyUhupmljLjjVE8vL+kmJdcMIs5PRHPodg1rNYAkXErNzjQ==} - peerDependencies: - '@codemirror/state': ^6.4.1 - '@codemirror/view': ^6.26.1 - - '@coze-editor/preset-universal@0.1.0-alpha.868621': - resolution: {integrity: sha512-urmFGBAbpGovGF7d1aXvNJaoY9c6JsxgA9ttTdyOIGaHlH40RiUOQOdVKLHuJRdZqDS5sUVVwuU2D72WqwPudg==} - peerDependencies: - '@codemirror/state': ^6.4.1 - '@codemirror/view': ^6.26.1 - - '@coze-editor/preset-variable@0.1.0-alpha.868621': - resolution: {integrity: sha512-QjLMf4zPLGBMPbpMjjOyWHaSWkdUB58TNC4xlVhAL9tf1w0j1Iigz21O53EjNCdxIJqB6xMcbFmC8ckos+drrg==} - peerDependencies: - '@codemirror/commands': ^6.3.3 - '@codemirror/state': ^6.4.1 - '@codemirror/view': ^6.26.1 - - '@coze-editor/react-components@0.1.0-alpha.868621': - resolution: {integrity: sha512-kyshX8vcqp5qFfHNJt4TI8sXD8IIXGoApGUz3GhJYjfWf34HTI75r8Us11sMJKvhx5tVs6+Ulk0tMH8nD2e3Cg==} - peerDependencies: - '@codemirror/state': ^6.4.1 - '@codemirror/view': ^6.26.1 - '@coze-editor/react': 0.1.0-alpha.868621 - react: '>=16.8' - react-dom: '>=16.8' - - '@coze-editor/react-hooks@0.1.0-alpha.868621': - resolution: {integrity: sha512-VjQtL8pQW5BF1e+sIZlj8GNR4E/KacuPxNGn9D4VOI13bLD+8DDqvxEiURQpcCsX5/A7+AJFKTpwTi97pbVkJQ==} - peerDependencies: - '@codemirror/commands': ^6.3.3 - '@codemirror/state': ^6.4.1 - '@codemirror/view': ^6.26.1 - '@coze-editor/react': 0.1.0-alpha.868621 - react: '>=16.8' - react-dom: '>=16.8' - - '@coze-editor/react-merge@0.1.0-alpha.868621': - resolution: {integrity: sha512-VTYUJ5DqCuJaPThuCD4OcGs7IK5HkBx5Fdq0hMBX/BEau7q4rQkKpihj2lyqKJ2O4jiJW8FkFPma0hmRFSLMnQ==} - peerDependencies: - '@codemirror/merge': ^6.10.0 - '@codemirror/state': ^6.4.1 - '@codemirror/view': ^6.26.1 - '@coze-editor/react': 0.1.0-alpha.868621 - react: '>=16.8' - react-dom: '>=16.8' - - '@coze-editor/react@0.1.0-alpha.868621': - resolution: {integrity: sha512-hMkqiPwEWZHf2sbiOd1us2llG9fKm3BC7S1JiSXWu/0nqZbCPKlScxwawwWiL5W5ZVCH/f/CB/zzeGWHfyuanw==} - peerDependencies: - '@codemirror/state': ^6.4.1 - '@codemirror/view': ^6.26.1 - react: '>=16.8' - react-dom: '>=16.8' - - '@coze-editor/utils@0.1.0-alpha.868621': - resolution: {integrity: sha512-0JTtT71PSDNBrIl5f0SIio0QeXPU7WkqUxMbJSLraTVqAPXTwBt2yfQoXqcb4st4Dx/J3PehZR0hMnLLz9jPVA==} - peerDependencies: - '@codemirror/state': ^6.4.1 - '@codemirror/view': ^6.26.1 - '@lezer/common': ^1.2.2 - - '@coze-editor/vscode@0.1.0-alpha.868621': - resolution: {integrity: sha512-JokGr03hkb6bWv5QFxr/itJ95sBpcj1ZR2wcETOyoVFY1XivP46BGQjJPiwFvsw1+wNcVXUdzvPmyp7uaOukNQ==} - peerDependencies: - '@codemirror/state': ^6.4.1 - '@codemirror/view': ^6.26.1 - - '@coze-editor/vue-components@0.1.0-alpha.868621': - resolution: {integrity: sha512-tm0woNS95HDFZG1ovnDpBkQCNeZTGsGFD7qVQBROmIcbGonHkR+a522gA6RCtzAKE35LigdWzH49usDPDTXe9g==} - peerDependencies: - '@codemirror/state': ^6.4.1 - '@codemirror/view': ^6.26.1 - '@coze-editor/vue': 0.1.0-alpha.868621 - vue: ^3.5.0 - - '@coze-editor/vue@0.1.0-alpha.868621': - resolution: {integrity: sha512-ODYDWtccDDRICvhtEXRXXadlMo5ZEx4p0X7RCyTN3EKKky8zrYFBo/Ke1kHpZjtalFnLf4Mx8SmInZx/mFJy7Q==} - peerDependencies: - '@codemirror/state': ^6.4.1 - '@codemirror/view': ^6.26.1 - vue: ^3.5.0 - - '@cspotcode/source-map-support@0.8.1': - resolution: {integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==} - engines: {node: '>=12'} - - '@dagrejs/graphlib@2.2.2': - resolution: {integrity: sha512-CbyGpCDKsiTg/wuk79S7Muoj8mghDGAESWGxcSyhHX5jD35vYMBZochYVFzlHxynpE9unpu6O+4ZuhrLxASsOg==} - engines: {node: '>17.0.0'} - - '@dnd-kit/accessibility@3.1.1': - resolution: {integrity: sha512-2P+YgaXF+gRsIihwwY1gCsQSYnu9Zyj2py8kY5fFvUM1qm2WA2u639R6YNVfU4GWr+ZM5mqEsfHZZLoRONbemw==} - peerDependencies: - react: '>=16.8.0' - - '@dnd-kit/core@6.3.1': - resolution: {integrity: sha512-xkGBRQQab4RLwgXxoqETICr6S5JlogafbhNsidmrkVv2YRs5MLwpjoF2qpiGjQt8S9AoxtIV603s0GIUpY5eYQ==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' - - '@dnd-kit/sortable@7.0.2': - resolution: {integrity: sha512-wDkBHHf9iCi1veM834Gbk1429bd4lHX4RpAwT0y2cHLf246GAvU2sVw/oxWNpPKQNQRQaeGXhAVgrOl1IT+iyA==} - peerDependencies: - '@dnd-kit/core': ^6.0.7 - react: '>=16.8.0' - - '@dnd-kit/utilities@3.2.2': - resolution: {integrity: sha512-+MKAJEOfaBe5SmV6t34p80MMKhjvUz0vRrvVJbPT0WElzaOJ/1xs+D+KDv+tD/NE5ujfrChEcshd4fLn0wpiqg==} - peerDependencies: - react: '>=16.8.0' - - '@douyinfe/semi-animation-react@2.101.1': - resolution: {integrity: sha512-f4BFCjxaV+cVkppfFfrYkIczM+wFmms8qxWXwneFlLEz21tn6MK4OqO44zhiWhCQYgF0IVnaGNpAydlJUiJBrw==} - - '@douyinfe/semi-animation-styled@2.101.1': - resolution: {integrity: sha512-RzBZVW0PewmmaoLBatlUeWSBtQzbdU2KNW1urNBuHS3BQbYUnrhQ2JTVzsjw+j8aLW25nag9lzYNhwv/gOLOow==} - - '@douyinfe/semi-animation@2.101.1': - resolution: {integrity: sha512-y+0hrmy5emlyLIQ4YYakk6iQ4rxsU/YO/bocFMjPuIyqKGY33/4Gx7TU7eAEYF0BzVysXKkP7x/qN3bj5MdMJQ==} - - '@douyinfe/semi-foundation@2.101.1': - resolution: {integrity: sha512-RZTktugBGKZ1Bn78qcc783SL0RN02F4Q88fwYf5+QvUqJOoJYb9Hd7Jfxt0qZ/dD5EFRjdkgibGNXP+SKIf+oQ==} - - '@douyinfe/semi-icons@2.101.1': - resolution: {integrity: sha512-OS7JA3UOHi0v9I8EWaUM1XqNBaabs9A6++liW5ozfVmKrFFmJerq+sUj4yU7goe+QQN38snBx/39AyzlKjPSpA==} - peerDependencies: - react: '>=16.0.0' - - '@douyinfe/semi-illustrations@2.101.1': - resolution: {integrity: sha512-5BwBlTjfrNPfiY1R1fBWu+fOf5Mjg7zNZBbhh1TfGGIOQxjToVT4atBnJgZTUO2GnmxnRqpGPMmtJXQZwpSFZg==} - peerDependencies: - react: '>=16.0.0' - - '@douyinfe/semi-json-viewer-core@2.101.1': - resolution: {integrity: sha512-ulf5uGbpHzDXSbqx39Ddy2xCEcILjq22z0VLI8aLU0hrJfunZuulT3CssXwdJVsD4XpXkVP9/Us5IwlrWT0zaA==} - - '@douyinfe/semi-theme-default@2.101.1': - resolution: {integrity: sha512-Kc5VKPLWq2JCOnmtlFpdPyz+6CTZRjXTZhYMtHfB/szdYy8Gp8/ErygmFpXsZLITif7eoCTn+psEP6xZLKIt3w==} - - '@douyinfe/semi-ui@2.101.1': - resolution: {integrity: sha512-gyqdTws8rxtlwI6kpHV9HSHrSGGFTspdEC4cP333y7OzXPTIaXmF8R/OLGtULI/bl5DEq6AibgWVyEiEPIK+XQ==} - peerDependencies: - react: '>=16.0.0' - react-dom: '>=16.0.0' - - '@emnapi/core@1.10.0': - resolution: {integrity: sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==} - - '@emnapi/core@1.11.3': - resolution: {integrity: sha512-zLpS5asjEb7lq8jYLq37N6XKaE41DIexlY1rF/z4/tIl3wo13Sqm28fRyfIsKZD+NZ8mM5RoKkpW/rBcuoSZSg==} - - '@emnapi/runtime@1.10.0': - resolution: {integrity: sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==} - - '@emnapi/runtime@1.11.3': - resolution: {integrity: sha512-Xz4Tpyki7XyrpbUK1jR1AhdAdaXyhhY4lZ3neLodmhpuWfy2PAQN5B46sAiU4liOXGLkHypn/qU+jvfWSCYYLA==} - - '@emnapi/wasi-threads@1.2.1': - resolution: {integrity: sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==} - - '@emnapi/wasi-threads@1.2.3': - resolution: {integrity: sha512-ELEBe8PsLvvJ6QMr0zLt8ffvOHW/dc1m3CEzNMg7aJUv3bMaoDtw2TXyDAwkYBuroxxuHEwhRTLJSe5sya547g==} - - '@emotion/is-prop-valid@1.4.0': - resolution: {integrity: sha512-QgD4fyscGcbbKwJmqNvUMSE02OsHUa+lAWKdEUIJKgqe5IwRSKd7+KhibEWdaKwgjLj0DRSHA9biAIqGBk05lw==} - - '@emotion/memoize@0.9.0': - resolution: {integrity: sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==} - - '@emotion/stylis@0.8.5': - resolution: {integrity: sha512-h6KtPihKFn3T9fuIrwvXXUOwlx3rfUvfZIcP5a6rh8Y7zjE3O06hT5Ss4S/YI1AYhuZ1kjaE/5EaOOI2NqSylQ==} - - '@emotion/unitless@0.7.5': - resolution: {integrity: sha512-OWORNpfjMsSSUBVrRBVGECkhWcULOAJz9ZW8uK9qgxD+87M7jHRcvh/A96XXNhXTLmKcoYSQtBEX7lHMO7YRwg==} - - '@eslint-community/eslint-utils@4.10.1': - resolution: {integrity: sha512-cuadcxVFE8sDK6iWJbs8Sn0av2Nrh2QSGQhVlBW9AaAHqHwjWsZHT8LJ4hFGPh7ASBV2deFdM7H/DPjulmh8rg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - - '@eslint-community/regexpp@4.12.2': - resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==} - engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - - '@eslint/config-array@0.21.2': - resolution: {integrity: sha512-nJl2KGTlrf9GjLimgIru+V/mzgSK0ABCDQRvxw5BjURL7WfH5uoWmizbH7QB6MmnMBd8cIC9uceWnezL1VZWWw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/config-helpers@0.4.2': - resolution: {integrity: sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/core@0.17.0': - resolution: {integrity: sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/eslintrc@3.3.3': - resolution: {integrity: sha512-Kr+LPIUVKz2qkx1HAMH8q1q6azbqBAsXJUxBl/ODDuVPX45Z9DfwB8tPjTi6nNZ8BuM3nbJxC5zCAg5elnBUTQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/eslintrc@3.3.6': - resolution: {integrity: sha512-l2Ul9PrHsPCKcEY/ac7VgFj9D80C7S68sOKc618SyHDPK36s1XcFebXY0iTzUVn4Yq+YbwvSnDmCz9yxjX+QrA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/js@9.39.5': - resolution: {integrity: sha512-QywQuszQh77pIXCsq998c8hbhSTI/azTty1Z6N53dmAudKHhy573j3yvRLsX2BSp8YpLtoCEG8E9DJe+8zUh4A==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/object-schema@2.1.7': - resolution: {integrity: sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@eslint/plugin-kit@0.4.1': - resolution: {integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@floating-ui/core@1.8.0': - resolution: {integrity: sha512-0CIZ5itps/8x7BG8dEIhs53BvCUH2PCoogtakwRTut+Arm58sJooJ0AuZhLw2HJYIR5cMLNPBSS728sPho2khQ==} - - '@floating-ui/dom@1.8.0': - resolution: {integrity: sha512-yXSrzeHZBTZadLOlfyhCkJHNeLJnHRnRInwdZ40L7ZiaAtrBwoYlsDrX3v5zB1Utk7CLfzcOVnVVWoXEky7Ceg==} - - '@floating-ui/utils@0.2.12': - resolution: {integrity: sha512-HpCo8tmWzLVad5s2d19EhAz5zqrrQ6s69qd6moPMQvkOuSwDT1YgRfWSVuc4ennqrgv3OHppiOGMQ7oC13yIww==} - - '@flowgram.ai/background-plugin@1.0.12': - resolution: {integrity: sha512-KTod9Mj9BJQic230ACfgITCDK3auKfhF/PoNTXuXCSAqqLk53O/X3CavFMP1KAvDz9yf/vTKhXkaTaMO5qfpmw==} - peerDependencies: - react: '>=16.8' - react-dom: '>=16.8' - - '@flowgram.ai/command@1.0.12': - resolution: {integrity: sha512-ROWomDSxaeSwk8fh7b5DhMbe0SN+iInxJykHGIKy+nmn0cpRl25iRfmLU8J7HP5QQSu2mv7PzsJAZv23MGJiiA==} - peerDependencies: - react: '>=16.8' - react-dom: '>=16.8' - - '@flowgram.ai/core@1.0.12': - resolution: {integrity: sha512-fy29+NK9Jm2IryufWVu6tLRCmb2nuRYjl8aFaYeQG6X0Iuq5izrc37mjDJEsLu5yB5H+HvM4AXkjLkdO36cIoQ==} - peerDependencies: - react: '>=16.8' - react-dom: '>=16.8' - - '@flowgram.ai/coze-editor@1.0.12': - resolution: {integrity: sha512-ZuMEVmHNmLwltNqFWjGkihgwvN87svOqKYPHqq3YKJkTWJr/rE9VGTxVLHvl/CCpB7apC1Zj+2s2gz8Zr+TfTw==} - peerDependencies: - react: '>=16.8' - react-dom: '>=16.8' - styled-components: '>=5' - - '@flowgram.ai/document@1.0.12': - resolution: {integrity: sha512-d+mUhud20coxnzeNsRN2v9pFDctjZr5cxgme5yu5tb5JSwZySPYHDOyv3xWdsgkmrms/Fr7MSym2UXBSA4TNSw==} - - '@flowgram.ai/editor@1.0.12': - resolution: {integrity: sha512-AZ5QAPT1cVcNyCBB4IwTaQf16HkLo21+gZ6Z9YGZ+gTk5y/IGHApDcLr3zPPMQfNPZoWi8uBiy2JZqp7klMyJg==} - peerDependencies: - react: '>=16.8' - react-dom: '>=16.8' - - '@flowgram.ai/eslint-config@1.0.12': - resolution: {integrity: sha512-rBU9Fw5Tac57h0rH9BEMHCO22enCkim4BSl27hI5MtDy54p7n/nTTvXLgLR9/QbUsE+94N+YtXqPmmBuAU5S6Q==} - - '@flowgram.ai/export-plugin@1.0.12': - resolution: {integrity: sha512-cbNVavQT8MKNsgIciNOdSRCsdYOlfvMhZQu0F8sroGQhOsLyKK+aDbtmAvapF0GRxFY1Xu1kpaMp9o2nH7S0RQ==} - peerDependencies: - react: '>=16.8' - react-dom: '>=16.8' - - '@flowgram.ai/form-core@1.0.12': - resolution: {integrity: sha512-82gOu/55YigTsRW9X3H6EiTr3Lj30JoyNvhbGacevRvrTcLq9hOWCGRYmcOwfS5kxPZ0Lu3SmiVnXl0ZHJrllQ==} - peerDependencies: - react: '>=16.8' - react-dom: '>=16.8' - - '@flowgram.ai/form-materials@1.0.12': - resolution: {integrity: sha512-EX9r0sFax+ECA9EM2hUGyrqw1euyi4qmg7asYZZnN4KFS9pukDb9zISo9yGUD5gn1ZDPlX1HSTNIUYS5ZupmuA==} - hasBin: true - peerDependencies: - react: '>=16.8' - react-dom: '>=16.8' - - '@flowgram.ai/form@1.0.12': - resolution: {integrity: sha512-frdzRrjQpaX4DRRyT3kc/+v58h5K2glBWp7Vc9STgxZahkfbaBnTsKlc7diRiCwf7wGzqucJZOk2NlpxZMzRBQ==} - peerDependencies: - react: '>=16.8' - react-dom: '>=16.8' - - '@flowgram.ai/free-auto-layout-plugin@1.0.12': - resolution: {integrity: sha512-H474wsLqD7sLIFqbkKPa8+V8P+xbgm0yx6J3CHbJb0iRJeGrnevixMDH3WQKSwn2QZWSDIviLrQtgeuBj+rj4g==} - peerDependencies: - react: '>=16.8' - react-dom: '>=16.8' - styled-components: '>=5' - - '@flowgram.ai/free-container-plugin@1.0.12': - resolution: {integrity: sha512-G0i8YSRfN/vMuNB1h71Dv36vhQv95jXj8o1TDHpIvRn54he3e/BCFgXXy2Mxdnh2gmEVWkij0UENZ5H0BcpepA==} - peerDependencies: - react: '>=16.8' - react-dom: '>=16.8' - styled-components: '>=5' - - '@flowgram.ai/free-group-plugin@1.0.12': - resolution: {integrity: sha512-rzOGmKrdNAtUOF4pyqAdQj4ugpP9Nvvx1U597XC2hYRCNLDzpuBS+9vGvtNYcGM+JSEHuj/RQjbBRQUIgLevkw==} - peerDependencies: - react: '>=16.8' - react-dom: '>=16.8' - - '@flowgram.ai/free-history-plugin@1.0.12': - resolution: {integrity: sha512-EOn9Q6wFMTUoY5zD2dIDGvlSqleiO3JilbcagrKvDx5m+C3M58S9rN9dfm9zIMiwbiRA4u6R11a+mHd0e+kehw==} - peerDependencies: - react: '>=16.8' - react-dom: '>=16.8' - - '@flowgram.ai/free-hover-plugin@1.0.12': - resolution: {integrity: sha512-Nh0jQx3Fz89YsPPe2H+TVuKFfLz6zxgDWej8nx3DFFfTEPfU77gvF1GkMQI2MY74N5JpJvRyhu+T6nPavg0lMw==} - peerDependencies: - react: '>=16.8' - react-dom: '>=16.8' - - '@flowgram.ai/free-layout-core@1.0.12': - resolution: {integrity: sha512-aXzgOtayN8ShnhLyO4ntqr1w3u5rtCEo6EHUD8qY/xwOfdHDKHesfs7KilBFlsViDncT9jICuABu5Vwj9ka8wQ==} - peerDependencies: - react: '>=16.8' - react-dom: '>=16.8' - - '@flowgram.ai/free-layout-editor@1.0.12': - resolution: {integrity: sha512-pykp/78gXWOSGM6Ccol8c7i5i2TCGBC6FqrUMq8ilqo2FNfPpmjpS+2ELlSY72ym+DF8I54sq4Vy86XOcZd+sg==} - peerDependencies: - react: '>=16.8' - react-dom: '>=16.8' - - '@flowgram.ai/free-lines-plugin@1.0.12': - resolution: {integrity: sha512-zACr8PxSHLIDFP4yTZ4oiIGmMbdIWU/3aM0l2GzuQHsOLAWwIEOxIrUMlhq1+CQ+EISR39LYES9UwBxT7Y5ACg==} - peerDependencies: - react: '>=16.8' - react-dom: '>=16.8' - styled-components: '>=5' - - '@flowgram.ai/free-node-panel-plugin@1.0.12': - resolution: {integrity: sha512-E6RI6Dtq/yef1oSn01TlwZ79YdtQJ0ZQN3FUFZnB1E/3Jmi6S74TlDLvELrwDVP8LFbPMGhoQwZWvZkpKyYIlg==} - peerDependencies: - react: '>=16.8' - react-dom: '>=16.8' - - '@flowgram.ai/free-snap-plugin@1.0.12': - resolution: {integrity: sha512-DwKC/bivW9pjAalnDRNAN61j5cp/k75ym5YwwxYS0ONj85dPdD23F/auD0Kr31u3WfRAhqOotMRFzDOiexdg7A==} - peerDependencies: - react: '>=16.8' - react-dom: '>=16.8' - styled-components: '>=5' - - '@flowgram.ai/free-stack-plugin@1.0.12': - resolution: {integrity: sha512-ecoVJL0NahKUdZwucELbhpaRnfwMTuoeoDNwXVTOX5ZdL0pwS5KxX/fTa2dMLQNiY3Tmrcf+wnKmmmj4/n7zDw==} - peerDependencies: - react: '>=16.8' - react-dom: '>=16.8' - styled-components: '>=5' - - '@flowgram.ai/history-node-plugin@1.0.12': - resolution: {integrity: sha512-eJ+CaeuZVMGo7XFMB5OaN7ukKFB4aJB15Mg+NZ5YVgKDOF8bPW5PTuQlVtJfEt/Vi/xnzxx+zPPe8nUsbu+qXw==} - peerDependencies: - react: '>=16.8' - react-dom: '>=16.8' - - '@flowgram.ai/history@1.0.12': - resolution: {integrity: sha512-q+Zb7dwHIOGE9jJ6whZ2cf4EJ2e9LweAYYX0YR0o4p85XUcGHNM6AG3lrZZJ77+351FkEHILWRTIQe4+l/Y9iA==} - - '@flowgram.ai/i18n-plugin@1.0.12': - resolution: {integrity: sha512-3t8Ohy68SOWVCoaLxMI7BUltc5yIMMYIGwioeNN9D/C4QCnATQ1s0gtA4RhUQ+ATRXTd0ZTqCDKmHpjJI9MDsg==} - - '@flowgram.ai/i18n@1.0.12': - resolution: {integrity: sha512-jUJeP1SA0pDCoDKXO2qwnIftjypyH4F9QiCmSi7uAJoxB+4/d7cU/OwdWVMAsfbqk8cmvXa1OMa4h4UK7/ApXg==} - - '@flowgram.ai/json-schema@1.0.12': - resolution: {integrity: sha512-aNf3fpEayHiHsCbhBw0LgE3mzT2wys04RcGCdPV8kFbD7JHCUJMC3CkKpATldoSQ3uQdBHoWX43T/Zc4y2eVdw==} - peerDependencies: - react: '>=16.8' - react-dom: '>=16.8' - - '@flowgram.ai/materials-plugin@1.0.12': - resolution: {integrity: sha512-1UhatD5KhdrxQjfVGunVsDDXJiB7/LlfYy/fqTEn8Na846fvVyjlYZkGKHlhZD4QW7Ob6ZKVNpp4PZvvfn7f7g==} - peerDependencies: - react: '>=16.8' - react-dom: '>=16.8' - - '@flowgram.ai/minimap-plugin@1.0.12': - resolution: {integrity: sha512-vUDLE4yb2cBc8bUPqRWGhDkl4xlzXFJEozHwLLNa/Qg3RRqLEziRh8PN2Btll+/VH89tW/EYuV8aygS3XS7AZA==} - peerDependencies: - react: '>=16.8' - react-dom: '>=16.8' - - '@flowgram.ai/node-core-plugin@1.0.12': - resolution: {integrity: sha512-FwqTVq8bFht1KumZukV4Cfv/PijTAi+Go/263zVcMcAaXykyAqmuDEIJbXYE8JdzyXahPXVtnZvLKGD+Y+0HfA==} - peerDependencies: - react: '>=16.8' - react-dom: '>=16.8' - - '@flowgram.ai/node-variable-plugin@1.0.12': - resolution: {integrity: sha512-trUlKR1X9zGHKa42sUampVyVkDlqk+9u0+D5N9ZDBs39D1NbG6cFZPg9j5LquDy1P7HX184AA8d5RJoCkGGYcQ==} - peerDependencies: - react: '>=16.8' - react-dom: '>=16.8' - - '@flowgram.ai/node@1.0.12': - resolution: {integrity: sha512-Idi8zw9pEUnboQLYzui2MBRjovYR+gMuTmYK4iNQj/4TDMIbEnbTj32JMK2Ynirs4uPDeLlXYlmbVIva7M9dEw==} - peerDependencies: - react: '>=16.8' - react-dom: '>=16.8' - - '@flowgram.ai/panel-manager-plugin@1.0.12': - resolution: {integrity: sha512-d8cfEjFXCZv1q1g5DYZhJt1NOk5NMnYeW3R5RSXsIUoxIzm2n3moo5R6oXw3Yq+TkQznW+pWVewMbibzkW7jzQ==} - peerDependencies: - react: '>=16.8' - react-dom: '>=16.8' - peerDependenciesMeta: - react: - optional: true - - '@flowgram.ai/playground-react@1.0.12': - resolution: {integrity: sha512-d+pvHVOSscJyWnNmxFQ6JxXAjtwcAFekiwtWlpXhqe3B+ZZKEKloNkoBsrfvIT4I0aq19LUCZHo8H9PbuH47Fw==} - peerDependencies: - react: '>=16.8' - react-dom: '>=16.8' - - '@flowgram.ai/reactive@1.0.12': - resolution: {integrity: sha512-Ogjk6Tx/CIMTal+9y6x487RrC2+s6Li7EDyjQa+sh1PhossyxtneTDlDtuZGv6mjsswpYxtYc6zp4xBrJVFkLQ==} - peerDependencies: - react: '>=16.8' - react-dom: '>=16.8' - - '@flowgram.ai/redux-devtool-plugin@1.0.12': - resolution: {integrity: sha512-53nawjFncdgalFtbKtr3/9jq+BcSMgbBvCkJQQxWofaihhn+jE9NEhiDherOdouKSb/rU9uS+VuHrXLJP+uQ5w==} - - '@flowgram.ai/renderer@1.0.12': - resolution: {integrity: sha512-6LMlYbMXQOWYm+0pAkNRqZSAt5LJD2QvBTuRPsGvuwOOcsBjj2Yo7eLBKrFGcM4uDU7T55hd+JAfXZvd6NfVhQ==} - peerDependencies: - react: '>=16.8' - react-dom: '>=16.8' - - '@flowgram.ai/runtime-interface@1.0.12': - resolution: {integrity: sha512-+yg1Ue4uRZSkAmUSn05TVjdiIVCVENcTLrQ8i95QuxmlJ9+aDAhL765XNP53PlYXRkbkD2MR+OePRWmrvHpudA==} - - '@flowgram.ai/runtime-js@1.0.12': - resolution: {integrity: sha512-X4cpSUS639VkMS9SYrCa0bXznym7sgZj/rKbD+LBTvQz0Er9g9yiBv3/v2wEaDuOm1BBfWHbZGMJRWEFzhG0aw==} - - '@flowgram.ai/select-box-plugin@1.0.12': - resolution: {integrity: sha512-smfWeYxiKeyQNoEZL3/8P21eabJHnX7iQgaciVJCeQCwoLWRp3TbBHTXComjHEJylX37MKoqy/VLebIZwVWfkw==} - peerDependencies: - react: '>=16.8' - react-dom: '>=16.8' - - '@flowgram.ai/shortcuts-plugin@1.0.12': - resolution: {integrity: sha512-JDLX5t0ZU1djQj3OKVaH8WWEdYEy4w7hJic3E7jFm/Pul3oSexKOGQPHDeWjGXnJwDl/MfnCbjjGNbMKadVgOg==} - - '@flowgram.ai/ts-config@1.0.12': - resolution: {integrity: sha512-vByk99qkt1CRFSYbA68kZbd4Q/99f1poxFNV/U8kcrCra5/tCnXBTRMDulnCo2JlSlC4Hn0A6LBTE7tc5Kv4MA==} - - '@flowgram.ai/utils@1.0.12': - resolution: {integrity: sha512-TFATCldddWGaWmgPKocfjuqhC1C80VYCUI5IReqWci9x9yvG+MU8DXNoeWJLwK8D4KG9F6njxWsMeWy7x/kvPQ==} - peerDependencies: - react: '>=16.8' - react-dom: '>=16.8' - - '@flowgram.ai/variable-core@1.0.12': - resolution: {integrity: sha512-UhOeq1jcil/B+8J6qzWwBvlBOHbYLnqJ2x7oxzikNC+LsJimSuTF7p149/vmMedmmq8TyidvRTbwHKLdlLDidA==} - peerDependencies: - react: '>=16.8' - react-dom: '>=16.8' - - '@flowgram.ai/variable-layout@1.0.12': - resolution: {integrity: sha512-nWb/sc5mnKL7z8iJJNFhQ7EaI0yGu94kuQfDS5RBwuqXwPpI0k3jNAA9EbI5LSaiTBIUkDBzwRT+wNCHGS6KTg==} - - '@flowgram.ai/variable-plugin@1.0.12': - resolution: {integrity: sha512-yfUgzJFxy16WA8QvW/Eb/7vRz664xZ8Ib62f3IsNR3CH3e5v/1mw23H/uj4U7nHXk30hHpfGidy9PLXDywYFVg==} - - '@humanfs/core@0.19.2': - resolution: {integrity: sha512-UhXNm+CFMWcbChXywFwkmhqjs3PRCmcSa/hfBgLIb7oQ5HNb1wS0icWsGtSAUNgefHeI+eBrA8I1fxmbHsGdvA==} - engines: {node: '>=18.18.0'} - - '@humanfs/node@0.16.8': - resolution: {integrity: sha512-gE1eQNZ3R++kTzFUpdGlpmy8kDZD/MLyHqDwqjkVQI0JMdI1D51sy1H958PNXYkM2rAac7e5/CnIKZrHtPh3BQ==} - engines: {node: '>=18.18.0'} - - '@humanfs/types@0.15.0': - resolution: {integrity: sha512-ZZ1w0aoQkwuUuC7Yf+7sdeaNfqQiiLcSRbfI08oAxqLtpXQr9AIVX7Ay7HLDuiLYAaFPu8oBYNq/QIi9URHJ3Q==} - engines: {node: '>=18.18.0'} - - '@humanwhocodes/module-importer@1.0.1': - resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} - engines: {node: '>=12.22'} - - '@humanwhocodes/retry@0.4.3': - resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} - engines: {node: '>=18.18'} - - '@inversifyjs/common@1.4.0': - resolution: {integrity: sha512-qfRJ/3iOlCL/VfJq8+4o5X4oA14cZSBbpAmHsYj8EsIit1xDndoOl0xKOyglKtQD4u4gdNVxMHx4RWARk/I4QA==} - - '@inversifyjs/core@1.3.5': - resolution: {integrity: sha512-B4MFXabhNTAmrfgB+yeD6wd/GIvmvWC6IQ8Rh/j2C3Ix69kmqwz9pr8Jt3E+Nho9aEHOQCZaGmrALgtqRd+oEQ==} - - '@inversifyjs/reflect-metadata-utils@0.2.4': - resolution: {integrity: sha512-u95rV3lKfG+NT2Uy/5vNzoDujos8vN8O18SSA5UyhxsGYd4GLQn/eUsGXfOsfa7m34eKrDelTKRUX1m/BcNX5w==} - peerDependencies: - reflect-metadata: 0.2.2 - - '@jitl/quickjs-ffi-types@0.32.0': - resolution: {integrity: sha512-v9T+GQpmk43VDJ7d72sf0Nexhk+ArvtUihW27dy7lqAl0zBObFKtSBBIm5RBjwIhE8VwsPPm9PNuvPvNqLWUEg==} - - '@jitl/quickjs-wasmfile-debug-asyncify@0.32.0': - resolution: {integrity: sha512-EX8zbXwGqCgAE764M+qvkHtyXDi/FUoMBea0JnES7vCM3P7a2+EOZOjGv85wtZ2sJhI1oJ+nekmqpOODFDY+hw==} - - '@jitl/quickjs-wasmfile-debug-sync@0.32.0': - resolution: {integrity: sha512-LeYWrPGC1uNCTBWvibo3ZLJj0CSVNYUXvJpXMCmuQ5Sap2cCACc3uvGvYV4homHHBAzfw5akoTqMMS4YFRtw+Q==} - - '@jitl/quickjs-wasmfile-release-asyncify@0.32.0': - resolution: {integrity: sha512-3oSwPfja12ICz4aIblB58cuY8JlEq5Txt8Cut4VLo+LH47QN+mzCnSgnbB03hWzg1LBcc+VyyI9UOag7a1NF+Q==} - - '@jitl/quickjs-wasmfile-release-sync@0.32.0': - resolution: {integrity: sha512-BKNDI/TPBfGlLNGYpLrhcDGXmIk4xHm4MRAisOBnOzpXVn9HZWsfmMAc9WMBrAHjvvds6HOikKeaOBKdPdpVrg==} - - '@jridgewell/gen-mapping@0.3.13': - resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} - - '@jridgewell/resolve-uri@3.1.2': - resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} - engines: {node: '>=6.0.0'} - - '@jridgewell/sourcemap-codec@1.5.5': - resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} - - '@jridgewell/trace-mapping@0.3.31': - resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} - - '@jridgewell/trace-mapping@0.3.9': - resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==} - - '@langchain/core@0.3.80': - resolution: {integrity: sha512-vcJDV2vk1AlCwSh3aBm/urQ1ZrlXFFBocv11bz/NBUfLWD5/UDNMzwPdaAd2dKvNmTWa9FM2lirLU3+JCf4cRA==} - engines: {node: '>=18'} - - '@langchain/openai@0.5.18': - resolution: {integrity: sha512-CX1kOTbT5xVFNdtLjnM0GIYNf+P7oMSu+dGCFxxWRa3dZwWiuyuBXCm+dToUGxDLnsHuV1bKBtIzrY1mLq/A1Q==} - engines: {node: '>=18'} - peerDependencies: - '@langchain/core': '>=0.3.58 <0.4.0' - - '@lezer/common@1.5.2': - resolution: {integrity: sha512-sxQE460fPZyU3sdc8lafxiPwJHBzZRy/udNFynGQky1SePYBdhkBl1kOagA9uT3pxR8K09bOrmTUqA9wb/PjSQ==} - - '@lezer/highlight@1.2.3': - resolution: {integrity: sha512-qXdH7UqTvGfdVBINrgKhDsVTJTxactNNxLk7+UMwZhU13lMHaOBlJe9Vqp907ya56Y3+ed2tlqzys7jDkTmW0g==} - - '@lezer/html@1.3.13': - resolution: {integrity: sha512-oI7n6NJml729m7pjm9lvLvmXbdoMoi2f+1pwSDJkl9d68zGr7a9Btz8NdHTGQZtW2DA25ybeuv/SyDb9D5tseg==} - - '@lezer/javascript@1.5.4': - resolution: {integrity: sha512-vvYx3MhWqeZtGPwDStM2dwgljd5smolYD2lR2UyFcHfxbBQebqx8yjmFmxtJ/E6nN6u1D9srOiVWm3Rb4tmcUA==} - - '@lezer/json@1.0.3': - resolution: {integrity: sha512-BP9KzdF9Y35PDpv04r0VeSTKDeox5vVr3efE7eBbx3r4s3oNLfunchejZhjArmeieBH+nVOpgIiBJpEAv8ilqQ==} - - '@lezer/lr@1.4.10': - resolution: {integrity: sha512-rnCpTIBafOx4mRp43xOxDJbFipJm/c0cia/V5TiGlhmMa+wsSdoGmUN3w5Bqrks/09Q/D4tNAmWaT8p6NRi77A==} - - '@lezer/markdown@1.7.2': - resolution: {integrity: sha512-iTkYvoVcKt3WkeL7qUDyXHONZEwLio4wj8KTNi2dnjQEXBZKMV63BpQrPqfsM+OkvuRbiSTAcycYAsQzLhRNoQ==} - - '@lezer/python@1.1.19': - resolution: {integrity: sha512-MhQIURHRytsNzP/YXnqpYKW6la6voAH3kyplTOOiCdjyFY6cWWGFVmYVdHIPrElqSDf4iCDktQCockB9FxuhzQ==} - - '@lukeed/csprng@1.1.0': - resolution: {integrity: sha512-Z7C/xXCiGWsg0KuKsHTKJxbWhpI3Vs5GwLfOean7MGyVFGqdRgBbAjOCh6u4bbjPc/8MJ2pZmK/0DLdCbivLDA==} - engines: {node: '>=8'} - - '@lukeed/uuid@2.0.1': - resolution: {integrity: sha512-qC72D4+CDdjGqJvkFMMEAtancHUQ7/d/tAiHf64z8MopFDmcrtbcJuerDtFceuAfQJ2pDSfCKCtbqoGBNnwg0w==} - engines: {node: '>=8'} - - '@marijn/find-cluster-break@1.0.3': - resolution: {integrity: sha512-FY+MKLBoTsLNJF/eLWaOsXGdz6uh3Iu1axjPf6TUq92IYumcTcXWHoS747JARLkcdlJ/Waiaxc5wQfFO8jC6NA==} - - '@mdx-js/mdx@3.1.1': - resolution: {integrity: sha512-f6ZO2ifpwAQIpzGWaBQT2TXxPv6z3RBzQKpVftEWN78Vl/YweF1uwussDx8ECAXVtr3Rs89fKyG9YlzUs9DyGQ==} - - '@microsoft/tsdoc-config@0.16.2': - resolution: {integrity: sha512-OGiIzzoBLgWWR0UdRJX98oYO+XKGf7tiK4Zk6tQ/E4IJqGCe7dvkTvgDZV5cFJUzLGDOjeAXrnZoA6QkVySuxw==} - - '@microsoft/tsdoc@0.14.2': - resolution: {integrity: sha512-9b8mPpKrfeGRuhFH5iO1iwCLeIIsV6+H1sRfxbkoGXIyQE2BTsPd9zqSqQJ+pv5sJ/hT5M1zvOFL02MnEezFug==} - - '@module-federation/error-codes@0.22.0': - resolution: {integrity: sha512-xF9SjnEy7vTdx+xekjPCV5cIHOGCkdn3pIxo9vU7gEZMIw0SvAEdsy6Uh17xaCpm8V0FWvR0SZoK9Ik6jGOaug==} - - '@module-federation/runtime-core@0.22.0': - resolution: {integrity: sha512-GR1TcD6/s7zqItfhC87zAp30PqzvceoeDGYTgF3Vx2TXvsfDrhP6Qw9T4vudDQL3uJRne6t7CzdT29YyVxlgIA==} - - '@module-federation/runtime-tools@0.22.0': - resolution: {integrity: sha512-4ScUJ/aUfEernb+4PbLdhM/c60VHl698Gn1gY21m9vyC1Ucn69fPCA1y2EwcCB7IItseRMoNhdcWQnzt/OPCNA==} - - '@module-federation/runtime@0.22.0': - resolution: {integrity: sha512-38g5iPju2tPC3KHMPxRKmy4k4onNp6ypFPS1eKGsNLUkXgHsPMBFqAjDw96iEcjri91BrahG4XcdyKi97xZzlA==} - - '@module-federation/sdk@0.22.0': - resolution: {integrity: sha512-x4aFNBKn2KVQRuNVC5A7SnrSCSqyfIWmm1DvubjbO9iKFe7ith5niw8dqSFBekYBg2Fwy+eMg4sEFNVvCAdo6g==} - - '@module-federation/webpack-bundler-runtime@0.22.0': - resolution: {integrity: sha512-aM8gCqXu+/4wBmJtVeMeeMN5guw3chf+2i6HajKtQv7SJfxV/f4IyNQJUeUQu9HfiAZHjqtMV5Lvq/Lvh8LdyA==} - - '@napi-rs/wasm-runtime@1.0.7': - resolution: {integrity: sha512-SeDnOO0Tk7Okiq6DbXmmBODgOAb9dp9gjlphokTUxmt8U3liIP1ZsozBahH69j/RJv+Rfs6IwUKHTgQYJ/HBAw==} - - '@napi-rs/wasm-runtime@1.1.6': - resolution: {integrity: sha512-ZLv/JdUfkvOy9eCnnBaGfiO+XimbjebAeO+MRQqD/B+FR1tnRN0tpKSJHRbE8sFfS6aqsXZ67TQjfwfsxULVbg==} - peerDependencies: - '@emnapi/core': ^1.7.1 - '@emnapi/runtime': ^1.7.1 - - '@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1': - resolution: {integrity: sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==} - - '@nolyfill/is-core-module@1.0.39': - resolution: {integrity: sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==} - engines: {node: '>=12.4.0'} - - '@nozbe/microfuzz@1.0.0': - resolution: {integrity: sha512-XKIg/guk+s1tkPTkHch9hfGOWgsKojT7BqSQddXTppOfVr3SWQhhTCqbgQaPTbppf9gc2kFeG0gpBZZ612UXHA==} - - '@phosphor/algorithm@1.2.0': - resolution: {integrity: sha512-C9+dnjXyU2QAkWCW6QVDGExk4hhwxzAKf5/FIuYlHAI9X5vFv99PYm0EREDxX1PbMuvfFBZhPNu0PvuSDQ7sFA==} - - '@phosphor/collections@1.2.0': - resolution: {integrity: sha512-T9/0EjSuY6+ga2LIFRZ0xupciOR3Qnyy8Q95lhGTC0FXZUFwC8fl9e8On6IcwasCszS+1n8dtZUWSIynfgdpzw==} - - '@phosphor/messaging@1.3.0': - resolution: {integrity: sha512-k0JE+BTMKlkM335S2AmmJxoYYNRwOdW5jKBqLgjJdGRvUQkM0+2i60ahM45+J23atGJDv9esKUUBINiKHFhLew==} - - '@rsbuild/core@1.7.6': - resolution: {integrity: sha512-T1mLz745L59SM4F5HQFkeGAAsDBeHh2e5sT0cSC5c7xkBpstVWXJrQe5HALS+GvIxiV8cUOy2yD8QBT/Ah11lg==} - engines: {node: '>=18.12.0'} - hasBin: true - - '@rsbuild/plugin-less@1.6.4': - resolution: {integrity: sha512-cDlxi6Ne0K8ZK4PrTy/wSli5RyGkT8I55j/e0R7ZBvriHM7JL0MaA28ceiKAqy70Hy/eZ/btHTB35Sl1FAor1g==} - peerDependencies: - '@rsbuild/core': ^1.3.0 || ^2.0.0-0 - peerDependenciesMeta: - '@rsbuild/core': - optional: true - - '@rsbuild/plugin-react@1.4.6': - resolution: {integrity: sha512-LAT6xHlEyZKA0VjF/ph5d50iyG+WSmBx+7g98HNZUwb94VeeTMZFB8qVptTkbIRMss3BNKOXmHOu71Lhsh9oEw==} - peerDependencies: - '@rsbuild/core': ^1.0.0 || ^2.0.0-0 - peerDependenciesMeta: - '@rsbuild/core': - optional: true - - '@rspack/binding-darwin-arm64@1.7.12': - resolution: {integrity: sha512-rbFprJaJiqrmfy8SHth8EsoRS0wg4bXcucwj9NiMzpGFq14Opw8c04iQ6H9BECYzgmN0PKZ9rh41LdVvhdZe4A==} - cpu: [arm64] - os: [darwin] - - '@rspack/binding-darwin-x64@1.7.12': - resolution: {integrity: sha512-jnOp+/UXOJa9xqUb8KXH03sysoO2e4Ij6tw6MqDdmdj8n/A8PQENRPUbW9AwXpPtVDJPus9r4fi7b3+6e4B8Hg==} - cpu: [x64] - os: [darwin] - - '@rspack/binding-linux-arm64-gnu@1.7.12': - resolution: {integrity: sha512-C8owWG+yvo7X0oVLIXetkoJhIFBP1LYNcAQqtgLmJnQLQDklGuP83dKC+zISGQWpjawHfZ1ER96vLgoTrxKZdw==} - cpu: [arm64] - os: [linux] - libc: [glibc] - - '@rspack/binding-linux-arm64-musl@1.7.12': - resolution: {integrity: sha512-i51WWI64aRpsfSki6rN0aepPqXkVfS+vZM7+4bWDcmnhUmdMvhIPcYg0QRk3DtyJnu33jqNLM0WHY78k00NyfA==} - cpu: [arm64] - os: [linux] - libc: [musl] - - '@rspack/binding-linux-x64-gnu@1.7.12': - resolution: {integrity: sha512-MSos0FuPEefqo9V92ULd5hggKG29EkSNg1zDcypy0OkpsKh5pfjVxTLYFXgTcVyFoUQQbdG8zFBzYbwmJ8V4ew==} - cpu: [x64] - os: [linux] - libc: [glibc] - - '@rspack/binding-linux-x64-musl@1.7.12': - resolution: {integrity: sha512-JcAMVKXOnjfpC3coWjCFPWD3Yl8RBw6a+IXQQ8mfRlHaHMIiOv8IfZqx15XRxMUn49CtP7Z0Na8iiAg2aKrcfw==} - cpu: [x64] - os: [linux] - libc: [musl] - - '@rspack/binding-wasm32-wasi@1.7.12': - resolution: {integrity: sha512-n+ZqP6ZMc0nhOgvadg5VhEs9ojtbES80AcWeFnmGkbzIszvGSO63GKNiRkXtjJ9KFuRzytbbmsCqkUVH+Tywxg==} - cpu: [wasm32] - - '@rspack/binding-win32-arm64-msvc@1.7.12': - resolution: {integrity: sha512-8+h5fYDXYdmugbdfZ+D1y8IQ3rv2EhSfyGP7vBe+bjNyaMa4jWrpucmZbtxojUL1AzaeuHbvMdj9UO/gelk/+g==} - cpu: [arm64] - os: [win32] - - '@rspack/binding-win32-ia32-msvc@1.7.12': - resolution: {integrity: sha512-cDMGwTRSa2p9fNBVe1wTRkF2AEXZ9ARWW36QeC5CkLaI0Ezz8lvhF2+CSOPnhaQ1O1qtn0L0SF+lFnrY+I7xGQ==} - cpu: [ia32] - os: [win32] - - '@rspack/binding-win32-x64-msvc@1.7.12': - resolution: {integrity: sha512-wIqFvlgFqrgUyj/6S/FJcvShnkZOmIeXTfqvheLY67MGq8qd8jb1YimQVKAIrmWB3yuJKUFACI3Ag1UBtEedEA==} - cpu: [x64] - os: [win32] - - '@rspack/binding@1.7.12': - resolution: {integrity: sha512-f4HHuLbvuld8Ba4iB/4ibse5XrKxFrgmM3S4P2AOKnPlekAFlBjmltCuaTL/W2ggYvILaVY+YcFXrEH1rrKeQA==} - - '@rspack/core@1.7.12': - resolution: {integrity: sha512-6CwFIHlhRmXfZoMj3v9MZ1SMTPBn+cHVXeMIeaGp5sufqinKsISbsqHu6ZMJu2wDSmZLdmQJX6zLxkhcAUlhkQ==} - engines: {node: '>=18.12.0'} - peerDependencies: - '@swc/helpers': '>=0.5.1' - peerDependenciesMeta: - '@swc/helpers': - optional: true - - '@rspack/lite-tapable@1.1.0': - resolution: {integrity: sha512-E2B0JhYFmVAwdDiG14+DW0Di4Ze4Jg10Pc4/lILUrd5DRCaklduz2OvJ5HYQ6G+hd+WTzqQb3QnDNfK4yvAFYw==} - - '@rspack/lite-tapable@1.1.2': - resolution: {integrity: sha512-1OnyWChLGE46YzWyjlmYJssOu/Y0STAnnr2ueKPqDCYTf63GJMs0mxNnCul4dNiVqHYPKv3/fxrTY3IpqoVwZQ==} - - '@rspack/plugin-react-refresh@1.6.2': - resolution: {integrity: sha512-k+/VrfTNgo+KirjI6V+8CWRj6y+DH9jOUWv8JorYY4vKf/9xfnZ8xHzuB4iqCwTtoZl9YnxOaOuoyjJipc2tiQ==} - peerDependencies: - react-refresh: '>=0.10.0 <1.0.0' - webpack-hot-middleware: 2.x - peerDependenciesMeta: - webpack-hot-middleware: - optional: true - - '@rtsao/scc@1.1.0': - resolution: {integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==} - - '@shikijs/core@3.23.0': - resolution: {integrity: sha512-NSWQz0riNb67xthdm5br6lAkvpDJRTgB36fxlo37ZzM2yq0PQFFzbd8psqC2XMPgCzo1fW6cVi18+ArJ44wqgA==} - - '@shikijs/engine-javascript@3.23.0': - resolution: {integrity: sha512-aHt9eiGFobmWR5uqJUViySI1bHMqrAgamWE1TYSUoftkAeCCAiGawPMwM+VCadylQtF4V3VNOZ5LmfItH5f3yA==} - - '@shikijs/engine-oniguruma@3.23.0': - resolution: {integrity: sha512-1nWINwKXxKKLqPibT5f4pAFLej9oZzQTsby8942OTlsJzOBZ0MWKiwzMsd+jhzu8YPCHAswGnnN1YtQfirL35g==} - - '@shikijs/langs@3.12.3': - resolution: {integrity: sha512-9lKnWuO9P06Ro9T8wN0V3rQg3UlKfjCtfDRTnRnFr7szuaGQiQpaAdwFvqkWvHrMNIpfqUEIzAC08b90JONfuQ==} - - '@shikijs/langs@3.23.0': - resolution: {integrity: sha512-2Ep4W3Re5aB1/62RSYQInK9mM3HsLeB91cHqznAJMuylqjzNVAVCMnNWRHFtcNHXsoNRayP9z1qj4Sq3nMqYXg==} - - '@shikijs/themes@3.12.3': - resolution: {integrity: sha512-rpqLpI2oMrf2BiJdql8U7ZW1UhfJy9lEj4MRyIeXLlkEe5BwaYseFvSbXhJ/4eS8d3F/zlVUOADFX8WihWlccQ==} - - '@shikijs/themes@3.23.0': - resolution: {integrity: sha512-5qySYa1ZgAT18HR/ypENL9cUSGOeI2x+4IvYJu4JgVJdizn6kG4ia5Q1jDEOi7gTbN4RbuYtmHh0W3eccOrjMA==} - - '@shikijs/types@3.12.3': - resolution: {integrity: sha512-spl99dj9qzPcTvYJLhfp6Zw0umQMNN8q3hXo0tbTTylxXtu5Uiy9WLRhuv2P/g+njFd/lSZU7HnctXuxiwEAwg==} - - '@shikijs/types@3.23.0': - resolution: {integrity: sha512-3JZ5HXOZfYjsYSk0yPwBrkupyYSLpAE26Qc0HLghhZNGTZg/SKxXIIgoxOpmmeQP0RRSDJTk1/vPfw9tbw+jSQ==} - - '@shikijs/vscode-textmate@10.0.2': - resolution: {integrity: sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==} - - '@swc/helpers@0.5.23': - resolution: {integrity: sha512-5lSsMOTXURePglDfvuAQUqkGek9Hg2kksOYay2m0+XR++b2NWYL/4sWyuvVBIs8oKnJaxkdi9whaL/sqN13afw==} - - '@tiptap/core@3.29.0': - resolution: {integrity: sha512-A/lrhKpOYtl0V5pmPS00Zps8pgBe1qDOoD9fzsumDSZ3HP8W398C959Jgru75PNFokAya9COPD3iaKP3NWF25g==} - peerDependencies: - '@tiptap/pm': 3.29.0 - - '@tiptap/extension-blockquote@3.29.0': - resolution: {integrity: sha512-k8NKHLEYOqre7guObZBeFM04CaTwmEceCmdIrIjd7H9KoHSbRODaBNved6j5G33x/FWMwIF/RQbE2BjWaFSgzA==} - peerDependencies: - '@tiptap/core': 3.29.0 - '@tiptap/pm': 3.29.0 - - '@tiptap/extension-bold@3.29.0': - resolution: {integrity: sha512-BPUJvJ9sCsU3fxao5UJfDJrDuHhMn2hczZwZ9Qs4w1vkAeLGyOYbSejUTJdBYHLoexGiEwgnEeVeZN3C8GaI5g==} - peerDependencies: - '@tiptap/core': 3.29.0 - - '@tiptap/extension-bubble-menu@3.29.0': - resolution: {integrity: sha512-aBNI8ebX76ObderRmu/PJ9Q2AGVEuhpg0TBvv2SNbHtmU5kNUMHQI8HxrxKFblJwETAmG6EJ3Ed/5jRxpJmrsg==} - peerDependencies: - '@tiptap/core': 3.29.0 - '@tiptap/pm': 3.29.0 - - '@tiptap/extension-bullet-list@3.29.0': - resolution: {integrity: sha512-1045sC5CRn7KD0wluxZeksBwpm2k3LKBUOM3kNwExHAPSV4in4gdarYJ2/WCmIKsmyj2FzUcF4rbpLLSB/dBSg==} - peerDependencies: - '@tiptap/extension-list': 3.29.0 - - '@tiptap/extension-code-block@3.29.0': - resolution: {integrity: sha512-nKm1YSEiPVosjm4qeg6m+6SAKq82rKukAzE/g3M5eVs2OgEb4QIKQvQOmJ+zgGAnpb9Q/JIvcKsGGU1rn9Vnyw==} - peerDependencies: - '@tiptap/core': 3.29.0 - '@tiptap/pm': 3.29.0 - - '@tiptap/extension-code@3.29.0': - resolution: {integrity: sha512-Um0BlyunRJ8Fal288Jn7I2n15FRwQcTy3NnKBBrPz3ikwx+yZZ0n9xTozpLMSxXrTq6cRlxLkASp/9FFx9sX9A==} - peerDependencies: - '@tiptap/core': 3.29.0 - - '@tiptap/extension-document@3.29.0': - resolution: {integrity: sha512-folTlrwmUL+WSnojvfjZ951Gb25Pw8BxjXwhvXFuZXJ92qMfOcezA480kwFuu5nG8pPc/76ezQlz9a86Y5uQJw==} - peerDependencies: - '@tiptap/core': 3.29.0 - - '@tiptap/extension-dropcursor@3.29.0': - resolution: {integrity: sha512-IAY21q7KSXyCXN3u13kfpq0E8D2i3r9nSbsNYlLzkEv0Bpn+pWShZi05A0ubuothDNjdaMa96xaRY0f1y9gDZw==} - peerDependencies: - '@tiptap/extensions': 3.29.0 - - '@tiptap/extension-floating-menu@3.29.0': - resolution: {integrity: sha512-/rFlN6T70HuT34kFvftKm56UX0IPff7vlII7Sqgs7DprKVYkItiU3lM7+AoeDRzCsWMg4z1yNHj70BPx7+EJ6Q==} - peerDependencies: - '@floating-ui/dom': ^1.0.0 - '@tiptap/core': 3.29.0 - '@tiptap/pm': 3.29.0 - - '@tiptap/extension-gapcursor@3.29.0': - resolution: {integrity: sha512-Jz0zwriGxPMuRjKo6x7WhPa/7pZn0dovyJu/GLarN4T+mMseGNXWwEBsLEKkuumsJVPDEPPFjX+rzEeaFKInPQ==} - peerDependencies: - '@tiptap/extensions': 3.29.0 - - '@tiptap/extension-hard-break@3.29.0': - resolution: {integrity: sha512-8qKj0oeuU7IYoG73Lj3W4EC/JS/dFjN5iHmc4yodqppP6qs0o2zsF/2ipceGN/REZq5megPtxRgXu/nxQZ1NYg==} - peerDependencies: - '@tiptap/core': 3.29.0 - - '@tiptap/extension-heading@3.29.0': - resolution: {integrity: sha512-xWb3QEKo7cp9u6Vzi6oYKODra6jPwziHBv3fJAnxWpRldxtJqfyOVMikWJJFuDjmr+K0qyegzf206pMk+y0bDg==} - peerDependencies: - '@tiptap/core': 3.29.0 - - '@tiptap/extension-horizontal-rule@3.29.0': - resolution: {integrity: sha512-u1OgncXkokIuUJQIh4jVQfYHL/6I8VnrokUcCud4eErWvgeLnCbNmVdih4kxIdfmvEyAxXjDwcqf4AB79TxuNg==} - peerDependencies: - '@tiptap/core': 3.29.0 - '@tiptap/pm': 3.29.0 - - '@tiptap/extension-image@3.29.0': - resolution: {integrity: sha512-A+9Oxsobh4IRWpYj8+y4c0ujhZPY0z9PqvzyuV5GCqiUTRcTRnFI4a4PZDXO/GcCCQXfznfu8gbMtaEyEQW5+w==} - peerDependencies: - '@tiptap/core': 3.29.0 - - '@tiptap/extension-italic@3.29.0': - resolution: {integrity: sha512-c8gF+zM7yXB9iGxtVCioYecjQ+A2fLlNa1XYBYbTobNhbUo8a11akbTkGNcCIgttwnzwEoI4mB6/PK4yjaQvVg==} - peerDependencies: - '@tiptap/core': 3.29.0 - - '@tiptap/extension-link@3.29.0': - resolution: {integrity: sha512-FuLDgE0k1dB4WCBTelw3re9BLmiurgXVSj3d3J4l3sunljyOs941RUU62b7pWP+ePNdGF7RgUMmMAB+58VZCIA==} - peerDependencies: - '@tiptap/core': 3.29.0 - '@tiptap/pm': 3.29.0 - - '@tiptap/extension-list-item@3.29.0': - resolution: {integrity: sha512-JSz27OIDHWDL7uw28E4W3eaN3H1u+NzJQKZkNXo5Qsvvsx8m/YIQWO9XlhiL3V4TZMjfvlc94lUp5tKW5KwETw==} - peerDependencies: - '@tiptap/extension-list': 3.29.0 - - '@tiptap/extension-list-keymap@3.29.0': - resolution: {integrity: sha512-g14QLZR9fmfJIL+X2R/cVTvQS0Mp7CoenA9PO+8adTjK7hCeB8hA3UAakMB4ekkElOXNOtb16e0wqulDcoqANg==} - peerDependencies: - '@tiptap/extension-list': 3.29.0 - - '@tiptap/extension-list@3.29.0': - resolution: {integrity: sha512-k0B/+nIkn4VvHSQ0kP+AzzAmgeOVxKMAdqG4a6qwxp/lR12aJGHlOP92KCjXV2RNPtuwDksJ1RIXrgxdf9WmJg==} - peerDependencies: - '@tiptap/core': 3.29.0 - '@tiptap/pm': 3.29.0 - - '@tiptap/extension-mention@3.29.0': - resolution: {integrity: sha512-mlWKKOOD70gbvQaS3B4V7AhBnBjJ8gzJDOU8yVo9+DH6xgGkXbGomqercoDC0IfTkCqA5tQT5GiIHXiV5EoDMw==} - peerDependencies: - '@tiptap/core': 3.29.0 - '@tiptap/pm': 3.29.0 - '@tiptap/suggestion': 3.29.0 - - '@tiptap/extension-ordered-list@3.29.0': - resolution: {integrity: sha512-9TXUDFagkGeu6Bo8L0b2SAVAYrY2Xzd28MXwiDxYvDKMjEGWkkCUpMiEI5Qav3GnfFWLmS3jI8PgUjxIw9wLLQ==} - peerDependencies: - '@tiptap/extension-list': 3.29.0 - - '@tiptap/extension-paragraph@3.29.0': - resolution: {integrity: sha512-OtGrkwzqlW+ehW+d2qrQ7VVcP9PbDeQmuT4Ec4yFjf3vR4QO8OVdVfeOcUq52PtkT3kYRxz9fzEiEvjqRm72yA==} - peerDependencies: - '@tiptap/core': 3.29.0 - - '@tiptap/extension-strike@3.29.0': - resolution: {integrity: sha512-VzasZkckrEXzmFQT9z3O95rUWy1b0RLFHAC6GUSQHxKk4TpP+Ujfn5+rqmPukMn0eScJyw1Y36jwfJc0VuNR+Q==} - peerDependencies: - '@tiptap/core': 3.29.0 - - '@tiptap/extension-text-align@3.29.0': - resolution: {integrity: sha512-/1htV3teqRJ7i7trAuORDg62LV0CQ1qskbMcP3SB7grsw6H1G54zwdaJVXeiIXmQKDF7FoZgY7u/v/TJckthEw==} - peerDependencies: - '@tiptap/core': 3.29.0 - - '@tiptap/extension-text-style@3.29.0': - resolution: {integrity: sha512-J3bbPL3JoAxFwxnH2CS6z69+0dvKRiOaxgG95vAhl+Jb/87YSkTAEZG3V4ubRR9r8WPWfHrTjgtSXPjH14FlMw==} - peerDependencies: - '@tiptap/core': 3.29.0 - - '@tiptap/extension-text@3.29.0': - resolution: {integrity: sha512-AMsf2V7IiGvzbl+LqLLfyWzufazZxHuid1gOnEt3KwolQ9AO7p8WJgHld0PZLxNyEh4SaSqK7b3d3SM9sqrlTw==} - peerDependencies: - '@tiptap/core': 3.29.0 - - '@tiptap/extension-underline@3.29.0': - resolution: {integrity: sha512-DSPTogdvxmoX/L0U5KgBC9jWffRvYkGiyh1tp28gn+QaARh4iJn79pAZpi1m1bEhal/0Mq5m4ukbiO7FWInwaA==} - peerDependencies: - '@tiptap/core': 3.29.0 - - '@tiptap/extensions@3.29.0': - resolution: {integrity: sha512-ltlrm8dDHIgeNj3cOLEdLFMPPVy3TYvWA8ftrrJ44C/L01MBmgFB1f/vkPFYYnAasb2BYyVG6HxAGcTQHo5jHw==} - peerDependencies: - '@tiptap/core': 3.29.0 - '@tiptap/pm': 3.29.0 - - '@tiptap/pm@3.29.0': - resolution: {integrity: sha512-4rr3HiZ8kbSNINuWXqKQJLv9fFMypCBN5gOwxoU+D4lEYVblkoM60fA1SlrI2BZVlZQmw2U38XKl5XMtUr55XQ==} - - '@tiptap/react@3.29.0': - resolution: {integrity: sha512-HmZf9q5/HXg5M2t09WGEbk16vEBDUGPlkF3eXcQh6yG6PkzMZHq1SP+uA8lWku5H/Ggfmv4XKjI6dEQa5V8bwA==} - peerDependencies: - '@tiptap/core': 3.29.0 - '@tiptap/pm': 3.29.0 - '@types/react': ^17.0.0 || ^18.0.0 || ^19.0.0 - '@types/react-dom': ^17.0.0 || ^18.0.0 || ^19.0.0 - react: ^17.0.0 || ^18.0.0 || ^19.0.0 - react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0 - - '@tiptap/starter-kit@3.29.0': - resolution: {integrity: sha512-J3jTp3/WXnnL58TCtdMsfeQ2BeycFYrAib6Nbpjd9G0OLUBE7AILiH2HrobRQpvRbAUgD5SW+sBZYOonbWWqNg==} - - '@tiptap/suggestion@3.29.0': - resolution: {integrity: sha512-M/84rGfmyNc9meGqbbWnfpZpRttW34Hltk3XxeXKUGNx+87CQazR49sXxDtvcP5JHeAgCZ2gtYkhstpOKPQ6qQ==} - peerDependencies: - '@floating-ui/dom': ^1.0.0 - '@tiptap/core': 3.29.0 - '@tiptap/pm': 3.29.0 - - '@tsconfig/node10@1.0.12': - resolution: {integrity: sha512-UCYBaeFvM11aU2y3YPZ//O5Rhj+xKyzy7mvcIoAjASbigy8mHMryP5cK7dgjlz2hWxh1g5pLw084E0a/wlUSFQ==} - - '@tsconfig/node12@1.0.11': - resolution: {integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==} - - '@tsconfig/node14@1.0.3': - resolution: {integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==} - - '@tsconfig/node16@1.0.4': - resolution: {integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==} - - '@tweenjs/tween.js@18.6.4': - resolution: {integrity: sha512-lB9lMjuqjtuJrx7/kOkqQBtllspPIN+96OvTCeJ2j5FEzinoAXTdAMFnDAQT1KVPRlnYfBrqxtqP66vDM40xxQ==} - - '@tybys/wasm-util@0.10.3': - resolution: {integrity: sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg==} - - '@types/debug@4.1.13': - resolution: {integrity: sha512-KSVgmQmzMwPlmtljOomayoR89W4FynCAi3E8PPs7vmDVPe84hT+vGPKkJfThkmXs0x0jAaa9U8uW8bbfyS2fWw==} - - '@types/estree-jsx@1.0.5': - resolution: {integrity: sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==} - - '@types/estree@1.0.9': - resolution: {integrity: sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==} - - '@types/gensync@1.0.5': - resolution: {integrity: sha512-MbsRCT7mTikHwKZ0X+LVUTLRrZZRLipTuXEO9qOYO+zmjMVk81axyClMROf6uoPD9MRVu46bx8zoR0Ad9q3NAg==} - - '@types/hash-sum@1.0.2': - resolution: {integrity: sha512-UP28RddqY8xcU0SCEp9YKutQICXpaAq9N8U2klqF5hegGha7KzTOL8EdhIIV3bOSGBzjEpN9bU/d+nNZBdJYVw==} - - '@types/hast@3.0.5': - resolution: {integrity: sha512-rp/ezSWaD1m44dPKICGhiskI13nVr7qTloFwDa/IYkhhf5nzwP+zIQcIJh3WIFSBOy/H1PzB40jPjMDksN4F+g==} - - '@types/hoist-non-react-statics@3.3.7': - resolution: {integrity: sha512-PQTyIulDkIDro8P+IHbKCsw7U2xxBYflVzW/FgWdCAePD9xGSidgA76/GeJ6lBKoblyhf9pBY763gbrN+1dI8g==} - peerDependencies: - '@types/react': '*' - - '@types/jsesc@2.5.1': - resolution: {integrity: sha512-9VN+6yxLOPLOav+7PwjZbxiID2bVaeq0ED4qSQmdQTdjnXJSaCVKTR58t15oqH1H5t8Ng2ZX1SabJVoN9Q34bw==} - - '@types/json-schema@7.0.15': - resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - - '@types/json5@0.0.29': - resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} - - '@types/lodash-es@4.17.12': - resolution: {integrity: sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==} - - '@types/lodash@4.17.24': - resolution: {integrity: sha512-gIW7lQLZbue7lRSWEFql49QJJWThrTFFeIMJdp3eH4tKoxm1OvEPg02rm4wCCSHS0cL3/Fizimb35b7k8atwsQ==} - - '@types/mdast@4.0.4': - resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==} - - '@types/mdx@2.0.14': - resolution: {integrity: sha512-T48PeuJtvLosNTPVhfnIp3i/n3a4g4Bad7YCq5k64D4u7NwDrAotikQ+5+sjtUvBmxCMlbo3dVL+C2dP0rWHzg==} - - '@types/ms@2.1.0': - resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} - - '@types/node@18.19.130': - resolution: {integrity: sha512-GRaXQx6jGfL8sKfaIDD6OupbIHBr9jv7Jnaml9tB7l4v068PAOXqfcujMMo5PhbIs6ggR1XODELqahT2R8v0fg==} - - '@types/prop-types@15.7.15': - resolution: {integrity: sha512-F6bEyamV9jKGAFBEmlQnesRPGOQqS2+Uwi0Em15xenOxHaf2hv6L8YCVn3rPdPJOiJfPiCnLIRyvwVaqMY3MIw==} - - '@types/react-dom@18.3.7': - resolution: {integrity: sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==} - peerDependencies: - '@types/react': ^18.0.0 - - '@types/react@18.3.31': - resolution: {integrity: sha512-vfEqpXTvwT91yhmwdfouStN2hSKwTvyRs8qpLfADyrq/kxDw0hZM7Wk9Ug1FELj8hIby+S/+kQCSRFF32nv2Qw==} - - '@types/retry@0.12.0': - resolution: {integrity: sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==} - - '@types/styled-components@5.1.36': - resolution: {integrity: sha512-pGMRNY5G2rNDKEv2DOiFYa7Ft1r0jrhmgBwHhOMzPTgCjO76bCot0/4uEfqj7K0Jf1KdQmDtAuaDk9EAs9foSw==} - - '@types/unist@2.0.11': - resolution: {integrity: sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==} - - '@types/unist@3.0.3': - resolution: {integrity: sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==} - - '@types/use-sync-external-store@0.0.6': - resolution: {integrity: sha512-zFDAD+tlpf2r4asuHEj0XH6pY6i0g5NeAHPn+15wk3BV6JA69eERFXC1gyGThDkVa1zCyKr5jox1+2LbV/AMLg==} - - '@types/uuid@10.0.0': - resolution: {integrity: sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ==} - - '@typescript-eslint/eslint-plugin@8.65.0': - resolution: {integrity: sha512-IEgob78X12rHpUmtcwFsXhZdVGJtwTVP8FiCLZkR6GlYVrl2PcuB+KhCE5BlVC/eQpQnu8WXRtkHZuPar+gCRA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - '@typescript-eslint/parser': ^8.65.0 - eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: '>=4.8.4 <6.1.0' - - '@typescript-eslint/parser@8.65.0': - resolution: {integrity: sha512-CZ4nMxWwgu1HEEFNkeaCptra9QCtkmKdgf3sWh1rl1trIhmxLilgTV4cwcbQ4wemnT4sWQN8CaKOmdYx+g2gMA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: '>=4.8.4 <6.1.0' - - '@typescript-eslint/project-service@8.65.0': - resolution: {integrity: sha512-SxnPhbTsGahizDgbu7oqFH/xVtzIqMd/s+WtnSxNxJZJpLbdT5IPdzg8EZxO3+PoKahXmwJLeNQOpKJb3/bi7Q==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <6.1.0' - - '@typescript-eslint/scope-manager@8.65.0': - resolution: {integrity: sha512-Esbl8OSYiVxBokYgWPf7VVWg/BE798wXhimnn9ML9Pt5qoDf8bfQlgjlKXR/k98+AcNzlLKYrpCcrcuZ9DZLgg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/tsconfig-utils@8.65.0': - resolution: {integrity: sha512-j6GzGqCiRdA7Qhur2VVmKZAkBLfnHFQfx4TaJGL9RMveZqCo48jSHHO0DTgizEnGhtWnqmbtCUSrqSkdiY/0Hg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <6.1.0' - - '@typescript-eslint/type-utils@8.65.0': - resolution: {integrity: sha512-YjaZ7PRI5qY7ax2L3PbvX0rRyGtipAReCWs0mhhDBHjH/vl0g0BonaGXrKdKpMbIIsMIwDgbk/xzkBTyAltS5g==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: '>=4.8.4 <6.1.0' - - '@typescript-eslint/types@8.65.0': - resolution: {integrity: sha512-JSSwWNy+H0E/01jJEM+hrX6N0OFDzFzeIhHFSAS01tlVaevpG8cFyYRPhS5yjGOvBUx3sqQHVMjCL1CAZZMxBg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/typescript-estree@8.65.0': - resolution: {integrity: sha512-JboAE2swaYt4tb1fHhHTABE2K+OLy09XfcTbhnk4Pw96f9dd2e9iYsJ28gBggHlo5z5x1rkyWvcPoTuNTd4oGg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <6.1.0' - - '@typescript-eslint/utils@8.65.0': - resolution: {integrity: sha512-gXiwIHsYreboxeJucHKPvgwl7dXt50mF8s1/c00cP/WoVTyWKFdtfhRWwZiXYFU5H2O8vVoSLNrexFZjYS/SGA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 - typescript: '>=4.8.4 <6.1.0' - - '@typescript-eslint/visitor-keys@8.65.0': - resolution: {integrity: sha512-8C71BQkGjiMmXtop7pHVJu1l2NNShFdkCyD6a2ezzs5vU/L3LRtb69EtcteFwz0mYMPzIgOw0n6OV4VBUWZd7A==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript/vfs@1.6.4': - resolution: {integrity: sha512-PJFXFS4ZJKiJ9Qiuix6Dz/OwEIqHD7Dme1UwZhTK11vR+5dqW2ACbdndWQexBzCx+CPuMe5WBYQWCsFyGlQLlQ==} - peerDependencies: - typescript: '*' - - '@ungap/structured-clone@1.3.3': - resolution: {integrity: sha512-60YRaenCQcVjYEKOcG824+DRGGIQ3VKErcBoAEDJZz5bKIs2ZG+X/H9Nk+Q6EVkwJk5QNApxbrc5QtBSwtrXAg==} - - '@unrs/resolver-binding-android-arm-eabi@1.12.2': - resolution: {integrity: sha512-g5T90pqg1bo/7mytQx6F4iBNC0Wsh9cu+z9veDbFjc7HjpesJFWD7QMS0NGStXM075+7dJPPVvBbpZlnrdpi/w==} - cpu: [arm] - os: [android] - - '@unrs/resolver-binding-android-arm64@1.12.2': - resolution: {integrity: sha512-YGCRZv/9GLhwmz6mYDeTsm/92BAyR28l6c2ReweVW5pWgfsitWLY8upvfRlGdoyD8HjeTHSYJWyZGD4KJA/nFQ==} - cpu: [arm64] - os: [android] - - '@unrs/resolver-binding-darwin-arm64@1.12.2': - resolution: {integrity: sha512-u9DiNT1auQMO20A9SyTuG3wUgQWB9Z7KjAg0uFuCDR1FsAY8A0CG2S6JpHS1xwm/w1G08bjXZDcyOCjv1WAm2w==} - cpu: [arm64] - os: [darwin] - - '@unrs/resolver-binding-darwin-x64@1.12.2': - resolution: {integrity: sha512-f7rPLi/T1HVKZu/u6t87lroib16n8vrSzcyxI7lg4BGO9UF26KhQL44sd9eOUgrTYhvRXtWOIZT5PejdPyJfUA==} - cpu: [x64] - os: [darwin] - - '@unrs/resolver-binding-freebsd-x64@1.12.2': - resolution: {integrity: sha512-BpcOjWCJub6nRZUS2zA20pmLvjtqAtGejETaIyRLiZiQf++cbrjltLA5NN/xaXfqeOBOSlMFbemIl5/S5tljmg==} - cpu: [x64] - os: [freebsd] - - '@unrs/resolver-binding-linux-arm-gnueabihf@1.12.2': - resolution: {integrity: sha512-vZTDvdSISZjJx66OzJqtsOhzifbqRjbmI1Mnu49fQDwog5GtDI4QidRiEAYbZCRj9C8YZEW+3ZjqsyS9GR4k2A==} - cpu: [arm] - os: [linux] - - '@unrs/resolver-binding-linux-arm-musleabihf@1.12.2': - resolution: {integrity: sha512-BiPI+IrIlwcW4nLLMM21+B1dFPzd55yAVgVGrdgDjNef+ch03GdxrcyaIz8X9SsQirh/kCQ7mviyWlMxdh2D7g==} - cpu: [arm] - os: [linux] - - '@unrs/resolver-binding-linux-arm64-gnu@1.12.2': - resolution: {integrity: sha512-zJc0H99FEPoFfSrNpa91HYfxzfAJCr502oxNK1cfdC9hlaFI43RT+JFCann9JUgZmLzzntChHyn13Sgn9ljHNg==} - cpu: [arm64] - os: [linux] - libc: [glibc] - - '@unrs/resolver-binding-linux-arm64-musl@1.12.2': - resolution: {integrity: sha512-KQ3Lki6l+Pz1k/eBipN41ES+YUK30beLGb9YqcB1O542cyLCNE6GaxrfcY3T6EezmGGk84wb5XyO9loTM9tkcA==} - cpu: [arm64] - os: [linux] - libc: [musl] - - '@unrs/resolver-binding-linux-loong64-gnu@1.12.2': - resolution: {integrity: sha512-3SJGEh1DborhG6pyxvhPzCT4bbSIVihsvgJc13P1bHG7KLdNDaF9T3gsTwFc7Jw/5Y5/iWOjkEx7Zy0NvCGX3Q==} - cpu: [loong64] - os: [linux] - libc: [glibc] - - '@unrs/resolver-binding-linux-loong64-musl@1.12.2': - resolution: {integrity: sha512-jiuG/Obbel7uw1PwHNFfrkiKhLAF6mnyZ6aWlOAVN9WqKm8v0OFGnciJIHu8+CMvXLQ8AD51LPzAoUfT21D5Ew==} - cpu: [loong64] - os: [linux] - libc: [musl] - - '@unrs/resolver-binding-linux-ppc64-gnu@1.12.2': - resolution: {integrity: sha512-q7xRvVpmcfeL+LlZg8Pbbo6QaTZwDU5BaGZbwfhkEsXJn3Was8xYfE0RBH266xZt0rM6B7i8xAYIvjthuUIWHg==} - cpu: [ppc64] - os: [linux] - libc: [glibc] - - '@unrs/resolver-binding-linux-riscv64-gnu@1.12.2': - resolution: {integrity: sha512-0CVdx6lcnT3Q9inOH8tsMIOJ6ImndllMjqJHg8RLVdB7Vq4SfkEXl9mCSsVNuNA4MCYycRicCUxPCabVHJRr6A==} - cpu: [riscv64] - os: [linux] - libc: [glibc] - - '@unrs/resolver-binding-linux-riscv64-musl@1.12.2': - resolution: {integrity: sha512-iOwlRo9vnp6R6ohHQS11n0NnfdXx/omhkocmIfaPRpQhKZ+3BDMkkdRVh53qjkFkpPddf+FETA28NwGN7l5l+w==} - cpu: [riscv64] - os: [linux] - libc: [musl] - - '@unrs/resolver-binding-linux-s390x-gnu@1.12.2': - resolution: {integrity: sha512-HYJtLfXq94q8iZNFT1lknx258wlkkWhZeUXJRqzKBBUJ00CvZ+N33zgbCqimLjsyw5Va6uUxhVa12mI+kaveEw==} - cpu: [s390x] - os: [linux] - libc: [glibc] - - '@unrs/resolver-binding-linux-x64-gnu@1.12.2': - resolution: {integrity: sha512-mPsUhunKKDih5O96Y6enDQyHc1SqBPlY1E/SfMWDM3EdJ95Z9CArPeCVwCCqbP45ljvivdEk8Fxn+SIb1rDAJQ==} - cpu: [x64] - os: [linux] - libc: [glibc] - - '@unrs/resolver-binding-linux-x64-musl@1.12.2': - resolution: {integrity: sha512-azrt6+5ydLd8Vt210AAFis/lZevSfPw93EJRIJG+xPu4WCJ8K0kppCTpMyLPcKT7H15M4Jnt2tMp5bOvCkRC6A==} - cpu: [x64] - os: [linux] - libc: [musl] - - '@unrs/resolver-binding-openharmony-arm64@1.12.2': - resolution: {integrity: sha512-YZ9hP4O0X9PQb8eO980qmLNGH4zT3I9+SZTdt0Pr0YyuGQhYKoOZkV02VzrzyOZJ5xIJ3UFIenKkUkGg8GjgWQ==} - cpu: [arm64] - os: [openharmony] - - '@unrs/resolver-binding-wasm32-wasi@1.12.2': - resolution: {integrity: sha512-tYFDIkMxSflfEc/h92ZWNsZlHSwgimbNHSO3PL2JWQHfCuC2q316jMyYU9TIWZsFK2bQwyK5VAdYgn8ygPj69A==} - engines: {node: '>=14.0.0'} - cpu: [wasm32] - - '@unrs/resolver-binding-win32-arm64-msvc@1.12.2': - resolution: {integrity: sha512-qzNyg3xL0VPQmCaUh+N5jSitce6k+uCBfMDesWRnlULOZaqUkaJ0ybdT+UqlAWJoQjuqfIU/0Ptx9bteN4D82g==} - cpu: [arm64] - os: [win32] - - '@unrs/resolver-binding-win32-ia32-msvc@1.12.2': - resolution: {integrity: sha512-WD9sY00OfpHVGfsnHZoA8jVT+esS/Bg8z8jzxp5BnDCjjwsuKsPQrzswwpFy4J1AUJbXPRfkpcX0mXrzeXW79g==} - cpu: [ia32] - os: [win32] - - '@unrs/resolver-binding-win32-x64-msvc@1.12.2': - resolution: {integrity: sha512-nAB74NfSNKknqQ1RrYj6uz8FcXEomu/MATJZxh/x+BArzN2U3JbOYC0APYzUIGhVY3m5hRxA8VPNdPBoG8txlA==} - cpu: [x64] - os: [win32] - - '@vscode/l10n@0.0.18': - resolution: {integrity: sha512-KYSIHVmslkaCDyw013pphY+d7x1qV8IZupYfeIfzNA+nsaWHbn5uPuQRvdRFsa9zFzGeudPuoGoZ1Op4jrJXIQ==} - - '@vue/compiler-core@3.5.40': - resolution: {integrity: sha512-39E8IgOhTbVDnoJFMKc2DvYnypcZwUqgUhQkccva/0m6FUwtIKSGV7n1hpVmYcFaoRAwf9pBcwnKlCEsN63ZEQ==} - - '@vue/compiler-dom@3.5.40': - resolution: {integrity: sha512-pwkx4vqlqOspFstrcmzwkKLePVMD3PT65imRzLhanU2V1Fj4K13g6OXjanOyzw3aTAuRk84BOmY8f3rEHqPaVA==} - - '@vue/compiler-sfc@3.5.40': - resolution: {integrity: sha512-gIf497P4kpuALcvs5n3AEg1Vdn0pSY4XbjASIfHNYF1/MP3T2Mf2STERTubysBxCRxzJGJYtF/O7vwJrxFB3Vw==} - - '@vue/compiler-ssr@3.5.40': - resolution: {integrity: sha512-rrE5xiXG663+vHCHa3J9p2z5OcBRjXmoqenprJxAFQxg5pSshzeBiCE6pu46axapRJ2Adk0YDA2BRZVjiHXnhg==} - - '@vue/reactivity@3.5.40': - resolution: {integrity: sha512-B7ot9UlUZOi1zbq61/LvE88ZLTV8IlajTdiZTAEiDQgrnIMIZoPr9kGw0Zw46ObW62O9+H/Be3kMbfb7kYPQZA==} - - '@vue/runtime-core@3.5.40': - resolution: {integrity: sha512-KAZLweuZ6uUJPK1PMSQPgBU5gCjgrrfjUhSglmU9NhH+Zjepa8cnwSydPWDWHDwOgY4g3VcZ+PljbiHlURNCbw==} - - '@vue/runtime-dom@3.5.40': - resolution: {integrity: sha512-ZfrX8ssZQds900L9pr8AuK05ddnMsR4MPMZr8cPN9GoqoPWcXLhjvvbIA2SMv+7a97sJ1vv9pj/zxK0Cq/eEFQ==} - - '@vue/server-renderer@3.5.40': - resolution: {integrity: sha512-XNJym9WpevhTVt1HuwOrCRJ5Q+9z4BjTMrDtjTrvx74SmUll8spNTw6whWJa9mEkO4PKn5TihI/bm/8ds2QVJw==} - - '@vue/shared@3.5.40': - resolution: {integrity: sha512-WxnBtruIqOoV3rA4jeKDWzrYI5h7Cp4+pjwDi8kWGHz+IslhiN+wguLVVhtv2l8VoU02rzDCVfDjgCl1lNpZVg==} - - acorn-jsx@5.3.2: - resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - - acorn-walk@8.3.5: - resolution: {integrity: sha512-HEHNfbars9v4pgpW6SO1KSPkfoS0xVOM/9UzkJltjlsHZmJasxg8aXkuZa7SMf8vKGIBhpUsPluQSqhJFCqebw==} - engines: {node: '>=0.4.0'} - - acorn@8.17.0: - resolution: {integrity: sha512-xRQbDb9BnwDafYNn6Vwl839DYVjqXYb1XVGtWAZ1kcDc6iwAL4hg3B1dZlRiuENFeO2H53gFG3in621AdERVAg==} - engines: {node: '>=0.4.0'} - hasBin: true - - ajv@6.12.6: - resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} - - ajv@6.15.0: - resolution: {integrity: sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==} - - ansi-styles@4.3.0: - resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} - engines: {node: '>=8'} - - ansi-styles@5.2.0: - resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} - engines: {node: '>=10'} - - arg@4.1.3: - resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} - - argparse@2.0.1: - resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - - aria-query@5.3.2: - resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==} - engines: {node: '>= 0.4'} - - array-buffer-byte-length@1.0.2: - resolution: {integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==} - engines: {node: '>= 0.4'} - - array-includes@3.1.9: - resolution: {integrity: sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==} - engines: {node: '>= 0.4'} - - array.prototype.findlast@1.2.5: - resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==} - engines: {node: '>= 0.4'} - - array.prototype.findlastindex@1.2.6: - resolution: {integrity: sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==} - engines: {node: '>= 0.4'} - - array.prototype.flat@1.3.3: - resolution: {integrity: sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==} - engines: {node: '>= 0.4'} - - array.prototype.flatmap@1.3.3: - resolution: {integrity: sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==} - engines: {node: '>= 0.4'} - - array.prototype.tosorted@1.1.4: - resolution: {integrity: sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==} - engines: {node: '>= 0.4'} - - arraybuffer.prototype.slice@1.0.4: - resolution: {integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==} - engines: {node: '>= 0.4'} - - ast-types-flow@0.0.8: - resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} - - astring@1.9.0: - resolution: {integrity: sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==} - hasBin: true - - async-function@1.0.0: - resolution: {integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==} - engines: {node: '>= 0.4'} - - async-validator@3.5.2: - resolution: {integrity: sha512-8eLCg00W9pIRZSB781UUX/H6Oskmm8xloZfr09lz5bikRpBVDlJ3hRVuxxP1SxcwsEYfJ4IU8Q19Y8/893r3rQ==} - - available-typed-arrays@1.0.7: - resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} - engines: {node: '>= 0.4'} - - axe-core@4.12.1: - resolution: {integrity: sha512-s7iGf5GaVMxEG0ENN9x+xTr7GFZCb1ZP/1uATUpCEK2X78nDB3RwbtFCo9pGAf9ru+VwoQ464DkaLEeRM08wJA==} - engines: {node: '>=4'} - - axobject-query@4.1.0: - resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} - engines: {node: '>= 0.4'} - - babel-plugin-polyfill-corejs2@0.3.3: - resolution: {integrity: sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - babel-plugin-polyfill-corejs3@0.6.0: - resolution: {integrity: sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - babel-plugin-polyfill-regenerator@0.4.1: - resolution: {integrity: sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==} - peerDependencies: - '@babel/core': ^7.0.0-0 - - babel-plugin-styled-components@2.3.0: - resolution: {integrity: sha512-nP/y6PbBqS/qtKROnJCgpGo8hYUzlBAVXN1QAjSBANL6vZiQXPQN7FYW/nUwoxY7nZhBEGm9T5tjL9gbzwulDw==} - peerDependencies: - '@babel/core': ^7.0.0 - styled-components: '>= 2' - - bail@2.0.2: - resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} - - balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} - - balanced-match@4.0.4: - resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==} - engines: {node: 18 || 20 || >=22} - - base64-js@1.5.1: - resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - - baseline-browser-mapping@2.11.4: - resolution: {integrity: sha512-s4+sLr9mZ/CyqeRritFeYV/Zx73OAtmaHn6kkBS1XRoJn1hrg3xIDUcpicAEX68tkcIN0iBCgti31C8zxtkhsQ==} - engines: {node: '>=6.0.0'} - hasBin: true - - bezier-easing@2.1.0: - resolution: {integrity: sha512-gbIqZ/eslnUFC1tjEvtz0sgx+xTK20wDnYMIA27VA04R7w6xxXQPZDbibjA9DTWZRA2CXtwHykkVzlCaAJAZig==} - - bezier-js@6.1.4: - resolution: {integrity: sha512-PA0FW9ZpcHbojUCMu28z9Vg/fNkwTj5YhusSAjHHDfHDGLxJ6YUKrAN2vk1fP2MMOxVw4Oko16FMlRGVBGqLKg==} - - bignumber.js@11.1.5: - resolution: {integrity: sha512-6WmzCNtUnfKpbozq+hOgWaZMMzORmYBwF1xZScyoIX3QRYWeKTtxxwDOW5tIz7C9BdjkIYHGTcelCLkXg0mndw==} - - brace-expansion@1.1.16: - resolution: {integrity: sha512-IDw48K2/2kRkg9LdJxurvq3lV3aBgq0REY89duEqFRthjlPdXHKMj7EnQOXVckxzgisinf3nHfrcE2FufFLXMw==} - - brace-expansion@5.0.8: - resolution: {integrity: sha512-JZyDyq3D4AUifKTPOB7DELf6XsB3WdPuNxCtob1vFXPsSXhdAiHBWJ/tJ8HAc9aH84BK+5JFZLNkJKx3G9kzQg==} - engines: {node: 20 || >=22} - - browserslist@4.28.7: - resolution: {integrity: sha512-JxV13hNrFxqjOc8alRbq9dK1MM79NEXYpma2B2J4wAtpWS5zIEIKqWPGCl7N4o7Uc7B7itylh7SuDujATRyyTw==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - - call-bind-apply-helpers@1.0.2: - resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} - engines: {node: '>= 0.4'} - - call-bind@1.0.9: - resolution: {integrity: sha512-a/hy+pNsFUTR+Iz8TCJvXudKVLAnz/DyeSUo10I5yvFDQJBFU2s9uqQpoSrJlroHUKoKqzg+epxyP9lqFdzfBQ==} - engines: {node: '>= 0.4'} - - call-bound@1.0.4: - resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} - engines: {node: '>= 0.4'} - - callsites@3.1.0: - resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} - engines: {node: '>=6'} - - camelcase@6.3.0: - resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} - engines: {node: '>=10'} - - camelize@1.0.1: - resolution: {integrity: sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==} - - caniuse-lite@1.0.30001806: - resolution: {integrity: sha512-72Cuvd95zbSYPKq6Fhg8eDJRlzgWDf7/mtoZv6Qe/DYNCEBdNxoA3+rZAU2ZhGCpZlns3EssFavaZomckT5Uuw==} - - ccount@2.0.1: - resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} - - chalk@4.1.2: - resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} - engines: {node: '>=10'} - - character-entities-html4@2.1.0: - resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==} - - character-entities-legacy@3.0.0: - resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==} - - character-entities@2.0.2: - resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==} - - character-reference-invalid@2.0.1: - resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==} - - classnames@2.5.1: - resolution: {integrity: sha512-saHYOzhIQs6wy2sVxTM6bUDsQO4F50V9RQ22qBpEdCW+I+/Wmke2HOl6lS6dTpdxVhb88/I6+Hs+438c3lfUow==} - - clsx@1.2.1: - resolution: {integrity: sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==} - engines: {node: '>=6'} - - clsx@2.1.1: - resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} - engines: {node: '>=6'} - - codemirror-shiki@0.2.5: - resolution: {integrity: sha512-EFtjSYtT0osdjM4HLek5juVu8QVmG7E58Dib91yOO/vhGj+i3b63PyD8UF+PWXRTRaZa6q5Z6J02Iq0M/u0fHQ==} - peerDependencies: - '@codemirror/state': ^6 - '@codemirror/view': ^6 - shiki: '>=2.0.0' - - collapse-white-space@2.1.0: - resolution: {integrity: sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==} - - color-convert@2.0.1: - resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} - engines: {node: '>=7.0.0'} - - color-name@1.1.4: - resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - - comlink@4.4.2: - resolution: {integrity: sha512-OxGdvBmJuNKSCMO4NTl1L47VRp6xn2wG4F/2hYzB6tiCb709otOxtEYCSvK80PtjODfXXZu8ds+Nw5kVCjqd2g==} - - comma-separated-tokens@2.0.3: - resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} - - compute-scroll-into-view@1.0.20: - resolution: {integrity: sha512-UCB0ioiyj8CRjtrvaceBLqqhZCVP+1B8+NWQhmdsm0VXOJtobBCf1dBQmebCCo34qZmUwZfIH2MZLqNHazrfjg==} - - concat-map@0.0.1: - resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - - console-table-printer@2.16.1: - resolution: {integrity: sha512-Sc9FRJ4O9xKGNrvulNdPfK5SyBcZ6lcaRnDE4AQ/uw6IDtjHhsqyzzqcnMikjyGaiOOF2tNOKoBhbVjRvFy9Lw==} - - convert-source-map@2.0.0: - resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} - - copy-anything@3.0.5: - resolution: {integrity: sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==} - engines: {node: '>=12.13'} - - copy-text-to-clipboard@2.2.0: - resolution: {integrity: sha512-WRvoIdnTs1rgPMkgA2pUOa/M4Enh2uzCwdKsOMYNAJiz/4ZvEJgmbF4OmninPmlFdAWisfeh0tH+Cpf7ni3RqQ==} - engines: {node: '>=6'} - - core-js-compat@3.49.0: - resolution: {integrity: sha512-VQXt1jr9cBz03b331DFDCCP90b3fanciLkgiOoy8SBHy06gNf+vQ1A3WFLqG7I8TipYIKeYK9wxd0tUrvHcOZA==} - - core-js@3.47.0: - resolution: {integrity: sha512-c3Q2VVkGAUyupsjRnaNX6u8Dq2vAdzm9iuPj5FW0fRxzlxgq9Q39MDq10IvmQSpLgHQNyQzQmOo6bgGHmH3NNg==} - - create-require@1.1.1: - resolution: {integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==} - - crelt@1.0.7: - resolution: {integrity: sha512-aK6BbWfhf4U/wCcLHKPJl/xa6VkVstRaPywWtMKGwuOLc/wZTyQYuoxgvZnNsBvv7Kg3YTBQYYBCggcviQczuA==} - - cross-env@7.0.3: - resolution: {integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==} - engines: {node: '>=10.14', npm: '>=6', yarn: '>=1'} - hasBin: true - - cross-spawn@7.0.6: - resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} - engines: {node: '>= 8'} - - css-color-keywords@1.0.0: - resolution: {integrity: sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==} - engines: {node: '>=4'} - - css-to-react-native@3.2.0: - resolution: {integrity: sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==} - - csstype@3.2.3: - resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} - - damerau-levenshtein@1.0.8: - resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} - - data-view-buffer@1.0.2: - resolution: {integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==} - engines: {node: '>= 0.4'} - - data-view-byte-length@1.0.2: - resolution: {integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==} - engines: {node: '>= 0.4'} - - data-view-byte-offset@1.0.1: - resolution: {integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==} - engines: {node: '>= 0.4'} - - date-fns-tz@1.3.8: - resolution: {integrity: sha512-qwNXUFtMHTTU6CFSFjoJ80W8Fzzp24LntbjFFBgL/faqds4e5mo9mftoRLgr3Vi1trISsg4awSpYVsOQCRnapQ==} - peerDependencies: - date-fns: '>=2.0.0' - - date-fns@2.30.0: - resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==} - engines: {node: '>=0.11'} - - debug@2.6.9: - resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - debug@3.2.7: - resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - debug@4.4.3: - resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} - engines: {node: '>=6.0'} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - - decamelize@1.2.0: - resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} - engines: {node: '>=0.10.0'} - - decode-named-character-reference@1.3.0: - resolution: {integrity: sha512-GtpQYB283KrPp6nRw50q3U9/VfOutZOe103qlN7BPP6Ad27xYnOIWv4lPzo8HCAL+mMZofJ9KEy30fq6MfaK6Q==} - - deep-is@0.1.4: - resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - - deepmerge@4.3.1: - resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} - engines: {node: '>=0.10.0'} - - define-data-property@1.1.4: - resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} - engines: {node: '>= 0.4'} - - define-properties@1.2.1: - resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} - engines: {node: '>= 0.4'} - - dequal@2.0.3: - resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} - engines: {node: '>=6'} - - detect-indent@7.0.2: - resolution: {integrity: sha512-y+8xyqdGLL+6sh0tVeHcfP/QDd8gUgbasolJJpY7NgeQGSZ739bDtSiaiDgtoicy+mtYB81dKLxO9xRhCyIB3A==} - engines: {node: '>=12.20'} - - detect-newline@4.0.1: - resolution: {integrity: sha512-qE3Veg1YXzGHQhlA6jzebZN2qVf6NX+A7m7qlhCGG30dJixrAQhYOsJjsnBjJkCSmuOPpCk30145fr8FV0bzog==} - engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - - devlop@1.1.0: - resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==} - - diff@4.0.4: - resolution: {integrity: sha512-X07nttJQkwkfKfvTPG/KSnE2OMdcUCao6+eXF3wmnIQRn2aPAHH3VxDbDOdegkd6JbPsXqShpvEOHfAT+nCNwQ==} - engines: {node: '>=0.3.1'} - - doctrine@2.1.0: - resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} - engines: {node: '>=0.10.0'} - - dunder-proto@1.0.1: - resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} - engines: {node: '>= 0.4'} - - electron-to-chromium@1.5.396: - resolution: {integrity: sha512-yHiw2Y3C3H9U6TMbOfoWK/BPreiOPXRfTWPBwQBoZG6/8TB6eOPnsy5oaRYuatR7Fw2SJ4kKforgufeo7fq0EQ==} - - emoji-regex@9.2.2: - resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - - empathic@2.0.1: - resolution: {integrity: sha512-YGRs8knHhKHVShLkFET/rWAU8kmHbOV5LwN938RHI0pljAJ1Gf6SzXsSmRaEzcXTtOOmVqJ5+WtQPL5uigY50Q==} - engines: {node: '>=14'} - - entities@7.0.1: - resolution: {integrity: sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==} - engines: {node: '>=0.12'} - - errno@0.1.8: - resolution: {integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==} - hasBin: true - - error-stack-parser@2.1.4: - resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==} - - es-abstract-get@1.0.0: - resolution: {integrity: sha512-6PMWXpdhshVvFp+FoWYs1EvG1Nj0tvk0dZM+XcK0xMEM1czRVcP6ohqPWHy6qPagSpC8j4+p89WXlT+xXJs/fg==} - engines: {node: '>= 0.4'} - - es-abstract@1.24.2: - resolution: {integrity: sha512-2FpH9Q5i2RRwyEP1AylXe6nYLR5OhaJTZwmlcP0dL/+JCbgg7yyEo/sEK6HeGZRf3dFpWwThaRHVApXSkW3xeg==} - engines: {node: '>= 0.4'} - - es-define-property@1.0.1: - resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} - engines: {node: '>= 0.4'} - - es-errors@1.3.0: - resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} - engines: {node: '>= 0.4'} - - es-iterator-helpers@1.4.0: - resolution: {integrity: sha512-c/A0P0oxkACDc+cKWw8evLXK83oBKgn0qPOqCYT4x9uolpCIJAcYvJC9QYKNDRPsTeGyCrQ326jrvgZWdCdK5Q==} - engines: {node: '>= 0.4'} - - es-object-atoms@1.1.2: - resolution: {integrity: sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==} - engines: {node: '>= 0.4'} - - es-set-tostringtag@2.1.0: - resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} - engines: {node: '>= 0.4'} - - es-shim-unscopables@1.1.0: - resolution: {integrity: sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==} - engines: {node: '>= 0.4'} - - es-to-primitive@1.3.4: - resolution: {integrity: sha512-yPDz7wqpg1/mmHLmS3tcfTfbw5f1eryXvyghYBffGdERwe+mV7ZcWzTR8LR17Kvqt3qfPurjlonmnq3MKXIOXw==} - engines: {node: '>= 0.4'} - - es-toolkit@1.50.0: - resolution: {integrity: sha512-OyZKhUVvEep9ITEiwHn8GKnMRQIVqoSIX7WnRbkWgJkllCujilqP2rD0u979tkl8wqyc8ICwlc1UBVv/Sl1G6w==} - - esast-util-from-estree@2.0.0: - resolution: {integrity: sha512-4CyanoAudUSBAn5K13H4JhsMH6L9ZP7XbLVe/dKybkxMO7eDyLsT8UHl9TRNrU2Gr9nz+FovfSIjuXWJ81uVwQ==} - - esast-util-from-js@2.0.1: - resolution: {integrity: sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw==} - - escalade@3.2.0: - resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} - engines: {node: '>=6'} - - escape-string-regexp@4.0.0: - resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} - engines: {node: '>=10'} - - escape-string-regexp@5.0.0: - resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==} - engines: {node: '>=12'} - - eslint-config-prettier@8.10.2: - resolution: {integrity: sha512-/IGJ6+Dka158JnP5n5YFMOszjDWrXggGz1LaK/guZq9vZTmniaKlHcsscvkAhn9y4U+BU3JuUdYvtAMcv30y4A==} - hasBin: true - peerDependencies: - eslint: '>=7.0.0' - - eslint-define-config@1.12.0: - resolution: {integrity: sha512-Kt9TcMbgsY9VRt7jIuw76KE/2RuD31eWB4Ubv6btXgU8NTSsbT6gZ8qzeiU+rAih/8sOl8Kt89spAZBMElu6qQ==} - engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0, npm: '>=6.14.13', pnpm: '>= 7.0.0'} - deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. - - eslint-import-resolver-node@0.3.10: - resolution: {integrity: sha512-tRrKqFyCaKict5hOd244sL6EQFNycnMQnBe+j8uqGNXYzsImGbGUU4ibtoaBmv5FLwJwcFJNeg1GeVjQfbMrDQ==} - - eslint-import-resolver-typescript@3.10.1: - resolution: {integrity: sha512-A1rHYb06zjMGAxdLSkN2fXPBwuSaQ0iO5M/hdyS0Ajj1VBaRp0sPD3dn1FhME3c/JluGFbwSxyCfqdSbtQLAHQ==} - engines: {node: ^14.18.0 || >=16.0.0} - peerDependencies: - eslint: '*' - eslint-plugin-import: '*' - eslint-plugin-import-x: '*' - peerDependenciesMeta: - eslint-plugin-import: - optional: true - eslint-plugin-import-x: - optional: true - - eslint-module-utils@2.14.0: - resolution: {integrity: sha512-W2WCRZ9Dqntd+2u8jJcVMV2PKulc6RdLgUUoh/yQr3uB6lo/ZOeGx11sv60/8S4QFFKNslAlWhr9u0Ef7ZW6Ig==} - engines: {node: '>=4'} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: '*' - eslint-import-resolver-node: '*' - eslint-import-resolver-typescript: '*' - eslint-import-resolver-webpack: '*' - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true - eslint: - optional: true - eslint-import-resolver-node: - optional: true - eslint-import-resolver-typescript: - optional: true - eslint-import-resolver-webpack: - optional: true - - eslint-plugin-babel@5.3.1: - resolution: {integrity: sha512-VsQEr6NH3dj664+EyxJwO4FCYm/00JhYb3Sk3ft8o+fpKuIfQ9TaW6uVUfvwMXHcf/lsnRIoyFPsLMyiWCSL/g==} - engines: {node: '>=4'} - peerDependencies: - eslint: '>=4.0.0' - - eslint-plugin-import@2.32.0: - resolution: {integrity: sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==} - engines: {node: '>=4'} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9 - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true - - eslint-plugin-jsx-a11y@6.10.2: - resolution: {integrity: sha512-scB3nz4WmG75pV8+3eRUQOHZlNSUhFNq37xnpgRkCCELU3XMvXAxLk1eqWWyE22Ki4Q01Fnsw9BA3cJHDPgn2Q==} - engines: {node: '>=4.0'} - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9 - - eslint-plugin-prettier@4.2.5: - resolution: {integrity: sha512-9Ni+xgemM2IWLq6aXEpP2+V/V30GeA/46Ar629vcMqVPodFFWC9skHu/D1phvuqtS8bJCFnNf01/qcmqYEwNfg==} - engines: {node: '>=12.0.0'} - peerDependencies: - eslint: '>=7.28.0' - eslint-config-prettier: '*' - prettier: '>=2.0.0' - peerDependenciesMeta: - eslint-config-prettier: - optional: true - - eslint-plugin-react@7.37.5: - resolution: {integrity: sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==} - engines: {node: '>=4'} - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7 - - eslint-plugin-tsdoc@0.2.17: - resolution: {integrity: sha512-xRmVi7Zx44lOBuYqG8vzTXuL6IdGOeF9nHX17bjJ8+VE6fsxpdGem0/SBTmAwgYMKYB1WBkqRJVQ+n8GK041pA==} - - eslint-rule-composer@0.3.0: - resolution: {integrity: sha512-bt+Sh8CtDmn2OajxvNO+BX7Wn4CIWMpTRm3MaiKPCQcnnlm0CS2mhui6QaoeQugs+3Kj2ESKEEGJUdVafwhiCg==} - engines: {node: '>=4.0.0'} - - eslint-scope@5.1.1: - resolution: {integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==} - engines: {node: '>=8.0.0'} - - eslint-scope@8.4.0: - resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - eslint-visitor-keys@2.1.0: - resolution: {integrity: sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==} - engines: {node: '>=10'} - - eslint-visitor-keys@3.4.3: - resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - - eslint-visitor-keys@4.2.1: - resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - eslint-visitor-keys@5.0.1: - resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==} - engines: {node: ^20.19.0 || ^22.13.0 || >=24} - - eslint@9.39.5: - resolution: {integrity: sha512-DgZS62aPLXKlnxILS/AYCoRvHaZeXceIzlXPkkGGzJWSow1aEk0lbTlxUSlyjC8jcaKxAdOnTDz+o1JFSBsyjw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - hasBin: true - peerDependencies: - jiti: '*' - peerDependenciesMeta: - jiti: - optional: true - - espree@10.4.0: - resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - esquery@1.7.0: - resolution: {integrity: sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==} - engines: {node: '>=0.10'} - - esrecurse@4.3.0: - resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} - engines: {node: '>=4.0'} - - estraverse@4.3.0: - resolution: {integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==} - engines: {node: '>=4.0'} - - estraverse@5.3.0: - resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} - engines: {node: '>=4.0'} - - estree-util-attach-comments@3.0.0: - resolution: {integrity: sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==} - - estree-util-build-jsx@3.0.1: - resolution: {integrity: sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==} - - estree-util-is-identifier-name@3.0.0: - resolution: {integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==} - - estree-util-scope@1.0.0: - resolution: {integrity: sha512-2CAASclonf+JFWBNJPndcOpA8EMJwa0Q8LUFJEKqXLW6+qBvbFZuF5gItbQOs/umBUkjviCSDCbBwU2cXbmrhQ==} - - estree-util-to-js@2.0.0: - resolution: {integrity: sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==} - - estree-util-visit@2.0.0: - resolution: {integrity: sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==} - - estree-walker@2.0.2: - resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} - - estree-walker@3.0.3: - resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} - - esutils@2.0.3: - resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} - engines: {node: '>=0.10.0'} - - eventemitter3@4.0.7: - resolution: {integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==} - - extend@3.0.2: - resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} - - fast-copy@3.0.2: - resolution: {integrity: sha512-dl0O9Vhju8IrcLndv2eU4ldt1ftXMqqfgN4H1cpmGV7P6jeB9FwpN9a2c8DPGE1Ys88rNUJVYDHq73CGAGOPfQ==} - - fast-deep-equal@3.1.3: - resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - - fast-diff@1.3.0: - resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} - - fast-equals@2.0.4: - resolution: {integrity: sha512-caj/ZmjHljPrZtbzJ3kfH5ia/k4mTJe/qSiXAGzxZWRZgsgDV0cvNaQULqUX8t0/JVlzzEdYOwCN5DmzTxoD4w==} - - fast-equals@5.4.1: - resolution: {integrity: sha512-DjlFSM5Pk9cGcL0q5QXl66eGzx0N6szNgaswwc5ZphlBohjTVJSnGgI+rJVOgOi65qUoQnDZN4nDqi33udtydQ==} - engines: {node: '>=6.0.0'} - - fast-json-stable-stringify@2.1.0: - resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - - fast-levenshtein@2.0.6: - resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - - fdir@6.5.0: - resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} - engines: {node: '>=12.0.0'} - peerDependencies: - picomatch: ^3 || ^4 - peerDependenciesMeta: - picomatch: - optional: true - - file-entry-cache@8.0.0: - resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} - engines: {node: '>=16.0.0'} - - find-up@5.0.0: - resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} - engines: {node: '>=10'} - - flat-cache@4.0.1: - resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} - engines: {node: '>=16'} - - flatted@3.4.3: - resolution: {integrity: sha512-/zipXxyO6rGvuNGDiULY9MvEGSkb2gaG4GGH4ygMi0ZZzyMHdUZBmntJmx5x1G2VuPytCwGN4xsJP6cw+sK+vQ==} - - for-each@0.3.5: - resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} - engines: {node: '>= 0.4'} - - function-bind@1.1.2: - resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} - - function.prototype.name@1.2.0: - resolution: {integrity: sha512-jObKIik1P2QjPHP5nz5BaOtUlfgS0fWo8IUByNXkM+o+02sJOi94em77GwJKQSJ3gfPHdgzLNrHc1uokV4P/ew==} - engines: {node: '>= 0.4'} - - functions-have-names@1.2.3: - resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} - - generator-function@2.0.1: - resolution: {integrity: sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==} - engines: {node: '>= 0.4'} - - gensync@1.0.0-beta.2: - resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} - engines: {node: '>=6.9.0'} - - get-intrinsic@1.3.0: - resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} - engines: {node: '>= 0.4'} - - get-proto@1.0.1: - resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} - engines: {node: '>= 0.4'} - - get-symbol-description@1.1.0: - resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} - engines: {node: '>= 0.4'} - - get-tsconfig@4.14.0: - resolution: {integrity: sha512-yTb+8DXzDREzgvYmh6s9vHsSVCHeC0G3PI5bEXNBHtmshPnO+S5O7qgLEOn0I5QvMy6kpZN8K1NKGyilLb93wA==} - - git-hooks-list@4.2.1: - resolution: {integrity: sha512-WNvqJjOxxs/8ZP9+DWdwWJ7cDsd60NHf39XnD82pDVrKO5q7xfPqpkK6hwEAmBa/ZSEE4IOoR75EzbbIuwGlMw==} - - glob-parent@6.0.2: - resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} - engines: {node: '>=10.13.0'} - - globals@14.0.0: - resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} - engines: {node: '>=18'} - - globalthis@1.0.4: - resolution: {integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==} - engines: {node: '>= 0.4'} - - gopd@1.2.0: - resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} - engines: {node: '>= 0.4'} - - graceful-fs@4.2.11: - resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} - - has-bigints@1.1.0: - resolution: {integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==} - engines: {node: '>= 0.4'} - - has-flag@3.0.0: - resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} - engines: {node: '>=4'} - - has-flag@4.0.0: - resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} - engines: {node: '>=8'} - - has-property-descriptors@1.0.2: - resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} - - has-proto@1.2.0: - resolution: {integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==} - engines: {node: '>= 0.4'} - - has-symbols@1.1.0: - resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} - engines: {node: '>= 0.4'} - - has-tostringtag@1.0.2: - resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} - engines: {node: '>= 0.4'} - - hash-sum@2.0.0: - resolution: {integrity: sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==} - - hasown@2.0.4: - resolution: {integrity: sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==} - engines: {node: '>= 0.4'} - - hast-util-to-estree@3.1.3: - resolution: {integrity: sha512-48+B/rJWAp0jamNbAAf9M7Uf//UVqAoMmgXhBdxTDJLGKY+LRnZ99qcG+Qjl5HfMpYNzS5v4EAwVEF34LeAj7w==} - - hast-util-to-html@9.0.5: - resolution: {integrity: sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==} - - hast-util-to-jsx-runtime@2.3.6: - resolution: {integrity: sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==} - - hast-util-whitespace@3.0.0: - resolution: {integrity: sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==} - - hoist-non-react-statics@3.3.2: - resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==} - - html-void-elements@3.0.0: - resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==} - - i18n-js@4.5.3: - resolution: {integrity: sha512-5/tT6R9t9qlYqGhxGq9I9Ap3WKUaAMq5aRuO1gqAcUqm6xGbL0jwTAjSFjgbx935BAV8QbEzvQOzE796dUlEfA==} - - iconv-lite@0.4.24: - resolution: {integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==} - engines: {node: '>=0.10.0'} - - iconv-lite@0.6.3: - resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==} - engines: {node: '>=0.10.0'} - - ignore@5.3.2: - resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} - engines: {node: '>= 4'} - - ignore@7.0.6: - resolution: {integrity: sha512-BAg6QkE8W+TuQLrrw0Ugr7HegXduRuuj8/ti2kSOc+jz1dmx8/WNcjr6XGnq5YpDWxFwwaavqD0+jIUOKelTsw==} - engines: {node: '>= 4'} - - immer@10.1.3: - resolution: {integrity: sha512-tmjF/k8QDKydUlm3mZU+tjM6zeq9/fFpPqH9SzWmBnVVKsPBg/V66qsMwb3/Bo90cgUN+ghdVBess+hPsxUyRw==} - - import-fresh@3.3.1: - resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} - engines: {node: '>=6'} - - import-meta-resolve@4.2.0: - resolution: {integrity: sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==} - - imurmurhash@0.1.4: - resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} - engines: {node: '>=0.8.19'} - - inline-style-parser@0.2.7: - resolution: {integrity: sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==} - - internal-slot@1.1.0: - resolution: {integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==} - engines: {node: '>= 0.4'} - - inversify@6.2.2: - resolution: {integrity: sha512-KB836KHbZ9WrUnB8ax5MtadOwnqQYa+ZJO3KWbPFgcr4RIEnHM621VaqFZzOZd9+U7ln6upt9n0wJei7x2BNqw==} - peerDependencies: - reflect-metadata: ~0.2.2 - - is-alphabetical@2.0.1: - resolution: {integrity: sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==} - - is-alphanumerical@2.0.1: - resolution: {integrity: sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==} - - is-array-buffer@3.0.5: - resolution: {integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==} - engines: {node: '>= 0.4'} - - is-async-function@2.1.1: - resolution: {integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==} - engines: {node: '>= 0.4'} - - is-bigint@1.1.0: - resolution: {integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==} - engines: {node: '>= 0.4'} - - is-boolean-object@1.2.2: - resolution: {integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==} - engines: {node: '>= 0.4'} - - is-bun-module@2.0.0: - resolution: {integrity: sha512-gNCGbnnnnFAUGKeZ9PdbyeGYJqewpmc2aKHUEMO5nQPWU9lOmv7jcmQIv+qHD8fXW6W7qfuCwX4rY9LNRjXrkQ==} - - is-callable@1.2.7: - resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} - engines: {node: '>= 0.4'} - - is-core-module@2.16.2: - resolution: {integrity: sha512-evOr8xfXKxE6qSR0hSXL2r3sd7ALj8+7jQEUvPYcm5sgZFdJ+AYzT6yNmJenvIYQBgIGwfwz08sL8zoL7yq2BA==} - engines: {node: '>= 0.4'} - - is-data-view@1.0.2: - resolution: {integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==} - engines: {node: '>= 0.4'} - - is-date-object@1.1.0: - resolution: {integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==} - engines: {node: '>= 0.4'} - - is-decimal@2.0.1: - resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==} - - is-document.all@1.0.0: - resolution: {integrity: sha512-+XSoyS05OdBbhFuELhgTCpFNHkpBOJqtsZfUFFpe5QTw+9Sjbh8zitxhQkYAo6wV7e1Vb8cAPvpCk9jGam/82g==} - engines: {node: '>= 0.4'} - - is-extglob@2.1.1: - resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} - engines: {node: '>=0.10.0'} - - is-finalizationregistry@1.1.1: - resolution: {integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==} - engines: {node: '>= 0.4'} - - is-generator-function@1.1.2: - resolution: {integrity: sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==} - engines: {node: '>= 0.4'} - - is-glob@4.0.3: - resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} - engines: {node: '>=0.10.0'} - - is-hexadecimal@2.0.1: - resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==} - - is-map@2.0.3: - resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} - engines: {node: '>= 0.4'} - - is-negative-zero@2.0.3: - resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} - engines: {node: '>= 0.4'} - - is-number-object@1.1.1: - resolution: {integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==} - engines: {node: '>= 0.4'} - - is-plain-obj@4.1.0: - resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} - engines: {node: '>=12'} - - is-regex@1.2.1: - resolution: {integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==} - engines: {node: '>= 0.4'} - - is-set@2.0.3: - resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} - engines: {node: '>= 0.4'} - - is-shared-array-buffer@1.0.4: - resolution: {integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==} - engines: {node: '>= 0.4'} - - is-string@1.1.1: - resolution: {integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==} - engines: {node: '>= 0.4'} - - is-symbol@1.1.1: - resolution: {integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==} - engines: {node: '>= 0.4'} - - is-typed-array@1.1.15: - resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} - engines: {node: '>= 0.4'} - - is-weakmap@2.0.2: - resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} - engines: {node: '>= 0.4'} - - is-weakref@1.1.1: - resolution: {integrity: sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==} - engines: {node: '>= 0.4'} - - is-weakset@2.0.4: - resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==} - engines: {node: '>= 0.4'} - - is-what@4.1.16: - resolution: {integrity: sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==} - engines: {node: '>=12.13'} - - isarray@2.0.5: - resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} - - isexe@2.0.0: - resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - - iterator.prototype@1.1.5: - resolution: {integrity: sha512-H0dkQoCa3b2VEeKQBOxFph+JAbcrQdE7KC0UkqwpLmv2EC4P41QXP+rqo9wYodACiG5/WM5s9oDApTU8utwj9g==} - engines: {node: '>= 0.4'} - - jiti@2.7.0: - resolution: {integrity: sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==} - hasBin: true - - jju@1.4.0: - resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==} - - jotai@2.20.2: - resolution: {integrity: sha512-aHB4CNb9qRcyf0mwSB6EO5bCGAjx8cTwFgOFCE2leOnTzqACbnSWG8XoWB3LxCT1Qoj03I1OWAHszDmN4uHb/w==} - engines: {node: '>=12.20.0'} - peerDependencies: - '@babel/core': '>=7.0.0' - '@babel/template': '>=7.0.0' - '@types/react': '>=17.0.0' - react: '>=17.0.0' - peerDependenciesMeta: - '@babel/core': - optional: true - '@babel/template': - optional: true - '@types/react': - optional: true - react: - optional: true - - js-tiktoken@1.0.21: - resolution: {integrity: sha512-biOj/6M5qdgx5TKjDnFT1ymSpM5tbd3ylwDtrQvFQSu0Z7bBYko2dF+W/aUkXUPuk6IVpRxk/3Q2sHOzGlS36g==} - - js-tokens@10.0.0: - resolution: {integrity: sha512-lM/UBzQmfJRo9ABXbPWemivdCW8V2G8FHaHdypQaIy523snUjog0W71ayWXTjiR+ixeMyVHN2XcpnTd/liPg/Q==} - - js-tokens@4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - - js-yaml@4.3.0: - resolution: {integrity: sha512-1td788aAnnZ5qs7V2QIRl1owjtYpbKt749Y3xauqQgwIIGF/xXWz1wMTEBx5O3LK3lXLVuqXPdPxj2BoFHaW9Q==} - hasBin: true - - jsesc@3.1.0: - resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} - engines: {node: '>=6'} - hasBin: true - - json-buffer@3.0.1: - resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} - - json-schema-traverse@0.4.1: - resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} - - json-stable-stringify-without-jsonify@1.0.1: - resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - - json5@1.0.2: - resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} - hasBin: true - - json5@2.2.3: - resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} - engines: {node: '>=6'} - hasBin: true - - jsonc-parser@3.3.1: - resolution: {integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==} - - jsx-ast-utils@3.3.5: - resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} - engines: {node: '>=4.0'} - - keyv@4.5.4: - resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} - - langsmith@0.3.87: - resolution: {integrity: sha512-XXR1+9INH8YX96FKWc5tie0QixWz6tOqAsAKfcJyPkE0xPep+NDz0IQLR32q4bn10QK3LqD2HN6T3n6z1YLW7Q==} - peerDependencies: - '@opentelemetry/api': '*' - '@opentelemetry/exporter-trace-otlp-proto': '*' - '@opentelemetry/sdk-trace-base': '*' - openai: '*' - peerDependenciesMeta: - '@opentelemetry/api': - optional: true - '@opentelemetry/exporter-trace-otlp-proto': - optional: true - '@opentelemetry/sdk-trace-base': - optional: true - openai: - optional: true - - language-subtag-registry@0.3.23: - resolution: {integrity: sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==} - - language-tags@1.0.9: - resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==} - engines: {node: '>=0.10'} - - less-loader@12.3.3: - resolution: {integrity: sha512-F0+ErFFDj3Pt+nVrCN6VlEGEzocv9s7x/aR9v2riI+WM83UAfTYBDBjGPJnT55lBLR6JSI4fmWblt+aA2JN6/w==} - engines: {node: '>= 18.12.0'} - peerDependencies: - '@rspack/core': 0.x || ^1.0.0 || ^2.0.0-0 - less: ^3.5.0 || ^4.0.0 - webpack: ^5.0.0 - peerDependenciesMeta: - '@rspack/core': - optional: true - webpack: - optional: true - - less@4.8.0: - resolution: {integrity: sha512-7Y7DJBMbsW29UGjOG6NGvxQEx71AaDcrryBwYCMaFwn0kj8FkSueKN9r9WexVOetKEhXh38kL++WJncfkEpS+g==} - engines: {node: '>=18'} - hasBin: true - - levn@0.4.1: - resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} - engines: {node: '>= 0.8.0'} - - linkifyjs@4.3.3: - resolution: {integrity: sha512-P8aEP5U/D1/IlTY2OeYsErdwh9bGuLE30NcXtKEjgdHcahveQoQwM2yZNsioQHsWFz0P7KKudisbrzCgR0sDHg==} - - locate-path@6.0.0: - resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} - engines: {node: '>=10'} - - lodash-es@4.18.1: - resolution: {integrity: sha512-J8xewKD/Gk22OZbhpOVSwcs60zhd95ESDwezOFuA3/099925PdHJ7OFHNTGtajL3AlZkykD32HykiMo+BIBI8A==} - - lodash.debounce@4.0.8: - resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} - - lodash.merge@4.6.2: - resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - - lodash@4.18.1: - resolution: {integrity: sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==} - - longest-streak@3.1.0: - resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} - - loose-envify@1.4.0: - resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} - hasBin: true - - lottie-web@5.13.0: - resolution: {integrity: sha512-+gfBXl6sxXMPe8tKQm7qzLnUy5DUPJPKIyRHwtpCpyUEYjHYRJC/5gjUvdkuO2c3JllrPtHXH5UJJK8LRYl5yQ==} - - lru-cache@11.5.2: - resolution: {integrity: sha512-4pfM1Ff0x50o0tQwb5ucw/RzNyD0/YJME6IVcStalZuMWxdt3sR3huStTtxz4PUmvZfRguvDejasvQ2kifR11g==} - engines: {node: 20 || >=22} - - lru-cache@5.1.1: - resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} - - lz-string@1.5.0: - resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} - hasBin: true - - magic-string@0.30.21: - resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} - - make-dir@5.1.0: - resolution: {integrity: sha512-IfpFq6UM39dUNiphpA6uDezNx/AvWyhwfICWPR3t1VspkgkMZrL+Rk1RbN1bx+aeNYwOrqGJgEgV3yotk+ZUVw==} - engines: {node: '>=18'} - - make-error@1.3.6: - resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} - - make-plural@7.5.0: - resolution: {integrity: sha512-0booA+aVYyVFoR67JBHdfVk0U08HmrBH2FrtmBqBa+NldlqXv/G2Z9VQuQq6Wgp2jDWdybEWGfBkk1cq5264WA==} - - markdown-extensions@2.0.0: - resolution: {integrity: sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==} - engines: {node: '>=16'} - - markdown-table@3.0.4: - resolution: {integrity: sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==} - - marked-shiki@1.2.1: - resolution: {integrity: sha512-yHxYQhPY5oYaIRnROn98foKhuClark7M373/VpLxiy5TrDu9Jd/LsMwo8w+U91Up4oDb9IXFrP0N1MFRz8W/DQ==} - peerDependencies: - marked: '>=7.0.0' - shiki: '>=1.0.0' - - marked@15.0.12: - resolution: {integrity: sha512-8dD6FusOQSrpv9Z1rdNMdlSgQOIP880DHqnohobOmYLElGEqAL/JvxvuxZO16r4HtjTlfPRDC1hbvxC9dPN2nA==} - engines: {node: '>= 18'} - hasBin: true - - math-intrinsics@1.1.0: - resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} - engines: {node: '>= 0.4'} - - mdast-util-find-and-replace@3.0.2: - resolution: {integrity: sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==} - - mdast-util-from-markdown@2.0.3: - resolution: {integrity: sha512-W4mAWTvSlKvf8L6J+VN9yLSqQ9AOAAvHuoDAmPkz4dHf553m5gVj2ejadHJhoJmcmxEnOv6Pa8XJhpxE93kb8Q==} - - mdast-util-gfm-autolink-literal@2.0.1: - resolution: {integrity: sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==} - - mdast-util-gfm-footnote@2.1.0: - resolution: {integrity: sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==} - - mdast-util-gfm-strikethrough@2.0.0: - resolution: {integrity: sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==} - - mdast-util-gfm-table@2.0.0: - resolution: {integrity: sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==} - - mdast-util-gfm-task-list-item@2.0.0: - resolution: {integrity: sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==} - - mdast-util-gfm@3.1.0: - resolution: {integrity: sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==} - - mdast-util-mdx-expression@2.0.1: - resolution: {integrity: sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==} - - mdast-util-mdx-jsx@3.2.0: - resolution: {integrity: sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==} - - mdast-util-mdx@3.0.0: - resolution: {integrity: sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==} - - mdast-util-mdxjs-esm@2.0.1: - resolution: {integrity: sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==} - - mdast-util-phrasing@4.1.0: - resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==} - - mdast-util-to-hast@13.2.1: - resolution: {integrity: sha512-cctsq2wp5vTsLIcaymblUriiTcZd0CwWtCbLvrOzYCDZoWyMNV8sZ7krj09FSnsiJi3WVsHLM4k6Dq/yaPyCXA==} - - mdast-util-to-markdown@2.1.2: - resolution: {integrity: sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==} - - mdast-util-to-string@4.0.0: - resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==} - - memoize-one@5.2.1: - resolution: {integrity: sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==} - - micromark-core-commonmark@2.0.3: - resolution: {integrity: sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==} - - micromark-extension-gfm-autolink-literal@2.1.0: - resolution: {integrity: sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==} - - micromark-extension-gfm-footnote@2.1.0: - resolution: {integrity: sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==} - - micromark-extension-gfm-strikethrough@2.1.0: - resolution: {integrity: sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==} - - micromark-extension-gfm-table@2.1.1: - resolution: {integrity: sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==} - - micromark-extension-gfm-tagfilter@2.0.0: - resolution: {integrity: sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==} - - micromark-extension-gfm-task-list-item@2.1.0: - resolution: {integrity: sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==} - - micromark-extension-gfm@3.0.0: - resolution: {integrity: sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==} - - micromark-extension-mdx-expression@3.0.1: - resolution: {integrity: sha512-dD/ADLJ1AeMvSAKBwO22zG22N4ybhe7kFIZ3LsDI0GlsNr2A3KYxb0LdC1u5rj4Nw+CHKY0RVdnHX8vj8ejm4Q==} - - micromark-extension-mdx-jsx@3.0.2: - resolution: {integrity: sha512-e5+q1DjMh62LZAJOnDraSSbDMvGJ8x3cbjygy2qFEi7HCeUT4BDKCvMozPozcD6WmOt6sVvYDNBKhFSz3kjOVQ==} - - micromark-extension-mdx-md@2.0.0: - resolution: {integrity: sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==} - - micromark-extension-mdxjs-esm@3.0.0: - resolution: {integrity: sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==} - - micromark-extension-mdxjs@3.0.0: - resolution: {integrity: sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==} - - micromark-factory-destination@2.0.1: - resolution: {integrity: sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==} - - micromark-factory-label@2.0.1: - resolution: {integrity: sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==} - - micromark-factory-mdx-expression@2.0.3: - resolution: {integrity: sha512-kQnEtA3vzucU2BkrIa8/VaSAsP+EJ3CKOvhMuJgOEGg9KDC6OAY6nSnNDVRiVNRqj7Y4SlSzcStaH/5jge8JdQ==} - - micromark-factory-space@2.0.1: - resolution: {integrity: sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==} - - micromark-factory-title@2.0.1: - resolution: {integrity: sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==} - - micromark-factory-whitespace@2.0.1: - resolution: {integrity: sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==} - - micromark-util-character@2.1.1: - resolution: {integrity: sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==} - - micromark-util-chunked@2.0.1: - resolution: {integrity: sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==} - - micromark-util-classify-character@2.0.1: - resolution: {integrity: sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==} - - micromark-util-combine-extensions@2.0.1: - resolution: {integrity: sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==} - - micromark-util-decode-numeric-character-reference@2.0.2: - resolution: {integrity: sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==} - - micromark-util-decode-string@2.0.1: - resolution: {integrity: sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==} - - micromark-util-encode@2.0.1: - resolution: {integrity: sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==} - - micromark-util-events-to-acorn@2.0.3: - resolution: {integrity: sha512-jmsiEIiZ1n7X1Rr5k8wVExBQCg5jy4UXVADItHmNk1zkwEVhBuIUKRu3fqv+hs4nxLISi2DQGlqIOGiFxgbfHg==} - - micromark-util-html-tag-name@2.0.1: - resolution: {integrity: sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==} - - micromark-util-normalize-identifier@2.0.1: - resolution: {integrity: sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==} - - micromark-util-resolve-all@2.0.1: - resolution: {integrity: sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==} - - micromark-util-sanitize-uri@2.0.1: - resolution: {integrity: sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==} - - micromark-util-subtokenize@2.1.0: - resolution: {integrity: sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==} - - micromark-util-symbol@2.0.1: - resolution: {integrity: sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==} - - micromark-util-types@2.0.2: - resolution: {integrity: sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==} - - micromark@4.0.2: - resolution: {integrity: sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==} - - mime@1.6.0: - resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} - engines: {node: '>=4'} - hasBin: true - - minimatch@10.2.5: - resolution: {integrity: sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==} - engines: {node: 18 || 20 || >=22} - - minimatch@3.1.5: - resolution: {integrity: sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==} - - minimist@1.2.8: - resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - - mitt@3.0.1: - resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} - - modern-screenshot@4.6.7: - resolution: {integrity: sha512-0GhgI6i6le4AhKzCvLYjwEmsP47kTsX45iT5yuAzsLTi/7i3Rjxe8fbH2VjGJLuyOThwsa0CdQAPd4auoEtsZg==} - - ms@2.0.0: - resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} - - ms@2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - - mustache@4.2.0: - resolution: {integrity: sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==} - hasBin: true - - nanoid@3.3.16: - resolution: {integrity: sha512-bzlKTyNJ7+LdGIIwy8ijFpIqEQIvafahV7eYykJ8Cvh42EdJeODoJ6gUJXpQJvej1BddH8OqTXZNE/KfbWAu8Q==} - engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} - hasBin: true - - nanoid@5.1.16: - resolution: {integrity: sha512-kVrnsrJqMR8+oLJnGEmSWw9BivK5mt7H3FZatVRjrc5wGqFYuBxX1yG7+A7Gi5AefkX6t/oCkizcQgpu0cY1dQ==} - engines: {node: ^18 || >=20} - hasBin: true - - napi-postinstall@0.3.4: - resolution: {integrity: sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ==} - engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} - hasBin: true - - natural-compare@1.4.0: - resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - - needle@2.9.1: - resolution: {integrity: sha512-6R9fqJ5Zcmf+uYaFgdIHmLwNldn5HbK8L5ybn7Uz+ylX/rnOsSp1AHcvQSrCaFN+qNM1wpymHqD7mVasEOlHGQ==} - engines: {node: '>= 4.4.x'} - hasBin: true - - needle@3.5.0: - resolution: {integrity: sha512-jaQyPKKk2YokHrEg+vFDYxXIHTCBgiZwSHOoVx/8V3GIBS8/VN6NdVRmg8q1ERtPkMvmOvebsgga4sAj5hls/w==} - engines: {node: '>= 4.4.x'} - hasBin: true - - node-exports-info@1.6.2: - resolution: {integrity: sha512-kXs9Go0cah0qHVV2v389IXQLdLCeE1xfFtjOAF+iobu0OIoG1pje8At2vMHyaPMiPMnG/LWP50twML21eMcAag==} - engines: {node: '>= 0.4'} - - node-releases@2.0.51: - resolution: {integrity: sha512-wRNIrw4DmVLKQlbgOMdkMx27Wrpzes2hh5Jtbi2bjPd+4wJstWIqP5A+lscnqbm0xxmT5Bpg8Lec5ItEBwx6BQ==} - engines: {node: '>=18'} - - object-assign@4.1.1: - resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} - engines: {node: '>=0.10.0'} - - object-inspect@1.13.4: - resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} - engines: {node: '>= 0.4'} - - object-keys@1.1.1: - resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} - engines: {node: '>= 0.4'} - - object.assign@4.1.7: - resolution: {integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==} - engines: {node: '>= 0.4'} - - object.entries@1.1.9: - resolution: {integrity: sha512-8u/hfXFRBD1O0hPUjioLhoWFHRmt6tKA4/vZPyckBr18l1KE9uHrFaFaUi8MDRTpi4uak2goyPTSNJLXX2k2Hw==} - engines: {node: '>= 0.4'} - - object.fromentries@2.0.8: - resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} - engines: {node: '>= 0.4'} - - object.groupby@1.0.3: - resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==} - engines: {node: '>= 0.4'} - - object.values@1.2.1: - resolution: {integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==} - engines: {node: '>= 0.4'} - - obug@2.1.4: - resolution: {integrity: sha512-4a+OsYv9UktOJKE+l1A4OufDgdRF9PifWj+tJnHURo/P+WOxpG4GzUFL9qCalmWauao6ogiG+QvnCovwPoyAWA==} - engines: {node: '>=12.20.0'} - - oniguruma-parser@0.12.2: - resolution: {integrity: sha512-6HVa5oIrgMC6aA6WF6XyyqbhRPJrKR02L20+2+zpDtO5QAzGHAUGw5TKQvwi5vctNnRHkJYmjAhRVQF2EKdTQw==} - - oniguruma-to-es@4.3.6: - resolution: {integrity: sha512-csuQ9x3Yr0cEIs/Zgx/OEt9iBw9vqIunAPQkx19R/fiMq2oGVTgcMqO/V3Ybqefr1TBvosI6jU539ksaBULJyA==} - - openai@5.23.2: - resolution: {integrity: sha512-MQBzmTulj+MM5O8SKEk/gL8a7s5mktS9zUtAkU257WjvobGc9nKcBuVwjyEEcb9SI8a8Y2G/mzn3vm9n1Jlleg==} - hasBin: true - peerDependencies: - ws: ^8.18.0 - zod: ^3.23.8 - peerDependenciesMeta: - ws: - optional: true - zod: - optional: true - - optionator@0.9.4: - resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} - engines: {node: '>= 0.8.0'} - - orderedmap@2.1.1: - resolution: {integrity: sha512-TvAWxi0nDe1j/rtMcWcIj94+Ffe6n7zhow33h40SKxmsmozs6dz/e+EajymfoFcHd7sxNn8yHM8839uixMOV6g==} - - overlayscrollbars@2.16.0: - resolution: {integrity: sha512-N03oje/q7j93D0aLZtoCdsDSYLmhheSsv8H7oSLE7HhdV9P/bmCURtLV/KbPye7P/bpfyt/obSfDpGUYoJ0OWg==} - - own-keys@1.0.2: - resolution: {integrity: sha512-19YVAg7T+WTrxggPukVq7DjTv6+PJ867TmhCvBsYwmbFCsZd344rq2Ld1p0wo8f8Qrrhgp82c6FJRqdXWtSEhg==} - engines: {node: '>= 0.4'} - - p-finally@1.0.0: - resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} - engines: {node: '>=4'} - - p-limit@3.1.0: - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} - engines: {node: '>=10'} - - p-locate@5.0.0: - resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} - engines: {node: '>=10'} - - p-queue@6.6.2: - resolution: {integrity: sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==} - engines: {node: '>=8'} - - p-retry@4.6.2: - resolution: {integrity: sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==} - engines: {node: '>=8'} - - p-timeout@3.2.0: - resolution: {integrity: sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==} - engines: {node: '>=8'} - - parent-module@1.0.1: - resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} - engines: {node: '>=6'} - - parse-entities@4.0.2: - resolution: {integrity: sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==} - - parse-node-version@1.0.1: - resolution: {integrity: sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==} - engines: {node: '>= 0.10'} - - path-exists@4.0.0: - resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} - engines: {node: '>=8'} - - path-key@3.1.1: - resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} - engines: {node: '>=8'} - - path-parse@1.0.7: - resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - - picocolors@1.1.1: - resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} - - picomatch@4.0.5: - resolution: {integrity: sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==} - engines: {node: '>=12'} - - possible-typed-array-names@1.1.0: - resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} - engines: {node: '>= 0.4'} - - postcss-value-parser@4.2.0: - resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - - postcss@8.5.23: - resolution: {integrity: sha512-g50586zr4bZmwFiTlflMu8E0bDTb5I5gertgwAKmsdUlTQIhZtunzUlD1WSzwcVWPoAVpsrA6vlfCD7oXvRwgg==} - engines: {node: ^10 || ^12 || >=14} - - prelude-ls@1.2.1: - resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} - engines: {node: '>= 0.8.0'} - - prettier-linter-helpers@1.0.1: - resolution: {integrity: sha512-SxToR7P8Y2lWmv/kTzVLC1t/GDI2WGjMwNhLLE9qtH8Q13C+aEmuRlzDst4Up4s0Wc8sF2M+J57iB3cMLqftfg==} - engines: {node: '>=6.0.0'} - - prettier-plugin-packagejson@2.5.22: - resolution: {integrity: sha512-G6WalmoUssKF8ZXkni0+n4324K+gG143KPysSQNW+FrR0XyNb3BdRxchGC/Q1FE/F702p7/6KU7r4mv0WSWbzA==} - peerDependencies: - prettier: '>= 1.16.0' - peerDependenciesMeta: - prettier: - optional: true - - prettier@2.8.8: - resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} - engines: {node: '>=10.13.0'} - hasBin: true - - prismjs@1.30.0: - resolution: {integrity: sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==} - engines: {node: '>=6'} - - probe-image-size@7.3.0: - resolution: {integrity: sha512-7CaDeBwiAbh6ohXsvLbAZhO7wzsZAmaevfxe39qvCwRh8LyaZfDlBGGLU1CCTgrTLtCOdwBBhjOrIHaIIimHfQ==} - - prop-types@15.8.1: - resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} - - property-information@7.2.0: - resolution: {integrity: sha512-IAtzIB6sUiWaJYrX9smp3V46pBGbBeLFRGdh25kg1334VcBlD8HzhPeNIWQH9zhGmo2itIe25EHt9dQP7G5hmg==} - - prosemirror-changeset@2.4.1: - resolution: {integrity: sha512-96WBLhOaYhJ+kPhLg3uW359Tz6I/MfcrQfL4EGv4SrcqKEMC1gmoGrXHecPE8eOwTVCJ4IwgfzM8fFad25wNfw==} - - prosemirror-commands@1.7.1: - resolution: {integrity: sha512-rT7qZnQtx5c0/y/KlYaGvtG411S97UaL6gdp6RIZ23DLHanMYLyfGBV5DtSnZdthQql7W+lEVbpSfwtO8T+L2w==} - - prosemirror-dropcursor@1.8.3: - resolution: {integrity: sha512-FoYbsJR8gK+DGlqhNoE29Loa38eIZPzQRIb1VMaDNBoo4OLP6vVof/jR8qFY/6XvUd6Dhug8MDCHl2a/h8RTfQ==} - - prosemirror-gapcursor@1.4.1: - resolution: {integrity: sha512-pMdYaEnjNMSwl11yjEGtgTmLkR08m/Vl+Jj443167p9eB3HVQKhYCc4gmHVDsLPODfZfjr/MmirsdyZziXbQKw==} - - prosemirror-history@1.5.0: - resolution: {integrity: sha512-zlzTiH01eKA55UAf1MEjtssJeHnGxO0j4K4Dpx+gnmX9n+SHNlDqI2oO1Kv1iPN5B1dm5fsljCfqKF9nFL6HRg==} - - prosemirror-inputrules@1.5.1: - resolution: {integrity: sha512-7wj4uMjKaXWAQ1CDgxNzNtR9AlsuwzHfdFH1ygEHA2KHF2DOEaXl1CJfNPAKCg9qNEh4rum975QLaCiQPyY6Fw==} - - prosemirror-keymap@1.2.3: - resolution: {integrity: sha512-4HucRlpiLd1IPQQXNqeo81BGtkY8Ai5smHhKW9jjPKRc2wQIxksg7Hl1tTI2IfT2B/LgX6bfYvXxEpJl7aKYKw==} - - prosemirror-model@1.25.11: - resolution: {integrity: sha512-QWg9RhnpLlogAmp3p96uEFrE5txQpFynd4vhBAELkwgOCWQs/X0yCzB3/hrHqiPwf91RG5KyWq6553zs9JqIOQ==} - - prosemirror-schema-list@1.5.1: - resolution: {integrity: sha512-927lFx/uwyQaGwJxLWCZRkjXG0p48KpMj6ueoYiu4JX05GGuGcgzAy62dfiV8eFZftgyBUvLx76RsMe20fJl+Q==} - - prosemirror-state@1.4.4: - resolution: {integrity: sha512-6jiYHH2CIGbCfnxdHbXZ12gySFY/fz/ulZE333G6bPqIZ4F+TXo9ifiR86nAHpWnfoNjOb3o5ESi7J8Uz1jXHw==} - - prosemirror-tables@1.8.5: - resolution: {integrity: sha512-V/0cDCsHKHe/tfWkeCmthNUcEp1IVO3p6vwN8XtwE9PZQLAZJigbw3QoraAdfJPir4NKJtNvOB8oYGKRl+t0Dw==} - - prosemirror-transform@1.12.0: - resolution: {integrity: sha512-GxboyN4AMIsoHNtz5uf2r2Ru551i5hWeCMD6E2Ib4Eogqoub0NflniaBPVQ4MrGE5yZ8JV9tUHg9qcZTTrcN4w==} - - prosemirror-view@1.42.2: - resolution: {integrity: sha512-Pdg0l5kXm8aLDquFAnQFTCITg0q44sLqBlHlpsVLD9segdOao8TOfQdAhCrCXyVgPSRr6UDDROOIWA3bIrN9YQ==} - - prr@1.0.1: - resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==} - - punycode@2.3.1: - resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} - engines: {node: '>=6'} - - quickjs-emscripten-core@0.32.0: - resolution: {integrity: sha512-QFnPfjFey8EqknSrSxe1hZrf1/8z7/6s1QzGOmKo6++02r7QRRX7ZoyNaZh7JuVjWsVW87KnQrbZqnHkOAzUyg==} - - quickjs-emscripten@0.32.0: - resolution: {integrity: sha512-So0Sqw869y/S2oE3Nuc0uT3Dhqgvsj8FSrwBdsuTosVsG8ME5/OcudU1GxsrIFdFABgy17GHnTVO9TYV/bLQcA==} - engines: {node: '>=16.0.0'} - - react-dom@18.3.1: - resolution: {integrity: sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==} - peerDependencies: - react: ^18.3.1 - - react-draggable@4.7.0: - resolution: {integrity: sha512-kTpANmKWVnFXiZ76Ag2ZowiFStuBYnJ606PI1TbUsOg29/400/JNIxI9+CuenhiAqFuXWJffz6F4UI3R51kUug==} - peerDependencies: - react: '>= 16.3.0' - react-dom: '>= 16.3.0' - - react-is@16.13.1: - resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} - - react-refresh@0.18.0: - resolution: {integrity: sha512-QgT5//D3jfjJb6Gsjxv0Slpj23ip+HtOpnNgnb2S5zU3CB26G/IDPGoy4RJB42wzFE46DRsstbW6tKHoKbhAxw==} - engines: {node: '>=0.10.0'} - - react-resizable@3.2.0: - resolution: {integrity: sha512-3NKQ0SLZV7rs3LQHeXlOzDSRQfFrkX6TVet77/Qk03zqiZyee37b7N8/gwDJAA8UUjRz7PdWCCy49hcso45SMQ==} - peerDependencies: - react: '>= 16.3' - react-dom: '>= 16.3' - - react-window@1.8.11: - resolution: {integrity: sha512-+SRbUVT2scadgFSWx+R1P754xHPEqvcfSfVX10QYg6POOz+WNgkN48pS+BtZNIMGiL1HYrSEiCkwsMS15QogEQ==} - engines: {node: '>8.0.0'} - peerDependencies: - react: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - react-dom: ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - - react@18.3.1: - resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} - engines: {node: '>=0.10.0'} - - recma-build-jsx@1.0.0: - resolution: {integrity: sha512-8GtdyqaBcDfva+GUKDr3nev3VpKAhup1+RvkMvUxURHpW7QyIvk9F5wz7Vzo06CEMSilw6uArgRqhpiUcWp8ew==} - - recma-jsx@1.0.1: - resolution: {integrity: sha512-huSIy7VU2Z5OLv6oFLosQGGDqPqdO1iq6bWNAdhzMxSJP7RAso4fCZ1cKu8j9YHCZf3TPrq4dw3okhrylgcd7w==} - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - - recma-parse@1.0.0: - resolution: {integrity: sha512-OYLsIGBB5Y5wjnSnQW6t3Xg7q3fQ7FWbw/vcXtORTnyaSFscOtABg+7Pnz6YZ6c27fG1/aN8CjfwoUEUIdwqWQ==} - - recma-stringify@1.0.0: - resolution: {integrity: sha512-cjwII1MdIIVloKvC9ErQ+OgAtwHBmcZ0Bg4ciz78FtbT8In39aAYbaA7zvxQ61xVMSPE8WxhLwLbhif4Js2C+g==} - - reduce-configs@1.1.2: - resolution: {integrity: sha512-AgBP55V8FC7NaqoOP2RCbTpu6LE+YuX3LUZkNAoitcfyS3/PIC8Obg/TJrBzTkJ+lDvZv0TTAeDpLkzjTtYlbw==} - - reflect-metadata@0.2.2: - resolution: {integrity: sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==} - - reflect.getprototypeof@1.0.10: - resolution: {integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==} - engines: {node: '>= 0.4'} - - regenerate-unicode-properties@10.2.2: - resolution: {integrity: sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==} - engines: {node: '>=4'} - - regenerate@1.4.2: - resolution: {integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==} - - regex-recursion@6.0.2: - resolution: {integrity: sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==} - - regex-utilities@2.3.0: - resolution: {integrity: sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==} - - regex@6.1.0: - resolution: {integrity: sha512-6VwtthbV4o/7+OaAF9I5L5V3llLEsoPyq9P1JVXkedTP33c7MfCG0/5NOPcSJn0TzXcG9YUrR0gQSWioew3LDg==} - - regexp.prototype.flags@1.5.4: - resolution: {integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==} - engines: {node: '>= 0.4'} - - regexpu-core@6.4.0: - resolution: {integrity: sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==} - engines: {node: '>=4'} - - regjsgen@0.8.0: - resolution: {integrity: sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==} - - regjsparser@0.13.2: - resolution: {integrity: sha512-NgRBy2Nx/bE+9F27nVHnqcN5HjyLmecqsqx2PJHu3/IEtADD4WuxuXIVExD5PoSDFVrl78dOonfcOe5O+5nbzQ==} - hasBin: true - - rehype-recma@1.0.0: - resolution: {integrity: sha512-lqA4rGUf1JmacCNWWZx0Wv1dHqMwxzsDWYMTowuplHF3xH0N/MmrZ/G3BDZnzAkRmxDadujCjaKM2hqYdCBOGw==} - - remark-gfm@4.0.1: - resolution: {integrity: sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==} - - remark-mdx@3.1.1: - resolution: {integrity: sha512-Pjj2IYlUY3+D8x00UJsIOg5BEvfMyeI+2uLPn9VO9Wg4MEtN/VTIq2NEJQfde9PnX15KgtHyl9S0BcTnWrIuWg==} - - remark-parse@11.0.0: - resolution: {integrity: sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==} - - remark-rehype@11.1.2: - resolution: {integrity: sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw==} - - remark-stringify@11.0.0: - resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==} - - resolve-from@4.0.0: - resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} - engines: {node: '>=4'} - - resolve-pkg-maps@1.0.0: - resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} - - resolve@1.19.0: - resolution: {integrity: sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==} - - resolve@1.22.12: - resolution: {integrity: sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==} - engines: {node: '>= 0.4'} - hasBin: true - - resolve@2.0.0-next.7: - resolution: {integrity: sha512-tqt+NBWwyaMgw3zDsnygx4CByWjQEJHOPMdslYhppaQSJUtL/D4JO9CcBBlhPoI8lz9oJIDXkwXfhF4aWqP8xQ==} - engines: {node: '>= 0.4'} - hasBin: true - - retry@0.13.1: - resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} - engines: {node: '>= 4'} - - rope-sequence@1.3.4: - resolution: {integrity: sha512-UT5EDe2cu2E/6O4igUr5PSFs23nvvukicWHx6GnOPlHAiiYbzNuCRQCuiUdHJQcqKalLKlrYJnjY0ySGsXNQXQ==} - - rxjs@7.8.2: - resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==} - - safe-array-concat@1.1.4: - resolution: {integrity: sha512-wtZlHyOje6OZTGqAoaDKxFkgRtkF9CnHAVnCHKfuj200wAgL+bSJhdsCD2l0Qx/2ekEXjPWcyKkfGb5CPboslg==} - engines: {node: '>=0.4'} - - safe-push-apply@1.0.0: - resolution: {integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==} - engines: {node: '>= 0.4'} - - safe-regex-test@1.1.0: - resolution: {integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==} - engines: {node: '>= 0.4'} - - safer-buffer@2.1.2: - resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - - sax@1.6.1: - resolution: {integrity: sha512-42tBVwLWnaQvW5zc4HbZrTuWccECCZfBi92FDuwtqxasH+JbPB3/FOKb1m222K42R4WxuxzzMsTswfzgtSu64Q==} - engines: {node: '>=11.0.0'} - - scheduler@0.23.2: - resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==} - - scroll-into-view-if-needed@2.2.31: - resolution: {integrity: sha512-dGCXy99wZQivjmjIqihaBQNjryrz5rueJY7eHfTdyWEiR4ttYpsajb14rn9s5d4DY4EcY6+4+U/maARBXJedkA==} - - semver@6.3.1: - resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} - hasBin: true - - semver@7.8.5: - resolution: {integrity: sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==} - engines: {node: '>=10'} - hasBin: true - - set-function-length@1.2.2: - resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} - engines: {node: '>= 0.4'} - - set-function-name@2.0.2: - resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} - engines: {node: '>= 0.4'} - - set-proto@1.0.0: - resolution: {integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==} - engines: {node: '>= 0.4'} - - shallowequal@1.1.0: - resolution: {integrity: sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==} - - shebang-command@2.0.0: - resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} - engines: {node: '>=8'} - - shebang-regex@3.0.0: - resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} - engines: {node: '>=8'} - - shiki@3.23.0: - resolution: {integrity: sha512-55Dj73uq9ZXL5zyeRPzHQsK7Nbyt6Y10k5s7OjuFZGMhpp4r/rsLBH0o/0fstIzX1Lep9VxefWljK/SKCzygIA==} - - side-channel-list@1.0.1: - resolution: {integrity: sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==} - engines: {node: '>= 0.4'} - - side-channel-map@1.0.1: - resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} - engines: {node: '>= 0.4'} - - side-channel-weakmap@1.0.2: - resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} - engines: {node: '>= 0.4'} - - side-channel@1.1.1: - resolution: {integrity: sha512-6x6dK6zJdpTzF4sQeNYxwtvBzf6Eg4GtlesS94HOvTudUeyK2WXAaIfmDgsyslYrRBeFIlsi54AYsFGUuhmvrQ==} - engines: {node: '>= 0.4'} - - simple-wcswidth@1.1.2: - resolution: {integrity: sha512-j7piyCjAeTDSjzTSQ7DokZtMNwNlEAyxqSZeCS+CXH7fJ4jx3FuJ/mTW3mE+6JLs4VJBbcll0Kjn+KXI5t21Iw==} - - sort-object-keys@2.1.0: - resolution: {integrity: sha512-SOiEnthkJKPv2L6ec6HMwhUcN0/lppkeYuN1x63PbyPRrgSPIuBJCiYxYyvWRTtjMlOi14vQUCGUJqS6PLVm8g==} - - sort-package-json@3.6.0: - resolution: {integrity: sha512-fyJsPLhWvY7u2KsKPZn1PixbXp+1m7V8NWqU8CvgFRbMEX41Ffw1kD8n0CfJiGoaSfoAvbrqRRl/DcHO8omQOQ==} - engines: {node: '>=20'} - hasBin: true - - source-map-js@1.2.1: - resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} - engines: {node: '>=0.10.0'} - - source-map@0.6.1: - resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} - engines: {node: '>=0.10.0'} - - source-map@0.7.6: - resolution: {integrity: sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==} - engines: {node: '>= 12'} - - space-separated-tokens@2.0.2: - resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==} - - stable-hash@0.0.5: - resolution: {integrity: sha512-+L3ccpzibovGXFK+Ap/f8LOS0ahMrHTf3xu7mMLSpEGU0EO9ucaysSylKo9eRDFNhWve/y275iPmIZ4z39a9iA==} - - stackframe@1.3.4: - resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==} - - stop-iteration-iterator@1.1.0: - resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==} - engines: {node: '>= 0.4'} - - stream-parser@0.3.1: - resolution: {integrity: sha512-bJ/HgKq41nlKvlhccD5kaCr/P+Hu0wPNKPJOH7en+YrJu/9EgqUF+88w5Jb6KNcjOFMhfX4B2asfeAtIGuHObQ==} - - string.prototype.includes@2.0.1: - resolution: {integrity: sha512-o7+c9bW6zpAdJHTtujeePODAhkuicdAryFsfVKwA+wGw89wJ4GTY484WTucM9hLtDEOpOvI+aHnzqnC5lHp4Rg==} - engines: {node: '>= 0.4'} - - string.prototype.matchall@4.0.12: - resolution: {integrity: sha512-6CC9uyBL+/48dYizRf7H7VAYCMCNTBeM78x/VTUe9bFEaxBepPJDa1Ow99LqI/1yF7kuy7Q3cQsYMrcjGUcskA==} - engines: {node: '>= 0.4'} - - string.prototype.repeat@1.0.0: - resolution: {integrity: sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==} - - string.prototype.trim@1.2.11: - resolution: {integrity: sha512-PwvK7BU+CMTJGYQCTZb5RWXIML92lftJLhQz1tBzgKiqGxJaMlBAa48POXaNAC2s4y8jr3EFqrkF9+44neS46w==} - engines: {node: '>= 0.4'} - - string.prototype.trimend@1.0.10: - resolution: {integrity: sha512-2+3aDAOmPTmuFwjDnmJG2ctEkQKVki7vOSqaxkv42Mowj1V6PnvuwFCRrR5lChUux1TBskPjfkeTOhqczDMxTw==} - engines: {node: '>= 0.4'} - - string.prototype.trimstart@1.0.8: - resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} - engines: {node: '>= 0.4'} - - stringify-entities@4.0.4: - resolution: {integrity: sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==} - - strip-bom@3.0.0: - resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} - engines: {node: '>=4'} - - strip-json-comments@3.1.1: - resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} - engines: {node: '>=8'} - - style-mod@4.1.3: - resolution: {integrity: sha512-i/n8VsZydrugj3Iuzll8+x/00GH2vnYsk1eomD8QiRrSAeW6ItbCQDtfXCeJHd0iwiNagqjQkvpvREEPtW3IoQ==} - - style-to-js@1.1.21: - resolution: {integrity: sha512-RjQetxJrrUJLQPHbLku6U/ocGtzyjbJMP9lCNK7Ag0CNh690nSH8woqWH9u16nMjYBAok+i7JO1NP2pOy8IsPQ==} - - style-to-object@1.0.14: - resolution: {integrity: sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw==} - - styled-components@5.3.11: - resolution: {integrity: sha512-uuzIIfnVkagcVHv9nE0VPlHPSCmXIUGKfJ42LNjxCCTDTL5sgnJ8Z7GZBq0EnLYGln77tPpEpExt2+qa+cZqSw==} - engines: {node: '>=10'} - peerDependencies: - react: '>= 16.8.0' - react-dom: '>= 16.8.0' - react-is: '>= 16.8.0' - - supports-color@5.5.0: - resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} - engines: {node: '>=4'} - - supports-color@7.2.0: - resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} - engines: {node: '>=8'} - - supports-preserve-symlinks-flag@1.0.0: - resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} - engines: {node: '>= 0.4'} - - text-mapping@1.0.1: - resolution: {integrity: sha512-lONDMFNJ6QPjxYPcxkAy420qB+jMRxXERkNJAVDapQeZs0POW4pWryG9R+kAer6H+VDh/Z07x9GMNhhQrnSVIw==} - - tinyglobby@0.2.17: - resolution: {integrity: sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==} - engines: {node: '>=12.0.0'} - - trim-lines@3.0.1: - resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} - - trough@2.2.0: - resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==} - - ts-api-utils@2.5.0: - resolution: {integrity: sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==} - engines: {node: '>=18.12'} - peerDependencies: - typescript: '>=4.8.4' - - ts-node@10.9.2: - resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} - hasBin: true - peerDependencies: - '@swc/core': '>=1.2.50' - '@swc/wasm': '>=1.2.50' - '@types/node': '*' - typescript: '>=2.7' - peerDependenciesMeta: - '@swc/core': - optional: true - '@swc/wasm': - optional: true - - tsconfig-paths@3.15.0: - resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} - - tslib@2.8.1: - resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} - - type-check@0.4.0: - resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} - engines: {node: '>= 0.8.0'} - - typed-array-buffer@1.0.3: - resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} - engines: {node: '>= 0.4'} - - typed-array-byte-length@1.0.3: - resolution: {integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==} - engines: {node: '>= 0.4'} - - typed-array-byte-offset@1.0.4: - resolution: {integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==} - engines: {node: '>= 0.4'} - - typed-array-length@1.0.8: - resolution: {integrity: sha512-phPGCwqr2+Qo0fwniCE8e4pKnGu/yFb5nD5Y8bf0EEeiI5GklnACYA9GFy/DrAeRrKHXvHn+1SUsOWgJp6RO+g==} - engines: {node: '>= 0.4'} - - typescript@5.9.3: - resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} - engines: {node: '>=14.17'} - hasBin: true - - unbox-primitive@1.1.0: - resolution: {integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==} - engines: {node: '>= 0.4'} - - undici-types@5.26.5: - resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} - - unicode-canonical-property-names-ecmascript@2.0.1: - resolution: {integrity: sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==} - engines: {node: '>=4'} - - unicode-match-property-ecmascript@2.0.0: - resolution: {integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==} - engines: {node: '>=4'} - - unicode-match-property-value-ecmascript@2.2.1: - resolution: {integrity: sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==} - engines: {node: '>=4'} - - unicode-property-aliases-ecmascript@2.2.0: - resolution: {integrity: sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==} - engines: {node: '>=4'} - - unified@11.0.5: - resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==} - - unist-util-is@6.0.1: - resolution: {integrity: sha512-LsiILbtBETkDz8I9p1dQ0uyRUWuaQzd/cuEeS1hoRSyW5E5XGmTzlwY1OrNzzakGowI9Dr/I8HVaw4hTtnxy8g==} - - unist-util-position-from-estree@2.0.0: - resolution: {integrity: sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==} - - unist-util-position@5.0.0: - resolution: {integrity: sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==} - - unist-util-stringify-position@4.0.0: - resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} - - unist-util-visit-parents@6.0.2: - resolution: {integrity: sha512-goh1s1TBrqSqukSc8wrjwWhL0hiJxgA8m4kFxGlQ+8FYQ3C/m11FcTs4YYem7V664AhHVvgoQLk890Ssdsr2IQ==} - - unist-util-visit@5.1.0: - resolution: {integrity: sha512-m+vIdyeCOpdr/QeQCu2EzxX/ohgS8KbnPDgFni4dQsfSCtpz8UqDyY5GjRru8PDKuYn7Fq19j1CQ+nJSsGKOzg==} - - unrs-resolver@1.12.2: - resolution: {integrity: sha512-dmlRxBJJayXjqTwC+JtF1HhJmgf3ftQ3YejFcZrf4+KKtJv0qDsK1pjqaaVjG7wJ5NJ6UVP1OqRMQ71Z4C3rxQ==} - - update-browserslist-db@1.2.3: - resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==} - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' - - uri-js@4.4.1: - resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} - - use-sync-external-store@1.6.0: - resolution: {integrity: sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - - utility-types@3.11.0: - resolution: {integrity: sha512-6Z7Ma2aVEWisaL6TvBCy7P8rm2LQoPv6dJ7ecIaIixHcwfbJ0x7mWdbcwlIM5IGQxPZSFYeqRCqlOOeKoJYMkw==} - engines: {node: '>= 4'} - - uuid@10.0.0: - resolution: {integrity: sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==} - hasBin: true - - uuid@9.0.1: - resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} - hasBin: true - - v8-compile-cache-lib@3.0.1: - resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} - - vfile-message@4.0.3: - resolution: {integrity: sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==} - - vfile@6.0.3: - resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==} - - vscode-json-languageservice@5.7.2: - resolution: {integrity: sha512-WtKRDtJfFEmLrgtu+ODexOHm/6/krRF0k6t+uvkKIKW1Jh9ZIyxZQwJJwB3qhrEgvAxa37zbUg+vn+UyUK/U2w==} - - vscode-languageserver-textdocument@1.0.12: - resolution: {integrity: sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==} - - vscode-languageserver-types@3.18.0: - resolution: {integrity: sha512-8TsGPNMIMiiBdkORgRSvLjuiEIiAFtO+KssmYWxQ+uSVvlf7RjK8YKCOjPzZ+YA04jXEV7+7LvkSmHkhpNS99g==} - - vscode-uri@3.1.0: - resolution: {integrity: sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==} - - vue@3.5.40: - resolution: {integrity: sha512-+8PJ4SJXdn/cHGImF4CKdxlWHIN5Dkt7DoufRREM6h6uVCx2m7QxgcEQmmzyOK8A9mcafg7sFbJFYsdFVubTig==} - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - w3c-keyname@2.2.8: - resolution: {integrity: sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==} - - which-boxed-primitive@1.1.1: - resolution: {integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==} - engines: {node: '>= 0.4'} - - which-builtin-type@1.2.1: - resolution: {integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==} - engines: {node: '>= 0.4'} - - which-collection@1.0.2: - resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} - engines: {node: '>= 0.4'} - - which-typed-array@1.1.22: - resolution: {integrity: sha512-fvO4ExWMFsqyhG3AiPAObMuY1lxaqgYcxbc49CNdWDDECOJNgQyvsOWVwbZc+qf3rzRtxojBK+CMEv0Ld5CYpw==} - engines: {node: '>= 0.4'} - - which@2.0.2: - resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} - engines: {node: '>= 8'} - hasBin: true - - word-wrap@1.2.5: - resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} - engines: {node: '>=0.10.0'} - - yallist@3.1.1: - resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - - yn@3.1.1: - resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} - engines: {node: '>=6'} - - yocto-queue@0.1.0: - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} - engines: {node: '>=10'} - - zod-to-json-schema@3.25.2: - resolution: {integrity: sha512-O/PgfnpT1xKSDeQYSCfRI5Gy3hPf91mKVDuYLUHZJMiDFptvP41MSnWofm8dnCm0256ZNfZIM7DSzuSMAFnjHA==} - peerDependencies: - zod: ^3.25.28 || ^4 - - zod@3.25.76: - resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==} - - zustand@4.5.7: - resolution: {integrity: sha512-CHOUy7mu3lbD6o6LJLfllpjkzhHXSBlX8B9+qPddUsIfeF5S/UZ5q0kmCsnRqT1UHFQZchNFDDzMbQsuesHWlw==} - engines: {node: '>=12.7.0'} - peerDependencies: - '@types/react': '>=16.8' - immer: '>=9.0.6' - react: '>=16.8' - peerDependenciesMeta: - '@types/react': - optional: true - immer: - optional: true - react: - optional: true - - zwitch@2.0.4: - resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} - -snapshots: - - '@babel/code-frame@7.29.7': - dependencies: - '@babel/helper-validator-identifier': 7.29.7 - js-tokens: 4.0.0 - picocolors: 1.1.1 - - '@babel/code-frame@8.0.0': - dependencies: - '@babel/helper-validator-identifier': 8.0.4 - js-tokens: 10.0.0 - - '@babel/compat-data@7.29.7': {} - - '@babel/compat-data@8.0.0': {} - - '@babel/core@8.0.1': - dependencies: - '@babel/code-frame': 8.0.0 - '@babel/generator': 8.0.0 - '@babel/helper-compilation-targets': 8.0.0 - '@babel/helpers': 8.0.0 - '@babel/parser': 8.0.4 - '@babel/template': 8.0.0 - '@babel/traverse': 8.0.4 - '@babel/types': 8.0.4 - '@types/gensync': 1.0.5 - convert-source-map: 2.0.0 - empathic: 2.0.1 - gensync: 1.0.0-beta.2 - import-meta-resolve: 4.2.0 - json5: 2.2.3 - obug: 2.1.4 - semver: 7.8.5 - - '@babel/eslint-parser@7.19.1(@babel/core@8.0.1)(eslint@9.39.5(jiti@2.7.0))': - dependencies: - '@babel/core': 8.0.1 - '@nicolo-ribaudo/eslint-scope-5-internals': 5.1.1-v1 - eslint: 9.39.5(jiti@2.7.0) - eslint-visitor-keys: 2.1.0 - semver: 6.3.1 - - '@babel/eslint-plugin@7.29.7(@babel/eslint-parser@7.19.1(@babel/core@8.0.1)(eslint@9.39.5(jiti@2.7.0)))(eslint@9.39.5(jiti@2.7.0))': - dependencies: - '@babel/eslint-parser': 7.19.1(@babel/core@8.0.1)(eslint@9.39.5(jiti@2.7.0)) - eslint: 9.39.5(jiti@2.7.0) - eslint-rule-composer: 0.3.0 - - '@babel/generator@7.29.7': - dependencies: - '@babel/parser': 7.29.7 - '@babel/types': 7.29.7 - '@jridgewell/gen-mapping': 0.3.13 - '@jridgewell/trace-mapping': 0.3.31 - jsesc: 3.1.0 - - '@babel/generator@8.0.0': - dependencies: - '@babel/parser': 8.0.4 - '@babel/types': 8.0.4 - '@jridgewell/gen-mapping': 0.3.13 - '@jridgewell/trace-mapping': 0.3.31 - '@types/jsesc': 2.5.1 - jsesc: 3.1.0 - - '@babel/helper-annotate-as-pure@7.29.7': - dependencies: - '@babel/types': 7.29.7 - - '@babel/helper-compilation-targets@7.29.7': - dependencies: - '@babel/compat-data': 7.29.7 - '@babel/helper-validator-option': 7.29.7 - browserslist: 4.28.7 - lru-cache: 5.1.1 - semver: 6.3.1 - - '@babel/helper-compilation-targets@8.0.0': - dependencies: - '@babel/compat-data': 8.0.0 - '@babel/helper-validator-option': 8.0.0 - browserslist: 4.28.7 - lru-cache: 11.5.2 - semver: 7.8.5 - - '@babel/helper-create-class-features-plugin@7.29.7(@babel/core@8.0.1)': - dependencies: - '@babel/core': 8.0.1 - '@babel/helper-annotate-as-pure': 7.29.7 - '@babel/helper-member-expression-to-functions': 7.29.7 - '@babel/helper-optimise-call-expression': 7.29.7 - '@babel/helper-replace-supers': 7.29.7(@babel/core@8.0.1) - '@babel/helper-skip-transparent-expression-wrappers': 7.29.7 - '@babel/traverse': 7.29.7(supports-color@5.5.0) - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/helper-create-regexp-features-plugin@7.29.7(@babel/core@8.0.1)': - dependencies: - '@babel/core': 8.0.1 - '@babel/helper-annotate-as-pure': 7.29.7 - regexpu-core: 6.4.0 - semver: 6.3.1 - - '@babel/helper-define-polyfill-provider@0.3.3(@babel/core@8.0.1)': - dependencies: - '@babel/core': 8.0.1 - '@babel/helper-compilation-targets': 7.29.7 - '@babel/helper-plugin-utils': 7.29.7 - debug: 4.4.3(supports-color@5.5.0) - lodash.debounce: 4.0.8 - resolve: 1.22.12 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/helper-environment-visitor@7.24.7': - dependencies: - '@babel/types': 7.29.7 - - '@babel/helper-globals@7.29.7': {} - - '@babel/helper-globals@8.0.0': {} - - '@babel/helper-member-expression-to-functions@7.29.7': - dependencies: - '@babel/traverse': 7.29.7(supports-color@5.5.0) - '@babel/types': 7.29.7 - transitivePeerDependencies: - - supports-color - - '@babel/helper-module-imports@7.29.7(supports-color@5.5.0)': - dependencies: - '@babel/traverse': 7.29.7(supports-color@5.5.0) - '@babel/types': 7.29.7 - transitivePeerDependencies: - - supports-color - - '@babel/helper-module-transforms@7.29.7(@babel/core@8.0.1)': - dependencies: - '@babel/core': 8.0.1 - '@babel/helper-module-imports': 7.29.7(supports-color@5.5.0) - '@babel/helper-validator-identifier': 7.29.7 - '@babel/traverse': 7.29.7(supports-color@5.5.0) - transitivePeerDependencies: - - supports-color - - '@babel/helper-optimise-call-expression@7.29.7': - dependencies: - '@babel/types': 7.29.7 - - '@babel/helper-plugin-utils@7.29.7': {} - - '@babel/helper-remap-async-to-generator@7.29.7(@babel/core@8.0.1)': - dependencies: - '@babel/core': 8.0.1 - '@babel/helper-annotate-as-pure': 7.29.7 - '@babel/helper-wrap-function': 7.29.7 - '@babel/traverse': 7.29.7(supports-color@5.5.0) - transitivePeerDependencies: - - supports-color - - '@babel/helper-replace-supers@7.29.7(@babel/core@8.0.1)': - dependencies: - '@babel/core': 8.0.1 - '@babel/helper-member-expression-to-functions': 7.29.7 - '@babel/helper-optimise-call-expression': 7.29.7 - '@babel/traverse': 7.29.7(supports-color@5.5.0) - transitivePeerDependencies: - - supports-color - - '@babel/helper-skip-transparent-expression-wrappers@7.29.7': - dependencies: - '@babel/traverse': 7.29.7(supports-color@5.5.0) - '@babel/types': 7.29.7 - transitivePeerDependencies: - - supports-color - - '@babel/helper-string-parser@7.29.7': {} - - '@babel/helper-string-parser@8.0.0': {} - - '@babel/helper-validator-identifier@7.29.7': {} - - '@babel/helper-validator-identifier@8.0.4': {} - - '@babel/helper-validator-option@7.29.7': {} - - '@babel/helper-validator-option@8.0.0': {} - - '@babel/helper-wrap-function@7.29.7': - dependencies: - '@babel/template': 7.29.7 - '@babel/traverse': 7.29.7(supports-color@5.5.0) - '@babel/types': 7.29.7 - transitivePeerDependencies: - - supports-color - - '@babel/helpers@8.0.0': - dependencies: - '@babel/template': 8.0.0 - '@babel/types': 8.0.4 - - '@babel/parser@7.29.7': - dependencies: - '@babel/types': 7.29.7 - - '@babel/parser@8.0.4': - dependencies: - '@babel/types': 8.0.4 - - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.29.7(@babel/core@8.0.1)': - dependencies: - '@babel/core': 8.0.1 - '@babel/helper-plugin-utils': 7.29.7 - - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.29.7(@babel/core@8.0.1)': - dependencies: - '@babel/core': 8.0.1 - '@babel/helper-plugin-utils': 7.29.7 - '@babel/helper-skip-transparent-expression-wrappers': 7.29.7 - '@babel/plugin-transform-optional-chaining': 7.29.7(@babel/core@8.0.1) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-proposal-async-generator-functions@7.20.7(@babel/core@8.0.1)': - dependencies: - '@babel/core': 8.0.1 - '@babel/helper-environment-visitor': 7.24.7 - '@babel/helper-plugin-utils': 7.29.7 - '@babel/helper-remap-async-to-generator': 7.29.7(@babel/core@8.0.1) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@8.0.1) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-proposal-class-properties@7.18.6(@babel/core@8.0.1)': - dependencies: - '@babel/core': 8.0.1 - '@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@8.0.1) - '@babel/helper-plugin-utils': 7.29.7 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-proposal-class-static-block@7.21.0(@babel/core@8.0.1)': - dependencies: - '@babel/core': 8.0.1 - '@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@8.0.1) - '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@8.0.1) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-proposal-dynamic-import@7.18.6(@babel/core@8.0.1)': - dependencies: - '@babel/core': 8.0.1 - '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@8.0.1) - - '@babel/plugin-proposal-export-namespace-from@7.18.9(@babel/core@8.0.1)': - dependencies: - '@babel/core': 8.0.1 - '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@8.0.1) - - '@babel/plugin-proposal-json-strings@7.18.6(@babel/core@8.0.1)': - dependencies: - '@babel/core': 8.0.1 - '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@8.0.1) - - '@babel/plugin-proposal-logical-assignment-operators@7.20.7(@babel/core@8.0.1)': - dependencies: - '@babel/core': 8.0.1 - '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@8.0.1) - - '@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@8.0.1)': - dependencies: - '@babel/core': 8.0.1 - '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@8.0.1) - - '@babel/plugin-proposal-numeric-separator@7.18.6(@babel/core@8.0.1)': - dependencies: - '@babel/core': 8.0.1 - '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@8.0.1) - - '@babel/plugin-proposal-object-rest-spread@7.20.7(@babel/core@8.0.1)': - dependencies: - '@babel/compat-data': 7.29.7 - '@babel/core': 8.0.1 - '@babel/helper-compilation-targets': 7.29.7 - '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@8.0.1) - '@babel/plugin-transform-parameters': 7.29.7(@babel/core@8.0.1) - - '@babel/plugin-proposal-optional-catch-binding@7.18.6(@babel/core@8.0.1)': - dependencies: - '@babel/core': 8.0.1 - '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@8.0.1) - - '@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@8.0.1)': - dependencies: - '@babel/core': 8.0.1 - '@babel/helper-plugin-utils': 7.29.7 - '@babel/helper-skip-transparent-expression-wrappers': 7.29.7 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@8.0.1) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-proposal-private-methods@7.18.6(@babel/core@8.0.1)': - dependencies: - '@babel/core': 8.0.1 - '@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@8.0.1) - '@babel/helper-plugin-utils': 7.29.7 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-proposal-private-property-in-object@7.21.11(@babel/core@8.0.1)': - dependencies: - '@babel/core': 8.0.1 - '@babel/helper-annotate-as-pure': 7.29.7 - '@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@8.0.1) - '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@8.0.1) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-proposal-unicode-property-regex@7.18.6(@babel/core@8.0.1)': - dependencies: - '@babel/core': 8.0.1 - '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@8.0.1) - '@babel/helper-plugin-utils': 7.29.7 - - '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@8.0.1)': - dependencies: - '@babel/core': 8.0.1 - '@babel/helper-plugin-utils': 7.29.7 - - '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@8.0.1)': - dependencies: - '@babel/core': 8.0.1 - '@babel/helper-plugin-utils': 7.29.7 - - '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@8.0.1)': - dependencies: - '@babel/core': 8.0.1 - '@babel/helper-plugin-utils': 7.29.7 - - '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@8.0.1)': - dependencies: - '@babel/core': 8.0.1 - '@babel/helper-plugin-utils': 7.29.7 - - '@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@8.0.1)': - dependencies: - '@babel/core': 8.0.1 - '@babel/helper-plugin-utils': 7.29.7 - - '@babel/plugin-syntax-import-assertions@7.29.7(@babel/core@8.0.1)': - dependencies: - '@babel/core': 8.0.1 - '@babel/helper-plugin-utils': 7.29.7 - - '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@8.0.1)': - dependencies: - '@babel/core': 8.0.1 - '@babel/helper-plugin-utils': 7.29.7 - - '@babel/plugin-syntax-jsx@7.29.7(@babel/core@8.0.1)': - dependencies: - '@babel/core': 8.0.1 - '@babel/helper-plugin-utils': 7.29.7 - - '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@8.0.1)': - dependencies: - '@babel/core': 8.0.1 - '@babel/helper-plugin-utils': 7.29.7 - - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@8.0.1)': - dependencies: - '@babel/core': 8.0.1 - '@babel/helper-plugin-utils': 7.29.7 - - '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@8.0.1)': - dependencies: - '@babel/core': 8.0.1 - '@babel/helper-plugin-utils': 7.29.7 - - '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@8.0.1)': - dependencies: - '@babel/core': 8.0.1 - '@babel/helper-plugin-utils': 7.29.7 - - '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@8.0.1)': - dependencies: - '@babel/core': 8.0.1 - '@babel/helper-plugin-utils': 7.29.7 - - '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@8.0.1)': - dependencies: - '@babel/core': 8.0.1 - '@babel/helper-plugin-utils': 7.29.7 - - '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@8.0.1)': - dependencies: - '@babel/core': 8.0.1 - '@babel/helper-plugin-utils': 7.29.7 - - '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@8.0.1)': - dependencies: - '@babel/core': 8.0.1 - '@babel/helper-plugin-utils': 7.29.7 - - '@babel/plugin-transform-arrow-functions@7.29.7(@babel/core@8.0.1)': - dependencies: - '@babel/core': 8.0.1 - '@babel/helper-plugin-utils': 7.29.7 - - '@babel/plugin-transform-async-to-generator@7.29.7(@babel/core@8.0.1)': - dependencies: - '@babel/core': 8.0.1 - '@babel/helper-module-imports': 7.29.7(supports-color@5.5.0) - '@babel/helper-plugin-utils': 7.29.7 - '@babel/helper-remap-async-to-generator': 7.29.7(@babel/core@8.0.1) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-block-scoped-functions@7.29.7(@babel/core@8.0.1)': - dependencies: - '@babel/core': 8.0.1 - '@babel/helper-plugin-utils': 7.29.7 - - '@babel/plugin-transform-block-scoping@7.29.7(@babel/core@8.0.1)': - dependencies: - '@babel/core': 8.0.1 - '@babel/helper-plugin-utils': 7.29.7 - - '@babel/plugin-transform-classes@7.29.7(@babel/core@8.0.1)': - dependencies: - '@babel/core': 8.0.1 - '@babel/helper-annotate-as-pure': 7.29.7 - '@babel/helper-compilation-targets': 7.29.7 - '@babel/helper-globals': 7.29.7 - '@babel/helper-plugin-utils': 7.29.7 - '@babel/helper-replace-supers': 7.29.7(@babel/core@8.0.1) - '@babel/traverse': 7.29.7(supports-color@5.5.0) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-computed-properties@7.29.7(@babel/core@8.0.1)': - dependencies: - '@babel/core': 8.0.1 - '@babel/helper-plugin-utils': 7.29.7 - '@babel/template': 7.29.7 - - '@babel/plugin-transform-destructuring@7.29.7(@babel/core@8.0.1)': - dependencies: - '@babel/core': 8.0.1 - '@babel/helper-plugin-utils': 7.29.7 - '@babel/traverse': 7.29.7(supports-color@5.5.0) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-dotall-regex@7.29.7(@babel/core@8.0.1)': - dependencies: - '@babel/core': 8.0.1 - '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@8.0.1) - '@babel/helper-plugin-utils': 7.29.7 - - '@babel/plugin-transform-duplicate-keys@7.29.7(@babel/core@8.0.1)': - dependencies: - '@babel/core': 8.0.1 - '@babel/helper-plugin-utils': 7.29.7 - - '@babel/plugin-transform-exponentiation-operator@7.29.7(@babel/core@8.0.1)': - dependencies: - '@babel/core': 8.0.1 - '@babel/helper-plugin-utils': 7.29.7 - - '@babel/plugin-transform-for-of@7.29.7(@babel/core@8.0.1)': - dependencies: - '@babel/core': 8.0.1 - '@babel/helper-plugin-utils': 7.29.7 - '@babel/helper-skip-transparent-expression-wrappers': 7.29.7 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-function-name@7.29.7(@babel/core@8.0.1)': - dependencies: - '@babel/core': 8.0.1 - '@babel/helper-compilation-targets': 7.29.7 - '@babel/helper-plugin-utils': 7.29.7 - '@babel/traverse': 7.29.7(supports-color@5.5.0) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-literals@7.29.7(@babel/core@8.0.1)': - dependencies: - '@babel/core': 8.0.1 - '@babel/helper-plugin-utils': 7.29.7 - - '@babel/plugin-transform-member-expression-literals@7.29.7(@babel/core@8.0.1)': - dependencies: - '@babel/core': 8.0.1 - '@babel/helper-plugin-utils': 7.29.7 - - '@babel/plugin-transform-modules-amd@7.29.7(@babel/core@8.0.1)': - dependencies: - '@babel/core': 8.0.1 - '@babel/helper-module-transforms': 7.29.7(@babel/core@8.0.1) - '@babel/helper-plugin-utils': 7.29.7 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-modules-commonjs@7.29.7(@babel/core@8.0.1)': - dependencies: - '@babel/core': 8.0.1 - '@babel/helper-module-transforms': 7.29.7(@babel/core@8.0.1) - '@babel/helper-plugin-utils': 7.29.7 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-modules-systemjs@7.29.7(@babel/core@8.0.1)': - dependencies: - '@babel/core': 8.0.1 - '@babel/helper-module-transforms': 7.29.7(@babel/core@8.0.1) - '@babel/helper-plugin-utils': 7.29.7 - '@babel/helper-validator-identifier': 7.29.7 - '@babel/traverse': 7.29.7(supports-color@5.5.0) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-modules-umd@7.29.7(@babel/core@8.0.1)': - dependencies: - '@babel/core': 8.0.1 - '@babel/helper-module-transforms': 7.29.7(@babel/core@8.0.1) - '@babel/helper-plugin-utils': 7.29.7 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-named-capturing-groups-regex@7.29.7(@babel/core@8.0.1)': - dependencies: - '@babel/core': 8.0.1 - '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@8.0.1) - '@babel/helper-plugin-utils': 7.29.7 - - '@babel/plugin-transform-new-target@7.29.7(@babel/core@8.0.1)': - dependencies: - '@babel/core': 8.0.1 - '@babel/helper-plugin-utils': 7.29.7 - - '@babel/plugin-transform-object-super@7.29.7(@babel/core@8.0.1)': - dependencies: - '@babel/core': 8.0.1 - '@babel/helper-plugin-utils': 7.29.7 - '@babel/helper-replace-supers': 7.29.7(@babel/core@8.0.1) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-optional-chaining@7.29.7(@babel/core@8.0.1)': - dependencies: - '@babel/core': 8.0.1 - '@babel/helper-plugin-utils': 7.29.7 - '@babel/helper-skip-transparent-expression-wrappers': 7.29.7 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-parameters@7.29.7(@babel/core@8.0.1)': - dependencies: - '@babel/core': 8.0.1 - '@babel/helper-plugin-utils': 7.29.7 - - '@babel/plugin-transform-property-literals@7.29.7(@babel/core@8.0.1)': - dependencies: - '@babel/core': 8.0.1 - '@babel/helper-plugin-utils': 7.29.7 - - '@babel/plugin-transform-react-display-name@7.29.7(@babel/core@8.0.1)': - dependencies: - '@babel/core': 8.0.1 - '@babel/helper-plugin-utils': 7.29.7 - - '@babel/plugin-transform-react-jsx-development@7.29.7(@babel/core@8.0.1)': - dependencies: - '@babel/core': 8.0.1 - '@babel/plugin-transform-react-jsx': 7.29.7(@babel/core@8.0.1) - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-react-jsx@7.29.7(@babel/core@8.0.1)': - dependencies: - '@babel/core': 8.0.1 - '@babel/helper-annotate-as-pure': 7.29.7 - '@babel/helper-module-imports': 7.29.7(supports-color@5.5.0) - '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-syntax-jsx': 7.29.7(@babel/core@8.0.1) - '@babel/types': 7.29.7 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-react-pure-annotations@7.29.7(@babel/core@8.0.1)': - dependencies: - '@babel/core': 8.0.1 - '@babel/helper-annotate-as-pure': 7.29.7 - '@babel/helper-plugin-utils': 7.29.7 - - '@babel/plugin-transform-regenerator@7.29.7(@babel/core@8.0.1)': - dependencies: - '@babel/core': 8.0.1 - '@babel/helper-plugin-utils': 7.29.7 - - '@babel/plugin-transform-reserved-words@7.29.7(@babel/core@8.0.1)': - dependencies: - '@babel/core': 8.0.1 - '@babel/helper-plugin-utils': 7.29.7 - - '@babel/plugin-transform-shorthand-properties@7.29.7(@babel/core@8.0.1)': - dependencies: - '@babel/core': 8.0.1 - '@babel/helper-plugin-utils': 7.29.7 - - '@babel/plugin-transform-spread@7.29.7(@babel/core@8.0.1)': - dependencies: - '@babel/core': 8.0.1 - '@babel/helper-plugin-utils': 7.29.7 - '@babel/helper-skip-transparent-expression-wrappers': 7.29.7 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-sticky-regex@7.29.7(@babel/core@8.0.1)': - dependencies: - '@babel/core': 8.0.1 - '@babel/helper-plugin-utils': 7.29.7 - - '@babel/plugin-transform-template-literals@7.29.7(@babel/core@8.0.1)': - dependencies: - '@babel/core': 8.0.1 - '@babel/helper-plugin-utils': 7.29.7 - - '@babel/plugin-transform-typeof-symbol@7.29.7(@babel/core@8.0.1)': - dependencies: - '@babel/core': 8.0.1 - '@babel/helper-plugin-utils': 7.29.7 - - '@babel/plugin-transform-unicode-escapes@7.29.7(@babel/core@8.0.1)': - dependencies: - '@babel/core': 8.0.1 - '@babel/helper-plugin-utils': 7.29.7 - - '@babel/plugin-transform-unicode-regex@7.29.7(@babel/core@8.0.1)': - dependencies: - '@babel/core': 8.0.1 - '@babel/helper-create-regexp-features-plugin': 7.29.7(@babel/core@8.0.1) - '@babel/helper-plugin-utils': 7.29.7 - - '@babel/preset-env@7.20.2(@babel/core@8.0.1)': - dependencies: - '@babel/compat-data': 7.29.7 - '@babel/core': 8.0.1 - '@babel/helper-compilation-targets': 7.29.7 - '@babel/helper-plugin-utils': 7.29.7 - '@babel/helper-validator-option': 7.29.7 - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.29.7(@babel/core@8.0.1) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.29.7(@babel/core@8.0.1) - '@babel/plugin-proposal-async-generator-functions': 7.20.7(@babel/core@8.0.1) - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@8.0.1) - '@babel/plugin-proposal-class-static-block': 7.21.0(@babel/core@8.0.1) - '@babel/plugin-proposal-dynamic-import': 7.18.6(@babel/core@8.0.1) - '@babel/plugin-proposal-export-namespace-from': 7.18.9(@babel/core@8.0.1) - '@babel/plugin-proposal-json-strings': 7.18.6(@babel/core@8.0.1) - '@babel/plugin-proposal-logical-assignment-operators': 7.20.7(@babel/core@8.0.1) - '@babel/plugin-proposal-nullish-coalescing-operator': 7.18.6(@babel/core@8.0.1) - '@babel/plugin-proposal-numeric-separator': 7.18.6(@babel/core@8.0.1) - '@babel/plugin-proposal-object-rest-spread': 7.20.7(@babel/core@8.0.1) - '@babel/plugin-proposal-optional-catch-binding': 7.18.6(@babel/core@8.0.1) - '@babel/plugin-proposal-optional-chaining': 7.21.0(@babel/core@8.0.1) - '@babel/plugin-proposal-private-methods': 7.18.6(@babel/core@8.0.1) - '@babel/plugin-proposal-private-property-in-object': 7.21.11(@babel/core@8.0.1) - '@babel/plugin-proposal-unicode-property-regex': 7.18.6(@babel/core@8.0.1) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@8.0.1) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@8.0.1) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@8.0.1) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@8.0.1) - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@8.0.1) - '@babel/plugin-syntax-import-assertions': 7.29.7(@babel/core@8.0.1) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@8.0.1) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@8.0.1) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@8.0.1) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@8.0.1) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@8.0.1) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@8.0.1) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@8.0.1) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@8.0.1) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@8.0.1) - '@babel/plugin-transform-arrow-functions': 7.29.7(@babel/core@8.0.1) - '@babel/plugin-transform-async-to-generator': 7.29.7(@babel/core@8.0.1) - '@babel/plugin-transform-block-scoped-functions': 7.29.7(@babel/core@8.0.1) - '@babel/plugin-transform-block-scoping': 7.29.7(@babel/core@8.0.1) - '@babel/plugin-transform-classes': 7.29.7(@babel/core@8.0.1) - '@babel/plugin-transform-computed-properties': 7.29.7(@babel/core@8.0.1) - '@babel/plugin-transform-destructuring': 7.29.7(@babel/core@8.0.1) - '@babel/plugin-transform-dotall-regex': 7.29.7(@babel/core@8.0.1) - '@babel/plugin-transform-duplicate-keys': 7.29.7(@babel/core@8.0.1) - '@babel/plugin-transform-exponentiation-operator': 7.29.7(@babel/core@8.0.1) - '@babel/plugin-transform-for-of': 7.29.7(@babel/core@8.0.1) - '@babel/plugin-transform-function-name': 7.29.7(@babel/core@8.0.1) - '@babel/plugin-transform-literals': 7.29.7(@babel/core@8.0.1) - '@babel/plugin-transform-member-expression-literals': 7.29.7(@babel/core@8.0.1) - '@babel/plugin-transform-modules-amd': 7.29.7(@babel/core@8.0.1) - '@babel/plugin-transform-modules-commonjs': 7.29.7(@babel/core@8.0.1) - '@babel/plugin-transform-modules-systemjs': 7.29.7(@babel/core@8.0.1) - '@babel/plugin-transform-modules-umd': 7.29.7(@babel/core@8.0.1) - '@babel/plugin-transform-named-capturing-groups-regex': 7.29.7(@babel/core@8.0.1) - '@babel/plugin-transform-new-target': 7.29.7(@babel/core@8.0.1) - '@babel/plugin-transform-object-super': 7.29.7(@babel/core@8.0.1) - '@babel/plugin-transform-parameters': 7.29.7(@babel/core@8.0.1) - '@babel/plugin-transform-property-literals': 7.29.7(@babel/core@8.0.1) - '@babel/plugin-transform-regenerator': 7.29.7(@babel/core@8.0.1) - '@babel/plugin-transform-reserved-words': 7.29.7(@babel/core@8.0.1) - '@babel/plugin-transform-shorthand-properties': 7.29.7(@babel/core@8.0.1) - '@babel/plugin-transform-spread': 7.29.7(@babel/core@8.0.1) - '@babel/plugin-transform-sticky-regex': 7.29.7(@babel/core@8.0.1) - '@babel/plugin-transform-template-literals': 7.29.7(@babel/core@8.0.1) - '@babel/plugin-transform-typeof-symbol': 7.29.7(@babel/core@8.0.1) - '@babel/plugin-transform-unicode-escapes': 7.29.7(@babel/core@8.0.1) - '@babel/plugin-transform-unicode-regex': 7.29.7(@babel/core@8.0.1) - '@babel/preset-modules': 0.1.6(@babel/core@8.0.1) - '@babel/types': 7.29.7 - babel-plugin-polyfill-corejs2: 0.3.3(@babel/core@8.0.1) - babel-plugin-polyfill-corejs3: 0.6.0(@babel/core@8.0.1) - babel-plugin-polyfill-regenerator: 0.4.1(@babel/core@8.0.1) - core-js-compat: 3.49.0 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/preset-modules@0.1.6(@babel/core@8.0.1)': - dependencies: - '@babel/core': 8.0.1 - '@babel/helper-plugin-utils': 7.29.7 - '@babel/plugin-proposal-unicode-property-regex': 7.18.6(@babel/core@8.0.1) - '@babel/plugin-transform-dotall-regex': 7.29.7(@babel/core@8.0.1) - '@babel/types': 7.29.7 - esutils: 2.0.3 - - '@babel/preset-react@7.13.13(@babel/core@8.0.1)': - dependencies: - '@babel/core': 8.0.1 - '@babel/helper-plugin-utils': 7.29.7 - '@babel/helper-validator-option': 7.29.7 - '@babel/plugin-transform-react-display-name': 7.29.7(@babel/core@8.0.1) - '@babel/plugin-transform-react-jsx': 7.29.7(@babel/core@8.0.1) - '@babel/plugin-transform-react-jsx-development': 7.29.7(@babel/core@8.0.1) - '@babel/plugin-transform-react-pure-annotations': 7.29.7(@babel/core@8.0.1) - transitivePeerDependencies: - - supports-color - - '@babel/runtime@7.29.7': {} - - '@babel/template@7.29.7': - dependencies: - '@babel/code-frame': 7.29.7 - '@babel/parser': 7.29.7 - '@babel/types': 7.29.7 - - '@babel/template@8.0.0': - dependencies: - '@babel/code-frame': 8.0.0 - '@babel/parser': 8.0.4 - '@babel/types': 8.0.4 - - '@babel/traverse@7.29.7(supports-color@5.5.0)': - dependencies: - '@babel/code-frame': 7.29.7 - '@babel/generator': 7.29.7 - '@babel/helper-globals': 7.29.7 - '@babel/parser': 7.29.7 - '@babel/template': 7.29.7 - '@babel/types': 7.29.7 - debug: 4.4.3(supports-color@5.5.0) - transitivePeerDependencies: - - supports-color - - '@babel/traverse@8.0.4': - dependencies: - '@babel/code-frame': 8.0.0 - '@babel/generator': 8.0.0 - '@babel/helper-globals': 8.0.0 - '@babel/parser': 8.0.4 - '@babel/template': 8.0.0 - '@babel/types': 8.0.4 - obug: 2.1.4 - - '@babel/types@7.29.7': - dependencies: - '@babel/helper-string-parser': 7.29.7 - '@babel/helper-validator-identifier': 7.29.7 - - '@babel/types@8.0.4': - dependencies: - '@babel/helper-string-parser': 8.0.0 - '@babel/helper-validator-identifier': 8.0.4 - - '@cfworker/json-schema@4.1.1': {} - - '@codemirror/autocomplete@6.20.3': - dependencies: - '@codemirror/language': 6.12.4 - '@codemirror/state': 6.7.1 - '@codemirror/view': 6.43.6 - '@lezer/common': 1.5.2 - - '@codemirror/commands@6.10.4': - dependencies: - '@codemirror/language': 6.12.4 - '@codemirror/state': 6.7.1 - '@codemirror/view': 6.43.6 - '@lezer/common': 1.5.2 - - '@codemirror/lang-javascript@6.2.5': - dependencies: - '@codemirror/autocomplete': 6.20.3 - '@codemirror/language': 6.12.4 - '@codemirror/lint': 6.9.7 - '@codemirror/state': 6.7.1 - '@codemirror/view': 6.43.6 - '@lezer/common': 1.5.2 - '@lezer/javascript': 1.5.4 - - '@codemirror/lang-python@6.2.1': - dependencies: - '@codemirror/autocomplete': 6.20.3 - '@codemirror/language': 6.12.4 - '@codemirror/state': 6.7.1 - '@lezer/common': 1.5.2 - '@lezer/python': 1.1.19 - - '@codemirror/lang-sql@6.10.0': - dependencies: - '@codemirror/autocomplete': 6.20.3 - '@codemirror/language': 6.12.4 - '@codemirror/state': 6.7.1 - '@lezer/common': 1.5.2 - '@lezer/highlight': 1.2.3 - '@lezer/lr': 1.4.10 - - '@codemirror/language@6.12.4': - dependencies: - '@codemirror/state': 6.7.1 - '@codemirror/view': 6.43.6 - '@lezer/common': 1.5.2 - '@lezer/highlight': 1.2.3 - '@lezer/lr': 1.4.10 - style-mod: 4.1.3 - - '@codemirror/lint@6.9.7': - dependencies: - '@codemirror/state': 6.7.1 - '@codemirror/view': 6.43.6 - crelt: 1.0.7 - - '@codemirror/merge@6.12.2': - dependencies: - '@codemirror/language': 6.12.4 - '@codemirror/state': 6.7.1 - '@codemirror/view': 6.43.6 - '@lezer/highlight': 1.2.3 - style-mod: 4.1.3 - - '@codemirror/search@6.7.1': - dependencies: - '@codemirror/state': 6.7.1 - '@codemirror/view': 6.43.6 - crelt: 1.0.7 - - '@codemirror/state@6.7.1': - dependencies: - '@marijn/find-cluster-break': 1.0.3 - - '@codemirror/view@6.43.6': - dependencies: - '@codemirror/state': 6.7.1 - crelt: 1.0.7 - style-mod: 4.1.3 - w3c-keyname: 2.2.8 - - '@coze-editor/code-language-json@0.1.0-alpha.868621(@codemirror/language@6.12.4)(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(@coze-editor/code-language-shared@0.1.0-alpha.868621(@codemirror/autocomplete@6.20.3)(@codemirror/language@6.12.4)(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(@lezer/common@1.5.2))': - dependencies: - '@codemirror/autocomplete': 6.20.3 - '@codemirror/language': 6.12.4 - '@codemirror/state': 6.7.1 - '@codemirror/view': 6.43.6 - '@coze-editor/code-language-shared': 0.1.0-alpha.868621(@codemirror/autocomplete@6.20.3)(@codemirror/language@6.12.4)(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(@lezer/common@1.5.2) - '@coze-editor/extension-lint': 0.1.0-alpha.868621(@codemirror/state@6.7.1)(@codemirror/view@6.43.6) - '@coze-editor/lezer-parser-json': 0.1.0-alpha.868621 - '@coze-editor/parser-json': 0.1.0-alpha.868621 - '@lezer/json': 1.0.3 - '@lukeed/uuid': 2.0.1 - text-mapping: 1.0.1 - vscode-json-languageservice: 5.7.2 - vscode-uri: 3.1.0 - - '@coze-editor/code-language-python@0.1.0-alpha.868621(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(@coze-editor/code-language-shared@0.1.0-alpha.868621(@codemirror/autocomplete@6.20.3)(@codemirror/language@6.12.4)(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(@lezer/common@1.5.2))': - dependencies: - '@codemirror/lang-python': 6.2.1 - '@codemirror/state': 6.7.1 - '@codemirror/view': 6.43.6 - '@coze-editor/code-language-shared': 0.1.0-alpha.868621(@codemirror/autocomplete@6.20.3)(@codemirror/language@6.12.4)(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(@lezer/common@1.5.2) - - '@coze-editor/code-language-shared@0.1.0-alpha.868621(@codemirror/autocomplete@6.20.3)(@codemirror/language@6.12.4)(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(@lezer/common@1.5.2)': - dependencies: - '@codemirror/autocomplete': 6.20.3 - '@codemirror/language': 6.12.4 - '@codemirror/state': 6.7.1 - '@codemirror/view': 6.43.6 - '@coze-editor/extension-lint': 0.1.0-alpha.868621(@codemirror/state@6.7.1)(@codemirror/view@6.43.6) - '@coze-editor/utils': 0.1.0-alpha.868621(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(@lezer/common@1.5.2) - mitt: 3.0.1 - vscode-languageserver-textdocument: 1.0.12 - vscode-languageserver-types: 3.18.0 - transitivePeerDependencies: - - '@lezer/common' - - '@coze-editor/code-language-shell@0.1.0-alpha.868621(@codemirror/language@6.12.4)(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(@coze-editor/code-language-shared@0.1.0-alpha.868621(@codemirror/autocomplete@6.20.3)(@codemirror/language@6.12.4)(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(@lezer/common@1.5.2))': - dependencies: - '@codemirror/language': 6.12.4 - '@codemirror/state': 6.7.1 - '@codemirror/view': 6.43.6 - '@coze-editor/code-language-shared': 0.1.0-alpha.868621(@codemirror/autocomplete@6.20.3)(@codemirror/language@6.12.4)(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(@lezer/common@1.5.2) - - '@coze-editor/code-language-sql@0.1.0-alpha.868621(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(@coze-editor/code-language-shared@0.1.0-alpha.868621(@codemirror/autocomplete@6.20.3)(@codemirror/language@6.12.4)(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(@lezer/common@1.5.2))': - dependencies: - '@codemirror/lang-sql': 6.10.0 - '@codemirror/state': 6.7.1 - '@codemirror/view': 6.43.6 - '@coze-editor/code-language-shared': 0.1.0-alpha.868621(@codemirror/autocomplete@6.20.3)(@codemirror/language@6.12.4)(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(@lezer/common@1.5.2) - - '@coze-editor/code-language-typescript@0.1.0-alpha.868621(@codemirror/language@6.12.4)(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(@coze-editor/code-language-shared@0.1.0-alpha.868621(@codemirror/autocomplete@6.20.3)(@codemirror/language@6.12.4)(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(@lezer/common@1.5.2))(typescript@5.9.3)': - dependencies: - '@codemirror/lang-javascript': 6.2.5 - '@codemirror/language': 6.12.4 - '@codemirror/state': 6.7.1 - '@codemirror/view': 6.43.6 - '@coze-editor/code-language-shared': 0.1.0-alpha.868621(@codemirror/autocomplete@6.20.3)(@codemirror/language@6.12.4)(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(@lezer/common@1.5.2) - '@lukeed/uuid': 2.0.1 - '@typescript/vfs': 1.6.4(typescript@5.9.3) - comlink: 4.4.2 - lz-string: 1.5.0 - mitt: 3.0.1 - typescript: 5.9.3 - vscode-languageserver-textdocument: 1.0.12 - vscode-languageserver-types: 3.18.0 - vscode-uri: 3.1.0 - transitivePeerDependencies: - - supports-color - - '@coze-editor/core-plugins@0.1.0-alpha.868621(@codemirror/commands@6.10.4)(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(@lezer/common@1.5.2)': - dependencies: - '@codemirror/commands': 6.10.4 - '@codemirror/state': 6.7.1 - '@codemirror/view': 6.43.6 - '@coze-editor/core': 0.1.0-alpha.868621(@codemirror/state@6.7.1)(@codemirror/view@6.43.6) - '@coze-editor/extension-placeholder': 0.1.0-alpha.868621(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(@lezer/common@1.5.2) - es-toolkit: 1.50.0 - transitivePeerDependencies: - - '@lezer/common' - - '@coze-editor/core@0.1.0-alpha.868621(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)': - dependencies: - '@codemirror/state': 6.7.1 - '@codemirror/view': 6.43.6 - mitt: 3.0.1 - - '@coze-editor/editor@0.1.0-alpha.868621(@babel/core@8.0.1)(@babel/template@8.0.0)(@codemirror/autocomplete@6.20.3)(@codemirror/language@6.12.4)(@codemirror/merge@6.12.2)(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(@lezer/common@1.5.2)(@types/react@18.3.31)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.3)(vue@3.5.40(typescript@5.9.3))': - dependencies: - '@codemirror/commands': 6.10.4 - '@codemirror/state': 6.7.1 - '@codemirror/view': 6.43.6 - '@coze-editor/code-language-json': 0.1.0-alpha.868621(@codemirror/language@6.12.4)(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(@coze-editor/code-language-shared@0.1.0-alpha.868621(@codemirror/autocomplete@6.20.3)(@codemirror/language@6.12.4)(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(@lezer/common@1.5.2)) - '@coze-editor/code-language-python': 0.1.0-alpha.868621(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(@coze-editor/code-language-shared@0.1.0-alpha.868621(@codemirror/autocomplete@6.20.3)(@codemirror/language@6.12.4)(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(@lezer/common@1.5.2)) - '@coze-editor/code-language-shared': 0.1.0-alpha.868621(@codemirror/autocomplete@6.20.3)(@codemirror/language@6.12.4)(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(@lezer/common@1.5.2) - '@coze-editor/code-language-shell': 0.1.0-alpha.868621(@codemirror/language@6.12.4)(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(@coze-editor/code-language-shared@0.1.0-alpha.868621(@codemirror/autocomplete@6.20.3)(@codemirror/language@6.12.4)(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(@lezer/common@1.5.2)) - '@coze-editor/code-language-sql': 0.1.0-alpha.868621(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(@coze-editor/code-language-shared@0.1.0-alpha.868621(@codemirror/autocomplete@6.20.3)(@codemirror/language@6.12.4)(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(@lezer/common@1.5.2)) - '@coze-editor/code-language-typescript': 0.1.0-alpha.868621(@codemirror/language@6.12.4)(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(@coze-editor/code-language-shared@0.1.0-alpha.868621(@codemirror/autocomplete@6.20.3)(@codemirror/language@6.12.4)(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(@lezer/common@1.5.2))(typescript@5.9.3) - '@coze-editor/core': 0.1.0-alpha.868621(@codemirror/state@6.7.1)(@codemirror/view@6.43.6) - '@coze-editor/extension-json-ast': 0.1.0-alpha.868621(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(@lezer/common@1.5.2) - '@coze-editor/extension-json-empty-string-value-completion': 0.1.0-alpha.868621(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(@lezer/common@1.5.2) - '@coze-editor/extension-json-hover': 0.1.0-alpha.868621(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(@lezer/common@1.5.2) - '@coze-editor/extension-json-unnecessary-properties': 0.1.0-alpha.868621(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(@lezer/common@1.5.2) - '@coze-editor/extension-regexp-decorator': 0.1.0-alpha.868621(@codemirror/state@6.7.1)(@codemirror/view@6.43.6) - '@coze-editor/extensions': 0.1.0-alpha.868621(@codemirror/language@6.12.4)(@codemirror/state@6.7.1)(@codemirror/view@6.43.6) - '@coze-editor/preset-code': 0.1.0-alpha.868621(@codemirror/commands@6.10.4)(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(@coze-editor/code-language-shared@0.1.0-alpha.868621(@codemirror/autocomplete@6.20.3)(@codemirror/language@6.12.4)(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(@lezer/common@1.5.2))(@lezer/common@1.5.2) - '@coze-editor/preset-expression': 0.1.0-alpha.868621(@codemirror/commands@6.10.4)(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(@lezer/common@1.5.2) - '@coze-editor/preset-none': 0.1.0-alpha.868621(@codemirror/state@6.7.1)(@codemirror/view@6.43.6) - '@coze-editor/preset-prompt': 0.1.0-alpha.868621(@codemirror/commands@6.10.4)(@codemirror/state@6.7.1)(@codemirror/view@6.43.6) - '@coze-editor/preset-universal': 0.1.0-alpha.868621(@codemirror/commands@6.10.4)(@codemirror/language@6.12.4)(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(@lezer/common@1.5.2) - '@coze-editor/preset-variable': 0.1.0-alpha.868621(@codemirror/commands@6.10.4)(@codemirror/state@6.7.1)(@codemirror/view@6.43.6) - '@coze-editor/react': 0.1.0-alpha.868621(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@coze-editor/react-components': 0.1.0-alpha.868621(@babel/core@8.0.1)(@babel/template@8.0.0)(@codemirror/commands@6.10.4)(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(@coze-editor/react@0.1.0-alpha.868621(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@lezer/common@1.5.2)(@types/react@18.3.31)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@coze-editor/react-hooks': 0.1.0-alpha.868621(@codemirror/commands@6.10.4)(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(@coze-editor/react@0.1.0-alpha.868621(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@coze-editor/react-merge': 0.1.0-alpha.868621(@codemirror/merge@6.12.2)(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(@coze-editor/react@0.1.0-alpha.868621(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@coze-editor/utils': 0.1.0-alpha.868621(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(@lezer/common@1.5.2) - '@coze-editor/vscode': 0.1.0-alpha.868621(@codemirror/state@6.7.1)(@codemirror/view@6.43.6) - '@coze-editor/vue': 0.1.0-alpha.868621(@codemirror/commands@6.10.4)(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(@lezer/common@1.5.2)(vue@3.5.40(typescript@5.9.3)) - '@coze-editor/vue-components': 0.1.0-alpha.868621(@codemirror/language@6.12.4)(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(@coze-editor/vue@0.1.0-alpha.868621(@codemirror/commands@6.10.4)(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(@lezer/common@1.5.2)(vue@3.5.40(typescript@5.9.3)))(@lezer/common@1.5.2)(vue@3.5.40(typescript@5.9.3)) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - transitivePeerDependencies: - - '@babel/core' - - '@babel/template' - - '@codemirror/autocomplete' - - '@codemirror/language' - - '@codemirror/merge' - - '@lezer/common' - - '@types/react' - - supports-color - - typescript - - vue - - '@coze-editor/extension-completion-icons@0.1.0-alpha.868621(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)': - dependencies: - '@codemirror/state': 6.7.1 - '@codemirror/view': 6.43.6 - - '@coze-editor/extension-json-ast@0.1.0-alpha.868621(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(@lezer/common@1.5.2)': - dependencies: - '@codemirror/state': 6.7.1 - '@codemirror/view': 6.43.6 - '@coze-editor/parser-json': 0.1.0-alpha.868621 - '@coze-editor/utils': 0.1.0-alpha.868621(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(@lezer/common@1.5.2) - vscode-languageserver-textdocument: 1.0.12 - transitivePeerDependencies: - - '@lezer/common' - - '@coze-editor/extension-json-empty-string-value-completion@0.1.0-alpha.868621(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(@lezer/common@1.5.2)': - dependencies: - '@codemirror/state': 6.7.1 - '@codemirror/view': 6.43.6 - '@coze-editor/extension-json-ast': 0.1.0-alpha.868621(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(@lezer/common@1.5.2) - '@coze-editor/utils': 0.1.0-alpha.868621(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(@lezer/common@1.5.2) - transitivePeerDependencies: - - '@lezer/common' - - '@coze-editor/extension-json-hover@0.1.0-alpha.868621(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(@lezer/common@1.5.2)': - dependencies: - '@codemirror/state': 6.7.1 - '@codemirror/view': 6.43.6 - '@coze-editor/extension-json-ast': 0.1.0-alpha.868621(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(@lezer/common@1.5.2) - '@coze-editor/utils': 0.1.0-alpha.868621(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(@lezer/common@1.5.2) - transitivePeerDependencies: - - '@lezer/common' - - '@coze-editor/extension-json-unnecessary-properties@0.1.0-alpha.868621(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(@lezer/common@1.5.2)': - dependencies: - '@codemirror/state': 6.7.1 - '@codemirror/view': 6.43.6 - '@coze-editor/extension-json-ast': 0.1.0-alpha.868621(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(@lezer/common@1.5.2) - '@coze-editor/utils': 0.1.0-alpha.868621(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(@lezer/common@1.5.2) - transitivePeerDependencies: - - '@lezer/common' - - '@coze-editor/extension-links@0.1.0-alpha.868621(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)': - dependencies: - '@codemirror/state': 6.7.1 - '@codemirror/view': 6.43.6 - - '@coze-editor/extension-lint@0.1.0-alpha.868621(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)': - dependencies: - '@codemirror/state': 6.7.1 - '@codemirror/view': 6.43.6 - crelt: 1.0.7 - - '@coze-editor/extension-placeholder@0.1.0-alpha.868621(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(@lezer/common@1.5.2)': - dependencies: - '@codemirror/state': 6.7.1 - '@codemirror/view': 6.43.6 - '@coze-editor/utils': 0.1.0-alpha.868621(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(@lezer/common@1.5.2) - transitivePeerDependencies: - - '@lezer/common' - - '@coze-editor/extension-regexp-decorator@0.1.0-alpha.868621(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)': - dependencies: - '@codemirror/state': 6.7.1 - '@codemirror/view': 6.43.6 - - '@coze-editor/extension-scrollbar@0.1.0-alpha.868621(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)': - dependencies: - '@codemirror/state': 6.7.1 - '@codemirror/view': 6.43.6 - overlayscrollbars: 2.16.0 - - '@coze-editor/extensions@0.1.0-alpha.868621(@codemirror/language@6.12.4)(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)': - dependencies: - '@codemirror/language': 6.12.4 - '@codemirror/state': 6.7.1 - '@codemirror/view': 6.43.6 - '@coze-editor/extension-placeholder': 0.1.0-alpha.868621(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(@lezer/common@1.5.2) - '@coze-editor/lezer-parser-template': 0.1.0-alpha.868621 - '@coze-editor/utils': 0.1.0-alpha.868621(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(@lezer/common@1.5.2) - '@lezer/common': 1.5.2 - crelt: 1.0.7 - es-toolkit: 1.50.0 - - '@coze-editor/lezer-parser-jinja2@0.1.0-alpha.868621': - dependencies: - '@lezer/highlight': 1.2.3 - '@lezer/lr': 1.4.10 - - '@coze-editor/lezer-parser-json@0.1.0-alpha.868621': - dependencies: - '@lezer/highlight': 1.2.3 - '@lezer/lr': 1.4.10 - - '@coze-editor/lezer-parser-template@0.1.0-alpha.868621': - dependencies: - '@lezer/highlight': 1.2.3 - '@lezer/lr': 1.4.10 - - '@coze-editor/parser-json@0.1.0-alpha.868621': - dependencies: - '@vscode/l10n': 0.0.18 - vscode-languageserver-textdocument: 1.0.12 - vscode-languageserver-types: 3.18.0 - - '@coze-editor/preset-code@0.1.0-alpha.868621(@codemirror/commands@6.10.4)(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(@coze-editor/code-language-shared@0.1.0-alpha.868621(@codemirror/autocomplete@6.20.3)(@codemirror/language@6.12.4)(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(@lezer/common@1.5.2))(@lezer/common@1.5.2)': - dependencies: - '@codemirror/autocomplete': 6.20.3 - '@codemirror/commands': 6.10.4 - '@codemirror/language': 6.12.4 - '@codemirror/state': 6.7.1 - '@codemirror/view': 6.43.6 - '@coze-editor/code-language-shared': 0.1.0-alpha.868621(@codemirror/autocomplete@6.20.3)(@codemirror/language@6.12.4)(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(@lezer/common@1.5.2) - '@coze-editor/core': 0.1.0-alpha.868621(@codemirror/state@6.7.1)(@codemirror/view@6.43.6) - '@coze-editor/core-plugins': 0.1.0-alpha.868621(@codemirror/commands@6.10.4)(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(@lezer/common@1.5.2) - '@coze-editor/extension-completion-icons': 0.1.0-alpha.868621(@codemirror/state@6.7.1)(@codemirror/view@6.43.6) - '@coze-editor/extension-links': 0.1.0-alpha.868621(@codemirror/state@6.7.1)(@codemirror/view@6.43.6) - '@coze-editor/extension-lint': 0.1.0-alpha.868621(@codemirror/state@6.7.1)(@codemirror/view@6.43.6) - '@coze-editor/extension-scrollbar': 0.1.0-alpha.868621(@codemirror/state@6.7.1)(@codemirror/view@6.43.6) - '@coze-editor/extensions': 0.1.0-alpha.868621(@codemirror/language@6.12.4)(@codemirror/state@6.7.1)(@codemirror/view@6.43.6) - '@coze-editor/preset-universal': 0.1.0-alpha.868621(@codemirror/commands@6.10.4)(@codemirror/language@6.12.4)(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(@lezer/common@1.5.2) - '@coze-editor/utils': 0.1.0-alpha.868621(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(@lezer/common@1.5.2) - '@coze-editor/vscode': 0.1.0-alpha.868621(@codemirror/state@6.7.1)(@codemirror/view@6.43.6) - '@lezer/highlight': 1.2.3 - '@nozbe/microfuzz': 1.0.0 - '@shikijs/langs': 3.12.3 - '@shikijs/themes': 3.12.3 - codemirror-shiki: 0.2.5(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(shiki@3.23.0) - marked: 15.0.12 - marked-shiki: 1.2.1(marked@15.0.12)(shiki@3.23.0) - shiki: 3.23.0 - text-mapping: 1.0.1 - vscode-languageserver-textdocument: 1.0.12 - vscode-languageserver-types: 3.18.0 - transitivePeerDependencies: - - '@lezer/common' - - '@coze-editor/preset-expression@0.1.0-alpha.868621(@codemirror/commands@6.10.4)(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(@lezer/common@1.5.2)': - dependencies: - '@codemirror/autocomplete': 6.20.3 - '@codemirror/commands': 6.10.4 - '@codemirror/language': 6.12.4 - '@codemirror/state': 6.7.1 - '@codemirror/view': 6.43.6 - '@coze-editor/core': 0.1.0-alpha.868621(@codemirror/state@6.7.1)(@codemirror/view@6.43.6) - '@coze-editor/core-plugins': 0.1.0-alpha.868621(@codemirror/commands@6.10.4)(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(@lezer/common@1.5.2) - '@coze-editor/extensions': 0.1.0-alpha.868621(@codemirror/language@6.12.4)(@codemirror/state@6.7.1)(@codemirror/view@6.43.6) - transitivePeerDependencies: - - '@lezer/common' - - '@coze-editor/preset-none@0.1.0-alpha.868621(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)': - dependencies: - '@codemirror/state': 6.7.1 - '@codemirror/view': 6.43.6 - '@coze-editor/core': 0.1.0-alpha.868621(@codemirror/state@6.7.1)(@codemirror/view@6.43.6) - - '@coze-editor/preset-prompt@0.1.0-alpha.868621(@codemirror/commands@6.10.4)(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)': - dependencies: - '@codemirror/autocomplete': 6.20.3 - '@codemirror/language': 6.12.4 - '@codemirror/state': 6.7.1 - '@codemirror/view': 6.43.6 - '@coze-editor/core': 0.1.0-alpha.868621(@codemirror/state@6.7.1)(@codemirror/view@6.43.6) - '@coze-editor/core-plugins': 0.1.0-alpha.868621(@codemirror/commands@6.10.4)(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(@lezer/common@1.5.2) - '@coze-editor/extensions': 0.1.0-alpha.868621(@codemirror/language@6.12.4)(@codemirror/state@6.7.1)(@codemirror/view@6.43.6) - '@coze-editor/lezer-parser-jinja2': 0.1.0-alpha.868621 - '@coze-editor/preset-expression': 0.1.0-alpha.868621(@codemirror/commands@6.10.4)(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(@lezer/common@1.5.2) - '@lezer/common': 1.5.2 - '@lezer/html': 1.3.13 - '@lezer/markdown': 1.7.2 - transitivePeerDependencies: - - '@codemirror/commands' - - '@coze-editor/preset-universal@0.1.0-alpha.868621(@codemirror/commands@6.10.4)(@codemirror/language@6.12.4)(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(@lezer/common@1.5.2)': - dependencies: - '@codemirror/state': 6.7.1 - '@codemirror/view': 6.43.6 - '@coze-editor/core': 0.1.0-alpha.868621(@codemirror/state@6.7.1)(@codemirror/view@6.43.6) - '@coze-editor/core-plugins': 0.1.0-alpha.868621(@codemirror/commands@6.10.4)(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(@lezer/common@1.5.2) - '@coze-editor/extensions': 0.1.0-alpha.868621(@codemirror/language@6.12.4)(@codemirror/state@6.7.1)(@codemirror/view@6.43.6) - transitivePeerDependencies: - - '@codemirror/commands' - - '@codemirror/language' - - '@lezer/common' - - '@coze-editor/preset-variable@0.1.0-alpha.868621(@codemirror/commands@6.10.4)(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)': - dependencies: - '@codemirror/autocomplete': 6.20.3 - '@codemirror/commands': 6.10.4 - '@codemirror/language': 6.12.4 - '@codemirror/state': 6.7.1 - '@codemirror/view': 6.43.6 - '@coze-editor/core': 0.1.0-alpha.868621(@codemirror/state@6.7.1)(@codemirror/view@6.43.6) - '@coze-editor/core-plugins': 0.1.0-alpha.868621(@codemirror/commands@6.10.4)(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(@lezer/common@1.5.2) - '@coze-editor/extensions': 0.1.0-alpha.868621(@codemirror/language@6.12.4)(@codemirror/state@6.7.1)(@codemirror/view@6.43.6) - '@coze-editor/preset-expression': 0.1.0-alpha.868621(@codemirror/commands@6.10.4)(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(@lezer/common@1.5.2) - '@coze-editor/utils': 0.1.0-alpha.868621(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(@lezer/common@1.5.2) - '@lezer/common': 1.5.2 - '@lezer/javascript': 1.5.4 - '@lezer/python': 1.1.19 - - '@coze-editor/react-components@0.1.0-alpha.868621(@babel/core@8.0.1)(@babel/template@8.0.0)(@codemirror/commands@6.10.4)(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(@coze-editor/react@0.1.0-alpha.868621(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(@lezer/common@1.5.2)(@types/react@18.3.31)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@codemirror/language': 6.12.4 - '@codemirror/merge': 6.12.2 - '@codemirror/state': 6.7.1 - '@codemirror/view': 6.43.6 - '@coze-editor/extension-placeholder': 0.1.0-alpha.868621(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(@lezer/common@1.5.2) - '@coze-editor/extensions': 0.1.0-alpha.868621(@codemirror/language@6.12.4)(@codemirror/state@6.7.1)(@codemirror/view@6.43.6) - '@coze-editor/react': 0.1.0-alpha.868621(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@coze-editor/react-hooks': 0.1.0-alpha.868621(@codemirror/commands@6.10.4)(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(@coze-editor/react@0.1.0-alpha.868621(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@coze-editor/utils': 0.1.0-alpha.868621(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(@lezer/common@1.5.2) - '@coze-editor/vscode': 0.1.0-alpha.868621(@codemirror/state@6.7.1)(@codemirror/view@6.43.6) - '@floating-ui/dom': 1.8.0 - '@lezer/highlight': 1.2.3 - '@lukeed/uuid': 2.0.1 - '@types/hash-sum': 1.0.2 - hash-sum: 2.0.0 - jotai: 2.20.2(@babel/core@8.0.1)(@babel/template@8.0.0)(@types/react@18.3.31)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - transitivePeerDependencies: - - '@babel/core' - - '@babel/template' - - '@codemirror/commands' - - '@lezer/common' - - '@types/react' - - '@coze-editor/react-hooks@0.1.0-alpha.868621(@codemirror/commands@6.10.4)(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(@coze-editor/react@0.1.0-alpha.868621(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@codemirror/commands': 6.10.4 - '@codemirror/state': 6.7.1 - '@codemirror/view': 6.43.6 - '@coze-editor/react': 0.1.0-alpha.868621(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - - '@coze-editor/react-merge@0.1.0-alpha.868621(@codemirror/merge@6.12.2)(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(@coze-editor/react@0.1.0-alpha.868621(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@codemirror/merge': 6.12.2 - '@codemirror/state': 6.7.1 - '@codemirror/view': 6.43.6 - '@coze-editor/react': 0.1.0-alpha.868621(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - - '@coze-editor/react@0.1.0-alpha.868621(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@codemirror/state': 6.7.1 - '@codemirror/view': 6.43.6 - '@coze-editor/core': 0.1.0-alpha.868621(@codemirror/state@6.7.1)(@codemirror/view@6.43.6) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - - '@coze-editor/utils@0.1.0-alpha.868621(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(@lezer/common@1.5.2)': - dependencies: - '@codemirror/state': 6.7.1 - '@codemirror/view': 6.43.6 - '@lezer/common': 1.5.2 - - '@coze-editor/vscode@0.1.0-alpha.868621(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)': - dependencies: - '@codemirror/search': 6.7.1 - '@codemirror/state': 6.7.1 - '@codemirror/view': 6.43.6 - '@lezer/highlight': 1.2.3 - crelt: 1.0.7 - - '@coze-editor/vue-components@0.1.0-alpha.868621(@codemirror/language@6.12.4)(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(@coze-editor/vue@0.1.0-alpha.868621(@codemirror/commands@6.10.4)(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(@lezer/common@1.5.2)(vue@3.5.40(typescript@5.9.3)))(@lezer/common@1.5.2)(vue@3.5.40(typescript@5.9.3))': - dependencies: - '@codemirror/state': 6.7.1 - '@codemirror/view': 6.43.6 - '@coze-editor/extension-placeholder': 0.1.0-alpha.868621(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(@lezer/common@1.5.2) - '@coze-editor/extensions': 0.1.0-alpha.868621(@codemirror/language@6.12.4)(@codemirror/state@6.7.1)(@codemirror/view@6.43.6) - '@coze-editor/utils': 0.1.0-alpha.868621(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(@lezer/common@1.5.2) - '@coze-editor/vue': 0.1.0-alpha.868621(@codemirror/commands@6.10.4)(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(@lezer/common@1.5.2)(vue@3.5.40(typescript@5.9.3)) - '@floating-ui/dom': 1.8.0 - vue: 3.5.40(typescript@5.9.3) - transitivePeerDependencies: - - '@codemirror/language' - - '@lezer/common' - - '@coze-editor/vue@0.1.0-alpha.868621(@codemirror/commands@6.10.4)(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(@lezer/common@1.5.2)(vue@3.5.40(typescript@5.9.3))': - dependencies: - '@codemirror/state': 6.7.1 - '@codemirror/view': 6.43.6 - '@coze-editor/core': 0.1.0-alpha.868621(@codemirror/state@6.7.1)(@codemirror/view@6.43.6) - '@coze-editor/core-plugins': 0.1.0-alpha.868621(@codemirror/commands@6.10.4)(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(@lezer/common@1.5.2) - '@coze-editor/extension-placeholder': 0.1.0-alpha.868621(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(@lezer/common@1.5.2) - vue: 3.5.40(typescript@5.9.3) - transitivePeerDependencies: - - '@codemirror/commands' - - '@lezer/common' - - '@cspotcode/source-map-support@0.8.1': - dependencies: - '@jridgewell/trace-mapping': 0.3.9 - - '@dagrejs/graphlib@2.2.2': {} - - '@dnd-kit/accessibility@3.1.1(react@18.3.1)': - dependencies: - react: 18.3.1 - tslib: 2.8.1 - - '@dnd-kit/core@6.3.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@dnd-kit/accessibility': 3.1.1(react@18.3.1) - '@dnd-kit/utilities': 3.2.2(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - tslib: 2.8.1 - - '@dnd-kit/sortable@7.0.2(@dnd-kit/core@6.3.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1)': - dependencies: - '@dnd-kit/core': 6.3.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@dnd-kit/utilities': 3.2.2(react@18.3.1) - react: 18.3.1 - tslib: 2.8.1 - - '@dnd-kit/utilities@3.2.2(react@18.3.1)': - dependencies: - react: 18.3.1 - tslib: 2.8.1 - - '@douyinfe/semi-animation-react@2.101.1': - dependencies: - '@douyinfe/semi-animation': 2.101.1 - '@douyinfe/semi-animation-styled': 2.101.1 - classnames: 2.5.1 - - '@douyinfe/semi-animation-styled@2.101.1': {} - - '@douyinfe/semi-animation@2.101.1': - dependencies: - bezier-easing: 2.1.0 - - '@douyinfe/semi-foundation@2.101.1': - dependencies: - '@douyinfe/semi-animation': 2.101.1 - '@douyinfe/semi-json-viewer-core': 2.101.1 - '@mdx-js/mdx': 3.1.1 - async-validator: 3.5.2 - classnames: 2.5.1 - date-fns: 2.30.0 - date-fns-tz: 1.3.8(date-fns@2.30.0) - fast-copy: 3.0.2 - lodash: 4.18.1 - lottie-web: 5.13.0 - memoize-one: 5.2.1 - prismjs: 1.30.0 - remark-gfm: 4.0.1 - scroll-into-view-if-needed: 2.2.31 - transitivePeerDependencies: - - supports-color - - '@douyinfe/semi-icons@2.101.1(react@18.3.1)': - dependencies: - classnames: 2.5.1 - react: 18.3.1 - - '@douyinfe/semi-illustrations@2.101.1(react@18.3.1)': - dependencies: - react: 18.3.1 - - '@douyinfe/semi-json-viewer-core@2.101.1': - dependencies: - jsonc-parser: 3.3.1 - - '@douyinfe/semi-theme-default@2.101.1': {} - - '@douyinfe/semi-ui@2.101.1(@floating-ui/dom@1.8.0)(@tiptap/suggestion@3.29.0(@floating-ui/dom@1.8.0)(@tiptap/core@3.29.0(@tiptap/pm@3.29.0))(@tiptap/pm@3.29.0))(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@dnd-kit/core': 6.3.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@dnd-kit/sortable': 7.0.2(@dnd-kit/core@6.3.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react@18.3.1) - '@dnd-kit/utilities': 3.2.2(react@18.3.1) - '@douyinfe/semi-animation': 2.101.1 - '@douyinfe/semi-animation-react': 2.101.1 - '@douyinfe/semi-foundation': 2.101.1 - '@douyinfe/semi-icons': 2.101.1(react@18.3.1) - '@douyinfe/semi-illustrations': 2.101.1(react@18.3.1) - '@douyinfe/semi-theme-default': 2.101.1 - '@tiptap/core': 3.29.0(@tiptap/pm@3.29.0) - '@tiptap/extension-document': 3.29.0(@tiptap/core@3.29.0(@tiptap/pm@3.29.0)) - '@tiptap/extension-hard-break': 3.29.0(@tiptap/core@3.29.0(@tiptap/pm@3.29.0)) - '@tiptap/extension-image': 3.29.0(@tiptap/core@3.29.0(@tiptap/pm@3.29.0)) - '@tiptap/extension-mention': 3.29.0(@tiptap/core@3.29.0(@tiptap/pm@3.29.0))(@tiptap/pm@3.29.0)(@tiptap/suggestion@3.29.0(@floating-ui/dom@1.8.0)(@tiptap/core@3.29.0(@tiptap/pm@3.29.0))(@tiptap/pm@3.29.0)) - '@tiptap/extension-paragraph': 3.29.0(@tiptap/core@3.29.0(@tiptap/pm@3.29.0)) - '@tiptap/extension-text': 3.29.0(@tiptap/core@3.29.0(@tiptap/pm@3.29.0)) - '@tiptap/extension-text-align': 3.29.0(@tiptap/core@3.29.0(@tiptap/pm@3.29.0)) - '@tiptap/extension-text-style': 3.29.0(@tiptap/core@3.29.0(@tiptap/pm@3.29.0)) - '@tiptap/extensions': 3.29.0(@tiptap/core@3.29.0(@tiptap/pm@3.29.0))(@tiptap/pm@3.29.0) - '@tiptap/pm': 3.29.0 - '@tiptap/react': 3.29.0(@floating-ui/dom@1.8.0)(@tiptap/core@3.29.0(@tiptap/pm@3.29.0))(@tiptap/pm@3.29.0)(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@tiptap/starter-kit': 3.29.0 - async-validator: 3.5.2 - classnames: 2.5.1 - copy-text-to-clipboard: 2.2.0 - date-fns: 2.30.0 - date-fns-tz: 1.3.8(date-fns@2.30.0) - fast-copy: 3.0.2 - jsonc-parser: 3.3.1 - lodash: 4.18.1 - prop-types: 15.8.1 - prosemirror-state: 1.4.4 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - react-resizable: 3.2.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react-window: 1.8.11(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - scroll-into-view-if-needed: 2.2.31 - utility-types: 3.11.0 - transitivePeerDependencies: - - '@floating-ui/dom' - - '@tiptap/suggestion' - - '@types/react' - - '@types/react-dom' - - supports-color - - '@emnapi/core@1.10.0': - dependencies: - '@emnapi/wasi-threads': 1.2.1 - tslib: 2.8.1 - optional: true - - '@emnapi/core@1.11.3': - dependencies: - '@emnapi/wasi-threads': 1.2.3 - tslib: 2.8.1 - optional: true - - '@emnapi/runtime@1.10.0': - dependencies: - tslib: 2.8.1 - optional: true - - '@emnapi/runtime@1.11.3': - dependencies: - tslib: 2.8.1 - optional: true - - '@emnapi/wasi-threads@1.2.1': - dependencies: - tslib: 2.8.1 - optional: true - - '@emnapi/wasi-threads@1.2.3': - dependencies: - tslib: 2.8.1 - optional: true - - '@emotion/is-prop-valid@1.4.0': - dependencies: - '@emotion/memoize': 0.9.0 - - '@emotion/memoize@0.9.0': {} - - '@emotion/stylis@0.8.5': {} - - '@emotion/unitless@0.7.5': {} - - '@eslint-community/eslint-utils@4.10.1(eslint@9.39.5(jiti@2.7.0))': - dependencies: - eslint: 9.39.5(jiti@2.7.0) - eslint-visitor-keys: 3.4.3 - - '@eslint-community/regexpp@4.12.2': {} - - '@eslint/config-array@0.21.2': - dependencies: - '@eslint/object-schema': 2.1.7 - debug: 4.4.3(supports-color@5.5.0) - minimatch: 3.1.5 - transitivePeerDependencies: - - supports-color - - '@eslint/config-helpers@0.4.2': - dependencies: - '@eslint/core': 0.17.0 - - '@eslint/core@0.17.0': - dependencies: - '@types/json-schema': 7.0.15 - - '@eslint/eslintrc@3.3.3': - dependencies: - ajv: 6.15.0 - debug: 4.4.3(supports-color@5.5.0) - espree: 10.4.0 - globals: 14.0.0 - ignore: 5.3.2 - import-fresh: 3.3.1 - js-yaml: 4.3.0 - minimatch: 3.1.5 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - - '@eslint/eslintrc@3.3.6': - dependencies: - ajv: 6.15.0 - debug: 4.4.3(supports-color@5.5.0) - espree: 10.4.0 - globals: 14.0.0 - ignore: 5.3.2 - import-fresh: 3.3.1 - js-yaml: 4.3.0 - minimatch: 3.1.5 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - - '@eslint/js@9.39.5': {} - - '@eslint/object-schema@2.1.7': {} - - '@eslint/plugin-kit@0.4.1': - dependencies: - '@eslint/core': 0.17.0 - levn: 0.4.1 - - '@floating-ui/core@1.8.0': - dependencies: - '@floating-ui/utils': 0.2.12 - - '@floating-ui/dom@1.8.0': - dependencies: - '@floating-ui/core': 1.8.0 - '@floating-ui/utils': 0.2.12 - - '@floating-ui/utils@0.2.12': {} - - '@flowgram.ai/background-plugin@1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@flowgram.ai/core': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/utils': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - inversify: 6.2.2(reflect-metadata@0.2.2) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - reflect-metadata: 0.2.2 - - '@flowgram.ai/command@1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@flowgram.ai/utils': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - inversify: 6.2.2(reflect-metadata@0.2.2) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - reflect-metadata: 0.2.2 - - '@flowgram.ai/core@1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@flowgram.ai/command': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/utils': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@phosphor/messaging': 1.3.0 - '@tweenjs/tween.js': 18.6.4 - inversify: 6.2.2(reflect-metadata@0.2.2) - lodash-es: 4.18.1 - nanoid: 5.1.16 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - reflect-metadata: 0.2.2 - - '@flowgram.ai/coze-editor@1.0.12(@babel/core@8.0.1)(@babel/template@8.0.0)(@codemirror/autocomplete@6.20.3)(@codemirror/language@6.12.4)(@codemirror/merge@6.12.2)(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(@coze-editor/code-language-shared@0.1.0-alpha.868621(@codemirror/autocomplete@6.20.3)(@codemirror/language@6.12.4)(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(@lezer/common@1.5.2))(@lezer/common@1.5.2)(@types/react@18.3.31)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@5.3.11(@babel/core@8.0.1)(react-dom@18.3.1(react@18.3.1))(react-is@16.13.1)(react@18.3.1))(vue@3.5.40(typescript@5.9.3))': - dependencies: - '@coze-editor/code-language-typescript': 0.1.0-alpha.868621(@codemirror/language@6.12.4)(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(@coze-editor/code-language-shared@0.1.0-alpha.868621(@codemirror/autocomplete@6.20.3)(@codemirror/language@6.12.4)(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(@lezer/common@1.5.2))(typescript@5.9.3) - '@coze-editor/editor': 0.1.0-alpha.868621(@babel/core@8.0.1)(@babel/template@8.0.0)(@codemirror/autocomplete@6.20.3)(@codemirror/language@6.12.4)(@codemirror/merge@6.12.2)(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(@lezer/common@1.5.2)(@types/react@18.3.31)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(typescript@5.9.3)(vue@3.5.40(typescript@5.9.3)) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - styled-components: 5.3.11(@babel/core@8.0.1)(react-dom@18.3.1(react@18.3.1))(react-is@16.13.1)(react@18.3.1) - typescript: 5.9.3 - transitivePeerDependencies: - - '@babel/core' - - '@babel/template' - - '@codemirror/autocomplete' - - '@codemirror/language' - - '@codemirror/merge' - - '@codemirror/state' - - '@codemirror/view' - - '@coze-editor/code-language-shared' - - '@lezer/common' - - '@types/react' - - supports-color - - vue - - '@flowgram.ai/document@1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@flowgram.ai/core': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/utils': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - inversify: 6.2.2(reflect-metadata@0.2.2) - lodash-es: 4.18.1 - nanoid: 5.1.16 - reflect-metadata: 0.2.2 - transitivePeerDependencies: - - react - - react-dom - - '@flowgram.ai/editor@1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@flowgram.ai/core': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/document': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/form': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/form-core': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/history': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/history-node-plugin': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/i18n-plugin': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/materials-plugin': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/node': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/node-core-plugin': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/node-variable-plugin': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/playground-react': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/reactive': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/redux-devtool-plugin': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/renderer': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/shortcuts-plugin': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/utils': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/variable-plugin': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - inversify: 6.2.2(reflect-metadata@0.2.2) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - reflect-metadata: 0.2.2 - - '@flowgram.ai/eslint-config@1.0.12(@types/node@18.19.130)(jiti@2.7.0)(typescript@5.9.3)': - dependencies: - '@babel/core': 8.0.1 - '@babel/eslint-parser': 7.19.1(@babel/core@8.0.1)(eslint@9.39.5(jiti@2.7.0)) - '@babel/eslint-plugin': 7.29.7(@babel/eslint-parser@7.19.1(@babel/core@8.0.1)(eslint@9.39.5(jiti@2.7.0)))(eslint@9.39.5(jiti@2.7.0)) - '@babel/preset-env': 7.20.2(@babel/core@8.0.1) - '@babel/preset-react': 7.13.13(@babel/core@8.0.1) - '@eslint/eslintrc': 3.3.3 - '@typescript-eslint/eslint-plugin': 8.65.0(@typescript-eslint/parser@8.65.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) - '@typescript-eslint/parser': 8.65.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) - eslint: 9.39.5(jiti@2.7.0) - eslint-config-prettier: 8.10.2(eslint@9.39.5(jiti@2.7.0)) - eslint-define-config: 1.12.0 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.5(jiti@2.7.0)) - eslint-plugin-babel: 5.3.1(eslint@9.39.5(jiti@2.7.0)) - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.65.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.5(jiti@2.7.0)) - eslint-plugin-jsx-a11y: 6.10.2(eslint@9.39.5(jiti@2.7.0)) - eslint-plugin-prettier: 4.2.5(eslint-config-prettier@8.10.2(eslint@9.39.5(jiti@2.7.0)))(eslint@9.39.5(jiti@2.7.0))(prettier@2.8.8) - eslint-plugin-react: 7.37.5(eslint@9.39.5(jiti@2.7.0)) - eslint-plugin-tsdoc: 0.2.17 - prettier: 2.8.8 - prettier-plugin-packagejson: 2.5.22(prettier@2.8.8) - ts-node: 10.9.2(@types/node@18.19.130)(typescript@5.9.3) - transitivePeerDependencies: - - '@swc/core' - - '@swc/wasm' - - '@types/node' - - eslint-import-resolver-webpack - - eslint-plugin-import-x - - jiti - - supports-color - - typescript - - '@flowgram.ai/export-plugin@1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@flowgram.ai/core': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/document': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/utils': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - inversify: 6.2.2(reflect-metadata@0.2.2) - js-yaml: 4.3.0 - lodash-es: 4.18.1 - modern-screenshot: 4.6.7 - nanoid: 5.1.16 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - reflect-metadata: 0.2.2 - - '@flowgram.ai/form-core@1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@flowgram.ai/core': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/document': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/utils': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - inversify: 6.2.2(reflect-metadata@0.2.2) - lodash-es: 4.18.1 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - reflect-metadata: 0.2.2 - - '@flowgram.ai/form-materials@1.0.12(@babel/core@8.0.1)(@babel/template@8.0.0)(@codemirror/autocomplete@6.20.3)(@codemirror/language@6.12.4)(@codemirror/merge@6.12.2)(@coze-editor/code-language-shared@0.1.0-alpha.868621(@codemirror/autocomplete@6.20.3)(@codemirror/language@6.12.4)(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(@lezer/common@1.5.2))(@floating-ui/dom@1.8.0)(@lezer/common@1.5.2)(@tiptap/suggestion@3.29.0(@floating-ui/dom@1.8.0)(@tiptap/core@3.29.0(@tiptap/pm@3.29.0))(@tiptap/pm@3.29.0))(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@5.3.11(@babel/core@8.0.1)(react-dom@18.3.1(react@18.3.1))(react-is@16.13.1)(react@18.3.1))(vue@3.5.40(typescript@5.9.3))': - dependencies: - '@codemirror/state': 6.7.1 - '@codemirror/view': 6.43.6 - '@douyinfe/semi-icons': 2.101.1(react@18.3.1) - '@douyinfe/semi-ui': 2.101.1(@floating-ui/dom@1.8.0)(@tiptap/suggestion@3.29.0(@floating-ui/dom@1.8.0)(@tiptap/core@3.29.0(@tiptap/pm@3.29.0))(@tiptap/pm@3.29.0))(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/coze-editor': 1.0.12(@babel/core@8.0.1)(@babel/template@8.0.0)(@codemirror/autocomplete@6.20.3)(@codemirror/language@6.12.4)(@codemirror/merge@6.12.2)(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(@coze-editor/code-language-shared@0.1.0-alpha.868621(@codemirror/autocomplete@6.20.3)(@codemirror/language@6.12.4)(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(@lezer/common@1.5.2))(@lezer/common@1.5.2)(@types/react@18.3.31)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@5.3.11(@babel/core@8.0.1)(react-dom@18.3.1(react@18.3.1))(react-is@16.13.1)(react@18.3.1))(vue@3.5.40(typescript@5.9.3)) - '@flowgram.ai/editor': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/json-schema': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - immer: 10.1.3 - lodash-es: 4.18.1 - nanoid: 5.1.16 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - zod: 3.25.76 - transitivePeerDependencies: - - '@babel/core' - - '@babel/template' - - '@codemirror/autocomplete' - - '@codemirror/language' - - '@codemirror/merge' - - '@coze-editor/code-language-shared' - - '@floating-ui/dom' - - '@lezer/common' - - '@tiptap/suggestion' - - '@types/react' - - '@types/react-dom' - - styled-components - - supports-color - - vue - - '@flowgram.ai/form@1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@flowgram.ai/reactive': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/utils': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - fast-equals: 2.0.4 - lodash-es: 4.18.1 - nanoid: 5.1.16 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - - '@flowgram.ai/free-auto-layout-plugin@1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@5.3.11(@babel/core@8.0.1)(react-dom@18.3.1(react@18.3.1))(react-is@16.13.1)(react@18.3.1))': - dependencies: - '@dagrejs/graphlib': 2.2.2 - '@flowgram.ai/core': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/document': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/free-layout-core': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/utils': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - inversify: 6.2.2(reflect-metadata@0.2.2) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - reflect-metadata: 0.2.2 - styled-components: 5.3.11(@babel/core@8.0.1)(react-dom@18.3.1(react@18.3.1))(react-is@16.13.1)(react@18.3.1) - - '@flowgram.ai/free-container-plugin@1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@5.3.11(@babel/core@8.0.1)(react-dom@18.3.1(react@18.3.1))(react-is@16.13.1)(react@18.3.1))': - dependencies: - '@flowgram.ai/background-plugin': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/core': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/document': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/free-history-plugin': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/free-layout-core': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/i18n': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/utils': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - inversify: 6.2.2(reflect-metadata@0.2.2) - lodash-es: 4.18.1 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - reflect-metadata: 0.2.2 - styled-components: 5.3.11(@babel/core@8.0.1)(react-dom@18.3.1(react@18.3.1))(react-is@16.13.1)(react@18.3.1) - - '@flowgram.ai/free-group-plugin@1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@5.3.11(@babel/core@8.0.1)(react-dom@18.3.1(react@18.3.1))(react-is@16.13.1)(react@18.3.1))': - dependencies: - '@flowgram.ai/core': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/document': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/free-container-plugin': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@5.3.11(@babel/core@8.0.1)(react-dom@18.3.1(react@18.3.1))(react-is@16.13.1)(react@18.3.1)) - '@flowgram.ai/free-history-plugin': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/free-layout-core': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/free-layout-editor': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@5.3.11(@babel/core@8.0.1)(react-dom@18.3.1(react@18.3.1))(react-is@16.13.1)(react@18.3.1)) - '@flowgram.ai/renderer': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/shortcuts-plugin': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/utils': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - inversify: 6.2.2(reflect-metadata@0.2.2) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - reflect-metadata: 0.2.2 - transitivePeerDependencies: - - styled-components - - '@flowgram.ai/free-history-plugin@1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@flowgram.ai/core': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/document': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/form-core': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/free-layout-core': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/history': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/utils': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - inversify: 6.2.2(reflect-metadata@0.2.2) - lodash-es: 4.18.1 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - reflect-metadata: 0.2.2 - - '@flowgram.ai/free-hover-plugin@1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@flowgram.ai/core': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/document': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/free-layout-core': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/renderer': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/utils': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - inversify: 6.2.2(reflect-metadata@0.2.2) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - reflect-metadata: 0.2.2 - - '@flowgram.ai/free-layout-core@1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@flowgram.ai/core': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/document': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/form-core': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/node': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/reactive': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/utils': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - inversify: 6.2.2(reflect-metadata@0.2.2) - lodash-es: 4.18.1 - nanoid: 5.1.16 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - reflect-metadata: 0.2.2 - - '@flowgram.ai/free-layout-editor@1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@5.3.11(@babel/core@8.0.1)(react-dom@18.3.1(react@18.3.1))(react-is@16.13.1)(react@18.3.1))': - dependencies: - '@flowgram.ai/editor': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/free-auto-layout-plugin': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@5.3.11(@babel/core@8.0.1)(react-dom@18.3.1(react@18.3.1))(react-is@16.13.1)(react@18.3.1)) - '@flowgram.ai/free-history-plugin': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/free-hover-plugin': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/free-layout-core': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/free-lines-plugin': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@5.3.11(@babel/core@8.0.1)(react-dom@18.3.1(react@18.3.1))(react-is@16.13.1)(react@18.3.1)) - '@flowgram.ai/free-stack-plugin': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@5.3.11(@babel/core@8.0.1)(react-dom@18.3.1(react@18.3.1))(react-is@16.13.1)(react@18.3.1)) - '@flowgram.ai/history': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/select-box-plugin': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/utils': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - clsx: 1.2.1 - inversify: 6.2.2(reflect-metadata@0.2.2) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - reflect-metadata: 0.2.2 - transitivePeerDependencies: - - styled-components - - '@flowgram.ai/free-lines-plugin@1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@5.3.11(@babel/core@8.0.1)(react-dom@18.3.1(react@18.3.1))(react-is@16.13.1)(react@18.3.1))': - dependencies: - '@flowgram.ai/core': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/free-layout-core': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/free-stack-plugin': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@5.3.11(@babel/core@8.0.1)(react-dom@18.3.1(react@18.3.1))(react-is@16.13.1)(react@18.3.1)) - '@flowgram.ai/renderer': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/utils': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - bezier-js: 6.1.4 - clsx: 1.2.1 - inversify: 6.2.2(reflect-metadata@0.2.2) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - reflect-metadata: 0.2.2 - styled-components: 5.3.11(@babel/core@8.0.1)(react-dom@18.3.1(react@18.3.1))(react-is@16.13.1)(react@18.3.1) - - '@flowgram.ai/free-node-panel-plugin@1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@flowgram.ai/core': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/document': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/free-history-plugin': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/free-layout-core': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/utils': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - inversify: 6.2.2(reflect-metadata@0.2.2) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - reflect-metadata: 0.2.2 - - '@flowgram.ai/free-snap-plugin@1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@5.3.11(@babel/core@8.0.1)(react-dom@18.3.1(react@18.3.1))(react-is@16.13.1)(react@18.3.1))': - dependencies: - '@flowgram.ai/core': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/document': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/free-layout-core': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/utils': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - inversify: 6.2.2(reflect-metadata@0.2.2) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - reflect-metadata: 0.2.2 - styled-components: 5.3.11(@babel/core@8.0.1)(react-dom@18.3.1(react@18.3.1))(react-is@16.13.1)(react@18.3.1) - - '@flowgram.ai/free-stack-plugin@1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(styled-components@5.3.11(@babel/core@8.0.1)(react-dom@18.3.1(react@18.3.1))(react-is@16.13.1)(react@18.3.1))': - dependencies: - '@flowgram.ai/core': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/document': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/free-layout-core': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/utils': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - inversify: 6.2.2(reflect-metadata@0.2.2) - lodash-es: 4.18.1 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - reflect-metadata: 0.2.2 - styled-components: 5.3.11(@babel/core@8.0.1)(react-dom@18.3.1(react@18.3.1))(react-is@16.13.1)(react@18.3.1) - - '@flowgram.ai/history-node-plugin@1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@flowgram.ai/core': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/document': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/form': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/form-core': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/history': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/node': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - inversify: 6.2.2(reflect-metadata@0.2.2) - lodash-es: 4.18.1 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - reflect-metadata: 0.2.2 - - '@flowgram.ai/history@1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@flowgram.ai/core': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/utils': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - inversify: 6.2.2(reflect-metadata@0.2.2) - lodash-es: 4.18.1 - nanoid: 5.1.16 - reflect-metadata: 0.2.2 - transitivePeerDependencies: - - react - - react-dom - - '@flowgram.ai/i18n-plugin@1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@flowgram.ai/core': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/i18n': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - transitivePeerDependencies: - - react - - react-dom - - '@flowgram.ai/i18n@1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@flowgram.ai/utils': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - i18n-js: 4.5.3 - transitivePeerDependencies: - - react - - react-dom - - '@flowgram.ai/json-schema@1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@flowgram.ai/core': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/utils': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/variable-core': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - inversify: 6.2.2(reflect-metadata@0.2.2) - lodash-es: 4.18.1 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - reflect-metadata: 0.2.2 - - '@flowgram.ai/materials-plugin@1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@flowgram.ai/core': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/renderer': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - inversify: 6.2.2(reflect-metadata@0.2.2) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - reflect-metadata: 0.2.2 - - '@flowgram.ai/minimap-plugin@1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@flowgram.ai/core': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/document': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/utils': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - inversify: 6.2.2(reflect-metadata@0.2.2) - lodash-es: 4.18.1 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - reflect-metadata: 0.2.2 - - '@flowgram.ai/node-core-plugin@1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@flowgram.ai/core': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/document': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/form-core': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/node': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - inversify: 6.2.2(reflect-metadata@0.2.2) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - reflect-metadata: 0.2.2 - - '@flowgram.ai/node-variable-plugin@1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@flowgram.ai/core': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/document': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/form-core': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/node': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/utils': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/variable-plugin': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - inversify: 6.2.2(reflect-metadata@0.2.2) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - reflect-metadata: 0.2.2 - - '@flowgram.ai/node@1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@flowgram.ai/core': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/document': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/form': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/form-core': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/utils': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - inversify: 6.2.2(reflect-metadata@0.2.2) - lodash-es: 4.18.1 - nanoid: 5.1.16 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - reflect-metadata: 0.2.2 - - '@flowgram.ai/panel-manager-plugin@1.0.12(@types/react@18.3.31)(immer@10.1.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(reflect-metadata@0.2.2)': - dependencies: - '@flowgram.ai/core': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/utils': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - clsx: 1.2.1 - inversify: 6.2.2(reflect-metadata@0.2.2) - nanoid: 5.1.16 - react-dom: 18.3.1(react@18.3.1) - use-sync-external-store: 1.6.0(react@18.3.1) - zustand: 4.5.7(@types/react@18.3.31)(immer@10.1.3)(react@18.3.1) - optionalDependencies: - react: 18.3.1 - transitivePeerDependencies: - - '@types/react' - - immer - - reflect-metadata - - '@flowgram.ai/playground-react@1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@flowgram.ai/background-plugin': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/core': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/shortcuts-plugin': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/utils': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - inversify: 6.2.2(reflect-metadata@0.2.2) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - reflect-metadata: 0.2.2 - - '@flowgram.ai/reactive@1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@flowgram.ai/utils': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - - '@flowgram.ai/redux-devtool-plugin@1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@flowgram.ai/core': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/variable-core': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - inversify: 6.2.2(reflect-metadata@0.2.2) - reflect-metadata: 0.2.2 - transitivePeerDependencies: - - react - - react-dom - - '@flowgram.ai/renderer@1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@flowgram.ai/core': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/document': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/i18n': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/utils': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - inversify: 6.2.2(reflect-metadata@0.2.2) - lodash-es: 4.18.1 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - reflect-metadata: 0.2.2 - - '@flowgram.ai/runtime-interface@1.0.12': - dependencies: - zod: 3.25.76 - - '@flowgram.ai/runtime-js@1.0.12(openai@5.23.2(zod@3.25.76))': - dependencies: - '@langchain/core': 0.3.80(openai@5.23.2(zod@3.25.76)) - '@langchain/openai': 0.5.18(@langchain/core@0.3.80(openai@5.23.2(zod@3.25.76))) - lodash-es: 4.18.1 - quickjs-emscripten: 0.32.0 - uuid: 9.0.1 - zod: 3.25.76 - transitivePeerDependencies: - - '@opentelemetry/api' - - '@opentelemetry/exporter-trace-otlp-proto' - - '@opentelemetry/sdk-trace-base' - - openai - - ws - - '@flowgram.ai/select-box-plugin@1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@flowgram.ai/core': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/renderer': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - inversify: 6.2.2(reflect-metadata@0.2.2) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - reflect-metadata: 0.2.2 - - '@flowgram.ai/shortcuts-plugin@1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@flowgram.ai/core': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - inversify: 6.2.2(reflect-metadata@0.2.2) - reflect-metadata: 0.2.2 - transitivePeerDependencies: - - react - - react-dom - - '@flowgram.ai/ts-config@1.0.12': {} - - '@flowgram.ai/utils@1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - clsx: 1.2.1 - inversify: 6.2.2(reflect-metadata@0.2.2) - nanoid: 5.1.16 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - reflect-metadata: 0.2.2 - - '@flowgram.ai/variable-core@1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@flowgram.ai/core': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/utils': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - fast-equals: 2.0.4 - inversify: 6.2.2(reflect-metadata@0.2.2) - lodash-es: 4.18.1 - nanoid: 5.1.16 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - reflect-metadata: 0.2.2 - rxjs: 7.8.2 - - '@flowgram.ai/variable-layout@1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@flowgram.ai/core': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/document': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/free-layout-core': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/variable-core': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - inversify: 6.2.2(reflect-metadata@0.2.2) - reflect-metadata: 0.2.2 - transitivePeerDependencies: - - react - - react-dom - - '@flowgram.ai/variable-plugin@1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@flowgram.ai/core': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/document': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/variable-core': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@flowgram.ai/variable-layout': 1.0.12(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - inversify: 6.2.2(reflect-metadata@0.2.2) - reflect-metadata: 0.2.2 - transitivePeerDependencies: - - react - - react-dom - - '@humanfs/core@0.19.2': - dependencies: - '@humanfs/types': 0.15.0 - - '@humanfs/node@0.16.8': - dependencies: - '@humanfs/core': 0.19.2 - '@humanfs/types': 0.15.0 - '@humanwhocodes/retry': 0.4.3 - - '@humanfs/types@0.15.0': {} - - '@humanwhocodes/module-importer@1.0.1': {} - - '@humanwhocodes/retry@0.4.3': {} - - '@inversifyjs/common@1.4.0': {} - - '@inversifyjs/core@1.3.5(reflect-metadata@0.2.2)': - dependencies: - '@inversifyjs/common': 1.4.0 - '@inversifyjs/reflect-metadata-utils': 0.2.4(reflect-metadata@0.2.2) - transitivePeerDependencies: - - reflect-metadata - - '@inversifyjs/reflect-metadata-utils@0.2.4(reflect-metadata@0.2.2)': - dependencies: - reflect-metadata: 0.2.2 - - '@jitl/quickjs-ffi-types@0.32.0': {} - - '@jitl/quickjs-wasmfile-debug-asyncify@0.32.0': - dependencies: - '@jitl/quickjs-ffi-types': 0.32.0 - - '@jitl/quickjs-wasmfile-debug-sync@0.32.0': - dependencies: - '@jitl/quickjs-ffi-types': 0.32.0 - - '@jitl/quickjs-wasmfile-release-asyncify@0.32.0': - dependencies: - '@jitl/quickjs-ffi-types': 0.32.0 - - '@jitl/quickjs-wasmfile-release-sync@0.32.0': - dependencies: - '@jitl/quickjs-ffi-types': 0.32.0 - - '@jridgewell/gen-mapping@0.3.13': - dependencies: - '@jridgewell/sourcemap-codec': 1.5.5 - '@jridgewell/trace-mapping': 0.3.31 - - '@jridgewell/resolve-uri@3.1.2': {} - - '@jridgewell/sourcemap-codec@1.5.5': {} - - '@jridgewell/trace-mapping@0.3.31': - dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.5 - - '@jridgewell/trace-mapping@0.3.9': - dependencies: - '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.5 - - '@langchain/core@0.3.80(openai@5.23.2(zod@3.25.76))': - dependencies: - '@cfworker/json-schema': 4.1.1 - ansi-styles: 5.2.0 - camelcase: 6.3.0 - decamelize: 1.2.0 - js-tiktoken: 1.0.21 - langsmith: 0.3.87(openai@5.23.2(zod@3.25.76)) - mustache: 4.2.0 - p-queue: 6.6.2 - p-retry: 4.6.2 - uuid: 10.0.0 - zod: 3.25.76 - zod-to-json-schema: 3.25.2(zod@3.25.76) - transitivePeerDependencies: - - '@opentelemetry/api' - - '@opentelemetry/exporter-trace-otlp-proto' - - '@opentelemetry/sdk-trace-base' - - openai - - '@langchain/openai@0.5.18(@langchain/core@0.3.80(openai@5.23.2(zod@3.25.76)))': - dependencies: - '@langchain/core': 0.3.80(openai@5.23.2(zod@3.25.76)) - js-tiktoken: 1.0.21 - openai: 5.23.2(zod@3.25.76) - zod: 3.25.76 - transitivePeerDependencies: - - ws - - '@lezer/common@1.5.2': {} - - '@lezer/highlight@1.2.3': - dependencies: - '@lezer/common': 1.5.2 - - '@lezer/html@1.3.13': - dependencies: - '@lezer/common': 1.5.2 - '@lezer/highlight': 1.2.3 - '@lezer/lr': 1.4.10 - - '@lezer/javascript@1.5.4': - dependencies: - '@lezer/common': 1.5.2 - '@lezer/highlight': 1.2.3 - '@lezer/lr': 1.4.10 - - '@lezer/json@1.0.3': - dependencies: - '@lezer/common': 1.5.2 - '@lezer/highlight': 1.2.3 - '@lezer/lr': 1.4.10 - - '@lezer/lr@1.4.10': - dependencies: - '@lezer/common': 1.5.2 - - '@lezer/markdown@1.7.2': - dependencies: - '@lezer/common': 1.5.2 - '@lezer/highlight': 1.2.3 - - '@lezer/python@1.1.19': - dependencies: - '@lezer/common': 1.5.2 - '@lezer/highlight': 1.2.3 - '@lezer/lr': 1.4.10 - - '@lukeed/csprng@1.1.0': {} - - '@lukeed/uuid@2.0.1': - dependencies: - '@lukeed/csprng': 1.1.0 - - '@marijn/find-cluster-break@1.0.3': {} - - '@mdx-js/mdx@3.1.1': - dependencies: - '@types/estree': 1.0.9 - '@types/estree-jsx': 1.0.5 - '@types/hast': 3.0.5 - '@types/mdx': 2.0.14 - acorn: 8.17.0 - collapse-white-space: 2.1.0 - devlop: 1.1.0 - estree-util-is-identifier-name: 3.0.0 - estree-util-scope: 1.0.0 - estree-walker: 3.0.3 - hast-util-to-jsx-runtime: 2.3.6 - markdown-extensions: 2.0.0 - recma-build-jsx: 1.0.0 - recma-jsx: 1.0.1(acorn@8.17.0) - recma-stringify: 1.0.0 - rehype-recma: 1.0.0 - remark-mdx: 3.1.1 - remark-parse: 11.0.0 - remark-rehype: 11.1.2 - source-map: 0.7.6 - unified: 11.0.5 - unist-util-position-from-estree: 2.0.0 - unist-util-stringify-position: 4.0.0 - unist-util-visit: 5.1.0 - vfile: 6.0.3 - transitivePeerDependencies: - - supports-color - - '@microsoft/tsdoc-config@0.16.2': - dependencies: - '@microsoft/tsdoc': 0.14.2 - ajv: 6.12.6 - jju: 1.4.0 - resolve: 1.19.0 - - '@microsoft/tsdoc@0.14.2': {} - - '@module-federation/error-codes@0.22.0': {} - - '@module-federation/runtime-core@0.22.0': - dependencies: - '@module-federation/error-codes': 0.22.0 - '@module-federation/sdk': 0.22.0 - - '@module-federation/runtime-tools@0.22.0': - dependencies: - '@module-federation/runtime': 0.22.0 - '@module-federation/webpack-bundler-runtime': 0.22.0 - - '@module-federation/runtime@0.22.0': - dependencies: - '@module-federation/error-codes': 0.22.0 - '@module-federation/runtime-core': 0.22.0 - '@module-federation/sdk': 0.22.0 - - '@module-federation/sdk@0.22.0': {} - - '@module-federation/webpack-bundler-runtime@0.22.0': - dependencies: - '@module-federation/runtime': 0.22.0 - '@module-federation/sdk': 0.22.0 - - '@napi-rs/wasm-runtime@1.0.7': - dependencies: - '@emnapi/core': 1.11.3 - '@emnapi/runtime': 1.11.3 - '@tybys/wasm-util': 0.10.3 - optional: true - - '@napi-rs/wasm-runtime@1.1.6(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)': - dependencies: - '@emnapi/core': 1.10.0 - '@emnapi/runtime': 1.10.0 - '@tybys/wasm-util': 0.10.3 - optional: true - - '@nicolo-ribaudo/eslint-scope-5-internals@5.1.1-v1': - dependencies: - eslint-scope: 5.1.1 - - '@nolyfill/is-core-module@1.0.39': {} - - '@nozbe/microfuzz@1.0.0': {} - - '@phosphor/algorithm@1.2.0': {} - - '@phosphor/collections@1.2.0': - dependencies: - '@phosphor/algorithm': 1.2.0 - - '@phosphor/messaging@1.3.0': - dependencies: - '@phosphor/algorithm': 1.2.0 - '@phosphor/collections': 1.2.0 - - '@rsbuild/core@1.7.6': - dependencies: - '@rspack/core': 1.7.12(@swc/helpers@0.5.23) - '@rspack/lite-tapable': 1.1.2 - '@swc/helpers': 0.5.23 - core-js: 3.47.0 - jiti: 2.7.0 - - '@rsbuild/plugin-less@1.6.4(@rsbuild/core@1.7.6)(@rspack/core@1.7.12(@swc/helpers@0.5.23))': - dependencies: - deepmerge: 4.3.1 - less: 4.8.0 - less-loader: 12.3.3(@rspack/core@1.7.12(@swc/helpers@0.5.23))(less@4.8.0) - reduce-configs: 1.1.2 - optionalDependencies: - '@rsbuild/core': 1.7.6 - transitivePeerDependencies: - - '@rspack/core' - - supports-color - - webpack - - '@rsbuild/plugin-react@1.4.6(@rsbuild/core@1.7.6)': - dependencies: - '@rspack/plugin-react-refresh': 1.6.2(react-refresh@0.18.0) - react-refresh: 0.18.0 - optionalDependencies: - '@rsbuild/core': 1.7.6 - transitivePeerDependencies: - - webpack-hot-middleware - - '@rspack/binding-darwin-arm64@1.7.12': - optional: true - - '@rspack/binding-darwin-x64@1.7.12': - optional: true - - '@rspack/binding-linux-arm64-gnu@1.7.12': - optional: true - - '@rspack/binding-linux-arm64-musl@1.7.12': - optional: true - - '@rspack/binding-linux-x64-gnu@1.7.12': - optional: true - - '@rspack/binding-linux-x64-musl@1.7.12': - optional: true - - '@rspack/binding-wasm32-wasi@1.7.12': - dependencies: - '@napi-rs/wasm-runtime': 1.0.7 - optional: true - - '@rspack/binding-win32-arm64-msvc@1.7.12': - optional: true - - '@rspack/binding-win32-ia32-msvc@1.7.12': - optional: true - - '@rspack/binding-win32-x64-msvc@1.7.12': - optional: true - - '@rspack/binding@1.7.12': - optionalDependencies: - '@rspack/binding-darwin-arm64': 1.7.12 - '@rspack/binding-darwin-x64': 1.7.12 - '@rspack/binding-linux-arm64-gnu': 1.7.12 - '@rspack/binding-linux-arm64-musl': 1.7.12 - '@rspack/binding-linux-x64-gnu': 1.7.12 - '@rspack/binding-linux-x64-musl': 1.7.12 - '@rspack/binding-wasm32-wasi': 1.7.12 - '@rspack/binding-win32-arm64-msvc': 1.7.12 - '@rspack/binding-win32-ia32-msvc': 1.7.12 - '@rspack/binding-win32-x64-msvc': 1.7.12 - - '@rspack/core@1.7.12(@swc/helpers@0.5.23)': - dependencies: - '@module-federation/runtime-tools': 0.22.0 - '@rspack/binding': 1.7.12 - '@rspack/lite-tapable': 1.1.0 - optionalDependencies: - '@swc/helpers': 0.5.23 - - '@rspack/lite-tapable@1.1.0': {} - - '@rspack/lite-tapable@1.1.2': {} - - '@rspack/plugin-react-refresh@1.6.2(react-refresh@0.18.0)': - dependencies: - error-stack-parser: 2.1.4 - react-refresh: 0.18.0 - - '@rtsao/scc@1.1.0': {} - - '@shikijs/core@3.23.0': - dependencies: - '@shikijs/types': 3.23.0 - '@shikijs/vscode-textmate': 10.0.2 - '@types/hast': 3.0.5 - hast-util-to-html: 9.0.5 - - '@shikijs/engine-javascript@3.23.0': - dependencies: - '@shikijs/types': 3.23.0 - '@shikijs/vscode-textmate': 10.0.2 - oniguruma-to-es: 4.3.6 - - '@shikijs/engine-oniguruma@3.23.0': - dependencies: - '@shikijs/types': 3.23.0 - '@shikijs/vscode-textmate': 10.0.2 - - '@shikijs/langs@3.12.3': - dependencies: - '@shikijs/types': 3.12.3 - - '@shikijs/langs@3.23.0': - dependencies: - '@shikijs/types': 3.23.0 - - '@shikijs/themes@3.12.3': - dependencies: - '@shikijs/types': 3.12.3 - - '@shikijs/themes@3.23.0': - dependencies: - '@shikijs/types': 3.23.0 - - '@shikijs/types@3.12.3': - dependencies: - '@shikijs/vscode-textmate': 10.0.2 - '@types/hast': 3.0.5 - - '@shikijs/types@3.23.0': - dependencies: - '@shikijs/vscode-textmate': 10.0.2 - '@types/hast': 3.0.5 - - '@shikijs/vscode-textmate@10.0.2': {} - - '@swc/helpers@0.5.23': - dependencies: - tslib: 2.8.1 - - '@tiptap/core@3.29.0(@tiptap/pm@3.29.0)': - dependencies: - '@tiptap/pm': 3.29.0 - - '@tiptap/extension-blockquote@3.29.0(@tiptap/core@3.29.0(@tiptap/pm@3.29.0))(@tiptap/pm@3.29.0)': - dependencies: - '@tiptap/core': 3.29.0(@tiptap/pm@3.29.0) - '@tiptap/pm': 3.29.0 - - '@tiptap/extension-bold@3.29.0(@tiptap/core@3.29.0(@tiptap/pm@3.29.0))': - dependencies: - '@tiptap/core': 3.29.0(@tiptap/pm@3.29.0) - - '@tiptap/extension-bubble-menu@3.29.0(@tiptap/core@3.29.0(@tiptap/pm@3.29.0))(@tiptap/pm@3.29.0)': - dependencies: - '@floating-ui/dom': 1.8.0 - '@tiptap/core': 3.29.0(@tiptap/pm@3.29.0) - '@tiptap/pm': 3.29.0 - optional: true - - '@tiptap/extension-bullet-list@3.29.0(@tiptap/extension-list@3.29.0(@tiptap/core@3.29.0(@tiptap/pm@3.29.0))(@tiptap/pm@3.29.0))': - dependencies: - '@tiptap/extension-list': 3.29.0(@tiptap/core@3.29.0(@tiptap/pm@3.29.0))(@tiptap/pm@3.29.0) - - '@tiptap/extension-code-block@3.29.0(@tiptap/core@3.29.0(@tiptap/pm@3.29.0))(@tiptap/pm@3.29.0)': - dependencies: - '@tiptap/core': 3.29.0(@tiptap/pm@3.29.0) - '@tiptap/pm': 3.29.0 - - '@tiptap/extension-code@3.29.0(@tiptap/core@3.29.0(@tiptap/pm@3.29.0))': - dependencies: - '@tiptap/core': 3.29.0(@tiptap/pm@3.29.0) - - '@tiptap/extension-document@3.29.0(@tiptap/core@3.29.0(@tiptap/pm@3.29.0))': - dependencies: - '@tiptap/core': 3.29.0(@tiptap/pm@3.29.0) - - '@tiptap/extension-dropcursor@3.29.0(@tiptap/extensions@3.29.0(@tiptap/core@3.29.0(@tiptap/pm@3.29.0))(@tiptap/pm@3.29.0))': - dependencies: - '@tiptap/extensions': 3.29.0(@tiptap/core@3.29.0(@tiptap/pm@3.29.0))(@tiptap/pm@3.29.0) - - '@tiptap/extension-floating-menu@3.29.0(@floating-ui/dom@1.8.0)(@tiptap/core@3.29.0(@tiptap/pm@3.29.0))(@tiptap/pm@3.29.0)': - dependencies: - '@floating-ui/dom': 1.8.0 - '@tiptap/core': 3.29.0(@tiptap/pm@3.29.0) - '@tiptap/pm': 3.29.0 - optional: true - - '@tiptap/extension-gapcursor@3.29.0(@tiptap/extensions@3.29.0(@tiptap/core@3.29.0(@tiptap/pm@3.29.0))(@tiptap/pm@3.29.0))': - dependencies: - '@tiptap/extensions': 3.29.0(@tiptap/core@3.29.0(@tiptap/pm@3.29.0))(@tiptap/pm@3.29.0) - - '@tiptap/extension-hard-break@3.29.0(@tiptap/core@3.29.0(@tiptap/pm@3.29.0))': - dependencies: - '@tiptap/core': 3.29.0(@tiptap/pm@3.29.0) - - '@tiptap/extension-heading@3.29.0(@tiptap/core@3.29.0(@tiptap/pm@3.29.0))': - dependencies: - '@tiptap/core': 3.29.0(@tiptap/pm@3.29.0) - - '@tiptap/extension-horizontal-rule@3.29.0(@tiptap/core@3.29.0(@tiptap/pm@3.29.0))(@tiptap/pm@3.29.0)': - dependencies: - '@tiptap/core': 3.29.0(@tiptap/pm@3.29.0) - '@tiptap/pm': 3.29.0 - - '@tiptap/extension-image@3.29.0(@tiptap/core@3.29.0(@tiptap/pm@3.29.0))': - dependencies: - '@tiptap/core': 3.29.0(@tiptap/pm@3.29.0) - - '@tiptap/extension-italic@3.29.0(@tiptap/core@3.29.0(@tiptap/pm@3.29.0))': - dependencies: - '@tiptap/core': 3.29.0(@tiptap/pm@3.29.0) - - '@tiptap/extension-link@3.29.0(@tiptap/core@3.29.0(@tiptap/pm@3.29.0))(@tiptap/pm@3.29.0)': - dependencies: - '@tiptap/core': 3.29.0(@tiptap/pm@3.29.0) - '@tiptap/pm': 3.29.0 - linkifyjs: 4.3.3 - - '@tiptap/extension-list-item@3.29.0(@tiptap/extension-list@3.29.0(@tiptap/core@3.29.0(@tiptap/pm@3.29.0))(@tiptap/pm@3.29.0))': - dependencies: - '@tiptap/extension-list': 3.29.0(@tiptap/core@3.29.0(@tiptap/pm@3.29.0))(@tiptap/pm@3.29.0) - - '@tiptap/extension-list-keymap@3.29.0(@tiptap/extension-list@3.29.0(@tiptap/core@3.29.0(@tiptap/pm@3.29.0))(@tiptap/pm@3.29.0))': - dependencies: - '@tiptap/extension-list': 3.29.0(@tiptap/core@3.29.0(@tiptap/pm@3.29.0))(@tiptap/pm@3.29.0) - - '@tiptap/extension-list@3.29.0(@tiptap/core@3.29.0(@tiptap/pm@3.29.0))(@tiptap/pm@3.29.0)': - dependencies: - '@tiptap/core': 3.29.0(@tiptap/pm@3.29.0) - '@tiptap/pm': 3.29.0 - - '@tiptap/extension-mention@3.29.0(@tiptap/core@3.29.0(@tiptap/pm@3.29.0))(@tiptap/pm@3.29.0)(@tiptap/suggestion@3.29.0(@floating-ui/dom@1.8.0)(@tiptap/core@3.29.0(@tiptap/pm@3.29.0))(@tiptap/pm@3.29.0))': - dependencies: - '@tiptap/core': 3.29.0(@tiptap/pm@3.29.0) - '@tiptap/pm': 3.29.0 - '@tiptap/suggestion': 3.29.0(@floating-ui/dom@1.8.0)(@tiptap/core@3.29.0(@tiptap/pm@3.29.0))(@tiptap/pm@3.29.0) - - '@tiptap/extension-ordered-list@3.29.0(@tiptap/extension-list@3.29.0(@tiptap/core@3.29.0(@tiptap/pm@3.29.0))(@tiptap/pm@3.29.0))': - dependencies: - '@tiptap/extension-list': 3.29.0(@tiptap/core@3.29.0(@tiptap/pm@3.29.0))(@tiptap/pm@3.29.0) - - '@tiptap/extension-paragraph@3.29.0(@tiptap/core@3.29.0(@tiptap/pm@3.29.0))': - dependencies: - '@tiptap/core': 3.29.0(@tiptap/pm@3.29.0) - - '@tiptap/extension-strike@3.29.0(@tiptap/core@3.29.0(@tiptap/pm@3.29.0))': - dependencies: - '@tiptap/core': 3.29.0(@tiptap/pm@3.29.0) - - '@tiptap/extension-text-align@3.29.0(@tiptap/core@3.29.0(@tiptap/pm@3.29.0))': - dependencies: - '@tiptap/core': 3.29.0(@tiptap/pm@3.29.0) - - '@tiptap/extension-text-style@3.29.0(@tiptap/core@3.29.0(@tiptap/pm@3.29.0))': - dependencies: - '@tiptap/core': 3.29.0(@tiptap/pm@3.29.0) - - '@tiptap/extension-text@3.29.0(@tiptap/core@3.29.0(@tiptap/pm@3.29.0))': - dependencies: - '@tiptap/core': 3.29.0(@tiptap/pm@3.29.0) - - '@tiptap/extension-underline@3.29.0(@tiptap/core@3.29.0(@tiptap/pm@3.29.0))': - dependencies: - '@tiptap/core': 3.29.0(@tiptap/pm@3.29.0) - - '@tiptap/extensions@3.29.0(@tiptap/core@3.29.0(@tiptap/pm@3.29.0))(@tiptap/pm@3.29.0)': - dependencies: - '@tiptap/core': 3.29.0(@tiptap/pm@3.29.0) - '@tiptap/pm': 3.29.0 - - '@tiptap/pm@3.29.0': - dependencies: - prosemirror-changeset: 2.4.1 - prosemirror-commands: 1.7.1 - prosemirror-dropcursor: 1.8.3 - prosemirror-gapcursor: 1.4.1 - prosemirror-history: 1.5.0 - prosemirror-inputrules: 1.5.1 - prosemirror-keymap: 1.2.3 - prosemirror-model: 1.25.11 - prosemirror-schema-list: 1.5.1 - prosemirror-state: 1.4.4 - prosemirror-tables: 1.8.5 - prosemirror-transform: 1.12.0 - prosemirror-view: 1.42.2 - - '@tiptap/react@3.29.0(@floating-ui/dom@1.8.0)(@tiptap/core@3.29.0(@tiptap/pm@3.29.0))(@tiptap/pm@3.29.0)(@types/react-dom@18.3.7(@types/react@18.3.31))(@types/react@18.3.31)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@tiptap/core': 3.29.0(@tiptap/pm@3.29.0) - '@tiptap/pm': 3.29.0 - '@types/react': 18.3.31 - '@types/react-dom': 18.3.7(@types/react@18.3.31) - '@types/use-sync-external-store': 0.0.6 - fast-equals: 5.4.1 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - use-sync-external-store: 1.6.0(react@18.3.1) - optionalDependencies: - '@tiptap/extension-bubble-menu': 3.29.0(@tiptap/core@3.29.0(@tiptap/pm@3.29.0))(@tiptap/pm@3.29.0) - '@tiptap/extension-floating-menu': 3.29.0(@floating-ui/dom@1.8.0)(@tiptap/core@3.29.0(@tiptap/pm@3.29.0))(@tiptap/pm@3.29.0) - transitivePeerDependencies: - - '@floating-ui/dom' - - '@tiptap/starter-kit@3.29.0': - dependencies: - '@tiptap/core': 3.29.0(@tiptap/pm@3.29.0) - '@tiptap/extension-blockquote': 3.29.0(@tiptap/core@3.29.0(@tiptap/pm@3.29.0))(@tiptap/pm@3.29.0) - '@tiptap/extension-bold': 3.29.0(@tiptap/core@3.29.0(@tiptap/pm@3.29.0)) - '@tiptap/extension-bullet-list': 3.29.0(@tiptap/extension-list@3.29.0(@tiptap/core@3.29.0(@tiptap/pm@3.29.0))(@tiptap/pm@3.29.0)) - '@tiptap/extension-code': 3.29.0(@tiptap/core@3.29.0(@tiptap/pm@3.29.0)) - '@tiptap/extension-code-block': 3.29.0(@tiptap/core@3.29.0(@tiptap/pm@3.29.0))(@tiptap/pm@3.29.0) - '@tiptap/extension-document': 3.29.0(@tiptap/core@3.29.0(@tiptap/pm@3.29.0)) - '@tiptap/extension-dropcursor': 3.29.0(@tiptap/extensions@3.29.0(@tiptap/core@3.29.0(@tiptap/pm@3.29.0))(@tiptap/pm@3.29.0)) - '@tiptap/extension-gapcursor': 3.29.0(@tiptap/extensions@3.29.0(@tiptap/core@3.29.0(@tiptap/pm@3.29.0))(@tiptap/pm@3.29.0)) - '@tiptap/extension-hard-break': 3.29.0(@tiptap/core@3.29.0(@tiptap/pm@3.29.0)) - '@tiptap/extension-heading': 3.29.0(@tiptap/core@3.29.0(@tiptap/pm@3.29.0)) - '@tiptap/extension-horizontal-rule': 3.29.0(@tiptap/core@3.29.0(@tiptap/pm@3.29.0))(@tiptap/pm@3.29.0) - '@tiptap/extension-italic': 3.29.0(@tiptap/core@3.29.0(@tiptap/pm@3.29.0)) - '@tiptap/extension-link': 3.29.0(@tiptap/core@3.29.0(@tiptap/pm@3.29.0))(@tiptap/pm@3.29.0) - '@tiptap/extension-list': 3.29.0(@tiptap/core@3.29.0(@tiptap/pm@3.29.0))(@tiptap/pm@3.29.0) - '@tiptap/extension-list-item': 3.29.0(@tiptap/extension-list@3.29.0(@tiptap/core@3.29.0(@tiptap/pm@3.29.0))(@tiptap/pm@3.29.0)) - '@tiptap/extension-list-keymap': 3.29.0(@tiptap/extension-list@3.29.0(@tiptap/core@3.29.0(@tiptap/pm@3.29.0))(@tiptap/pm@3.29.0)) - '@tiptap/extension-ordered-list': 3.29.0(@tiptap/extension-list@3.29.0(@tiptap/core@3.29.0(@tiptap/pm@3.29.0))(@tiptap/pm@3.29.0)) - '@tiptap/extension-paragraph': 3.29.0(@tiptap/core@3.29.0(@tiptap/pm@3.29.0)) - '@tiptap/extension-strike': 3.29.0(@tiptap/core@3.29.0(@tiptap/pm@3.29.0)) - '@tiptap/extension-text': 3.29.0(@tiptap/core@3.29.0(@tiptap/pm@3.29.0)) - '@tiptap/extension-underline': 3.29.0(@tiptap/core@3.29.0(@tiptap/pm@3.29.0)) - '@tiptap/extensions': 3.29.0(@tiptap/core@3.29.0(@tiptap/pm@3.29.0))(@tiptap/pm@3.29.0) - '@tiptap/pm': 3.29.0 - - '@tiptap/suggestion@3.29.0(@floating-ui/dom@1.8.0)(@tiptap/core@3.29.0(@tiptap/pm@3.29.0))(@tiptap/pm@3.29.0)': - dependencies: - '@floating-ui/dom': 1.8.0 - '@tiptap/core': 3.29.0(@tiptap/pm@3.29.0) - '@tiptap/pm': 3.29.0 - - '@tsconfig/node10@1.0.12': {} - - '@tsconfig/node12@1.0.11': {} - - '@tsconfig/node14@1.0.3': {} - - '@tsconfig/node16@1.0.4': {} - - '@tweenjs/tween.js@18.6.4': {} - - '@tybys/wasm-util@0.10.3': - dependencies: - tslib: 2.8.1 - optional: true - - '@types/debug@4.1.13': - dependencies: - '@types/ms': 2.1.0 - - '@types/estree-jsx@1.0.5': - dependencies: - '@types/estree': 1.0.9 - - '@types/estree@1.0.9': {} - - '@types/gensync@1.0.5': {} - - '@types/hash-sum@1.0.2': {} - - '@types/hast@3.0.5': - dependencies: - '@types/unist': 3.0.3 - - '@types/hoist-non-react-statics@3.3.7(@types/react@18.3.31)': - dependencies: - '@types/react': 18.3.31 - hoist-non-react-statics: 3.3.2 - - '@types/jsesc@2.5.1': {} - - '@types/json-schema@7.0.15': {} - - '@types/json5@0.0.29': {} - - '@types/lodash-es@4.17.12': - dependencies: - '@types/lodash': 4.17.24 - - '@types/lodash@4.17.24': {} - - '@types/mdast@4.0.4': - dependencies: - '@types/unist': 3.0.3 - - '@types/mdx@2.0.14': {} - - '@types/ms@2.1.0': {} - - '@types/node@18.19.130': - dependencies: - undici-types: 5.26.5 - - '@types/prop-types@15.7.15': {} - - '@types/react-dom@18.3.7(@types/react@18.3.31)': - dependencies: - '@types/react': 18.3.31 - - '@types/react@18.3.31': - dependencies: - '@types/prop-types': 15.7.15 - csstype: 3.2.3 - - '@types/retry@0.12.0': {} - - '@types/styled-components@5.1.36': - dependencies: - '@types/hoist-non-react-statics': 3.3.7(@types/react@18.3.31) - '@types/react': 18.3.31 - csstype: 3.2.3 - - '@types/unist@2.0.11': {} - - '@types/unist@3.0.3': {} - - '@types/use-sync-external-store@0.0.6': {} - - '@types/uuid@10.0.0': {} - - '@typescript-eslint/eslint-plugin@8.65.0(@typescript-eslint/parser@8.65.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3)': - dependencies: - '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.65.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) - '@typescript-eslint/scope-manager': 8.65.0 - '@typescript-eslint/type-utils': 8.65.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) - '@typescript-eslint/utils': 8.65.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.65.0 - eslint: 9.39.5(jiti@2.7.0) - ignore: 7.0.6 - natural-compare: 1.4.0 - ts-api-utils: 2.5.0(typescript@5.9.3) - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/parser@8.65.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3)': - dependencies: - '@typescript-eslint/scope-manager': 8.65.0 - '@typescript-eslint/types': 8.65.0 - '@typescript-eslint/typescript-estree': 8.65.0(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.65.0 - debug: 4.4.3(supports-color@5.5.0) - eslint: 9.39.5(jiti@2.7.0) - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/project-service@8.65.0(typescript@5.9.3)': - dependencies: - '@typescript-eslint/tsconfig-utils': 8.65.0(typescript@5.9.3) - '@typescript-eslint/types': 8.65.0 - debug: 4.4.3(supports-color@5.5.0) - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/scope-manager@8.65.0': - dependencies: - '@typescript-eslint/types': 8.65.0 - '@typescript-eslint/visitor-keys': 8.65.0 - - '@typescript-eslint/tsconfig-utils@8.65.0(typescript@5.9.3)': - dependencies: - typescript: 5.9.3 - - '@typescript-eslint/type-utils@8.65.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3)': - dependencies: - '@typescript-eslint/types': 8.65.0 - '@typescript-eslint/typescript-estree': 8.65.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.65.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) - debug: 4.4.3(supports-color@5.5.0) - eslint: 9.39.5(jiti@2.7.0) - ts-api-utils: 2.5.0(typescript@5.9.3) - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/types@8.65.0': {} - - '@typescript-eslint/typescript-estree@8.65.0(typescript@5.9.3)': - dependencies: - '@typescript-eslint/project-service': 8.65.0(typescript@5.9.3) - '@typescript-eslint/tsconfig-utils': 8.65.0(typescript@5.9.3) - '@typescript-eslint/types': 8.65.0 - '@typescript-eslint/visitor-keys': 8.65.0 - debug: 4.4.3(supports-color@5.5.0) - minimatch: 10.2.5 - semver: 7.8.5 - tinyglobby: 0.2.17 - ts-api-utils: 2.5.0(typescript@5.9.3) - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/utils@8.65.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3)': - dependencies: - '@eslint-community/eslint-utils': 4.10.1(eslint@9.39.5(jiti@2.7.0)) - '@typescript-eslint/scope-manager': 8.65.0 - '@typescript-eslint/types': 8.65.0 - '@typescript-eslint/typescript-estree': 8.65.0(typescript@5.9.3) - eslint: 9.39.5(jiti@2.7.0) - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/visitor-keys@8.65.0': - dependencies: - '@typescript-eslint/types': 8.65.0 - eslint-visitor-keys: 5.0.1 - - '@typescript/vfs@1.6.4(typescript@5.9.3)': - dependencies: - debug: 4.4.3(supports-color@5.5.0) - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - - '@ungap/structured-clone@1.3.3': {} - - '@unrs/resolver-binding-android-arm-eabi@1.12.2': - optional: true - - '@unrs/resolver-binding-android-arm64@1.12.2': - optional: true - - '@unrs/resolver-binding-darwin-arm64@1.12.2': - optional: true - - '@unrs/resolver-binding-darwin-x64@1.12.2': - optional: true - - '@unrs/resolver-binding-freebsd-x64@1.12.2': - optional: true - - '@unrs/resolver-binding-linux-arm-gnueabihf@1.12.2': - optional: true - - '@unrs/resolver-binding-linux-arm-musleabihf@1.12.2': - optional: true - - '@unrs/resolver-binding-linux-arm64-gnu@1.12.2': - optional: true - - '@unrs/resolver-binding-linux-arm64-musl@1.12.2': - optional: true - - '@unrs/resolver-binding-linux-loong64-gnu@1.12.2': - optional: true - - '@unrs/resolver-binding-linux-loong64-musl@1.12.2': - optional: true - - '@unrs/resolver-binding-linux-ppc64-gnu@1.12.2': - optional: true - - '@unrs/resolver-binding-linux-riscv64-gnu@1.12.2': - optional: true - - '@unrs/resolver-binding-linux-riscv64-musl@1.12.2': - optional: true - - '@unrs/resolver-binding-linux-s390x-gnu@1.12.2': - optional: true - - '@unrs/resolver-binding-linux-x64-gnu@1.12.2': - optional: true - - '@unrs/resolver-binding-linux-x64-musl@1.12.2': - optional: true - - '@unrs/resolver-binding-openharmony-arm64@1.12.2': - optional: true - - '@unrs/resolver-binding-wasm32-wasi@1.12.2': - dependencies: - '@emnapi/core': 1.10.0 - '@emnapi/runtime': 1.10.0 - '@napi-rs/wasm-runtime': 1.1.6(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0) - optional: true - - '@unrs/resolver-binding-win32-arm64-msvc@1.12.2': - optional: true - - '@unrs/resolver-binding-win32-ia32-msvc@1.12.2': - optional: true - - '@unrs/resolver-binding-win32-x64-msvc@1.12.2': - optional: true - - '@vscode/l10n@0.0.18': {} - - '@vue/compiler-core@3.5.40': - dependencies: - '@babel/parser': 7.29.7 - '@vue/shared': 3.5.40 - entities: 7.0.1 - estree-walker: 2.0.2 - source-map-js: 1.2.1 - - '@vue/compiler-dom@3.5.40': - dependencies: - '@vue/compiler-core': 3.5.40 - '@vue/shared': 3.5.40 - - '@vue/compiler-sfc@3.5.40': - dependencies: - '@babel/parser': 7.29.7 - '@vue/compiler-core': 3.5.40 - '@vue/compiler-dom': 3.5.40 - '@vue/compiler-ssr': 3.5.40 - '@vue/shared': 3.5.40 - estree-walker: 2.0.2 - magic-string: 0.30.21 - postcss: 8.5.23 - source-map-js: 1.2.1 - - '@vue/compiler-ssr@3.5.40': - dependencies: - '@vue/compiler-dom': 3.5.40 - '@vue/shared': 3.5.40 - - '@vue/reactivity@3.5.40': - dependencies: - '@vue/shared': 3.5.40 - - '@vue/runtime-core@3.5.40': - dependencies: - '@vue/reactivity': 3.5.40 - '@vue/shared': 3.5.40 - - '@vue/runtime-dom@3.5.40': - dependencies: - '@vue/reactivity': 3.5.40 - '@vue/runtime-core': 3.5.40 - '@vue/shared': 3.5.40 - csstype: 3.2.3 - - '@vue/server-renderer@3.5.40': - dependencies: - '@vue/compiler-ssr': 3.5.40 - '@vue/runtime-dom': 3.5.40 - '@vue/shared': 3.5.40 - - '@vue/shared@3.5.40': {} - - acorn-jsx@5.3.2(acorn@8.17.0): - dependencies: - acorn: 8.17.0 - - acorn-walk@8.3.5: - dependencies: - acorn: 8.17.0 - - acorn@8.17.0: {} - - ajv@6.12.6: - dependencies: - fast-deep-equal: 3.1.3 - fast-json-stable-stringify: 2.1.0 - json-schema-traverse: 0.4.1 - uri-js: 4.4.1 - - ajv@6.15.0: - dependencies: - fast-deep-equal: 3.1.3 - fast-json-stable-stringify: 2.1.0 - json-schema-traverse: 0.4.1 - uri-js: 4.4.1 - - ansi-styles@4.3.0: - dependencies: - color-convert: 2.0.1 - - ansi-styles@5.2.0: {} - - arg@4.1.3: {} - - argparse@2.0.1: {} - - aria-query@5.3.2: {} - - array-buffer-byte-length@1.0.2: - dependencies: - call-bound: 1.0.4 - is-array-buffer: 3.0.5 - - array-includes@3.1.9: - dependencies: - call-bind: 1.0.9 - call-bound: 1.0.4 - define-properties: 1.2.1 - es-abstract: 1.24.2 - es-object-atoms: 1.1.2 - get-intrinsic: 1.3.0 - is-string: 1.1.1 - math-intrinsics: 1.1.0 - - array.prototype.findlast@1.2.5: - dependencies: - call-bind: 1.0.9 - define-properties: 1.2.1 - es-abstract: 1.24.2 - es-errors: 1.3.0 - es-object-atoms: 1.1.2 - es-shim-unscopables: 1.1.0 - - array.prototype.findlastindex@1.2.6: - dependencies: - call-bind: 1.0.9 - call-bound: 1.0.4 - define-properties: 1.2.1 - es-abstract: 1.24.2 - es-errors: 1.3.0 - es-object-atoms: 1.1.2 - es-shim-unscopables: 1.1.0 - - array.prototype.flat@1.3.3: - dependencies: - call-bind: 1.0.9 - define-properties: 1.2.1 - es-abstract: 1.24.2 - es-shim-unscopables: 1.1.0 - - array.prototype.flatmap@1.3.3: - dependencies: - call-bind: 1.0.9 - define-properties: 1.2.1 - es-abstract: 1.24.2 - es-shim-unscopables: 1.1.0 - - array.prototype.tosorted@1.1.4: - dependencies: - call-bind: 1.0.9 - define-properties: 1.2.1 - es-abstract: 1.24.2 - es-errors: 1.3.0 - es-shim-unscopables: 1.1.0 - - arraybuffer.prototype.slice@1.0.4: - dependencies: - array-buffer-byte-length: 1.0.2 - call-bind: 1.0.9 - define-properties: 1.2.1 - es-abstract: 1.24.2 - es-errors: 1.3.0 - get-intrinsic: 1.3.0 - is-array-buffer: 3.0.5 - - ast-types-flow@0.0.8: {} - - astring@1.9.0: {} - - async-function@1.0.0: {} - - async-validator@3.5.2: {} - - available-typed-arrays@1.0.7: - dependencies: - possible-typed-array-names: 1.1.0 - - axe-core@4.12.1: {} - - axobject-query@4.1.0: {} - - babel-plugin-polyfill-corejs2@0.3.3(@babel/core@8.0.1): - dependencies: - '@babel/compat-data': 7.29.7 - '@babel/core': 8.0.1 - '@babel/helper-define-polyfill-provider': 0.3.3(@babel/core@8.0.1) - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - babel-plugin-polyfill-corejs3@0.6.0(@babel/core@8.0.1): - dependencies: - '@babel/core': 8.0.1 - '@babel/helper-define-polyfill-provider': 0.3.3(@babel/core@8.0.1) - core-js-compat: 3.49.0 - transitivePeerDependencies: - - supports-color - - babel-plugin-polyfill-regenerator@0.4.1(@babel/core@8.0.1): - dependencies: - '@babel/core': 8.0.1 - '@babel/helper-define-polyfill-provider': 0.3.3(@babel/core@8.0.1) - transitivePeerDependencies: - - supports-color - - babel-plugin-styled-components@2.3.0(@babel/core@8.0.1)(styled-components@5.3.11(@babel/core@8.0.1)(react-dom@18.3.1(react@18.3.1))(react-is@16.13.1)(react@18.3.1))(supports-color@5.5.0): - dependencies: - '@babel/core': 8.0.1 - '@babel/helper-annotate-as-pure': 7.29.7 - '@babel/helper-module-imports': 7.29.7(supports-color@5.5.0) - '@babel/plugin-syntax-jsx': 7.29.7(@babel/core@8.0.1) - picomatch: 4.0.5 - styled-components: 5.3.11(@babel/core@8.0.1)(react-dom@18.3.1(react@18.3.1))(react-is@16.13.1)(react@18.3.1) - transitivePeerDependencies: - - supports-color - - bail@2.0.2: {} - - balanced-match@1.0.2: {} - - balanced-match@4.0.4: {} - - base64-js@1.5.1: {} - - baseline-browser-mapping@2.11.4: {} - - bezier-easing@2.1.0: {} - - bezier-js@6.1.4: {} - - bignumber.js@11.1.5: {} - - brace-expansion@1.1.16: - dependencies: - balanced-match: 1.0.2 - concat-map: 0.0.1 - - brace-expansion@5.0.8: - dependencies: - balanced-match: 4.0.4 - - browserslist@4.28.7: - dependencies: - baseline-browser-mapping: 2.11.4 - caniuse-lite: 1.0.30001806 - electron-to-chromium: 1.5.396 - node-releases: 2.0.51 - update-browserslist-db: 1.2.3(browserslist@4.28.7) - - call-bind-apply-helpers@1.0.2: - dependencies: - es-errors: 1.3.0 - function-bind: 1.1.2 - - call-bind@1.0.9: - dependencies: - call-bind-apply-helpers: 1.0.2 - es-define-property: 1.0.1 - get-intrinsic: 1.3.0 - set-function-length: 1.2.2 - - call-bound@1.0.4: - dependencies: - call-bind-apply-helpers: 1.0.2 - get-intrinsic: 1.3.0 - - callsites@3.1.0: {} - - camelcase@6.3.0: {} - - camelize@1.0.1: {} - - caniuse-lite@1.0.30001806: {} - - ccount@2.0.1: {} - - chalk@4.1.2: - dependencies: - ansi-styles: 4.3.0 - supports-color: 7.2.0 - - character-entities-html4@2.1.0: {} - - character-entities-legacy@3.0.0: {} - - character-entities@2.0.2: {} - - character-reference-invalid@2.0.1: {} - - classnames@2.5.1: {} - - clsx@1.2.1: {} - - clsx@2.1.1: {} - - codemirror-shiki@0.2.5(@codemirror/state@6.7.1)(@codemirror/view@6.43.6)(shiki@3.23.0): - dependencies: - '@codemirror/state': 6.7.1 - '@codemirror/view': 6.43.6 - shiki: 3.23.0 - - collapse-white-space@2.1.0: {} - - color-convert@2.0.1: - dependencies: - color-name: 1.1.4 - - color-name@1.1.4: {} - - comlink@4.4.2: {} - - comma-separated-tokens@2.0.3: {} - - compute-scroll-into-view@1.0.20: {} - - concat-map@0.0.1: {} - - console-table-printer@2.16.1: - dependencies: - simple-wcswidth: 1.1.2 - - convert-source-map@2.0.0: {} - - copy-anything@3.0.5: - dependencies: - is-what: 4.1.16 - - copy-text-to-clipboard@2.2.0: {} - - core-js-compat@3.49.0: - dependencies: - browserslist: 4.28.7 - - core-js@3.47.0: {} - - create-require@1.1.1: {} - - crelt@1.0.7: {} - - cross-env@7.0.3: - dependencies: - cross-spawn: 7.0.6 - - cross-spawn@7.0.6: - dependencies: - path-key: 3.1.1 - shebang-command: 2.0.0 - which: 2.0.2 - - css-color-keywords@1.0.0: {} - - css-to-react-native@3.2.0: - dependencies: - camelize: 1.0.1 - css-color-keywords: 1.0.0 - postcss-value-parser: 4.2.0 - - csstype@3.2.3: {} - - damerau-levenshtein@1.0.8: {} - - data-view-buffer@1.0.2: - dependencies: - call-bound: 1.0.4 - es-errors: 1.3.0 - is-data-view: 1.0.2 - - data-view-byte-length@1.0.2: - dependencies: - call-bound: 1.0.4 - es-errors: 1.3.0 - is-data-view: 1.0.2 - - data-view-byte-offset@1.0.1: - dependencies: - call-bound: 1.0.4 - es-errors: 1.3.0 - is-data-view: 1.0.2 - - date-fns-tz@1.3.8(date-fns@2.30.0): - dependencies: - date-fns: 2.30.0 - - date-fns@2.30.0: - dependencies: - '@babel/runtime': 7.29.7 - - debug@2.6.9: - dependencies: - ms: 2.0.0 - optional: true - - debug@3.2.7: - dependencies: - ms: 2.1.3 - - debug@4.4.3(supports-color@5.5.0): - dependencies: - ms: 2.1.3 - optionalDependencies: - supports-color: 5.5.0 - - decamelize@1.2.0: {} - - decode-named-character-reference@1.3.0: - dependencies: - character-entities: 2.0.2 - - deep-is@0.1.4: {} - - deepmerge@4.3.1: {} - - define-data-property@1.1.4: - dependencies: - es-define-property: 1.0.1 - es-errors: 1.3.0 - gopd: 1.2.0 - - define-properties@1.2.1: - dependencies: - define-data-property: 1.1.4 - has-property-descriptors: 1.0.2 - object-keys: 1.1.1 - - dequal@2.0.3: {} - - detect-indent@7.0.2: {} - - detect-newline@4.0.1: {} - - devlop@1.1.0: - dependencies: - dequal: 2.0.3 - - diff@4.0.4: {} - - doctrine@2.1.0: - dependencies: - esutils: 2.0.3 - - dunder-proto@1.0.1: - dependencies: - call-bind-apply-helpers: 1.0.2 - es-errors: 1.3.0 - gopd: 1.2.0 - - electron-to-chromium@1.5.396: {} - - emoji-regex@9.2.2: {} - - empathic@2.0.1: {} - - entities@7.0.1: {} - - errno@0.1.8: - dependencies: - prr: 1.0.1 - optional: true - - error-stack-parser@2.1.4: - dependencies: - stackframe: 1.3.4 - - es-abstract-get@1.0.0: - dependencies: - es-errors: 1.3.0 - es-object-atoms: 1.1.2 - is-callable: 1.2.7 - object-inspect: 1.13.4 - - es-abstract@1.24.2: - dependencies: - array-buffer-byte-length: 1.0.2 - arraybuffer.prototype.slice: 1.0.4 - available-typed-arrays: 1.0.7 - call-bind: 1.0.9 - call-bound: 1.0.4 - data-view-buffer: 1.0.2 - data-view-byte-length: 1.0.2 - data-view-byte-offset: 1.0.1 - es-define-property: 1.0.1 - es-errors: 1.3.0 - es-object-atoms: 1.1.2 - es-set-tostringtag: 2.1.0 - es-to-primitive: 1.3.4 - function.prototype.name: 1.2.0 - get-intrinsic: 1.3.0 - get-proto: 1.0.1 - get-symbol-description: 1.1.0 - globalthis: 1.0.4 - gopd: 1.2.0 - has-property-descriptors: 1.0.2 - has-proto: 1.2.0 - has-symbols: 1.1.0 - hasown: 2.0.4 - internal-slot: 1.1.0 - is-array-buffer: 3.0.5 - is-callable: 1.2.7 - is-data-view: 1.0.2 - is-negative-zero: 2.0.3 - is-regex: 1.2.1 - is-set: 2.0.3 - is-shared-array-buffer: 1.0.4 - is-string: 1.1.1 - is-typed-array: 1.1.15 - is-weakref: 1.1.1 - math-intrinsics: 1.1.0 - object-inspect: 1.13.4 - object-keys: 1.1.1 - object.assign: 4.1.7 - own-keys: 1.0.2 - regexp.prototype.flags: 1.5.4 - safe-array-concat: 1.1.4 - safe-push-apply: 1.0.0 - safe-regex-test: 1.1.0 - set-proto: 1.0.0 - stop-iteration-iterator: 1.1.0 - string.prototype.trim: 1.2.11 - string.prototype.trimend: 1.0.10 - string.prototype.trimstart: 1.0.8 - typed-array-buffer: 1.0.3 - typed-array-byte-length: 1.0.3 - typed-array-byte-offset: 1.0.4 - typed-array-length: 1.0.8 - unbox-primitive: 1.1.0 - which-typed-array: 1.1.22 - - es-define-property@1.0.1: {} - - es-errors@1.3.0: {} - - es-iterator-helpers@1.4.0: - dependencies: - call-bind: 1.0.9 - call-bound: 1.0.4 - define-properties: 1.2.1 - es-abstract: 1.24.2 - es-errors: 1.3.0 - es-set-tostringtag: 2.1.0 - function-bind: 1.1.2 - get-intrinsic: 1.3.0 - globalthis: 1.0.4 - gopd: 1.2.0 - has-property-descriptors: 1.0.2 - has-proto: 1.2.0 - has-symbols: 1.1.0 - internal-slot: 1.1.0 - iterator.prototype: 1.1.5 - math-intrinsics: 1.1.0 - - es-object-atoms@1.1.2: - dependencies: - es-errors: 1.3.0 - - es-set-tostringtag@2.1.0: - dependencies: - es-errors: 1.3.0 - get-intrinsic: 1.3.0 - has-tostringtag: 1.0.2 - hasown: 2.0.4 - - es-shim-unscopables@1.1.0: - dependencies: - hasown: 2.0.4 - - es-to-primitive@1.3.4: - dependencies: - es-abstract-get: 1.0.0 - es-define-property: 1.0.1 - es-errors: 1.3.0 - is-callable: 1.2.7 - is-date-object: 1.1.0 - is-symbol: 1.1.1 - - es-toolkit@1.50.0: {} - - esast-util-from-estree@2.0.0: - dependencies: - '@types/estree-jsx': 1.0.5 - devlop: 1.1.0 - estree-util-visit: 2.0.0 - unist-util-position-from-estree: 2.0.0 - - esast-util-from-js@2.0.1: - dependencies: - '@types/estree-jsx': 1.0.5 - acorn: 8.17.0 - esast-util-from-estree: 2.0.0 - vfile-message: 4.0.3 - - escalade@3.2.0: {} - - escape-string-regexp@4.0.0: {} - - escape-string-regexp@5.0.0: {} - - eslint-config-prettier@8.10.2(eslint@9.39.5(jiti@2.7.0)): - dependencies: - eslint: 9.39.5(jiti@2.7.0) - - eslint-define-config@1.12.0: {} - - eslint-import-resolver-node@0.3.10: - dependencies: - debug: 3.2.7 - is-core-module: 2.16.2 - resolve: 2.0.0-next.7 - transitivePeerDependencies: - - supports-color - - eslint-import-resolver-typescript@3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.5(jiti@2.7.0)): - dependencies: - '@nolyfill/is-core-module': 1.0.39 - debug: 4.4.3(supports-color@5.5.0) - eslint: 9.39.5(jiti@2.7.0) - get-tsconfig: 4.14.0 - is-bun-module: 2.0.0 - stable-hash: 0.0.5 - tinyglobby: 0.2.17 - unrs-resolver: 1.12.2 - optionalDependencies: - eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.65.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.5(jiti@2.7.0)) - transitivePeerDependencies: - - supports-color - - eslint-module-utils@2.14.0(@typescript-eslint/parser@8.65.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.5(jiti@2.7.0)): - dependencies: - debug: 3.2.7 - optionalDependencies: - '@typescript-eslint/parser': 8.65.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) - eslint: 9.39.5(jiti@2.7.0) - eslint-import-resolver-node: 0.3.10 - eslint-import-resolver-typescript: 3.10.1(eslint-plugin-import@2.32.0)(eslint@9.39.5(jiti@2.7.0)) - transitivePeerDependencies: - - supports-color - - eslint-plugin-babel@5.3.1(eslint@9.39.5(jiti@2.7.0)): - dependencies: - eslint: 9.39.5(jiti@2.7.0) - eslint-rule-composer: 0.3.0 - - eslint-plugin-import@2.32.0(@typescript-eslint/parser@8.65.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.5(jiti@2.7.0)): - dependencies: - '@rtsao/scc': 1.1.0 - array-includes: 3.1.9 - array.prototype.findlastindex: 1.2.6 - array.prototype.flat: 1.3.3 - array.prototype.flatmap: 1.3.3 - debug: 3.2.7 - doctrine: 2.1.0 - eslint: 9.39.5(jiti@2.7.0) - eslint-import-resolver-node: 0.3.10 - eslint-module-utils: 2.14.0(@typescript-eslint/parser@8.65.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3))(eslint-import-resolver-node@0.3.10)(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.5(jiti@2.7.0)) - hasown: 2.0.4 - is-core-module: 2.16.2 - is-glob: 4.0.3 - minimatch: 3.1.5 - object.fromentries: 2.0.8 - object.groupby: 1.0.3 - object.values: 1.2.1 - semver: 6.3.1 - string.prototype.trimend: 1.0.10 - tsconfig-paths: 3.15.0 - optionalDependencies: - '@typescript-eslint/parser': 8.65.0(eslint@9.39.5(jiti@2.7.0))(typescript@5.9.3) - transitivePeerDependencies: - - eslint-import-resolver-typescript - - eslint-import-resolver-webpack - - supports-color - - eslint-plugin-jsx-a11y@6.10.2(eslint@9.39.5(jiti@2.7.0)): - dependencies: - aria-query: 5.3.2 - array-includes: 3.1.9 - array.prototype.flatmap: 1.3.3 - ast-types-flow: 0.0.8 - axe-core: 4.12.1 - axobject-query: 4.1.0 - damerau-levenshtein: 1.0.8 - emoji-regex: 9.2.2 - eslint: 9.39.5(jiti@2.7.0) - hasown: 2.0.4 - jsx-ast-utils: 3.3.5 - language-tags: 1.0.9 - minimatch: 3.1.5 - object.fromentries: 2.0.8 - safe-regex-test: 1.1.0 - string.prototype.includes: 2.0.1 - - eslint-plugin-prettier@4.2.5(eslint-config-prettier@8.10.2(eslint@9.39.5(jiti@2.7.0)))(eslint@9.39.5(jiti@2.7.0))(prettier@2.8.8): - dependencies: - eslint: 9.39.5(jiti@2.7.0) - prettier: 2.8.8 - prettier-linter-helpers: 1.0.1 - optionalDependencies: - eslint-config-prettier: 8.10.2(eslint@9.39.5(jiti@2.7.0)) - - eslint-plugin-react@7.37.5(eslint@9.39.5(jiti@2.7.0)): - dependencies: - array-includes: 3.1.9 - array.prototype.findlast: 1.2.5 - array.prototype.flatmap: 1.3.3 - array.prototype.tosorted: 1.1.4 - doctrine: 2.1.0 - es-iterator-helpers: 1.4.0 - eslint: 9.39.5(jiti@2.7.0) - estraverse: 5.3.0 - hasown: 2.0.4 - jsx-ast-utils: 3.3.5 - minimatch: 3.1.5 - object.entries: 1.1.9 - object.fromentries: 2.0.8 - object.values: 1.2.1 - prop-types: 15.8.1 - resolve: 2.0.0-next.7 - semver: 6.3.1 - string.prototype.matchall: 4.0.12 - string.prototype.repeat: 1.0.0 - - eslint-plugin-tsdoc@0.2.17: - dependencies: - '@microsoft/tsdoc': 0.14.2 - '@microsoft/tsdoc-config': 0.16.2 - - eslint-rule-composer@0.3.0: {} - - eslint-scope@5.1.1: - dependencies: - esrecurse: 4.3.0 - estraverse: 4.3.0 - - eslint-scope@8.4.0: - dependencies: - esrecurse: 4.3.0 - estraverse: 5.3.0 - - eslint-visitor-keys@2.1.0: {} - - eslint-visitor-keys@3.4.3: {} - - eslint-visitor-keys@4.2.1: {} - - eslint-visitor-keys@5.0.1: {} - - eslint@9.39.5(jiti@2.7.0): - dependencies: - '@eslint-community/eslint-utils': 4.10.1(eslint@9.39.5(jiti@2.7.0)) - '@eslint-community/regexpp': 4.12.2 - '@eslint/config-array': 0.21.2 - '@eslint/config-helpers': 0.4.2 - '@eslint/core': 0.17.0 - '@eslint/eslintrc': 3.3.6 - '@eslint/js': 9.39.5 - '@eslint/plugin-kit': 0.4.1 - '@humanfs/node': 0.16.8 - '@humanwhocodes/module-importer': 1.0.1 - '@humanwhocodes/retry': 0.4.3 - '@types/estree': 1.0.9 - ajv: 6.15.0 - chalk: 4.1.2 - cross-spawn: 7.0.6 - debug: 4.4.3(supports-color@5.5.0) - escape-string-regexp: 4.0.0 - eslint-scope: 8.4.0 - eslint-visitor-keys: 4.2.1 - espree: 10.4.0 - esquery: 1.7.0 - esutils: 2.0.3 - fast-deep-equal: 3.1.3 - file-entry-cache: 8.0.0 - find-up: 5.0.0 - glob-parent: 6.0.2 - ignore: 5.3.2 - imurmurhash: 0.1.4 - is-glob: 4.0.3 - json-stable-stringify-without-jsonify: 1.0.1 - lodash.merge: 4.6.2 - minimatch: 3.1.5 - natural-compare: 1.4.0 - optionator: 0.9.4 - optionalDependencies: - jiti: 2.7.0 - transitivePeerDependencies: - - supports-color - - espree@10.4.0: - dependencies: - acorn: 8.17.0 - acorn-jsx: 5.3.2(acorn@8.17.0) - eslint-visitor-keys: 4.2.1 - - esquery@1.7.0: - dependencies: - estraverse: 5.3.0 - - esrecurse@4.3.0: - dependencies: - estraverse: 5.3.0 - - estraverse@4.3.0: {} - - estraverse@5.3.0: {} - - estree-util-attach-comments@3.0.0: - dependencies: - '@types/estree': 1.0.9 - - estree-util-build-jsx@3.0.1: - dependencies: - '@types/estree-jsx': 1.0.5 - devlop: 1.1.0 - estree-util-is-identifier-name: 3.0.0 - estree-walker: 3.0.3 - - estree-util-is-identifier-name@3.0.0: {} - - estree-util-scope@1.0.0: - dependencies: - '@types/estree': 1.0.9 - devlop: 1.1.0 - - estree-util-to-js@2.0.0: - dependencies: - '@types/estree-jsx': 1.0.5 - astring: 1.9.0 - source-map: 0.7.6 - - estree-util-visit@2.0.0: - dependencies: - '@types/estree-jsx': 1.0.5 - '@types/unist': 3.0.3 - - estree-walker@2.0.2: {} - - estree-walker@3.0.3: - dependencies: - '@types/estree': 1.0.9 - - esutils@2.0.3: {} - - eventemitter3@4.0.7: {} - - extend@3.0.2: {} - - fast-copy@3.0.2: {} - - fast-deep-equal@3.1.3: {} - - fast-diff@1.3.0: {} - - fast-equals@2.0.4: {} - - fast-equals@5.4.1: {} - - fast-json-stable-stringify@2.1.0: {} - - fast-levenshtein@2.0.6: {} - - fdir@6.5.0(picomatch@4.0.5): - optionalDependencies: - picomatch: 4.0.5 - - file-entry-cache@8.0.0: - dependencies: - flat-cache: 4.0.1 - - find-up@5.0.0: - dependencies: - locate-path: 6.0.0 - path-exists: 4.0.0 - - flat-cache@4.0.1: - dependencies: - flatted: 3.4.3 - keyv: 4.5.4 - - flatted@3.4.3: {} - - for-each@0.3.5: - dependencies: - is-callable: 1.2.7 - - function-bind@1.1.2: {} - - function.prototype.name@1.2.0: - dependencies: - call-bind: 1.0.9 - call-bound: 1.0.4 - es-define-property: 1.0.1 - es-errors: 1.3.0 - functions-have-names: 1.2.3 - has-property-descriptors: 1.0.2 - hasown: 2.0.4 - is-callable: 1.2.7 - is-document.all: 1.0.0 - - functions-have-names@1.2.3: {} - - generator-function@2.0.1: {} - - gensync@1.0.0-beta.2: {} - - get-intrinsic@1.3.0: - dependencies: - call-bind-apply-helpers: 1.0.2 - es-define-property: 1.0.1 - es-errors: 1.3.0 - es-object-atoms: 1.1.2 - function-bind: 1.1.2 - get-proto: 1.0.1 - gopd: 1.2.0 - has-symbols: 1.1.0 - hasown: 2.0.4 - math-intrinsics: 1.1.0 - - get-proto@1.0.1: - dependencies: - dunder-proto: 1.0.1 - es-object-atoms: 1.1.2 - - get-symbol-description@1.1.0: - dependencies: - call-bound: 1.0.4 - es-errors: 1.3.0 - get-intrinsic: 1.3.0 - - get-tsconfig@4.14.0: - dependencies: - resolve-pkg-maps: 1.0.0 - - git-hooks-list@4.2.1: {} - - glob-parent@6.0.2: - dependencies: - is-glob: 4.0.3 - - globals@14.0.0: {} - - globalthis@1.0.4: - dependencies: - define-properties: 1.2.1 - gopd: 1.2.0 - - gopd@1.2.0: {} - - graceful-fs@4.2.11: - optional: true - - has-bigints@1.1.0: {} - - has-flag@3.0.0: {} - - has-flag@4.0.0: {} - - has-property-descriptors@1.0.2: - dependencies: - es-define-property: 1.0.1 - - has-proto@1.2.0: - dependencies: - dunder-proto: 1.0.1 - - has-symbols@1.1.0: {} - - has-tostringtag@1.0.2: - dependencies: - has-symbols: 1.1.0 - - hash-sum@2.0.0: {} - - hasown@2.0.4: - dependencies: - function-bind: 1.1.2 - - hast-util-to-estree@3.1.3: - dependencies: - '@types/estree': 1.0.9 - '@types/estree-jsx': 1.0.5 - '@types/hast': 3.0.5 - comma-separated-tokens: 2.0.3 - devlop: 1.1.0 - estree-util-attach-comments: 3.0.0 - estree-util-is-identifier-name: 3.0.0 - hast-util-whitespace: 3.0.0 - mdast-util-mdx-expression: 2.0.1 - mdast-util-mdx-jsx: 3.2.0 - mdast-util-mdxjs-esm: 2.0.1 - property-information: 7.2.0 - space-separated-tokens: 2.0.2 - style-to-js: 1.1.21 - unist-util-position: 5.0.0 - zwitch: 2.0.4 - transitivePeerDependencies: - - supports-color - - hast-util-to-html@9.0.5: - dependencies: - '@types/hast': 3.0.5 - '@types/unist': 3.0.3 - ccount: 2.0.1 - comma-separated-tokens: 2.0.3 - hast-util-whitespace: 3.0.0 - html-void-elements: 3.0.0 - mdast-util-to-hast: 13.2.1 - property-information: 7.2.0 - space-separated-tokens: 2.0.2 - stringify-entities: 4.0.4 - zwitch: 2.0.4 - - hast-util-to-jsx-runtime@2.3.6: - dependencies: - '@types/estree': 1.0.9 - '@types/hast': 3.0.5 - '@types/unist': 3.0.3 - comma-separated-tokens: 2.0.3 - devlop: 1.1.0 - estree-util-is-identifier-name: 3.0.0 - hast-util-whitespace: 3.0.0 - mdast-util-mdx-expression: 2.0.1 - mdast-util-mdx-jsx: 3.2.0 - mdast-util-mdxjs-esm: 2.0.1 - property-information: 7.2.0 - space-separated-tokens: 2.0.2 - style-to-js: 1.1.21 - unist-util-position: 5.0.0 - vfile-message: 4.0.3 - transitivePeerDependencies: - - supports-color - - hast-util-whitespace@3.0.0: - dependencies: - '@types/hast': 3.0.5 - - hoist-non-react-statics@3.3.2: - dependencies: - react-is: 16.13.1 - - html-void-elements@3.0.0: {} - - i18n-js@4.5.3: - dependencies: - bignumber.js: 11.1.5 - lodash: 4.18.1 - make-plural: 7.5.0 - - iconv-lite@0.4.24: - dependencies: - safer-buffer: 2.1.2 - optional: true - - iconv-lite@0.6.3: - dependencies: - safer-buffer: 2.1.2 - optional: true - - ignore@5.3.2: {} - - ignore@7.0.6: {} - - immer@10.1.3: {} - - import-fresh@3.3.1: - dependencies: - parent-module: 1.0.1 - resolve-from: 4.0.0 - - import-meta-resolve@4.2.0: {} - - imurmurhash@0.1.4: {} - - inline-style-parser@0.2.7: {} - - internal-slot@1.1.0: - dependencies: - es-errors: 1.3.0 - hasown: 2.0.4 - side-channel: 1.1.1 - - inversify@6.2.2(reflect-metadata@0.2.2): - dependencies: - '@inversifyjs/common': 1.4.0 - '@inversifyjs/core': 1.3.5(reflect-metadata@0.2.2) - reflect-metadata: 0.2.2 - - is-alphabetical@2.0.1: {} - - is-alphanumerical@2.0.1: - dependencies: - is-alphabetical: 2.0.1 - is-decimal: 2.0.1 - - is-array-buffer@3.0.5: - dependencies: - call-bind: 1.0.9 - call-bound: 1.0.4 - get-intrinsic: 1.3.0 - - is-async-function@2.1.1: - dependencies: - async-function: 1.0.0 - call-bound: 1.0.4 - get-proto: 1.0.1 - has-tostringtag: 1.0.2 - safe-regex-test: 1.1.0 - - is-bigint@1.1.0: - dependencies: - has-bigints: 1.1.0 - - is-boolean-object@1.2.2: - dependencies: - call-bound: 1.0.4 - has-tostringtag: 1.0.2 - - is-bun-module@2.0.0: - dependencies: - semver: 7.8.5 - - is-callable@1.2.7: {} - - is-core-module@2.16.2: - dependencies: - hasown: 2.0.4 - - is-data-view@1.0.2: - dependencies: - call-bound: 1.0.4 - get-intrinsic: 1.3.0 - is-typed-array: 1.1.15 - - is-date-object@1.1.0: - dependencies: - call-bound: 1.0.4 - has-tostringtag: 1.0.2 - - is-decimal@2.0.1: {} - - is-document.all@1.0.0: - dependencies: - call-bound: 1.0.4 - - is-extglob@2.1.1: {} - - is-finalizationregistry@1.1.1: - dependencies: - call-bound: 1.0.4 - - is-generator-function@1.1.2: - dependencies: - call-bound: 1.0.4 - generator-function: 2.0.1 - get-proto: 1.0.1 - has-tostringtag: 1.0.2 - safe-regex-test: 1.1.0 - - is-glob@4.0.3: - dependencies: - is-extglob: 2.1.1 - - is-hexadecimal@2.0.1: {} - - is-map@2.0.3: {} - - is-negative-zero@2.0.3: {} - - is-number-object@1.1.1: - dependencies: - call-bound: 1.0.4 - has-tostringtag: 1.0.2 - - is-plain-obj@4.1.0: {} - - is-regex@1.2.1: - dependencies: - call-bound: 1.0.4 - gopd: 1.2.0 - has-tostringtag: 1.0.2 - hasown: 2.0.4 - - is-set@2.0.3: {} - - is-shared-array-buffer@1.0.4: - dependencies: - call-bound: 1.0.4 - - is-string@1.1.1: - dependencies: - call-bound: 1.0.4 - has-tostringtag: 1.0.2 - - is-symbol@1.1.1: - dependencies: - call-bound: 1.0.4 - has-symbols: 1.1.0 - safe-regex-test: 1.1.0 - - is-typed-array@1.1.15: - dependencies: - which-typed-array: 1.1.22 - - is-weakmap@2.0.2: {} - - is-weakref@1.1.1: - dependencies: - call-bound: 1.0.4 - - is-weakset@2.0.4: - dependencies: - call-bound: 1.0.4 - get-intrinsic: 1.3.0 - - is-what@4.1.16: {} - - isarray@2.0.5: {} - - isexe@2.0.0: {} - - iterator.prototype@1.1.5: - dependencies: - define-data-property: 1.1.4 - es-object-atoms: 1.1.2 - get-intrinsic: 1.3.0 - get-proto: 1.0.1 - has-symbols: 1.1.0 - set-function-name: 2.0.2 - - jiti@2.7.0: {} - - jju@1.4.0: {} - - jotai@2.20.2(@babel/core@8.0.1)(@babel/template@8.0.0)(@types/react@18.3.31)(react@18.3.1): - optionalDependencies: - '@babel/core': 8.0.1 - '@babel/template': 8.0.0 - '@types/react': 18.3.31 - react: 18.3.1 - - js-tiktoken@1.0.21: - dependencies: - base64-js: 1.5.1 - - js-tokens@10.0.0: {} - - js-tokens@4.0.0: {} - - js-yaml@4.3.0: - dependencies: - argparse: 2.0.1 - - jsesc@3.1.0: {} - - json-buffer@3.0.1: {} - - json-schema-traverse@0.4.1: {} - - json-stable-stringify-without-jsonify@1.0.1: {} - - json5@1.0.2: - dependencies: - minimist: 1.2.8 - - json5@2.2.3: {} - - jsonc-parser@3.3.1: {} - - jsx-ast-utils@3.3.5: - dependencies: - array-includes: 3.1.9 - array.prototype.flat: 1.3.3 - object.assign: 4.1.7 - object.values: 1.2.1 - - keyv@4.5.4: - dependencies: - json-buffer: 3.0.1 - - langsmith@0.3.87(openai@5.23.2(zod@3.25.76)): - dependencies: - '@types/uuid': 10.0.0 - chalk: 4.1.2 - console-table-printer: 2.16.1 - p-queue: 6.6.2 - semver: 7.8.5 - uuid: 10.0.0 - optionalDependencies: - openai: 5.23.2(zod@3.25.76) - - language-subtag-registry@0.3.23: {} - - language-tags@1.0.9: - dependencies: - language-subtag-registry: 0.3.23 - - less-loader@12.3.3(@rspack/core@1.7.12(@swc/helpers@0.5.23))(less@4.8.0): - dependencies: - less: 4.8.0 - optionalDependencies: - '@rspack/core': 1.7.12(@swc/helpers@0.5.23) - - less@4.8.0: - dependencies: - copy-anything: 3.0.5 - parse-node-version: 1.0.1 - optionalDependencies: - errno: 0.1.8 - graceful-fs: 4.2.11 - make-dir: 5.1.0 - mime: 1.6.0 - needle: 3.5.0 - probe-image-size: 7.3.0 - source-map: 0.6.1 - transitivePeerDependencies: - - supports-color - - levn@0.4.1: - dependencies: - prelude-ls: 1.2.1 - type-check: 0.4.0 - - linkifyjs@4.3.3: {} - - locate-path@6.0.0: - dependencies: - p-locate: 5.0.0 - - lodash-es@4.18.1: {} - - lodash.debounce@4.0.8: {} - - lodash.merge@4.6.2: {} - - lodash@4.18.1: {} - - longest-streak@3.1.0: {} - - loose-envify@1.4.0: - dependencies: - js-tokens: 4.0.0 - - lottie-web@5.13.0: {} - - lru-cache@11.5.2: {} - - lru-cache@5.1.1: - dependencies: - yallist: 3.1.1 - - lz-string@1.5.0: {} - - magic-string@0.30.21: - dependencies: - '@jridgewell/sourcemap-codec': 1.5.5 - - make-dir@5.1.0: - optional: true - - make-error@1.3.6: {} - - make-plural@7.5.0: {} - - markdown-extensions@2.0.0: {} - - markdown-table@3.0.4: {} - - marked-shiki@1.2.1(marked@15.0.12)(shiki@3.23.0): - dependencies: - marked: 15.0.12 - shiki: 3.23.0 - - marked@15.0.12: {} - - math-intrinsics@1.1.0: {} - - mdast-util-find-and-replace@3.0.2: - dependencies: - '@types/mdast': 4.0.4 - escape-string-regexp: 5.0.0 - unist-util-is: 6.0.1 - unist-util-visit-parents: 6.0.2 - - mdast-util-from-markdown@2.0.3: - dependencies: - '@types/mdast': 4.0.4 - '@types/unist': 3.0.3 - decode-named-character-reference: 1.3.0 - devlop: 1.1.0 - mdast-util-to-string: 4.0.0 - micromark: 4.0.2 - micromark-util-decode-numeric-character-reference: 2.0.2 - micromark-util-decode-string: 2.0.1 - micromark-util-normalize-identifier: 2.0.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - unist-util-stringify-position: 4.0.0 - transitivePeerDependencies: - - supports-color - - mdast-util-gfm-autolink-literal@2.0.1: - dependencies: - '@types/mdast': 4.0.4 - ccount: 2.0.1 - devlop: 1.1.0 - mdast-util-find-and-replace: 3.0.2 - micromark-util-character: 2.1.1 - - mdast-util-gfm-footnote@2.1.0: - dependencies: - '@types/mdast': 4.0.4 - devlop: 1.1.0 - mdast-util-from-markdown: 2.0.3 - mdast-util-to-markdown: 2.1.2 - micromark-util-normalize-identifier: 2.0.1 - transitivePeerDependencies: - - supports-color - - mdast-util-gfm-strikethrough@2.0.0: - dependencies: - '@types/mdast': 4.0.4 - mdast-util-from-markdown: 2.0.3 - mdast-util-to-markdown: 2.1.2 - transitivePeerDependencies: - - supports-color - - mdast-util-gfm-table@2.0.0: - dependencies: - '@types/mdast': 4.0.4 - devlop: 1.1.0 - markdown-table: 3.0.4 - mdast-util-from-markdown: 2.0.3 - mdast-util-to-markdown: 2.1.2 - transitivePeerDependencies: - - supports-color - - mdast-util-gfm-task-list-item@2.0.0: - dependencies: - '@types/mdast': 4.0.4 - devlop: 1.1.0 - mdast-util-from-markdown: 2.0.3 - mdast-util-to-markdown: 2.1.2 - transitivePeerDependencies: - - supports-color - - mdast-util-gfm@3.1.0: - dependencies: - mdast-util-from-markdown: 2.0.3 - mdast-util-gfm-autolink-literal: 2.0.1 - mdast-util-gfm-footnote: 2.1.0 - mdast-util-gfm-strikethrough: 2.0.0 - mdast-util-gfm-table: 2.0.0 - mdast-util-gfm-task-list-item: 2.0.0 - mdast-util-to-markdown: 2.1.2 - transitivePeerDependencies: - - supports-color - - mdast-util-mdx-expression@2.0.1: - dependencies: - '@types/estree-jsx': 1.0.5 - '@types/hast': 3.0.5 - '@types/mdast': 4.0.4 - devlop: 1.1.0 - mdast-util-from-markdown: 2.0.3 - mdast-util-to-markdown: 2.1.2 - transitivePeerDependencies: - - supports-color - - mdast-util-mdx-jsx@3.2.0: - dependencies: - '@types/estree-jsx': 1.0.5 - '@types/hast': 3.0.5 - '@types/mdast': 4.0.4 - '@types/unist': 3.0.3 - ccount: 2.0.1 - devlop: 1.1.0 - mdast-util-from-markdown: 2.0.3 - mdast-util-to-markdown: 2.1.2 - parse-entities: 4.0.2 - stringify-entities: 4.0.4 - unist-util-stringify-position: 4.0.0 - vfile-message: 4.0.3 - transitivePeerDependencies: - - supports-color - - mdast-util-mdx@3.0.0: - dependencies: - mdast-util-from-markdown: 2.0.3 - mdast-util-mdx-expression: 2.0.1 - mdast-util-mdx-jsx: 3.2.0 - mdast-util-mdxjs-esm: 2.0.1 - mdast-util-to-markdown: 2.1.2 - transitivePeerDependencies: - - supports-color - - mdast-util-mdxjs-esm@2.0.1: - dependencies: - '@types/estree-jsx': 1.0.5 - '@types/hast': 3.0.5 - '@types/mdast': 4.0.4 - devlop: 1.1.0 - mdast-util-from-markdown: 2.0.3 - mdast-util-to-markdown: 2.1.2 - transitivePeerDependencies: - - supports-color - - mdast-util-phrasing@4.1.0: - dependencies: - '@types/mdast': 4.0.4 - unist-util-is: 6.0.1 - - mdast-util-to-hast@13.2.1: - dependencies: - '@types/hast': 3.0.5 - '@types/mdast': 4.0.4 - '@ungap/structured-clone': 1.3.3 - devlop: 1.1.0 - micromark-util-sanitize-uri: 2.0.1 - trim-lines: 3.0.1 - unist-util-position: 5.0.0 - unist-util-visit: 5.1.0 - vfile: 6.0.3 - - mdast-util-to-markdown@2.1.2: - dependencies: - '@types/mdast': 4.0.4 - '@types/unist': 3.0.3 - longest-streak: 3.1.0 - mdast-util-phrasing: 4.1.0 - mdast-util-to-string: 4.0.0 - micromark-util-classify-character: 2.0.1 - micromark-util-decode-string: 2.0.1 - unist-util-visit: 5.1.0 - zwitch: 2.0.4 - - mdast-util-to-string@4.0.0: - dependencies: - '@types/mdast': 4.0.4 - - memoize-one@5.2.1: {} - - micromark-core-commonmark@2.0.3: - dependencies: - decode-named-character-reference: 1.3.0 - devlop: 1.1.0 - micromark-factory-destination: 2.0.1 - micromark-factory-label: 2.0.1 - micromark-factory-space: 2.0.1 - micromark-factory-title: 2.0.1 - micromark-factory-whitespace: 2.0.1 - micromark-util-character: 2.1.1 - micromark-util-chunked: 2.0.1 - micromark-util-classify-character: 2.0.1 - micromark-util-html-tag-name: 2.0.1 - micromark-util-normalize-identifier: 2.0.1 - micromark-util-resolve-all: 2.0.1 - micromark-util-subtokenize: 2.1.0 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - - micromark-extension-gfm-autolink-literal@2.1.0: - dependencies: - micromark-util-character: 2.1.1 - micromark-util-sanitize-uri: 2.0.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - - micromark-extension-gfm-footnote@2.1.0: - dependencies: - devlop: 1.1.0 - micromark-core-commonmark: 2.0.3 - micromark-factory-space: 2.0.1 - micromark-util-character: 2.1.1 - micromark-util-normalize-identifier: 2.0.1 - micromark-util-sanitize-uri: 2.0.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - - micromark-extension-gfm-strikethrough@2.1.0: - dependencies: - devlop: 1.1.0 - micromark-util-chunked: 2.0.1 - micromark-util-classify-character: 2.0.1 - micromark-util-resolve-all: 2.0.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - - micromark-extension-gfm-table@2.1.1: - dependencies: - devlop: 1.1.0 - micromark-factory-space: 2.0.1 - micromark-util-character: 2.1.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - - micromark-extension-gfm-tagfilter@2.0.0: - dependencies: - micromark-util-types: 2.0.2 - - micromark-extension-gfm-task-list-item@2.1.0: - dependencies: - devlop: 1.1.0 - micromark-factory-space: 2.0.1 - micromark-util-character: 2.1.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - - micromark-extension-gfm@3.0.0: - dependencies: - micromark-extension-gfm-autolink-literal: 2.1.0 - micromark-extension-gfm-footnote: 2.1.0 - micromark-extension-gfm-strikethrough: 2.1.0 - micromark-extension-gfm-table: 2.1.1 - micromark-extension-gfm-tagfilter: 2.0.0 - micromark-extension-gfm-task-list-item: 2.1.0 - micromark-util-combine-extensions: 2.0.1 - micromark-util-types: 2.0.2 - - micromark-extension-mdx-expression@3.0.1: - dependencies: - '@types/estree': 1.0.9 - devlop: 1.1.0 - micromark-factory-mdx-expression: 2.0.3 - micromark-factory-space: 2.0.1 - micromark-util-character: 2.1.1 - micromark-util-events-to-acorn: 2.0.3 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - - micromark-extension-mdx-jsx@3.0.2: - dependencies: - '@types/estree': 1.0.9 - devlop: 1.1.0 - estree-util-is-identifier-name: 3.0.0 - micromark-factory-mdx-expression: 2.0.3 - micromark-factory-space: 2.0.1 - micromark-util-character: 2.1.1 - micromark-util-events-to-acorn: 2.0.3 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - vfile-message: 4.0.3 - - micromark-extension-mdx-md@2.0.0: - dependencies: - micromark-util-types: 2.0.2 - - micromark-extension-mdxjs-esm@3.0.0: - dependencies: - '@types/estree': 1.0.9 - devlop: 1.1.0 - micromark-core-commonmark: 2.0.3 - micromark-util-character: 2.1.1 - micromark-util-events-to-acorn: 2.0.3 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - unist-util-position-from-estree: 2.0.0 - vfile-message: 4.0.3 - - micromark-extension-mdxjs@3.0.0: - dependencies: - acorn: 8.17.0 - acorn-jsx: 5.3.2(acorn@8.17.0) - micromark-extension-mdx-expression: 3.0.1 - micromark-extension-mdx-jsx: 3.0.2 - micromark-extension-mdx-md: 2.0.0 - micromark-extension-mdxjs-esm: 3.0.0 - micromark-util-combine-extensions: 2.0.1 - micromark-util-types: 2.0.2 - - micromark-factory-destination@2.0.1: - dependencies: - micromark-util-character: 2.1.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - - micromark-factory-label@2.0.1: - dependencies: - devlop: 1.1.0 - micromark-util-character: 2.1.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - - micromark-factory-mdx-expression@2.0.3: - dependencies: - '@types/estree': 1.0.9 - devlop: 1.1.0 - micromark-factory-space: 2.0.1 - micromark-util-character: 2.1.1 - micromark-util-events-to-acorn: 2.0.3 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - unist-util-position-from-estree: 2.0.0 - vfile-message: 4.0.3 - - micromark-factory-space@2.0.1: - dependencies: - micromark-util-character: 2.1.1 - micromark-util-types: 2.0.2 - - micromark-factory-title@2.0.1: - dependencies: - micromark-factory-space: 2.0.1 - micromark-util-character: 2.1.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - - micromark-factory-whitespace@2.0.1: - dependencies: - micromark-factory-space: 2.0.1 - micromark-util-character: 2.1.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - - micromark-util-character@2.1.1: - dependencies: - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - - micromark-util-chunked@2.0.1: - dependencies: - micromark-util-symbol: 2.0.1 - - micromark-util-classify-character@2.0.1: - dependencies: - micromark-util-character: 2.1.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - - micromark-util-combine-extensions@2.0.1: - dependencies: - micromark-util-chunked: 2.0.1 - micromark-util-types: 2.0.2 - - micromark-util-decode-numeric-character-reference@2.0.2: - dependencies: - micromark-util-symbol: 2.0.1 - - micromark-util-decode-string@2.0.1: - dependencies: - decode-named-character-reference: 1.3.0 - micromark-util-character: 2.1.1 - micromark-util-decode-numeric-character-reference: 2.0.2 - micromark-util-symbol: 2.0.1 - - micromark-util-encode@2.0.1: {} - - micromark-util-events-to-acorn@2.0.3: - dependencies: - '@types/estree': 1.0.9 - '@types/unist': 3.0.3 - devlop: 1.1.0 - estree-util-visit: 2.0.0 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - vfile-message: 4.0.3 - - micromark-util-html-tag-name@2.0.1: {} - - micromark-util-normalize-identifier@2.0.1: - dependencies: - micromark-util-symbol: 2.0.1 - - micromark-util-resolve-all@2.0.1: - dependencies: - micromark-util-types: 2.0.2 - - micromark-util-sanitize-uri@2.0.1: - dependencies: - micromark-util-character: 2.1.1 - micromark-util-encode: 2.0.1 - micromark-util-symbol: 2.0.1 - - micromark-util-subtokenize@2.1.0: - dependencies: - devlop: 1.1.0 - micromark-util-chunked: 2.0.1 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - - micromark-util-symbol@2.0.1: {} - - micromark-util-types@2.0.2: {} - - micromark@4.0.2: - dependencies: - '@types/debug': 4.1.13 - debug: 4.4.3(supports-color@5.5.0) - decode-named-character-reference: 1.3.0 - devlop: 1.1.0 - micromark-core-commonmark: 2.0.3 - micromark-factory-space: 2.0.1 - micromark-util-character: 2.1.1 - micromark-util-chunked: 2.0.1 - micromark-util-combine-extensions: 2.0.1 - micromark-util-decode-numeric-character-reference: 2.0.2 - micromark-util-encode: 2.0.1 - micromark-util-normalize-identifier: 2.0.1 - micromark-util-resolve-all: 2.0.1 - micromark-util-sanitize-uri: 2.0.1 - micromark-util-subtokenize: 2.1.0 - micromark-util-symbol: 2.0.1 - micromark-util-types: 2.0.2 - transitivePeerDependencies: - - supports-color - - mime@1.6.0: - optional: true - - minimatch@10.2.5: - dependencies: - brace-expansion: 5.0.8 - - minimatch@3.1.5: - dependencies: - brace-expansion: 1.1.16 - - minimist@1.2.8: {} - - mitt@3.0.1: {} - - modern-screenshot@4.6.7: {} - - ms@2.0.0: - optional: true - - ms@2.1.3: {} - - mustache@4.2.0: {} - - nanoid@3.3.16: {} - - nanoid@5.1.16: {} - - napi-postinstall@0.3.4: {} - - natural-compare@1.4.0: {} - - needle@2.9.1: - dependencies: - debug: 3.2.7 - iconv-lite: 0.4.24 - sax: 1.6.1 - transitivePeerDependencies: - - supports-color - optional: true - - needle@3.5.0: - dependencies: - iconv-lite: 0.6.3 - sax: 1.6.1 - optional: true - - node-exports-info@1.6.2: - dependencies: - array.prototype.flatmap: 1.3.3 - es-errors: 1.3.0 - object.entries: 1.1.9 - semver: 6.3.1 - - node-releases@2.0.51: {} - - object-assign@4.1.1: {} - - object-inspect@1.13.4: {} - - object-keys@1.1.1: {} - - object.assign@4.1.7: - dependencies: - call-bind: 1.0.9 - call-bound: 1.0.4 - define-properties: 1.2.1 - es-object-atoms: 1.1.2 - has-symbols: 1.1.0 - object-keys: 1.1.1 - - object.entries@1.1.9: - dependencies: - call-bind: 1.0.9 - call-bound: 1.0.4 - define-properties: 1.2.1 - es-object-atoms: 1.1.2 - - object.fromentries@2.0.8: - dependencies: - call-bind: 1.0.9 - define-properties: 1.2.1 - es-abstract: 1.24.2 - es-object-atoms: 1.1.2 - - object.groupby@1.0.3: - dependencies: - call-bind: 1.0.9 - define-properties: 1.2.1 - es-abstract: 1.24.2 - - object.values@1.2.1: - dependencies: - call-bind: 1.0.9 - call-bound: 1.0.4 - define-properties: 1.2.1 - es-object-atoms: 1.1.2 - - obug@2.1.4: {} - - oniguruma-parser@0.12.2: {} - - oniguruma-to-es@4.3.6: - dependencies: - oniguruma-parser: 0.12.2 - regex: 6.1.0 - regex-recursion: 6.0.2 - - openai@5.23.2(zod@3.25.76): - optionalDependencies: - zod: 3.25.76 - - optionator@0.9.4: - dependencies: - deep-is: 0.1.4 - fast-levenshtein: 2.0.6 - levn: 0.4.1 - prelude-ls: 1.2.1 - type-check: 0.4.0 - word-wrap: 1.2.5 - - orderedmap@2.1.1: {} - - overlayscrollbars@2.16.0: {} - - own-keys@1.0.2: - dependencies: - call-bound: 1.0.4 - get-intrinsic: 1.3.0 - object-keys: 1.1.1 - safe-push-apply: 1.0.0 - - p-finally@1.0.0: {} - - p-limit@3.1.0: - dependencies: - yocto-queue: 0.1.0 - - p-locate@5.0.0: - dependencies: - p-limit: 3.1.0 - - p-queue@6.6.2: - dependencies: - eventemitter3: 4.0.7 - p-timeout: 3.2.0 - - p-retry@4.6.2: - dependencies: - '@types/retry': 0.12.0 - retry: 0.13.1 - - p-timeout@3.2.0: - dependencies: - p-finally: 1.0.0 - - parent-module@1.0.1: - dependencies: - callsites: 3.1.0 - - parse-entities@4.0.2: - dependencies: - '@types/unist': 2.0.11 - character-entities-legacy: 3.0.0 - character-reference-invalid: 2.0.1 - decode-named-character-reference: 1.3.0 - is-alphanumerical: 2.0.1 - is-decimal: 2.0.1 - is-hexadecimal: 2.0.1 - - parse-node-version@1.0.1: {} - - path-exists@4.0.0: {} - - path-key@3.1.1: {} - - path-parse@1.0.7: {} - - picocolors@1.1.1: {} - - picomatch@4.0.5: {} - - possible-typed-array-names@1.1.0: {} - - postcss-value-parser@4.2.0: {} - - postcss@8.5.23: - dependencies: - nanoid: 3.3.16 - picocolors: 1.1.1 - source-map-js: 1.2.1 - - prelude-ls@1.2.1: {} - - prettier-linter-helpers@1.0.1: - dependencies: - fast-diff: 1.3.0 - - prettier-plugin-packagejson@2.5.22(prettier@2.8.8): - dependencies: - sort-package-json: 3.6.0 - optionalDependencies: - prettier: 2.8.8 - - prettier@2.8.8: {} - - prismjs@1.30.0: {} - - probe-image-size@7.3.0: - dependencies: - lodash.merge: 4.6.2 - needle: 2.9.1 - stream-parser: 0.3.1 - transitivePeerDependencies: - - supports-color - optional: true - - prop-types@15.8.1: - dependencies: - loose-envify: 1.4.0 - object-assign: 4.1.1 - react-is: 16.13.1 - - property-information@7.2.0: {} - - prosemirror-changeset@2.4.1: - dependencies: - prosemirror-transform: 1.12.0 - - prosemirror-commands@1.7.1: - dependencies: - prosemirror-model: 1.25.11 - prosemirror-state: 1.4.4 - prosemirror-transform: 1.12.0 - - prosemirror-dropcursor@1.8.3: - dependencies: - prosemirror-state: 1.4.4 - prosemirror-transform: 1.12.0 - prosemirror-view: 1.42.2 - - prosemirror-gapcursor@1.4.1: - dependencies: - prosemirror-keymap: 1.2.3 - prosemirror-model: 1.25.11 - prosemirror-state: 1.4.4 - prosemirror-view: 1.42.2 - - prosemirror-history@1.5.0: - dependencies: - prosemirror-state: 1.4.4 - prosemirror-transform: 1.12.0 - prosemirror-view: 1.42.2 - rope-sequence: 1.3.4 - - prosemirror-inputrules@1.5.1: - dependencies: - prosemirror-state: 1.4.4 - prosemirror-transform: 1.12.0 - - prosemirror-keymap@1.2.3: - dependencies: - prosemirror-state: 1.4.4 - w3c-keyname: 2.2.8 - - prosemirror-model@1.25.11: - dependencies: - orderedmap: 2.1.1 - - prosemirror-schema-list@1.5.1: - dependencies: - prosemirror-model: 1.25.11 - prosemirror-state: 1.4.4 - prosemirror-transform: 1.12.0 - - prosemirror-state@1.4.4: - dependencies: - prosemirror-model: 1.25.11 - prosemirror-transform: 1.12.0 - prosemirror-view: 1.42.2 - - prosemirror-tables@1.8.5: - dependencies: - prosemirror-keymap: 1.2.3 - prosemirror-model: 1.25.11 - prosemirror-state: 1.4.4 - prosemirror-transform: 1.12.0 - prosemirror-view: 1.42.2 - - prosemirror-transform@1.12.0: - dependencies: - prosemirror-model: 1.25.11 - - prosemirror-view@1.42.2: - dependencies: - prosemirror-model: 1.25.11 - prosemirror-state: 1.4.4 - prosemirror-transform: 1.12.0 - - prr@1.0.1: - optional: true - - punycode@2.3.1: {} - - quickjs-emscripten-core@0.32.0: - dependencies: - '@jitl/quickjs-ffi-types': 0.32.0 - - quickjs-emscripten@0.32.0: - dependencies: - '@jitl/quickjs-wasmfile-debug-asyncify': 0.32.0 - '@jitl/quickjs-wasmfile-debug-sync': 0.32.0 - '@jitl/quickjs-wasmfile-release-asyncify': 0.32.0 - '@jitl/quickjs-wasmfile-release-sync': 0.32.0 - quickjs-emscripten-core: 0.32.0 - - react-dom@18.3.1(react@18.3.1): - dependencies: - loose-envify: 1.4.0 - react: 18.3.1 - scheduler: 0.23.2 - - react-draggable@4.7.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): - dependencies: - clsx: 2.1.1 - prop-types: 15.8.1 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - - react-is@16.13.1: {} - - react-refresh@0.18.0: {} - - react-resizable@3.2.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1): - dependencies: - prop-types: 15.8.1 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - react-draggable: 4.7.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - - react-window@1.8.11(react-dom@18.3.1(react@18.3.1))(react@18.3.1): - dependencies: - '@babel/runtime': 7.29.7 - memoize-one: 5.2.1 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - - react@18.3.1: - dependencies: - loose-envify: 1.4.0 - - recma-build-jsx@1.0.0: - dependencies: - '@types/estree': 1.0.9 - estree-util-build-jsx: 3.0.1 - vfile: 6.0.3 - - recma-jsx@1.0.1(acorn@8.17.0): - dependencies: - acorn: 8.17.0 - acorn-jsx: 5.3.2(acorn@8.17.0) - estree-util-to-js: 2.0.0 - recma-parse: 1.0.0 - recma-stringify: 1.0.0 - unified: 11.0.5 - - recma-parse@1.0.0: - dependencies: - '@types/estree': 1.0.9 - esast-util-from-js: 2.0.1 - unified: 11.0.5 - vfile: 6.0.3 - - recma-stringify@1.0.0: - dependencies: - '@types/estree': 1.0.9 - estree-util-to-js: 2.0.0 - unified: 11.0.5 - vfile: 6.0.3 - - reduce-configs@1.1.2: {} - - reflect-metadata@0.2.2: {} - - reflect.getprototypeof@1.0.10: - dependencies: - call-bind: 1.0.9 - define-properties: 1.2.1 - es-abstract: 1.24.2 - es-errors: 1.3.0 - es-object-atoms: 1.1.2 - get-intrinsic: 1.3.0 - get-proto: 1.0.1 - which-builtin-type: 1.2.1 - - regenerate-unicode-properties@10.2.2: - dependencies: - regenerate: 1.4.2 - - regenerate@1.4.2: {} - - regex-recursion@6.0.2: - dependencies: - regex-utilities: 2.3.0 - - regex-utilities@2.3.0: {} - - regex@6.1.0: - dependencies: - regex-utilities: 2.3.0 - - regexp.prototype.flags@1.5.4: - dependencies: - call-bind: 1.0.9 - define-properties: 1.2.1 - es-errors: 1.3.0 - get-proto: 1.0.1 - gopd: 1.2.0 - set-function-name: 2.0.2 - - regexpu-core@6.4.0: - dependencies: - regenerate: 1.4.2 - regenerate-unicode-properties: 10.2.2 - regjsgen: 0.8.0 - regjsparser: 0.13.2 - unicode-match-property-ecmascript: 2.0.0 - unicode-match-property-value-ecmascript: 2.2.1 - - regjsgen@0.8.0: {} - - regjsparser@0.13.2: - dependencies: - jsesc: 3.1.0 - - rehype-recma@1.0.0: - dependencies: - '@types/estree': 1.0.9 - '@types/hast': 3.0.5 - hast-util-to-estree: 3.1.3 - transitivePeerDependencies: - - supports-color - - remark-gfm@4.0.1: - dependencies: - '@types/mdast': 4.0.4 - mdast-util-gfm: 3.1.0 - micromark-extension-gfm: 3.0.0 - remark-parse: 11.0.0 - remark-stringify: 11.0.0 - unified: 11.0.5 - transitivePeerDependencies: - - supports-color - - remark-mdx@3.1.1: - dependencies: - mdast-util-mdx: 3.0.0 - micromark-extension-mdxjs: 3.0.0 - transitivePeerDependencies: - - supports-color - - remark-parse@11.0.0: - dependencies: - '@types/mdast': 4.0.4 - mdast-util-from-markdown: 2.0.3 - micromark-util-types: 2.0.2 - unified: 11.0.5 - transitivePeerDependencies: - - supports-color - - remark-rehype@11.1.2: - dependencies: - '@types/hast': 3.0.5 - '@types/mdast': 4.0.4 - mdast-util-to-hast: 13.2.1 - unified: 11.0.5 - vfile: 6.0.3 - - remark-stringify@11.0.0: - dependencies: - '@types/mdast': 4.0.4 - mdast-util-to-markdown: 2.1.2 - unified: 11.0.5 - - resolve-from@4.0.0: {} - - resolve-pkg-maps@1.0.0: {} - - resolve@1.19.0: - dependencies: - is-core-module: 2.16.2 - path-parse: 1.0.7 - - resolve@1.22.12: - dependencies: - es-errors: 1.3.0 - is-core-module: 2.16.2 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - - resolve@2.0.0-next.7: - dependencies: - es-errors: 1.3.0 - is-core-module: 2.16.2 - node-exports-info: 1.6.2 - object-keys: 1.1.1 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - - retry@0.13.1: {} - - rope-sequence@1.3.4: {} - - rxjs@7.8.2: - dependencies: - tslib: 2.8.1 - - safe-array-concat@1.1.4: - dependencies: - call-bind: 1.0.9 - call-bound: 1.0.4 - get-intrinsic: 1.3.0 - has-symbols: 1.1.0 - isarray: 2.0.5 - - safe-push-apply@1.0.0: - dependencies: - es-errors: 1.3.0 - isarray: 2.0.5 - - safe-regex-test@1.1.0: - dependencies: - call-bound: 1.0.4 - es-errors: 1.3.0 - is-regex: 1.2.1 - - safer-buffer@2.1.2: - optional: true - - sax@1.6.1: - optional: true - - scheduler@0.23.2: - dependencies: - loose-envify: 1.4.0 - - scroll-into-view-if-needed@2.2.31: - dependencies: - compute-scroll-into-view: 1.0.20 - - semver@6.3.1: {} - - semver@7.8.5: {} - - set-function-length@1.2.2: - dependencies: - define-data-property: 1.1.4 - es-errors: 1.3.0 - function-bind: 1.1.2 - get-intrinsic: 1.3.0 - gopd: 1.2.0 - has-property-descriptors: 1.0.2 - - set-function-name@2.0.2: - dependencies: - define-data-property: 1.1.4 - es-errors: 1.3.0 - functions-have-names: 1.2.3 - has-property-descriptors: 1.0.2 - - set-proto@1.0.0: - dependencies: - dunder-proto: 1.0.1 - es-errors: 1.3.0 - es-object-atoms: 1.1.2 - - shallowequal@1.1.0: {} - - shebang-command@2.0.0: - dependencies: - shebang-regex: 3.0.0 - - shebang-regex@3.0.0: {} - - shiki@3.23.0: - dependencies: - '@shikijs/core': 3.23.0 - '@shikijs/engine-javascript': 3.23.0 - '@shikijs/engine-oniguruma': 3.23.0 - '@shikijs/langs': 3.23.0 - '@shikijs/themes': 3.23.0 - '@shikijs/types': 3.23.0 - '@shikijs/vscode-textmate': 10.0.2 - '@types/hast': 3.0.5 - - side-channel-list@1.0.1: - dependencies: - es-errors: 1.3.0 - object-inspect: 1.13.4 - - side-channel-map@1.0.1: - dependencies: - call-bound: 1.0.4 - es-errors: 1.3.0 - get-intrinsic: 1.3.0 - object-inspect: 1.13.4 - - side-channel-weakmap@1.0.2: - dependencies: - call-bound: 1.0.4 - es-errors: 1.3.0 - get-intrinsic: 1.3.0 - object-inspect: 1.13.4 - side-channel-map: 1.0.1 - - side-channel@1.1.1: - dependencies: - es-errors: 1.3.0 - object-inspect: 1.13.4 - side-channel-list: 1.0.1 - side-channel-map: 1.0.1 - side-channel-weakmap: 1.0.2 - - simple-wcswidth@1.1.2: {} - - sort-object-keys@2.1.0: {} - - sort-package-json@3.6.0: - dependencies: - detect-indent: 7.0.2 - detect-newline: 4.0.1 - git-hooks-list: 4.2.1 - is-plain-obj: 4.1.0 - semver: 7.8.5 - sort-object-keys: 2.1.0 - tinyglobby: 0.2.17 - - source-map-js@1.2.1: {} - - source-map@0.6.1: - optional: true - - source-map@0.7.6: {} - - space-separated-tokens@2.0.2: {} - - stable-hash@0.0.5: {} - - stackframe@1.3.4: {} - - stop-iteration-iterator@1.1.0: - dependencies: - es-errors: 1.3.0 - internal-slot: 1.1.0 - - stream-parser@0.3.1: - dependencies: - debug: 2.6.9 - transitivePeerDependencies: - - supports-color - optional: true - - string.prototype.includes@2.0.1: - dependencies: - call-bind: 1.0.9 - define-properties: 1.2.1 - es-abstract: 1.24.2 - - string.prototype.matchall@4.0.12: - dependencies: - call-bind: 1.0.9 - call-bound: 1.0.4 - define-properties: 1.2.1 - es-abstract: 1.24.2 - es-errors: 1.3.0 - es-object-atoms: 1.1.2 - get-intrinsic: 1.3.0 - gopd: 1.2.0 - has-symbols: 1.1.0 - internal-slot: 1.1.0 - regexp.prototype.flags: 1.5.4 - set-function-name: 2.0.2 - side-channel: 1.1.1 - - string.prototype.repeat@1.0.0: - dependencies: - define-properties: 1.2.1 - es-abstract: 1.24.2 - - string.prototype.trim@1.2.11: - dependencies: - call-bind: 1.0.9 - call-bound: 1.0.4 - define-data-property: 1.1.4 - define-properties: 1.2.1 - es-abstract: 1.24.2 - es-object-atoms: 1.1.2 - has-property-descriptors: 1.0.2 - safe-regex-test: 1.1.0 - - string.prototype.trimend@1.0.10: - dependencies: - call-bind: 1.0.9 - call-bound: 1.0.4 - define-properties: 1.2.1 - es-object-atoms: 1.1.2 - - string.prototype.trimstart@1.0.8: - dependencies: - call-bind: 1.0.9 - define-properties: 1.2.1 - es-object-atoms: 1.1.2 - - stringify-entities@4.0.4: - dependencies: - character-entities-html4: 2.1.0 - character-entities-legacy: 3.0.0 - - strip-bom@3.0.0: {} - - strip-json-comments@3.1.1: {} - - style-mod@4.1.3: {} - - style-to-js@1.1.21: - dependencies: - style-to-object: 1.0.14 - - style-to-object@1.0.14: - dependencies: - inline-style-parser: 0.2.7 - - styled-components@5.3.11(@babel/core@8.0.1)(react-dom@18.3.1(react@18.3.1))(react-is@16.13.1)(react@18.3.1): - dependencies: - '@babel/helper-module-imports': 7.29.7(supports-color@5.5.0) - '@babel/traverse': 7.29.7(supports-color@5.5.0) - '@emotion/is-prop-valid': 1.4.0 - '@emotion/stylis': 0.8.5 - '@emotion/unitless': 0.7.5 - babel-plugin-styled-components: 2.3.0(@babel/core@8.0.1)(styled-components@5.3.11(@babel/core@8.0.1)(react-dom@18.3.1(react@18.3.1))(react-is@16.13.1)(react@18.3.1))(supports-color@5.5.0) - css-to-react-native: 3.2.0 - hoist-non-react-statics: 3.3.2 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - react-is: 16.13.1 - shallowequal: 1.1.0 - supports-color: 5.5.0 - transitivePeerDependencies: - - '@babel/core' - - supports-color@5.5.0: - dependencies: - has-flag: 3.0.0 - - supports-color@7.2.0: - dependencies: - has-flag: 4.0.0 - - supports-preserve-symlinks-flag@1.0.0: {} - - text-mapping@1.0.1: {} - - tinyglobby@0.2.17: - dependencies: - fdir: 6.5.0(picomatch@4.0.5) - picomatch: 4.0.5 - - trim-lines@3.0.1: {} - - trough@2.2.0: {} - - ts-api-utils@2.5.0(typescript@5.9.3): - dependencies: - typescript: 5.9.3 - - ts-node@10.9.2(@types/node@18.19.130)(typescript@5.9.3): - dependencies: - '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.12 - '@tsconfig/node12': 1.0.11 - '@tsconfig/node14': 1.0.3 - '@tsconfig/node16': 1.0.4 - '@types/node': 18.19.130 - acorn: 8.17.0 - acorn-walk: 8.3.5 - arg: 4.1.3 - create-require: 1.1.1 - diff: 4.0.4 - make-error: 1.3.6 - typescript: 5.9.3 - v8-compile-cache-lib: 3.0.1 - yn: 3.1.1 - - tsconfig-paths@3.15.0: - dependencies: - '@types/json5': 0.0.29 - json5: 1.0.2 - minimist: 1.2.8 - strip-bom: 3.0.0 - - tslib@2.8.1: {} - - type-check@0.4.0: - dependencies: - prelude-ls: 1.2.1 - - typed-array-buffer@1.0.3: - dependencies: - call-bound: 1.0.4 - es-errors: 1.3.0 - is-typed-array: 1.1.15 - - typed-array-byte-length@1.0.3: - dependencies: - call-bind: 1.0.9 - for-each: 0.3.5 - gopd: 1.2.0 - has-proto: 1.2.0 - is-typed-array: 1.1.15 - - typed-array-byte-offset@1.0.4: - dependencies: - available-typed-arrays: 1.0.7 - call-bind: 1.0.9 - for-each: 0.3.5 - gopd: 1.2.0 - has-proto: 1.2.0 - is-typed-array: 1.1.15 - reflect.getprototypeof: 1.0.10 - - typed-array-length@1.0.8: - dependencies: - call-bind: 1.0.9 - for-each: 0.3.5 - gopd: 1.2.0 - is-typed-array: 1.1.15 - possible-typed-array-names: 1.1.0 - reflect.getprototypeof: 1.0.10 - - typescript@5.9.3: {} - - unbox-primitive@1.1.0: - dependencies: - call-bound: 1.0.4 - has-bigints: 1.1.0 - has-symbols: 1.1.0 - which-boxed-primitive: 1.1.1 - - undici-types@5.26.5: {} - - unicode-canonical-property-names-ecmascript@2.0.1: {} - - unicode-match-property-ecmascript@2.0.0: - dependencies: - unicode-canonical-property-names-ecmascript: 2.0.1 - unicode-property-aliases-ecmascript: 2.2.0 - - unicode-match-property-value-ecmascript@2.2.1: {} - - unicode-property-aliases-ecmascript@2.2.0: {} - - unified@11.0.5: - dependencies: - '@types/unist': 3.0.3 - bail: 2.0.2 - devlop: 1.1.0 - extend: 3.0.2 - is-plain-obj: 4.1.0 - trough: 2.2.0 - vfile: 6.0.3 - - unist-util-is@6.0.1: - dependencies: - '@types/unist': 3.0.3 - - unist-util-position-from-estree@2.0.0: - dependencies: - '@types/unist': 3.0.3 - - unist-util-position@5.0.0: - dependencies: - '@types/unist': 3.0.3 - - unist-util-stringify-position@4.0.0: - dependencies: - '@types/unist': 3.0.3 - - unist-util-visit-parents@6.0.2: - dependencies: - '@types/unist': 3.0.3 - unist-util-is: 6.0.1 - - unist-util-visit@5.1.0: - dependencies: - '@types/unist': 3.0.3 - unist-util-is: 6.0.1 - unist-util-visit-parents: 6.0.2 - - unrs-resolver@1.12.2: - dependencies: - napi-postinstall: 0.3.4 - optionalDependencies: - '@unrs/resolver-binding-android-arm-eabi': 1.12.2 - '@unrs/resolver-binding-android-arm64': 1.12.2 - '@unrs/resolver-binding-darwin-arm64': 1.12.2 - '@unrs/resolver-binding-darwin-x64': 1.12.2 - '@unrs/resolver-binding-freebsd-x64': 1.12.2 - '@unrs/resolver-binding-linux-arm-gnueabihf': 1.12.2 - '@unrs/resolver-binding-linux-arm-musleabihf': 1.12.2 - '@unrs/resolver-binding-linux-arm64-gnu': 1.12.2 - '@unrs/resolver-binding-linux-arm64-musl': 1.12.2 - '@unrs/resolver-binding-linux-loong64-gnu': 1.12.2 - '@unrs/resolver-binding-linux-loong64-musl': 1.12.2 - '@unrs/resolver-binding-linux-ppc64-gnu': 1.12.2 - '@unrs/resolver-binding-linux-riscv64-gnu': 1.12.2 - '@unrs/resolver-binding-linux-riscv64-musl': 1.12.2 - '@unrs/resolver-binding-linux-s390x-gnu': 1.12.2 - '@unrs/resolver-binding-linux-x64-gnu': 1.12.2 - '@unrs/resolver-binding-linux-x64-musl': 1.12.2 - '@unrs/resolver-binding-openharmony-arm64': 1.12.2 - '@unrs/resolver-binding-wasm32-wasi': 1.12.2 - '@unrs/resolver-binding-win32-arm64-msvc': 1.12.2 - '@unrs/resolver-binding-win32-ia32-msvc': 1.12.2 - '@unrs/resolver-binding-win32-x64-msvc': 1.12.2 - - update-browserslist-db@1.2.3(browserslist@4.28.7): - dependencies: - browserslist: 4.28.7 - escalade: 3.2.0 - picocolors: 1.1.1 - - uri-js@4.4.1: - dependencies: - punycode: 2.3.1 - - use-sync-external-store@1.6.0(react@18.3.1): - dependencies: - react: 18.3.1 - - utility-types@3.11.0: {} - - uuid@10.0.0: {} - - uuid@9.0.1: {} - - v8-compile-cache-lib@3.0.1: {} - - vfile-message@4.0.3: - dependencies: - '@types/unist': 3.0.3 - unist-util-stringify-position: 4.0.0 - - vfile@6.0.3: - dependencies: - '@types/unist': 3.0.3 - vfile-message: 4.0.3 - - vscode-json-languageservice@5.7.2: - dependencies: - '@vscode/l10n': 0.0.18 - jsonc-parser: 3.3.1 - vscode-languageserver-textdocument: 1.0.12 - vscode-languageserver-types: 3.18.0 - vscode-uri: 3.1.0 - - vscode-languageserver-textdocument@1.0.12: {} - - vscode-languageserver-types@3.18.0: {} - - vscode-uri@3.1.0: {} - - vue@3.5.40(typescript@5.9.3): - dependencies: - '@vue/compiler-dom': 3.5.40 - '@vue/compiler-sfc': 3.5.40 - '@vue/runtime-dom': 3.5.40 - '@vue/server-renderer': 3.5.40 - '@vue/shared': 3.5.40 - optionalDependencies: - typescript: 5.9.3 - - w3c-keyname@2.2.8: {} - - which-boxed-primitive@1.1.1: - dependencies: - is-bigint: 1.1.0 - is-boolean-object: 1.2.2 - is-number-object: 1.1.1 - is-string: 1.1.1 - is-symbol: 1.1.1 - - which-builtin-type@1.2.1: - dependencies: - call-bound: 1.0.4 - function.prototype.name: 1.2.0 - has-tostringtag: 1.0.2 - is-async-function: 2.1.1 - is-date-object: 1.1.0 - is-finalizationregistry: 1.1.1 - is-generator-function: 1.1.2 - is-regex: 1.2.1 - is-weakref: 1.1.1 - isarray: 2.0.5 - which-boxed-primitive: 1.1.1 - which-collection: 1.0.2 - which-typed-array: 1.1.22 - - which-collection@1.0.2: - dependencies: - is-map: 2.0.3 - is-set: 2.0.3 - is-weakmap: 2.0.2 - is-weakset: 2.0.4 - - which-typed-array@1.1.22: - dependencies: - available-typed-arrays: 1.0.7 - call-bind: 1.0.9 - call-bound: 1.0.4 - for-each: 0.3.5 - get-proto: 1.0.1 - gopd: 1.2.0 - has-tostringtag: 1.0.2 - - which@2.0.2: - dependencies: - isexe: 2.0.0 - - word-wrap@1.2.5: {} - - yallist@3.1.1: {} - - yn@3.1.1: {} - - yocto-queue@0.1.0: {} - - zod-to-json-schema@3.25.2(zod@3.25.76): - dependencies: - zod: 3.25.76 - - zod@3.25.76: {} - - zustand@4.5.7(@types/react@18.3.31)(immer@10.1.3)(react@18.3.1): - dependencies: - use-sync-external-store: 1.6.0(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.31 - immer: 10.1.3 - react: 18.3.1 - - zwitch@2.0.4: {} diff --git a/flowgram-editor/rsbuild.config.ts b/flowgram-editor/rsbuild.config.ts deleted file mode 100644 index 9cf314d..0000000 --- a/flowgram-editor/rsbuild.config.ts +++ /dev/null @@ -1,41 +0,0 @@ -/** - * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates - * SPDX-License-Identifier: MIT - */ - -import { pluginReact } from '@rsbuild/plugin-react'; -import { pluginLess } from '@rsbuild/plugin-less'; -import { defineConfig } from '@rsbuild/core'; - -export default defineConfig({ - plugins: [pluginReact(), pluginLess()], - source: { - entry: { - index: './src/app.tsx', - }, - /** - * support inversify @injectable() and @inject decorators - */ - decorators: { - version: 'legacy', - }, - }, - html: { - title: 'FlowGram Workflow Editor', - }, - output: { - assetPrefix: '/flowgram-editor/', - distPath: { - root: '../web/public/flowgram-editor', - }, - cleanDistPath: true, - }, - tools: { - rspack: { - /** - * ignore warnings from @coze-editor/editor/language-typescript - */ - ignoreWarnings: [/Critical dependency: the request of a dependency is an expression/], - }, - }, -}); diff --git a/flowgram-editor/src/app.tsx b/flowgram-editor/src/app.tsx deleted file mode 100644 index 4a88be6..0000000 --- a/flowgram-editor/src/app.tsx +++ /dev/null @@ -1,18 +0,0 @@ -/** - * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates - * SPDX-License-Identifier: MIT - */ - -import { createRoot } from 'react-dom/client'; -import { unstableSetCreateRoot } from '@flowgram.ai/form-materials'; - -import { Editor } from './editor'; - -/** - * React 18/19 polyfill for form-materials - */ -unstableSetCreateRoot(createRoot); - -const app = createRoot(document.getElementById('root')!); - -app.render(); diff --git a/flowgram-editor/src/assets/icon-auto-layout.tsx b/flowgram-editor/src/assets/icon-auto-layout.tsx deleted file mode 100644 index 420b4b3..0000000 --- a/flowgram-editor/src/assets/icon-auto-layout.tsx +++ /dev/null @@ -1,13 +0,0 @@ -/** - * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates - * SPDX-License-Identifier: MIT - */ - -export const IconAutoLayout = ( - - - -); diff --git a/flowgram-editor/src/assets/icon-break.jpg b/flowgram-editor/src/assets/icon-break.jpg deleted file mode 100644 index c06b1abeae17dac9d207d4d6c07866d5a7929d1e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28182 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 M|LJL2$9~NH4+%g8XaE2J diff --git a/flowgram-editor/src/assets/icon-cancel.tsx b/flowgram-editor/src/assets/icon-cancel.tsx deleted file mode 100644 index a1505da..0000000 --- a/flowgram-editor/src/assets/icon-cancel.tsx +++ /dev/null @@ -1,24 +0,0 @@ -/** - * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates - * SPDX-License-Identifier: MIT - */ - -interface Props { - className?: string; - style?: React.CSSProperties; -} - -export const IconCancel = ({ className, style }: Props) => ( - - - - -); diff --git a/flowgram-editor/src/assets/icon-comment.tsx b/flowgram-editor/src/assets/icon-comment.tsx deleted file mode 100644 index cc5d8dc..0000000 --- a/flowgram-editor/src/assets/icon-comment.tsx +++ /dev/null @@ -1,24 +0,0 @@ -/** - * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates - * SPDX-License-Identifier: MIT - */ - -import { CSSProperties, FC } from 'react'; - -interface IconCommentProps { - style?: CSSProperties; -} - -export const IconComment: FC = ({ style }) => ( - - - - -); diff --git a/flowgram-editor/src/assets/icon-condition.svg b/flowgram-editor/src/assets/icon-condition.svg deleted file mode 100644 index be9c2eb..0000000 --- a/flowgram-editor/src/assets/icon-condition.svg +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - diff --git a/flowgram-editor/src/assets/icon-continue.jpg b/flowgram-editor/src/assets/icon-continue.jpg deleted file mode 100644 index 095acb2910aede2240a430c77d1ccfb708ddb268..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38177 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 E0rJppy8r+H diff --git a/flowgram-editor/src/assets/icon-end.jpg b/flowgram-editor/src/assets/icon-end.jpg deleted file mode 100644 index 46bc47dd344943235af3e58c5c5379cbf0323734..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21016 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 - - diff --git a/flowgram-editor/src/assets/icon-llm.jpg b/flowgram-editor/src/assets/icon-llm.jpg deleted file mode 100644 index 4db9e0b7785f08a25601b3ea7c55103d34026fde..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11089 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 diff --git a/flowgram-editor/src/assets/icon-minimap.tsx b/flowgram-editor/src/assets/icon-minimap.tsx deleted file mode 100644 index ae45379..0000000 --- a/flowgram-editor/src/assets/icon-minimap.tsx +++ /dev/null @@ -1,24 +0,0 @@ -/** - * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates - * SPDX-License-Identifier: MIT - */ - -export const IconMinimap = () => ( - - - - - - -); diff --git a/flowgram-editor/src/assets/icon-mouse.tsx b/flowgram-editor/src/assets/icon-mouse.tsx deleted file mode 100644 index 17d879a..0000000 --- a/flowgram-editor/src/assets/icon-mouse.tsx +++ /dev/null @@ -1,41 +0,0 @@ -/** - * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates - * SPDX-License-Identifier: MIT - */ - -export function IconMouse(props: { width?: number; height?: number }) { - const { width, height } = props; - return ( - - - - ); -} - -export const IconMouseTool = () => ( - - - -); diff --git a/flowgram-editor/src/assets/icon-pad.tsx b/flowgram-editor/src/assets/icon-pad.tsx deleted file mode 100644 index 45cf741..0000000 --- a/flowgram-editor/src/assets/icon-pad.tsx +++ /dev/null @@ -1,56 +0,0 @@ -/** - * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates - * SPDX-License-Identifier: MIT - */ - -export function IconPad(props: { width?: number; height?: number }) { - const { width, height } = props; - return ( - - - - - ); -} - -export const IconPadTool = () => ( - - - - -); diff --git a/flowgram-editor/src/assets/icon-script.png b/flowgram-editor/src/assets/icon-script.png deleted file mode 100644 index 0c5beb7a192c5af02314aca1407d8395245c671f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3659 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 Cbfdul diff --git a/flowgram-editor/src/assets/icon-start.jpg b/flowgram-editor/src/assets/icon-start.jpg deleted file mode 100644 index 72a5a48e60a4b93f4cea42c9e2e45bd9c1a3f01f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20971 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 Q`RC+6A^02G^pDX$0Rx_1qW}N^ diff --git a/flowgram-editor/src/assets/icon-success.tsx b/flowgram-editor/src/assets/icon-success.tsx deleted file mode 100644 index 028a450..0000000 --- a/flowgram-editor/src/assets/icon-success.tsx +++ /dev/null @@ -1,37 +0,0 @@ -/** - * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates - * SPDX-License-Identifier: MIT - */ - -interface Props { - className?: string; - style?: React.CSSProperties; -} - -export const IconSuccessFill = ({ className, style }: Props) => ( - - - - - - - - - - - -); diff --git a/flowgram-editor/src/assets/icon-switch-line.tsx b/flowgram-editor/src/assets/icon-switch-line.tsx deleted file mode 100644 index 53ba1ff..0000000 --- a/flowgram-editor/src/assets/icon-switch-line.tsx +++ /dev/null @@ -1,15 +0,0 @@ -/** - * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates - * SPDX-License-Identifier: MIT - */ - -export const IconSwitchLine = ( - - - -); diff --git a/flowgram-editor/src/assets/icon-variable.png b/flowgram-editor/src/assets/icon-variable.png deleted file mode 100644 index 558ede149c154d661e3afc2d331b4c69180b1822..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3430 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 diff --git a/flowgram-editor/src/assets/icon-warning.tsx b/flowgram-editor/src/assets/icon-warning.tsx deleted file mode 100644 index d6c18ab..0000000 --- a/flowgram-editor/src/assets/icon-warning.tsx +++ /dev/null @@ -1,27 +0,0 @@ -/** - * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates - * SPDX-License-Identifier: MIT - */ - -interface Props { - className?: string; - style?: React.CSSProperties; -} - -export const IconWarningFill = ({ className, style }: Props) => ( - - - -); diff --git a/flowgram-editor/src/components/add-node/index.tsx b/flowgram-editor/src/components/add-node/index.tsx deleted file mode 100644 index 2d05305..0000000 --- a/flowgram-editor/src/components/add-node/index.tsx +++ /dev/null @@ -1,28 +0,0 @@ -/** - * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates - * SPDX-License-Identifier: MIT - */ - -import { Button } from '@douyinfe/semi-ui'; -import { IconPlus } from '@douyinfe/semi-icons'; - -import { useAddNode } from './use-add-node'; - -export const AddNode = (props: { disabled: boolean }) => { - const addNode = useAddNode(); - return ( - - ); -}; diff --git a/flowgram-editor/src/components/add-node/use-add-node.ts b/flowgram-editor/src/components/add-node/use-add-node.ts deleted file mode 100644 index 486c018..0000000 --- a/flowgram-editor/src/components/add-node/use-add-node.ts +++ /dev/null @@ -1,115 +0,0 @@ -/** - * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates - * SPDX-License-Identifier: MIT - */ -import { useCallback } from 'react'; - -import { NodePanelResult, WorkflowNodePanelService } from '@flowgram.ai/free-node-panel-plugin'; -import { - useService, - WorkflowDocument, - usePlayground, - PositionSchema, - WorkflowNodeEntity, - WorkflowSelectService, - WorkflowNodeJSON, - getAntiOverlapPosition, - WorkflowNodeMeta, - FlowNodeBaseType, -} from '@flowgram.ai/free-layout-editor'; -// hook to get panel position from mouse event - 从鼠标事件获取面板位置的 hook -const useGetPanelPosition = () => { - const playground = usePlayground(); - return useCallback( - (targetBoundingRect: DOMRect): PositionSchema => - // convert mouse position to canvas position - 将鼠标位置转换为画布位置 - playground.config.getPosFromMouseEvent({ - clientX: targetBoundingRect.left + 64, - clientY: targetBoundingRect.top - 7, - }), - [playground] - ); -}; -// hook to handle node selection - 处理节点选择的 hook -const useSelectNode = () => { - const selectService = useService(WorkflowSelectService); - return useCallback( - (node?: WorkflowNodeEntity) => { - if (!node) { - return; - } - // select the target node - 选择目标节点 - selectService.selectNode(node); - }, - [selectService] - ); -}; - -const getContainerNode = (selectService: WorkflowSelectService) => { - const { activatedNode } = selectService; - if (!activatedNode) { - return; - } - const { isContainer } = activatedNode.getNodeMeta(); - if (isContainer) { - return activatedNode; - } - const parentNode = activatedNode.parent; - if (!parentNode || parentNode.flowNodeType === FlowNodeBaseType.ROOT) { - return; - } - return parentNode; -}; - -// main hook for adding new nodes - 添加新节点的主 hook -export const useAddNode = () => { - const workflowDocument = useService(WorkflowDocument); - const nodePanelService = useService(WorkflowNodePanelService); - const selectService = useService(WorkflowSelectService); - const playground = usePlayground(); - const getPanelPosition = useGetPanelPosition(); - const select = useSelectNode(); - - return useCallback( - async (targetBoundingRect: DOMRect): Promise => { - // calculate panel position based on target element - 根据目标元素计算面板位置 - const panelPosition = getPanelPosition(targetBoundingRect); - const containerNode = getContainerNode(selectService); - await new Promise((resolve) => { - // call the node panel service to show the panel - 调用节点面板服务来显示面板 - nodePanelService.callNodePanel({ - position: panelPosition, - enableMultiAdd: true, - containerNode, - panelProps: {}, - // handle node selection from panel - 处理从面板中选择节点 - onSelect: async (panelParams?: NodePanelResult) => { - if (!panelParams) { - return; - } - const { nodeType, nodeJSON } = panelParams; - const position = Boolean(containerNode) - ? getAntiOverlapPosition(workflowDocument, { - x: 0, - y: 200, - }) - : undefined; - // create new workflow node based on selected type - 根据选择的类型创建新的工作流节点 - const node: WorkflowNodeEntity = workflowDocument.createWorkflowNodeByType( - nodeType, - position, // position undefined means create node in center of canvas - position undefined 可以在画布中间创建节点 - nodeJSON ?? ({} as WorkflowNodeJSON), - containerNode?.id - ); - select(node); - }, - // handle panel close - 处理面板关闭 - onClose: () => { - resolve(); - }, - }); - }); - }, - [getPanelPosition, nodePanelService, playground.config.zoom, workflowDocument, select] - ); -}; diff --git a/flowgram-editor/src/components/base-node/index.tsx b/flowgram-editor/src/components/base-node/index.tsx deleted file mode 100644 index 3e8660a..0000000 --- a/flowgram-editor/src/components/base-node/index.tsx +++ /dev/null @@ -1,49 +0,0 @@ -/** - * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates - * SPDX-License-Identifier: MIT - */ - -import { useCallback } from 'react'; - -import { FlowNodeEntity, useClientContext, useNodeRender } from '@flowgram.ai/free-layout-editor'; -import { ConfigProvider } from '@douyinfe/semi-ui'; - -import { NodeStatusBar } from '../testrun/node-status-bar'; -import { NodeRenderContext } from '../../context'; -import { ErrorIcon } from './styles'; -import { NodeWrapper } from './node-wrapper'; - -export const BaseNode = ({ node }: { node: FlowNodeEntity }) => { - /** - * Provides methods related to node rendering - * 提供节点渲染相关的方法 - */ - const nodeRender = useNodeRender(); - const ctx = useClientContext(); - /** - * It can only be used when nodeEngine is enabled - * 只有在节点引擎开启时候才能使用表单 - */ - const form = nodeRender.form; - - /** - * Used to make the Tooltip scale with the node, which can be implemented by itself depending on the UI library - * 用于让 Tooltip 跟随节点缩放, 这个可以根据不同的 ui 库自己实现 - */ - const getPopupContainer = useCallback( - () => ctx.playground.node.querySelector('.gedit-flow-render-layer') as HTMLDivElement, - [] - ); - - return ( - - - - {form?.state.invalid && } - {form?.render()} - - - - - ); -}; diff --git a/flowgram-editor/src/components/base-node/node-wrapper.tsx b/flowgram-editor/src/components/base-node/node-wrapper.tsx deleted file mode 100644 index 6f44a3b..0000000 --- a/flowgram-editor/src/components/base-node/node-wrapper.tsx +++ /dev/null @@ -1,83 +0,0 @@ -/** - * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates - * SPDX-License-Identifier: MIT - */ - -import React, { useState } from 'react'; - -import { WorkflowPortRender } from '@flowgram.ai/free-layout-editor'; -import { useClientContext } from '@flowgram.ai/free-layout-editor'; - -import { FlowNodeMeta } from '../../typings'; -import { useNodeFormPanel } from '../../plugins/panel-manager-plugin/hooks'; -import { useNodeRenderContext, usePortClick } from '../../hooks'; -import { scrollToView } from './utils'; -import { NodeWrapperStyle } from './styles'; - -export interface NodeWrapperProps { - isScrollToView?: boolean; - children: React.ReactNode; -} - -/** - * Used for drag-and-drop/click events and ports rendering of nodes - * 用于节点的拖拽/点击事件和点位渲染 - */ -export const NodeWrapper: React.FC = (props) => { - const { children, isScrollToView = false } = props; - const nodeRender = useNodeRenderContext(); - const { node, selected, startDrag, ports, selectNode, nodeRef, onFocus, onBlur, readonly } = - nodeRender; - const [isDragging, setIsDragging] = useState(false); - const form = nodeRender.form; - const ctx = useClientContext(); - const onPortClick = usePortClick(); - const meta = node.getNodeMeta(); - - const { open } = useNodeFormPanel(); - const portsRender = ports.map((p) => ( - - )); - - return ( - <> - { - startDrag(e); - setIsDragging(true); - }} - onTouchStart={(e) => { - startDrag(e as unknown as React.MouseEvent); - setIsDragging(true); - }} - onClick={(e) => { - selectNode(e); - if (!isDragging) { - open({ - nodeId: nodeRender.node.id, - }); - // 可选:将 isScrollToView 设为 true,可以让节点选中后滚动到画布中间 - // Optional: Set isScrollToView to true to scroll the node to the center of the canvas after it is selected. - if (isScrollToView) { - scrollToView(ctx, nodeRender.node); - } - } - }} - onMouseUp={() => setIsDragging(false)} - onFocus={onFocus} - onBlur={onBlur} - data-node-selected={String(selected)} - style={{ - ...meta.wrapperStyle, - outline: form?.state.invalid ? '1px solid red' : 'none', - }} - > - {children} - - {portsRender} - - ); -}; diff --git a/flowgram-editor/src/components/base-node/styles.tsx b/flowgram-editor/src/components/base-node/styles.tsx deleted file mode 100644 index f90a6d2..0000000 --- a/flowgram-editor/src/components/base-node/styles.tsx +++ /dev/null @@ -1,39 +0,0 @@ -/** - * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates - * SPDX-License-Identifier: MIT - */ - -import styled from 'styled-components'; -import { IconInfoCircle } from '@douyinfe/semi-icons'; - -export const NodeWrapperStyle = styled.div` - align-items: flex-start; - background-color: #fff; - border: 1px solid rgba(6, 7, 9, 0.15); - border-radius: 8px; - box-shadow: 0 2px 6px 0 rgba(0, 0, 0, 0.04), 0 4px 12px 0 rgba(0, 0, 0, 0.02); - display: flex; - flex-direction: column; - justify-content: center; - position: relative; - width: 360px; - height: auto; - - &.selected { - border: 1px solid #4e40e5; - } -`; - -export const ErrorIcon = () => ( - -); diff --git a/flowgram-editor/src/components/base-node/utils.ts b/flowgram-editor/src/components/base-node/utils.ts deleted file mode 100644 index b9d4737..0000000 --- a/flowgram-editor/src/components/base-node/utils.ts +++ /dev/null @@ -1,23 +0,0 @@ -/** - * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates - * SPDX-License-Identifier: MIT - */ - -import { FreeLayoutPluginContext, FlowNodeEntity } from '@flowgram.ai/free-layout-editor'; - -export function scrollToView( - ctx: FreeLayoutPluginContext, - node: FlowNodeEntity, - sidebarWidth = 448 -) { - const bounds = node.transform.bounds; - ctx.playground.scrollToView({ - bounds, - scrollDelta: { - x: sidebarWidth / 2, - y: 0, - }, - zoom: 1, - scrollToCenter: true, - }); -} diff --git a/flowgram-editor/src/components/comment/components/blank-area.tsx b/flowgram-editor/src/components/comment/components/blank-area.tsx deleted file mode 100644 index 3a4d6fc..0000000 --- a/flowgram-editor/src/components/comment/components/blank-area.tsx +++ /dev/null @@ -1,48 +0,0 @@ -/** - * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates - * SPDX-License-Identifier: MIT - */ - -import type { FC } from 'react'; - -import { useNodeRender, usePlayground } from '@flowgram.ai/free-layout-editor'; - -import type { CommentEditorModel } from '../model'; -import { DragArea } from './drag-area'; - -interface IBlankArea { - model: CommentEditorModel; -} - -export const BlankArea: FC = (props) => { - const { model } = props; - const playground = usePlayground(); - const { selectNode } = useNodeRender(); - - return ( -

- ); -}; diff --git a/flowgram-editor/src/components/comment/components/border-area.tsx b/flowgram-editor/src/components/comment/components/border-area.tsx deleted file mode 100644 index f353a8e..0000000 --- a/flowgram-editor/src/components/comment/components/border-area.tsx +++ /dev/null @@ -1,120 +0,0 @@ -/** - * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates - * SPDX-License-Identifier: MIT - */ - -import { type FC } from 'react'; - -import type { CommentEditorModel } from '../model'; -import { ResizeArea } from './resize-area'; -import { DragArea } from './drag-area'; - -interface IBorderArea { - model: CommentEditorModel; - overflow: boolean; - onResize?: () => { - resizing: (delta: { top: number; right: number; bottom: number; left: number }) => void; - resizeEnd: () => void; - }; -} - -export const BorderArea: FC = (props) => { - const { model, overflow, onResize } = props; - - return ( -
- {/* 左边 */} - - {/* 右边 */} - - {/* 上边 */} - - {/* 下边 */} - - {/** 左上角 */} - ({ top: y, right: 0, bottom: 0, left: x })} - onResize={onResize} - /> - {/** 右上角 */} - ({ top: y, right: x, bottom: 0, left: 0 })} - onResize={onResize} - /> - {/** 右下角 */} - ({ top: 0, right: x, bottom: y, left: 0 })} - onResize={onResize} - /> - {/** 左下角 */} - ({ top: 0, right: 0, bottom: y, left: x })} - onResize={onResize} - /> -
- ); -}; diff --git a/flowgram-editor/src/components/comment/components/container.tsx b/flowgram-editor/src/components/comment/components/container.tsx deleted file mode 100644 index c823d98..0000000 --- a/flowgram-editor/src/components/comment/components/container.tsx +++ /dev/null @@ -1,50 +0,0 @@ -/** - * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates - * SPDX-License-Identifier: MIT - */ - -import type { ReactNode, FC, CSSProperties } from 'react'; - -interface ICommentContainer { - focused: boolean; - children?: ReactNode; - style?: React.CSSProperties; -} - -export const CommentContainer: FC = (props) => { - const { focused, children, style } = props; - - const scrollbarStyle = { - // 滚动条样式 - scrollbarWidth: 'thin', - scrollbarColor: 'rgb(159 159 158 / 65%) transparent', - // 针对 WebKit 浏览器(如 Chrome、Safari)的样式 - '&:WebkitScrollbar': { - width: '4px', - }, - '&::WebkitScrollbarTrack': { - background: 'transparent', - }, - '&::WebkitScrollbarThumb': { - backgroundColor: 'rgb(159 159 158 / 65%)', - borderRadius: '20px', - border: '2px solid transparent', - }, - } as unknown as CSSProperties; - - return ( -
- {children} -
- ); -}; diff --git a/flowgram-editor/src/components/comment/components/content-drag-area.tsx b/flowgram-editor/src/components/comment/components/content-drag-area.tsx deleted file mode 100644 index 065a32d..0000000 --- a/flowgram-editor/src/components/comment/components/content-drag-area.tsx +++ /dev/null @@ -1,94 +0,0 @@ -/** - * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates - * SPDX-License-Identifier: MIT - */ - -import { type FC, useState, useEffect, type WheelEventHandler } from 'react'; - -import { useNodeRender, usePlayground } from '@flowgram.ai/free-layout-editor'; - -import type { CommentEditorModel } from '../model'; -import { DragArea } from './drag-area'; - -interface IContentDragArea { - model: CommentEditorModel; - focused: boolean; - overflow: boolean; -} - -export const ContentDragArea: FC = (props) => { - const { model, focused, overflow } = props; - const playground = usePlayground(); - const { selectNode } = useNodeRender(); - - const [active, setActive] = useState(false); - - useEffect(() => { - // 当编辑器失去焦点时,取消激活状态 - if (!focused) { - setActive(false); - } - }, [focused]); - - const handleWheel: WheelEventHandler = (e) => { - const editorElement = model.element; - if (active || !overflow || !editorElement) { - return; - } - e.stopPropagation(); - const maxScroll = editorElement.scrollHeight - editorElement.clientHeight; - const newScrollTop = Math.min(Math.max(editorElement.scrollTop + e.deltaY, 0), maxScroll); - editorElement.scroll(0, newScrollTop); - }; - - const handleMouseDown = (mouseDownEvent: React.MouseEvent) => { - if (active) { - return; - } - mouseDownEvent.preventDefault(); - mouseDownEvent.stopPropagation(); - model.setFocus(false); - selectNode(mouseDownEvent); - playground.node.focus(); // 防止节点无法被删除 - - const startX = mouseDownEvent.clientX; - const startY = mouseDownEvent.clientY; - - const handleMouseUp = (mouseMoveEvent: MouseEvent) => { - const deltaX = mouseMoveEvent.clientX - startX; - const deltaY = mouseMoveEvent.clientY - startY; - // 判断是拖拽还是点击 - const delta = 5; - if (Math.abs(deltaX) < delta && Math.abs(deltaY) < delta) { - // 点击后隐藏 - setActive(true); - } - document.removeEventListener('mouseup', handleMouseUp); - document.removeEventListener('click', handleMouseUp); - }; - - document.addEventListener('mouseup', handleMouseUp); - document.addEventListener('click', handleMouseUp); - }; - - return ( -
- -
- ); -}; diff --git a/flowgram-editor/src/components/comment/components/drag-area.tsx b/flowgram-editor/src/components/comment/components/drag-area.tsx deleted file mode 100644 index 0a2fbe6..0000000 --- a/flowgram-editor/src/components/comment/components/drag-area.tsx +++ /dev/null @@ -1,48 +0,0 @@ -/** - * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates - * SPDX-License-Identifier: MIT - */ - -import { CSSProperties, MouseEvent, TouchEvent, type FC } from 'react'; - -import { useNodeRender, usePlayground } from '@flowgram.ai/free-layout-editor'; - -import { type CommentEditorModel } from '../model'; - -interface IDragArea { - model: CommentEditorModel; - stopEvent?: boolean; - style?: CSSProperties; -} - -export const DragArea: FC = (props) => { - const { model, stopEvent = true, style } = props; - - const playground = usePlayground(); - - const { startDrag: onStartDrag, onFocus, onBlur, selectNode } = useNodeRender(); - - const handleDrag = (e: MouseEvent | TouchEvent) => { - if (stopEvent) { - e.preventDefault(); - e.stopPropagation(); - } - model.setFocus(false); - onStartDrag(e as MouseEvent); - selectNode(e as MouseEvent); - playground.node.focus(); // 防止节点无法被删除 - }; - - return ( -
- ); -}; diff --git a/flowgram-editor/src/components/comment/components/editor.tsx b/flowgram-editor/src/components/comment/components/editor.tsx deleted file mode 100644 index 669e939..0000000 --- a/flowgram-editor/src/components/comment/components/editor.tsx +++ /dev/null @@ -1,66 +0,0 @@ -/** - * Copyright (c) 2025 Bytedance Ltd. and/or its affiliates - * SPDX-License-Identifier: MIT - */ - -import { type FC, type CSSProperties, useEffect, useRef } from 'react'; - -import { usePlayground } from '@flowgram.ai/free-layout-editor'; - -import { CommentEditorModel } from '../model'; -import { usePlaceholder } from '../hooks'; -import { CommentEditorEvent } from '../constant'; - -interface ICommentEditor { - model: CommentEditorModel; - style?: CSSProperties; - value?: string; - onChange?: (value: string) => void; -} - -export const CommentEditor: FC = (props) => { - const { model, style, onChange } = props; - const playground = usePlayground(); - const placeholder = usePlaceholder({ model }); - const editorRef = useRef(null); - - // 同步编辑器内部值变化 - useEffect(() => { - const disposer = model.on((params) => { - if (params.type !== CommentEditorEvent.Change) { - return; - } - onChange?.(model.value); - }); - return () => disposer.dispose(); - }, [model, onChange]); - - useEffect(() => { - if (!editorRef.current) { - return; - } - model.element = editorRef.current; - }, [editorRef]); - - return ( -
-

{placeholder}

-