@stechquick/studio-cli 4.1.2-0 → 4.2.0-0-BETA-release-4.2.0-2026.9.9.8.51
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/common/agentic/compiler/src/definitions/VBreadcrumbs.js +389 -0
- package/dist/common/agentic/compiler/src/definitions/VBreadcrumbs.js.map +1 -0
- package/dist/common/agentic/compiler/src/definitions/VSnackbar.js +250 -0
- package/dist/common/agentic/compiler/src/definitions/VSnackbar.js.map +1 -0
- package/dist/common/agentic/compiler/src/definitions/VTreeview.js +309 -0
- package/dist/common/agentic/compiler/src/definitions/VTreeview.js.map +1 -0
- package/dist/common/agentic/compiler/src/omniScript/Compiler.js +19 -5
- package/dist/common/agentic/compiler/src/omniScript/Compiler.js.map +1 -1
- package/dist/common/agentic/compiler/src/system/ComponentDefinitionManager.js +6 -0
- package/dist/common/agentic/compiler/src/system/ComponentDefinitionManager.js.map +1 -1
- package/dist/common/agentic/compiler/src/system/ComponentStyleResolver.js.map +1 -1
- package/dist/common/agentic/compiler/src/system/LanguageManager.js +1 -1
- package/dist/common/agentic/compiler/src/system/LanguageManager.js.map +1 -1
- package/dist/common/agentic/modelFiles/frontmatter.js +6 -1
- package/dist/common/agentic/modelFiles/frontmatter.js.map +1 -1
- package/dist/common/agentic/modelFiles/jsonBody.js +21 -0
- package/dist/common/agentic/modelFiles/jsonBody.js.map +1 -0
- package/dist/common/agentic/modelFiles/modelFileTypes.js +3 -2
- package/dist/common/agentic/modelFiles/modelFileTypes.js.map +1 -1
- package/dist/common/agentic/qjsonBuild/validateStyles.js +22 -2
- package/dist/common/agentic/qjsonBuild/validateStyles.js.map +1 -1
- package/dist/common/helpers/aiKitResolver.js +1 -1
- package/dist/common/helpers/aiKitResolver.js.map +1 -1
- package/dist/common/qCloudTemp/quickCloud.js +1 -1
- package/dist/common/qCloudTemp/quickCloud.js.map +1 -1
- package/dist/quick/common/shrimp/interfaces/quick/IStore.js.map +1 -1
- package/dist/studio-cli/kits/ui-app-kit/.ai-kit/cli-kit/knowledge/buildqjson.md +1 -0
- package/dist/studio-cli/kits/ui-app-kit/.ai-kit/cli-kit/knowledge/sync.md +17 -0
- package/dist/studio-cli/kits/ui-app-kit/.ai-kit/index.md +12 -19
- package/dist/studio-cli/kits/ui-app-kit/.ai-kit/ui-kit/examples/README.md +2 -2
- package/dist/studio-cli/kits/ui-app-kit/.ai-kit/ui-kit/index.md +1 -1
- package/dist/studio-cli/kits/ui-app-kit/.ai-kit/ui-kit/knowledge/13-application.md +2 -2
- package/dist/studio-cli/kits/ui-app-kit/.ai-kit/ui-kit/knowledge/appSettings/appSettings.md +2 -2
- package/dist/studio-cli/kits/ui-app-kit/.ai-kit/ui-kit/knowledge/appSettings/component-list.md +2 -2
- package/dist/studio-cli/kits/ui-app-kit/.ai-kit/ui-kit/knowledge/appSettings/global-localization.md +1 -1
- package/dist/studio-cli/kits/ui-app-kit/.ai-kit/ui-kit/knowledge/appSettings/loading-component.md +1 -1
- package/dist/studio-cli/kits/ui-app-kit/.ai-kit/ui-kit/knowledge/appSettings/pipeline.md +1 -1
- package/dist/studio-cli/kits/ui-app-kit/.ai-kit/ui-kit/knowledge/appSettings/style-file.md +2 -2
- package/dist/studio-cli/kits/ui-app-kit/.ai-kit/ui-kit/knowledge/appSettings/theme.md +1 -1
- package/dist/studio-cli/kits/ui-app-kit/.ai-kit/ui-kit/knowledge/dynamic-components.md +146 -26
- package/dist/studio-cli/kits/ui-app-kit/.ai-kit/ui-kit/knowledge/validation.md +2 -1
- package/dist/studio-cli/kits/ui-app-kit/.ai-kit/ui-kit/legacy-track.md +1 -0
- package/dist/studio-cli/kits/ui-app-kit/.ai-kit/ui-kit/reference/component-catalog-legacy.md +1 -0
- package/dist/studio-cli/kits/ui-app-kit/.ai-kit/ui-kit/reference/component-catalog.md +6 -1
- package/dist/studio-cli/kits/ui-app-kit/.ai-kit/ui-kit/reference/component-contracts.json +3514 -1553
- package/dist/studio-cli/kits/ui-app-kit/.ai-kit/ui-kit/reference/component-styles.json +147 -1
- package/dist/studio-cli/kits/ui-app-kit/.ai-kit/ui-kit/s-track.md +1 -0
- package/dist/studio-cli/kits/ui-app-kit/.ai-kit/ui-kit/skills/quick-qjson/SKILL.md +10 -0
- package/dist/studio-cli/kits/ui-app-kit/.claude/settings.local.json +8 -0
- package/dist/studio-cli/kits/ui-app-kit/.claude/skills/figma-to-qjson/SKILL.md +1 -1
- package/dist/studio-cli/kits/ui-app-kit/.opencode/skills/figma-to-qjson/SKILL.md +1 -1
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/cli-kit/knowledge/buildqjson.md +35 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/cli-kit/knowledge/cli-bridge.md +97 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/cli-kit/knowledge/render-check.md +48 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/cli-kit/knowledge/sync.md +50 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/index.md +22 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/platform/models/constant-syntax.md +70 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/platform/models/dataSet-syntax.md +68 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/platform/models/dataType-syntax.md +275 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/platform/models/rest-service-syntax.md +190 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/platform/models/soap-service-syntax.md +186 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/platform/models/soap-service-v2-syntax.md +204 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/platform/modules-and-overrides.md +11 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/platform/modules.md +9 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/README.md +12 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/AllowdDates.qjson +122 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/Avatarlar.qjson +1084 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/BarChart.qjson +1061 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/BarChart_Type_Time_Sample.qjson +344 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/BottomSheetScrollWithHeaderInformation.qjson +1609 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/CardTitle.qjson +143 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/Charts_Custom_Legend_Sample.qjson +763 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/Charts_tooltipLabel_sample.qjson +631 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/CheckBoxQvalue.qjson +91 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/CheckboxDisabledExample.qjson +153 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/Click Outside.qjson +144 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/ComboBoxReset.qjson +839 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/ComboboxAddItemWithDialog.qjson +296 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/ComboboxAddItemWithTextField.qjson +186 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/ComboboxDefaultSelection.qjson +99 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/ComboboxWithTreeView.qjson +94 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/Combobox_SelectAll.qjson +704 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/ComponentsInteractionExamples.qjson +722 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/CookieExamples.qjson +828 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/CreateComponent_WithTransmitDataSource_Sample.qjson +749 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/Cryptography-with-ivKey.qjson +2159 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/Dashboard.qjson +1135 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/DataExamples.qjson +696 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/DataStorageExamples.qjson +1296 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/DataTable-Single-select-Multi-Select-TotalCalculation.qjson +441 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/DataTableAddRemoveItem.qjson +312 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/DataTableBoldHeader.qjson +34 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/DataTableEdit.qjson +422 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/DataTableFixedColumn.qjson +133 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/DataTableIndexExample.qjson +117 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/DataTableSearch.qjson +105 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/DataTableVerticalBorder.qjson +34 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/DataTableWithTooltip.qjson +354 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/DataTable_ChildButtonVisibleSample.qjson +892 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/DatePickerExampleApp (1).qjson +770 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/DatePickerInlineExample.qjson +299 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/DatePickerLocale.qjson +87 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/DatepickerDatenow.qjson +96 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/DatepickerExample.qjson +147 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/Detailed_Table_Row_Expand.qjson +388 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/Detailed_Table_Rows.qjson +114 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/DialogBlockSubPage.qjson +1014 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/DialogExample.qjson +420 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/DialogExampleWith/304/261con.qjson +345 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/DialogWithEagerProp.qjson +129 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/DoughnutChart.qjson +1005 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/Download.qjson +139 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/DxColumnChooser.qjson +341 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/DxColumnFixing.qjson +317 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/DxColumn_fix_allowFixing.qjson +466 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/DxDataGrid-DxExport.qjson +225 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/DxDataGrid-DxFilterRow.qjson +174 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/DxDataGrid-DxSearchPanel.qjson +170 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/DxDataGrid-columnAutoWidth.qjson +135 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/DxDataGridArrStoreLiveCon.qjson +201 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/DxDataGridArrStoreLiveConReason.qjson +290 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/DxDataGridExternalFilterCleaning.qjson +358 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/DxDataGridExternalFiltering.qjson +300 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/DxDataGridRowDragging.qjson +257 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/DxDatagrid_MultipleSelection.qjson +503 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/DxDatagrid_ServiceCall.qjson +204 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/DxDatagrid_SimplestGridWithArrayStore.qjson +215 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/DxDatagrid_SingleSelection.qjson +337 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/DxDatagrid_allowFixing.qjson +321 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/DxDatagrid_columnResizingMode.qjson +718 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/DxDatagrid_hoverStateEnabled.qjson +144 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/DxDatagrid_onCellClickEvent.qjson +147 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/DxDatagrid_width_menu.qjson +574 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/DxTreeListArrStoreLiveCon.qjson +302 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/DxTreelist-color.qjson +237 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/DxTreelist-columnreordering.qjson +241 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/DxTreelist-editing.qjson +1471 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/DxTreelist-extarnelfiltre.qjson +122 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/Expansion_Panels.qjson +298 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/FileInput.qjson +228 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/Frame_openHtmlContentInFrame.qjson +556 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/Highlight_datatable_select.qjson +53 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/Icon_Samples.qjson +148 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/Instructions.request.qjson +605 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/Intersect.qjson +423 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/LightBox.qjson +809 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/LineChart.qjson +1046 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/LineChart_Type_Time_Sample.qjson +340 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/ListExample.qjson +475 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/LoginPage.qjson +525 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/MMDelay.qjson +356 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/MMtrigger.qjson +195 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/NavigationDrawerExample.qjson +808 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/NavigationDrawerWithAppBar.qjson +1621 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/Parallax.qjson +381 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/PermanentStore_Example.qjson +1445 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/PieChart.qjson +1005 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/Profile_Card.qjson +345 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/ProgressLinear.qjson +547 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/QCaptcha.qjson +318 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/QDocumentViewer.qjson +41 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/QFrameAllowFullScreenExample.qjson +368 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/QFrameExample.qjson +117 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/QIdleTimer.qjson +100 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/QImgZoomRotate.qjson +428 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/QImgZoomTypeNextTo.qjson +187 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/QImgZoomTypeOn.qjson +187 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/QLabel_URL.qjson +105 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/QLabel_URL_Click.qjson +133 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/QLegend.qjson +501 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/QLegendBlock.qjson +732 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/QLegend_unchanged.qjson +746 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/QMapExample.qjson +785 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/QMenuExample.qjson +68 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/QOtp.qjson +979 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/QQRCode.qjson +295 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/QReCaptcha.qjson +361 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/QRichTextExample.qjson +139 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/QRichText_Cursor_Sample.qjson +352 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/QTutorialFinalDemo.qjson +494 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/QVideoExample.qjson +1135 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/Qlabel_Props.qjson +1591 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/Qmenu-Icon-Img-SizeandColor.qjson +244 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/Quick_Bind.qjson +110 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/Quick_Bind_Sample.qjson +172 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/Rating.qjson +101 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/RenderingComponent_Sample.qjson +1592 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/RequestExamples.qjson +680 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/ResetValidation-ResetUsage.qjson +1326 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/Resize.qjson +140 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/Ripple.qjson +431 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/Sparkline.qjson +386 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/State_storing.qjson +286 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/SwitchComponent.qjson +42 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/Table_Pagination.qjson +99 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/Table_Search.qjson +64 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/Table_Select.qjson +106 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/ToolTip_props.qjson +2649 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/TooltipDisplayOfVDataTableDataTotal.qjson +312 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/TreeViewExample.qjson +92 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/VAppBar.qjson +1681 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/VAutocompleteRegex.qjson +45 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/VBottomSheet.qjson +429 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/VCard.qjson +1945 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/VCombobox_customValidation.qjson +290 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/VDataTable-slot-columnVeriyeG/303/266reRenklendirme.qjson +493 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/VDataTableIconExample.qjson +116 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/VDataTableItemAggregation.qjson +499 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/VDataTable_Change_FooterPageText.qjson +107 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/VDataTable_Multiple_Select_Control.qjson +50 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/VDataTable_SetGetComboboxValue_.qjson +148 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/VDataTable_SetItemSelect_GetSelection.qjson +627 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/VDataTable_SlotInstances.qjson +362 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/VDataTable_Validation.qjson +226 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/VDataTable_With_QTableCell_Sample.qjson +281 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/VDataTable_customSearchFilter.qjson +255 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/VDataTable_firstColumn_fixedActionsColumn.qjson +216 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/VDataTable_uniqueSlot_itemKey_Object.qjson +545 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/VDatePicker_AllowdDates.qjson +89 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/VDialog.qjson +3512 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/VExpansionPanel_UsageAndProps.qjson +3811 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/VFileInput-Slot-VIcon-Dolu.qjson +232 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/VFileInputGetUploadedContent.qjson +111 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/VFileInput_ImagePicker.qjson +308 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/VFooter.qjson +1480 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/VForm.qjson +410 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/VFormActionExample.qjson +2289 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/VInlineDatePicker_titleDateFormat.qjson +319 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/VInlineDatepickerMaxMin.qjson +36 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/VInlineDatepickerReset.qjson +88 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/VInlineTimePicker.qjson +149 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/VListGroup.qjson +1817 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/VList_NavigationMenu.qjson +1636 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/VMenu_PopoverInTable.qjson +534 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/VMenu_sample.qjson +470 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/VStepperExample.qjson +748 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/VStepper_vertical.qjson +364 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/VSteppers_EditableNonLinear.qjson +658 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/VSteppers_LinearWithContinueButton.qjson +719 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/VTextFieldQuickInputFormat.qjson +40 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/VTextFieldValidation.qjson +1087 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/VTextField_FocusExample.qjson +329 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/VTextField_Validation_examples.qjson +877 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/VTextField_customValidation.qjson +159 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/VTextField_formatValueSample1.qjson +40 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/VTextField_formatValueSapmle2.qjson +40 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/VTextField_formatValue_exceptLetters.qjson +40 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/VTextField_formatValue_specialChars.qjson +40 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/VTextField_keyDown.qjson +37 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/VTextField_rangeOfNumber_validation.qjson +55 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/VTextareaQuickInputFormat.qjson +37 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/VTextarea_format_regex_sample.qjson +321 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/VTimelineExample.qjson +322 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/Vcontainer.qjson +417 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/VinlineDatePicker.qjson +61 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/V/304/261nlineDatepickerDeleteValue.qjson +304 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/alert.qjson +459 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/alertSamplePage.qjson +455 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/authorizationDashboard.qjson +24914 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/badge copy.qjson +158 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/badge.qjson +158 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/bottomSheetScrollable.qjson +3220 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/breadcrumbs.qjson +587 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/button.qjson +1765 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/cellTemplate.qjson +76 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/combobox.qjson +90 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/comboboxSelected.qjson +118 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/createChildren.qjson +406 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/createClosedPanes.qjson +245 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/creditcard.qjson +28 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/crypto.qjson +5965 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/customFilterUsingCalculateFilterExpressionEvent.qjson +305 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/customStore.qjson +156 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/dataTableFormatColumn.qjson +151 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/data_table_component_access.qjson +130 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/datagridAddDynamicColumn.qjson +1381 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/datatableAddandDeleteItem.qjson +1195 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/deleteComponent.qjson +533 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/divider.qjson +185 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/dxColumncssClass.qjson +249 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/dxDataGridAddinEditingDeleting.qjson +486 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/dxDataGridLines.qjson +120 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/dxDataGridRemove.qjson +216 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/dxDatagridHeatMap.qjson +334 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/dxDatagridUpdate.qjson +80 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/dxMasterDetail.qjson +261 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/dxPaging_withServiceCall.qjson +159 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/dxRowDragging.qjson +179 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/dxSummary_dxTotalItem_usage.qjson +219 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/dxTotalItemCustomizeText.qjson +226 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/dxTreeList_exportToExcel.qjson +266 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/dynamicComp.qjson +162 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/efficientTreeviewSearchforLargeDatasets.qjson +736 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/email.qjson +29 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/encoding.qjson +304 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/encryptedStorage_Sample.qjson +596 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/fileInput-1.qjson +904 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/fileUploadBlockComponent.qjson +68 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/fileUploadServiceCallBlockComp.qjson +128 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/findAndDeleteRelatedDynamicComp.qjson +211 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/first.qjson +57 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/fixedActionsColumn.qjson +133 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/formatWithFormatType.qjson +1740 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/getComponent_example.qjson +491 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/globalLocalization.qjson +189 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/goldenLayout.qjson +228 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/images.qjson +1461 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/list.qjson +162 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/localization_AddLanguageRTL_Sample.qjson +1192 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/newCustomerRegister.qjson +2598 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/number.qjson +41 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/number_VTextarea.qjson +37 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/onlyAlphabetic.qjson +32 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/parentPage.qjson +292 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/pipeline.qjson +77 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/pipelineSample.qjson +422 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/placeQidDynamic.qjson +193 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/progress-circular.qjson +1056 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/qtimer.qjson +335 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/radioGroupGetValues.qjson +125 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/region_definition_example.qjson +580 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/resetAndResetValidationUsage.qjson +1827 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/responsive1.qjson +312 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/responsive2.qjson +312 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/responsive3.qjson +1546 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/scrollButton.qjson +331 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/scrollDirective.qjson +297 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/selectedRow-propertyDisable.qjson +238 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/serviceCallerBlockComponent.qjson +63 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/sheet.qjson +149 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/slider.qjson +81 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/snackbars.qjson +2454 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/sso.qjson +260 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/subPage.qjson +710 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/tab.qjson +271 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/tableadditem.qjson +125 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/themeExamplePage.qjson +876 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/tiffImage.qjson +315 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/timePicker.qjson +452 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/treeview.qjson +156 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/treeview2.qjson +503 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/uniqueRowSlots.qjson +226 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/vMenu.qjson +212 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/vcarousel.qjson +659 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/cssClass/vdatatable_slots_with_custom_validation_usage.qjson +1585 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/style/AllowdDates.qjson +126 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/style/BarChartEvents.qjson +323 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/style/BarChartTitle.qjson +411 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/style/BarChartYTicks.qjson +399 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/style/BarChart_TicksCallback.qjson +309 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/style/CalendarClickMoreExample.qjson +2 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/style/CalendarUsageExample.qjson +2 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/style/ChartLegendFont.qjson +788 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/style/DataTable_customSort.qjson +277 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/style/DocumentViewer_tiff_Sample.qjson +927 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/style/DoughnutChartEvents.qjson +243 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/style/DxDataGrid_CustomStore.qjson +267 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/style/Icon_Samples.qjson +181 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/style/Instructions.request.qjson +584 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/style/Intersect.qjson +404 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/style/LightBox.qjson +777 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/style/LineChart.qjson +1049 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/style/LineChartEvents.qjson +327 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/style/LineChartPointProps.qjson +416 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/style/LineChart_TicksCallback.qjson +309 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/style/LineChart_Type_Time_Sample.qjson +342 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/style/MMDelay.qjson +384 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/style/MMtrigger.qjson +209 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/style/NavigationDrawerExample.qjson +899 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/style/NavigationDrawerWithAppBar.qjson +1647 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/style/Parallax.qjson +416 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/style/PieChart.qjson +1103 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/style/QCaptcha.qjson +409 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/style/QDocumentViewer.qjson +149 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/style/QFrameAllowFullScreenExample.qjson +360 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/style/QFrameExample.qjson +213 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/style/QIdleTimer.qjson +221 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/style/QImgZoomRotate.qjson +432 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/style/QImgZoomTypeNextTo.qjson +196 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/style/QImgZoomTypeOn.qjson +196 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/style/QLabel_URL_Click_SendParams.qjson +477 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/style/VList_NavMenu.qjson +3008 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/style/alertSamplePage.qjson +450 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/style/authorizationDashboard.qjson +24914 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/style/badge.qjson +151 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/style/bottomSheetScrollable.qjson +3120 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/style/breadcrumbs.qjson +563 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/style/button.qjson +1658 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/style/cellTemplate.qjson +96 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/style/combobox.qjson +109 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/style/comboboxSelected.qjson +119 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/style/createChildren.qjson +411 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/style/createClosedPanes.qjson +265 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/style/creditcard.qjson +49 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/style/crypto.qjson +5632 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/style/customFilterUsingCalculateFilterExpressionEvent.qjson +301 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/style/customStore.qjson +157 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/style/dataTableFormatColumn.qjson +151 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/style/data_table_component_access.qjson +130 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/style/datagridAddDynamicColumn.qjson +1381 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/style/datatableAddandDeleteItem.qjson +1195 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/style/datatable_selectable_feature_select_unselect_usage.qjson +300 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/style/deleteComponent.qjson +501 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/style/divider.qjson +180 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/style/dxColumncssClass.qjson +249 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/style/dxDataGridAddinEditingDeleting.qjson +486 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/style/dxDataGridLines.qjson +121 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/style/dxDataGridRemove.qjson +209 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/style/dxDatagridHeatMap.qjson +335 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/style/dxDatagridUpdate.qjson +80 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/style/dxMasterDetail.qjson +257 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/style/dxPaging_withServiceCall.qjson +160 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/style/dxRowDragging.qjson +175 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/style/dxSummary_dxTotalItem_usage.qjson +215 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/style/dxTotalItemCustomizeText.qjson +222 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/style/dxTreeList_exportToExcel.qjson +267 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/style/dynamicComp.qjson +156 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/style/efficientTreeviewSearchforLargeDatasets.qjson +736 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/style/email.qjson +177 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/style/encoding.qjson +304 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/style/encryptedStorage_Sample.qjson +596 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/style/exportToXlsx_Sample.qjson +1956 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/style/images.qjson +1379 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/style/images_olddd.qjson +1366 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/style/newCustomerRegister.qjson +2598 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/style/number.qjson +169 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/style/number_VTextarea.qjson +163 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/style/onlyAlphabetic.qjson +164 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/style/parentPage.qjson +351 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/style/pipeline.qjson +78 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/style/pipelineSample.qjson +410 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/style/placeQidDynamic.qjson +289 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/style/progress-circular.qjson +1014 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/style/samplePageLottie.qjson +696 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/style/server-SideAutocompleteHandling.qjson +696 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/examples/style/xlsxToJson_Sample.qjson +772 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/index.md +87 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/knowledge/13-application.md +164 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/knowledge/appSettings/alert-component.md +91 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/knowledge/appSettings/appSettings.md +204 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/knowledge/appSettings/component-list.md +63 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/knowledge/appSettings/container-services-file.md +71 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/knowledge/appSettings/container-services-intellisense.md +42 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/knowledge/appSettings/global-localization.md +78 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/knowledge/appSettings/loading-component.md +61 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/knowledge/appSettings/local-proxy-file.md +62 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/knowledge/appSettings/pipeline.md +139 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/knowledge/appSettings/settings-file.md +66 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/knowledge/appSettings/style-file.md +58 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/knowledge/appSettings/theme.md +58 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/knowledge/components.md +97 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/knowledge/dynamic-components.md +169 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/knowledge/events-and-scripting.md +79 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/knowledge/layout-and-slots-legacy.md +72 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/knowledge/layout-and-slots.md +64 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/knowledge/localization.md +40 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/knowledge/page-skeletons-legacy.md +83 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/knowledge/page-skeletons.md +111 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/knowledge/properties.md +77 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/knowledge/qjson-structure-legacy.md +65 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/knowledge/qjson-structure.md +67 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/knowledge/services.md +68 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/knowledge/styling-legacy.md +73 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/knowledge/styling.md +177 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/knowledge/validation-legacy.md +49 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/knowledge/validation.md +56 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/legacy-track.md +29 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/reference/component-catalog-legacy.md +121 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/reference/component-catalog.md +140 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/reference/component-contracts.json +16920 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/reference/component-index.json +358 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/reference/component-styles.json +7128 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/reference/events-system.md +96 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/reference/layout-system.md +99 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/reference/mapping-S-vuetify-class.md +103 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/reference/qjson-schema-legacy.md +189 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/reference/qjson-schema.md +188 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/reference/quick-api.json +2085 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/reference/quick-api.md +284 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/reference/styling-system.md +193 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/s-track.md +30 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/ui-kit/skills/quick-qjson/SKILL.md +10 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/workflow-kit/index.md +70 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/workflow-kit/models/access-manager/persona-syntax.md +67 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/workflow-kit/models/access-manager/privilege-syntax.md +69 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/workflow-kit/models/access-manager/role-syntax.md +103 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/workflow-kit/models/access-manager/swimlane-syntax.md +65 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/workflow-kit/models/action-syntax.md +90 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/workflow-kit/models/app-settings-syntax.md +37 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/workflow-kit/models/auth-syntax.md +118 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/workflow-kit/models/decision-table-syntax.md +115 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/workflow-kit/models/flow/flow-syntax.md +203 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/workflow-kit/models/flow/quirks.md +35 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/workflow-kit/models/flow/steps/addActivity.md +30 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/workflow-kit/models/flow/steps/code.md +73 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/workflow-kit/models/flow/steps/collection.md +34 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/workflow-kit/models/flow/steps/counter.md +23 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/workflow-kit/models/flow/steps/dbEntity.md +52 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/workflow-kit/models/flow/steps/decisionTable.md +27 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/workflow-kit/models/flow/steps/end.md +16 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/workflow-kit/models/flow/steps/restServiceCall.md +33 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/workflow-kit/models/flow/steps/s3FileDelete.md +27 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/workflow-kit/models/flow/steps/s3FileDownload.md +27 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/workflow-kit/models/flow/steps/s3FileUpload.md +48 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/workflow-kit/models/flow/steps/set.md +37 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/workflow-kit/models/flow/steps/soapServiceCall.md +5 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/workflow-kit/models/flow/steps/soapServiceCallV2.md +39 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/workflow-kit/models/flow/steps/start.md +18 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/workflow-kit/models/flow/steps/subFlow.md +32 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/workflow-kit/models/flow/steps/switch.md +74 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/workflow-kit/models/flow/steps/wait.md +25 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/workflow-kit/models/sla-syntax.md +149 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/workflow-kit/models/workflow/steps/end.md +24 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/workflow-kit/models/workflow/steps/start.md +17 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/workflow-kit/models/workflow/steps/subFlow.md +10 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/workflow-kit/models/workflow/steps/subWorkflow.md +30 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/workflow-kit/models/workflow/steps/switch.md +7 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/workflow-kit/models/workflow/steps/usertask.md +71 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/workflow-kit/models/workflow/workflow-syntax.md +218 -0
- package/dist/studio-cli/kits/wf-app-kit/.ai-kit/workflow-kit/models/workflow-ui-pages.md +199 -0
- package/dist/studio-cli/kits/wf-app-kit/.claude/skills/figma-to-qjson/SKILL.md +116 -0
- package/dist/studio-cli/kits/wf-app-kit/.claude/skills/quick-qjson/SKILL.md +10 -0
- package/dist/studio-cli/kits/wf-app-kit/.opencode/skills/figma-to-qjson/SKILL.md +116 -0
- package/dist/studio-cli/kits/wf-app-kit/.opencode/skills/quick-qjson/SKILL.md +10 -0
- package/dist/studio-cli/kits/wf-app-kit/AGENTS.md +20 -0
- package/dist/studio-cli/kits/wf-app-kit/CLAUDE.md +20 -0
- package/dist/studio-cli/src/control/pull.js +6 -11
- package/dist/studio-cli/src/control/pull.js.map +1 -1
- package/dist/studio-cli/src/index.js +2 -2
- package/dist/studio-cli/src/index.js.map +1 -1
- package/dist/studio-cli/src/isolatedCommands/qjsonBuild.js +3 -3
- package/dist/studio-cli/src/isolatedCommands/qjsonBuild.js.map +1 -1
- package/dist/studio-cli/src/server/bridgeServer.js +77 -15
- package/dist/studio-cli/src/server/bridgeServer.js.map +1 -1
- package/dist/studio-cli/src/server/peer.js +17 -0
- package/dist/studio-cli/src/server/peer.js.map +1 -1
- package/dist/studio-cli/src/server/wsRaw.js +26 -5
- package/dist/studio-cli/src/server/wsRaw.js.map +1 -1
- package/dist/studio-cli/src/version.js +1 -1
- package/dist/studio-cli/src/version.js.map +1 -1
- package/package.json +1 -1
- package/dist/studio-cli/kits/wf-kit/.ai-kit/coming-soon.md +0 -0
- package/dist/studio-cli/kits/wf-kit/AGENTS.md +0 -0
- package/dist/studio-cli/kits/wf-kit/CLAUDE.md +0 -0
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: figma-to-qjson
|
|
3
|
+
description: Reconstruct a Quick / Plateau Studio .qjson page from a Figma design (a Figma selection URL). If the design isn't fetched yet, run the `studio figmaPull` command to populate a local .figma/ folder (node.json, file.json, render.json, imagefills.json, assets/*.svg), then turn that raw Figma node tree into a real qjson page. Use whenever the task is to convert a Figma frame/selection into a qjson page. Covers fetching via the `studio figmaPull` command, the Figma→qjson mapping rules, the geometry/style extraction recipe, the rect+text control-clustering heuristic, and asset handling. Delegates all qjson-authoring detail to the quick-qjson skill + the ui-kit package.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Figma → QJSON reconstruction
|
|
7
|
+
|
|
8
|
+
This skill turns a Figma design into a **Quick `.qjson` page**. The raw Figma responses live in a local **`.figma/`** folder; you produce that folder by **running the `studio figmaPull` command** (which wraps `figmaPull(url, token)`). This skill never calls the Figma API directly — it runs the command, then reads what the command wrote.
|
|
9
|
+
|
|
10
|
+
It owns only the **translation knowledge** (Figma node tree → qjson components). For everything about *authoring* qjson (schema, props, styling, validation, project conventions) it defers to the **`quick-qjson`** skill and the **`ui-kit/`** folder in your workspace (e.g. `.ai-kit/ui-kit/index.md`) — read those; do not re-derive them here.
|
|
11
|
+
|
|
12
|
+
## Get the design first (run `studio figmaPull`)
|
|
13
|
+
Before the translation workflow below, you need the raw Figma responses in `.figma/`. Get them by running the **`studio figmaPull` command** (the CLI that wraps `figmaPull(url, token)` — it extracts `fileKey` + `node-id` from the URL itself):
|
|
14
|
+
|
|
15
|
+
- If `.figma/` is already present and current for the design you want → just read `.figma/manifest.json` and continue.
|
|
16
|
+
- Otherwise **run the command yourself** (don't wait for the user to pre-fetch). The URL and token are **positional arguments**, in that order; `-d, --dir <dir>` optionally picks the workspace whose `.figma/` receives the output (defaults to the current directory):
|
|
17
|
+
```
|
|
18
|
+
studio figmaPull "<figma-url>" "<token>"
|
|
19
|
+
```
|
|
20
|
+
- **Parameters — resolve, don't block:**
|
|
21
|
+
- **URL**: take the Figma *selection* link from the user's message / context; if it isn't there, **ask the user** (AskUserQuestion: "paste the Figma 'Copy link to selection'"). Don't guess it.
|
|
22
|
+
- **Token**: a Figma personal access token, passed as the **second positional argument**. The command has no env/config fallback, so you must supply it explicitly; ask the user once if you don't have it, never hardcode.
|
|
23
|
+
- The command writes `.figma/node.json`, `file.json`, `render.json`, `imagefills.json`, `manifest.json` (+ `assets/*.svg`). **Read `manifest.json` first** — if its `node` endpoint failed (403 token / 404 file·node), surface that error and stop; don't proceed on a bad fetch.
|
|
24
|
+
|
|
25
|
+
Inputs you'll then use, as needed:
|
|
26
|
+
- `.figma/node.json` — the target frame's full node tree (primary input).
|
|
27
|
+
- `.figma/file.json` — whole-file tree (styles, components — fallback/context).
|
|
28
|
+
- `.figma/render.json` — `{images:{<nodeId>: <svg-url>}}` for vector/icon render.
|
|
29
|
+
- `.figma/imagefills.json` — `imageRef → URL` map for IMAGE fills.
|
|
30
|
+
- `.figma/assets/*.svg` — downloaded SVGs (if the command saved them).
|
|
31
|
+
|
|
32
|
+
## Workflow (the same process a human reviewer would follow)
|
|
33
|
+
|
|
34
|
+
### 0. Load + triage
|
|
35
|
+
Read `node.json`, grab the fetched frame, and get a shape-of-the-page read: node-type counts, max depth, **auto-layout usage**, and all TEXT content. This decides the page kind (login / form / list / landing…) and whether it maps cleanly.
|
|
36
|
+
|
|
37
|
+
```python
|
|
38
|
+
import json, collections
|
|
39
|
+
doc = next(iter(json.load(open('.figma/node.json'))['nodes'].values()))['document']
|
|
40
|
+
types, lm, texts = collections.Counter(), collections.Counter(), []
|
|
41
|
+
def walk(n):
|
|
42
|
+
types[n['type']] += 1
|
|
43
|
+
if n['type'] == 'FRAME': lm[n.get('layoutMode','NONE')] += 1
|
|
44
|
+
if n['type'] == 'TEXT': texts.append(n.get('characters','')[:40])
|
|
45
|
+
for c in n.get('children', []): walk(c)
|
|
46
|
+
walk(doc)
|
|
47
|
+
print('types', dict(types)); print('layoutMode', dict(lm)); print('texts', texts)
|
|
48
|
+
```
|
|
49
|
+
> Many frames with `layoutMode` HORIZONTAL/VERTICAL → the layout maps cleanly to `VRow`/`VCol`. Many `NONE` (absolute) → you must reconstruct structure from geometry (step 2–3).
|
|
50
|
+
|
|
51
|
+
### 1. Extract per-node geometry + style
|
|
52
|
+
For each visible node, pull **frame-relative** `x,y,w,h`, fill hex, font size/weight/color, and `cornerRadius`. This table is what tells you "what each thing is".
|
|
53
|
+
|
|
54
|
+
```python
|
|
55
|
+
root = doc['absoluteBoundingBox']; rx, ry = root['x'], root['y']
|
|
56
|
+
def hexfill(n):
|
|
57
|
+
for f in (n.get('fills') or []):
|
|
58
|
+
if f.get('type') == 'SOLID':
|
|
59
|
+
c = f['color']; return '#%02x%02x%02x' % (int(c['r']*255), int(c['g']*255), int(c['b']*255))
|
|
60
|
+
return None
|
|
61
|
+
def walk(n, d=0):
|
|
62
|
+
bb = n.get('absoluteBoundingBox') or {}
|
|
63
|
+
x = (bb.get('x',0)-rx) if 'x' in bb else None; y = (bb.get('y',0)-ry) if 'y' in bb else None
|
|
64
|
+
st = n.get('style', {})
|
|
65
|
+
print(' '*d, n['type'], n.get('name'),
|
|
66
|
+
f"({x},{y}) {bb.get('width')}x{bb.get('height')}" if x is not None else '',
|
|
67
|
+
'|', repr(n.get('characters','')[:30]) if n['type']=='TEXT' else '',
|
|
68
|
+
'fz', st.get('fontSize'), 'fw', st.get('fontWeight'),
|
|
69
|
+
'fill', hexfill(n), 'r', n.get('cornerRadius'))
|
|
70
|
+
for c in n.get('children', []): walk(c, d+1)
|
|
71
|
+
walk(doc)
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### 2. Detect the *real* visible background
|
|
75
|
+
The frame's own `fills` may just be the **artboard** color, not what the user sees. Look for a **full-bleed shape** (a RECTANGLE/VECTOR roughly the frame's size, drawn first/behind) — its fill is the real page background. (Tell-tale: dark text only makes sense on a light background.) Use that for `Messaging.pageBackgroundColor` and container backgrounds.
|
|
76
|
+
|
|
77
|
+
### 3. Cluster loose elements into controls
|
|
78
|
+
Figma often keeps a button's **background rect** and its **label text** as *separate siblings*. Infer a single control when a TEXT's center lies **within a RECTANGLE's bounds** (and they're adjacent in z-order). One rect + one text inside it = one button or one input — not two components.
|
|
79
|
+
|
|
80
|
+
### 4. Map each control → qjson (the rules)
|
|
81
|
+
|
|
82
|
+
| Figma pattern | → qjson | Decisive signal |
|
|
83
|
+
|---|---|---|
|
|
84
|
+
| auto-layout FRAME, `VERTICAL` / `HORIZONTAL` | stacked `VRow`s / a `VRow` of `VCol`s | `layoutMode` |
|
|
85
|
+
| plain TEXT | `QLabel` (`text` PType `prop`) | — |
|
|
86
|
+
| TEXT whose chars are PUA glyphs (U+F0000+) | `VIcon` (icon name, PType `text`) | codepoint → `mdi-*` name |
|
|
87
|
+
| large bold TEXT near top | title `QLabel` | fontSize/weight |
|
|
88
|
+
| rounded rect (high `cornerRadius`) + **centered, light** text inside | **filled** `VBtn` → child `QLabel`; rect fill → `S.backgroundColor` | rect has a solid fill |
|
|
89
|
+
| rounded rect, `fill=none` + stroke, text inside | `VBtn` `outlined` | no fill, has stroke |
|
|
90
|
+
| white/light rounded rect + **gray** text inside | `VTextField` (the gray text → `placeholder`) | inner text is a muted color |
|
|
91
|
+
| field whose name/label is "şifre"/"password"/"pin" | + `type='password'` | text content |
|
|
92
|
+
| small, right-aligned text link | `VBtn` `text` (link) → `QLabel` | alignment + size |
|
|
93
|
+
| custom VECTOR group (logo/illustration) | `VImg` from an asset (see step 5) | type VECTOR/GROUP, not a glyph |
|
|
94
|
+
| IMAGE fill (`imageRef`) | `VImg`, URL from `imagefills.json` | fill type IMAGE |
|
|
95
|
+
|
|
96
|
+
Pick real props/events/styles from **`ui-kit/reference/component-contracts.json`** and **`component-styles.json`** — never invent. Convert px → the kit's responsive grid (`col`, `S` blocks); do **not** reproduce absolute pixel coordinates.
|
|
97
|
+
|
|
98
|
+
### 5. Assets (vectors / logos)
|
|
99
|
+
A deployed Quick app can't read local SVGs or Figma's expiring S3 URLs. So:
|
|
100
|
+
- If there is an asset pipeline / CDN, upload `.figma/assets/<id>.svg` and reference it via `VImg`.
|
|
101
|
+
- Otherwise insert a **`VIcon` placeholder** in the right spot and **flag in the report** that the real logo must be exported (`render.json` URL → `.figma/assets/`) and uploaded as a Studio asset. Don't silently drop it.
|
|
102
|
+
|
|
103
|
+
### 6. Author the qjson
|
|
104
|
+
Hand off to **`quick-qjson`**: build top-down `Messaging → VContainer > VRow > VCol > content`, mirror a sibling page in the workspace for ID style and `S`-block shape, author `pJson`/`lrids` only (omit `cJson`/`clrids` entirely — never write them, strip if present). Wire obvious behavior (e.g. a login button → a `Messaging` event that reads `components.<id>.qValue` and `quick.Quick.alert(...)`).
|
|
105
|
+
|
|
106
|
+
### 7. Validate + report
|
|
107
|
+
`studio buildQjson <file>` — fix every error. Then report: the new file, the **mapping decisions** (what each Figma element became), any **assumptions** (background, clustering, responsive sizing), **assets needing manual upload**, and the validation result.
|
|
108
|
+
|
|
109
|
+
## Gotchas (these trip up naive conversions)
|
|
110
|
+
- **Artboard ≠ background.** Use the full-bleed shape's fill, not `frame.fills`.
|
|
111
|
+
- **Separate rect + text = one control.** Cluster by spatial containment before mapping.
|
|
112
|
+
- **PUA-glyph TEXT is an icon**, not a label → `VIcon` (map the codepoint to an `mdi-*` name).
|
|
113
|
+
- **Gray inner text in a white field = placeholder**, not a value.
|
|
114
|
+
- **Absolute (`NONE`) layout** still becomes semantic `VRow/VCol`; reconstruct order/grouping from `y` then `x`. Never emit pixel coordinates.
|
|
115
|
+
- **Big visual pages**: don't convert in one shot — 1–3 sections per edit (per the quick-qjson rules).
|
|
116
|
+
```
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: quick-qjson
|
|
3
|
+
description: Create, edit, review, style, or validate Quick / Plateau Studio .qjson UI pages. Load this skill for ANY task that touches a file with the .qjson extension — building a new page, editing or fixing an existing one (even a one-line tweak or typo fix), styling/layout changes, events/scripting, services, localization, or validation. Also load it the moment you encounter a .qjson file mid-task, even if the request never mentions qjson. Covers the qjson schema, the quick.* scripting API, the component registry, and the styling/layout/events systems.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Quick QJSON authoring
|
|
7
|
+
|
|
8
|
+
The complete, source-grounded knowledge for **Quick / Plateau Studio `.qjson`** UI pages lives in the **`ui-kit/`** folder — locate it in your workspace (e.g. `.ai-kit/ui-kit/`) and treat it as authoritative over any prior assumptions about Quick.
|
|
9
|
+
|
|
10
|
+
**Read `ui-kit/index.md` and follow it.** Its Step 0 routes you to the right style track (`S` vs legacy — never mixed on a page), its non-negotiable rules apply to every edit, and it maps which knowledge/reference docs to open for the task at hand. Don't load everything up front — open only your track's docs plus the shared ones it lists.
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: figma-to-qjson
|
|
3
|
+
description: Reconstruct a Quick / Plateau Studio .qjson page from a Figma design (a Figma selection URL). If the design isn't fetched yet, run the `studio figmaPull` command to populate a local .figma/ folder (node.json, file.json, render.json, imagefills.json, assets/*.svg), then turn that raw Figma node tree into a real qjson page. Use whenever the task is to convert a Figma frame/selection into a qjson page. Covers fetching via the `studio figmaPull` command, the Figma→qjson mapping rules, the geometry/style extraction recipe, the rect+text control-clustering heuristic, and asset handling. Delegates all qjson-authoring detail to the quick-qjson skill + the ui-kit package.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Figma → QJSON reconstruction
|
|
7
|
+
|
|
8
|
+
This skill turns a Figma design into a **Quick `.qjson` page**. The raw Figma responses live in a local **`.figma/`** folder; you produce that folder by **running the `studio figmaPull` command** (which wraps `figmaPull(url, token)`). This skill never calls the Figma API directly — it runs the command, then reads what the command wrote.
|
|
9
|
+
|
|
10
|
+
It owns only the **translation knowledge** (Figma node tree → qjson components). For everything about *authoring* qjson (schema, props, styling, validation, project conventions) it defers to the **`quick-qjson`** skill and the **`ui-kit/`** folder in your workspace (e.g. `.ai-kit/ui-kit/index.md`) — read those; do not re-derive them here.
|
|
11
|
+
|
|
12
|
+
## Get the design first (run `studio figmaPull`)
|
|
13
|
+
Before the translation workflow below, you need the raw Figma responses in `.figma/`. Get them by running the **`studio figmaPull` command** (the CLI that wraps `figmaPull(url, token)` — it extracts `fileKey` + `node-id` from the URL itself):
|
|
14
|
+
|
|
15
|
+
- If `.figma/` is already present and current for the design you want → just read `.figma/manifest.json` and continue.
|
|
16
|
+
- Otherwise **run the command yourself** (don't wait for the user to pre-fetch). The URL and token are **positional arguments**, in that order; `-d, --dir <dir>` optionally picks the workspace whose `.figma/` receives the output (defaults to the current directory):
|
|
17
|
+
```
|
|
18
|
+
studio figmaPull "<figma-url>" "<token>"
|
|
19
|
+
```
|
|
20
|
+
- **Parameters — resolve, don't block:**
|
|
21
|
+
- **URL**: take the Figma *selection* link from the user's message / context; if it isn't there, **ask the user** (AskUserQuestion: "paste the Figma 'Copy link to selection'"). Don't guess it.
|
|
22
|
+
- **Token**: a Figma personal access token, passed as the **second positional argument**. The command has no env/config fallback, so you must supply it explicitly; ask the user once if you don't have it, never hardcode.
|
|
23
|
+
- The command writes `.figma/node.json`, `file.json`, `render.json`, `imagefills.json`, `manifest.json` (+ `assets/*.svg`). **Read `manifest.json` first** — if its `node` endpoint failed (403 token / 404 file·node), surface that error and stop; don't proceed on a bad fetch.
|
|
24
|
+
|
|
25
|
+
Inputs you'll then use, as needed:
|
|
26
|
+
- `.figma/node.json` — the target frame's full node tree (primary input).
|
|
27
|
+
- `.figma/file.json` — whole-file tree (styles, components — fallback/context).
|
|
28
|
+
- `.figma/render.json` — `{images:{<nodeId>: <svg-url>}}` for vector/icon render.
|
|
29
|
+
- `.figma/imagefills.json` — `imageRef → URL` map for IMAGE fills.
|
|
30
|
+
- `.figma/assets/*.svg` — downloaded SVGs (if the command saved them).
|
|
31
|
+
|
|
32
|
+
## Workflow (the same process a human reviewer would follow)
|
|
33
|
+
|
|
34
|
+
### 0. Load + triage
|
|
35
|
+
Read `node.json`, grab the fetched frame, and get a shape-of-the-page read: node-type counts, max depth, **auto-layout usage**, and all TEXT content. This decides the page kind (login / form / list / landing…) and whether it maps cleanly.
|
|
36
|
+
|
|
37
|
+
```python
|
|
38
|
+
import json, collections
|
|
39
|
+
doc = next(iter(json.load(open('.figma/node.json'))['nodes'].values()))['document']
|
|
40
|
+
types, lm, texts = collections.Counter(), collections.Counter(), []
|
|
41
|
+
def walk(n):
|
|
42
|
+
types[n['type']] += 1
|
|
43
|
+
if n['type'] == 'FRAME': lm[n.get('layoutMode','NONE')] += 1
|
|
44
|
+
if n['type'] == 'TEXT': texts.append(n.get('characters','')[:40])
|
|
45
|
+
for c in n.get('children', []): walk(c)
|
|
46
|
+
walk(doc)
|
|
47
|
+
print('types', dict(types)); print('layoutMode', dict(lm)); print('texts', texts)
|
|
48
|
+
```
|
|
49
|
+
> Many frames with `layoutMode` HORIZONTAL/VERTICAL → the layout maps cleanly to `VRow`/`VCol`. Many `NONE` (absolute) → you must reconstruct structure from geometry (step 2–3).
|
|
50
|
+
|
|
51
|
+
### 1. Extract per-node geometry + style
|
|
52
|
+
For each visible node, pull **frame-relative** `x,y,w,h`, fill hex, font size/weight/color, and `cornerRadius`. This table is what tells you "what each thing is".
|
|
53
|
+
|
|
54
|
+
```python
|
|
55
|
+
root = doc['absoluteBoundingBox']; rx, ry = root['x'], root['y']
|
|
56
|
+
def hexfill(n):
|
|
57
|
+
for f in (n.get('fills') or []):
|
|
58
|
+
if f.get('type') == 'SOLID':
|
|
59
|
+
c = f['color']; return '#%02x%02x%02x' % (int(c['r']*255), int(c['g']*255), int(c['b']*255))
|
|
60
|
+
return None
|
|
61
|
+
def walk(n, d=0):
|
|
62
|
+
bb = n.get('absoluteBoundingBox') or {}
|
|
63
|
+
x = (bb.get('x',0)-rx) if 'x' in bb else None; y = (bb.get('y',0)-ry) if 'y' in bb else None
|
|
64
|
+
st = n.get('style', {})
|
|
65
|
+
print(' '*d, n['type'], n.get('name'),
|
|
66
|
+
f"({x},{y}) {bb.get('width')}x{bb.get('height')}" if x is not None else '',
|
|
67
|
+
'|', repr(n.get('characters','')[:30]) if n['type']=='TEXT' else '',
|
|
68
|
+
'fz', st.get('fontSize'), 'fw', st.get('fontWeight'),
|
|
69
|
+
'fill', hexfill(n), 'r', n.get('cornerRadius'))
|
|
70
|
+
for c in n.get('children', []): walk(c, d+1)
|
|
71
|
+
walk(doc)
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### 2. Detect the *real* visible background
|
|
75
|
+
The frame's own `fills` may just be the **artboard** color, not what the user sees. Look for a **full-bleed shape** (a RECTANGLE/VECTOR roughly the frame's size, drawn first/behind) — its fill is the real page background. (Tell-tale: dark text only makes sense on a light background.) Use that for `Messaging.pageBackgroundColor` and container backgrounds.
|
|
76
|
+
|
|
77
|
+
### 3. Cluster loose elements into controls
|
|
78
|
+
Figma often keeps a button's **background rect** and its **label text** as *separate siblings*. Infer a single control when a TEXT's center lies **within a RECTANGLE's bounds** (and they're adjacent in z-order). One rect + one text inside it = one button or one input — not two components.
|
|
79
|
+
|
|
80
|
+
### 4. Map each control → qjson (the rules)
|
|
81
|
+
|
|
82
|
+
| Figma pattern | → qjson | Decisive signal |
|
|
83
|
+
|---|---|---|
|
|
84
|
+
| auto-layout FRAME, `VERTICAL` / `HORIZONTAL` | stacked `VRow`s / a `VRow` of `VCol`s | `layoutMode` |
|
|
85
|
+
| plain TEXT | `QLabel` (`text` PType `prop`) | — |
|
|
86
|
+
| TEXT whose chars are PUA glyphs (U+F0000+) | `VIcon` (icon name, PType `text`) | codepoint → `mdi-*` name |
|
|
87
|
+
| large bold TEXT near top | title `QLabel` | fontSize/weight |
|
|
88
|
+
| rounded rect (high `cornerRadius`) + **centered, light** text inside | **filled** `VBtn` → child `QLabel`; rect fill → `S.backgroundColor` | rect has a solid fill |
|
|
89
|
+
| rounded rect, `fill=none` + stroke, text inside | `VBtn` `outlined` | no fill, has stroke |
|
|
90
|
+
| white/light rounded rect + **gray** text inside | `VTextField` (the gray text → `placeholder`) | inner text is a muted color |
|
|
91
|
+
| field whose name/label is "şifre"/"password"/"pin" | + `type='password'` | text content |
|
|
92
|
+
| small, right-aligned text link | `VBtn` `text` (link) → `QLabel` | alignment + size |
|
|
93
|
+
| custom VECTOR group (logo/illustration) | `VImg` from an asset (see step 5) | type VECTOR/GROUP, not a glyph |
|
|
94
|
+
| IMAGE fill (`imageRef`) | `VImg`, URL from `imagefills.json` | fill type IMAGE |
|
|
95
|
+
|
|
96
|
+
Pick real props/events/styles from **`ui-kit/reference/component-contracts.json`** and **`component-styles.json`** — never invent. Convert px → the kit's responsive grid (`col`, `S` blocks); do **not** reproduce absolute pixel coordinates.
|
|
97
|
+
|
|
98
|
+
### 5. Assets (vectors / logos)
|
|
99
|
+
A deployed Quick app can't read local SVGs or Figma's expiring S3 URLs. So:
|
|
100
|
+
- If there is an asset pipeline / CDN, upload `.figma/assets/<id>.svg` and reference it via `VImg`.
|
|
101
|
+
- Otherwise insert a **`VIcon` placeholder** in the right spot and **flag in the report** that the real logo must be exported (`render.json` URL → `.figma/assets/`) and uploaded as a Studio asset. Don't silently drop it.
|
|
102
|
+
|
|
103
|
+
### 6. Author the qjson
|
|
104
|
+
Hand off to **`quick-qjson`**: build top-down `Messaging → VContainer > VRow > VCol > content`, mirror a sibling page in the workspace for ID style and `S`-block shape, author `pJson`/`lrids` only (omit `cJson`/`clrids` entirely — never write them, strip if present). Wire obvious behavior (e.g. a login button → a `Messaging` event that reads `components.<id>.qValue` and `quick.Quick.alert(...)`).
|
|
105
|
+
|
|
106
|
+
### 7. Validate + report
|
|
107
|
+
`studio buildQjson <file>` — fix every error. Then report: the new file, the **mapping decisions** (what each Figma element became), any **assumptions** (background, clustering, responsive sizing), **assets needing manual upload**, and the validation result.
|
|
108
|
+
|
|
109
|
+
## Gotchas (these trip up naive conversions)
|
|
110
|
+
- **Artboard ≠ background.** Use the full-bleed shape's fill, not `frame.fills`.
|
|
111
|
+
- **Separate rect + text = one control.** Cluster by spatial containment before mapping.
|
|
112
|
+
- **PUA-glyph TEXT is an icon**, not a label → `VIcon` (map the codepoint to an `mdi-*` name).
|
|
113
|
+
- **Gray inner text in a white field = placeholder**, not a value.
|
|
114
|
+
- **Absolute (`NONE`) layout** still becomes semantic `VRow/VCol`; reconstruct order/grouping from `y` then `x`. Never emit pixel coordinates.
|
|
115
|
+
- **Big visual pages**: don't convert in one shot — 1–3 sections per edit (per the quick-qjson rules).
|
|
116
|
+
```
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: quick-qjson
|
|
3
|
+
description: Create, edit, review, style, or validate Quick / Plateau Studio .qjson UI pages. Load this skill for ANY task that touches a file with the .qjson extension — building a new page, editing or fixing an existing one (even a one-line tweak or typo fix), styling/layout changes, events/scripting, services, localization, or validation. Also load it the moment you encounter a .qjson file mid-task, even if the request never mentions qjson. Covers the qjson schema, the quick.* scripting API, the component registry, and the styling/layout/events systems.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Quick QJSON authoring
|
|
7
|
+
|
|
8
|
+
The complete, source-grounded knowledge for **Quick / Plateau Studio `.qjson`** UI pages lives in the **`ui-kit/`** folder — locate it in your workspace (e.g. `.ai-kit/ui-kit/`) and treat it as authoritative over any prior assumptions about Quick.
|
|
9
|
+
|
|
10
|
+
**Read `ui-kit/index.md` and follow it.** Its Step 0 routes you to the right style track (`S` vs legacy — never mixed on a page), its non-negotiable rules apply to every edit, and it maps which knowledge/reference docs to open for the task at hand. Don't load everything up front — open only your track's docs plus the shared ones it lists.
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# AGENTS.md — Plateau workflow app workspace
|
|
2
|
+
|
|
3
|
+
This workspace holds a **Plateau Studio workflow app**: the business process and the models that run it, plus the UI pages its tasks open. The file extension is the model type.
|
|
4
|
+
|
|
5
|
+
## Capabilities
|
|
6
|
+
|
|
7
|
+
- **Any work on a workflow model** — `.workflow`, `.flow`, `.action`, `.role`, `.privilege`, `.persona`, `.swimlane`, `.sla`, `.restService`, `.soapService`, `.decisionTable`, `.jobScheduler` → [`.ai-kit/workflow-kit/index.md`](.ai-kit/workflow-kit/index.md), the manual · or load the **plateau-workflow** skill
|
|
8
|
+
- **Data models and file-level rules** — `.dataType`, `.dataSet`, `.constant`, `.appSettings`, metadata headers, references → [`.ai-kit/workflow-kit/index.md`](.ai-kit/workflow-kit/index.md)
|
|
9
|
+
- **Any work on a `.qjson` page** — task forms, styling, events, validation → [`.ai-kit/ui-kit/index.md`](.ai-kit/ui-kit/index.md) · or load the **quick-qjson** skill · workflow-side page rules: [`.ai-kit/workflow-kit/models/workflow-ui-pages.md`](.ai-kit/workflow-kit/models/workflow-ui-pages.md)
|
|
10
|
+
|
|
11
|
+
## Working with the studio CLI
|
|
12
|
+
|
|
13
|
+
These pages were pulled from Studio and will be synced back.
|
|
14
|
+
|
|
15
|
+
- **Building a page from a Figma design** → load the **figma-to-qjson** skill
|
|
16
|
+
- **CLI depth** — sync/frontmatter, the bridge, render-check, `buildQjson` internals → [`.ai-kit/cli-kit/knowledge/`](.ai-kit/cli-kit/knowledge/)
|
|
17
|
+
|
|
18
|
+
**Commands:** `studio buildQjson <file-or-folder>` (validate — always, before finishing) · `studio push` (sync, needs the bridge) · render-check via the `playwright` MCP · `studio startWorking <file>` (unlock a readonly page) · `studio convertToBlock <file>` (mark an embedded page as a block component).
|
|
19
|
+
|
|
20
|
+
Report what you changed, the validation result, and the push/render-check result — if the bridge or browser wasn't available, say so rather than skipping silently.
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# CLAUDE.md — Plateau workflow app workspace
|
|
2
|
+
|
|
3
|
+
This workspace holds a **Plateau Studio workflow app**: the business process and the models that run it, plus the UI pages its tasks open. The file extension is the model type.
|
|
4
|
+
|
|
5
|
+
## Capabilities
|
|
6
|
+
|
|
7
|
+
- **Any work on a workflow model** — `.workflow`, `.flow`, `.action`, `.role`, `.privilege`, `.persona`, `.swimlane`, `.sla`, `.restService`, `.soapService`, `.decisionTable`, `.jobScheduler` → [`.ai-kit/workflow-kit/index.md`](.ai-kit/workflow-kit/index.md), the manual · or load the **plateau-workflow** skill
|
|
8
|
+
- **Data models and file-level rules** — `.dataType`, `.dataSet`, `.constant`, `.appSettings`, metadata headers, references → [`.ai-kit/workflow-kit/index.md`](.ai-kit/workflow-kit/index.md)
|
|
9
|
+
- **Any work on a `.qjson` page** — task forms, styling, events, validation → [`.ai-kit/ui-kit/index.md`](.ai-kit/ui-kit/index.md) · or load the **quick-qjson** skill · workflow-side page rules: [`.ai-kit/workflow-kit/models/workflow-ui-pages.md`](.ai-kit/workflow-kit/models/workflow-ui-pages.md)
|
|
10
|
+
|
|
11
|
+
## Working with the studio CLI
|
|
12
|
+
|
|
13
|
+
These pages were pulled from Studio and will be synced back.
|
|
14
|
+
|
|
15
|
+
- **Building a page from a Figma design** → load the **figma-to-qjson** skill
|
|
16
|
+
- **CLI depth** — sync/frontmatter, the bridge, render-check, `buildQjson` internals → [`.ai-kit/cli-kit/knowledge/`](.ai-kit/cli-kit/knowledge/)
|
|
17
|
+
|
|
18
|
+
**Commands:** `studio buildQjson <file-or-folder>` (validate — always, before finishing) · `studio push` (sync, needs the bridge) · render-check via the `playwright` MCP · `studio startWorking <file>` (unlock a readonly page) · `studio convertToBlock <file>` (mark an embedded page as a block component).
|
|
19
|
+
|
|
20
|
+
Report what you changed, the validation result, and the push/render-check result — if the bridge or browser wasn't available, say so rather than skipping silently.
|
|
@@ -11,6 +11,7 @@ const frontmatter_1 = require("../../../common/agentic/modelFiles/frontmatter");
|
|
|
11
11
|
const modelRefs_1 = require("../../../common/agentic/modelFiles/modelRefs");
|
|
12
12
|
const modelFileTypes_1 = require("../../../common/agentic/modelFiles/modelFileTypes");
|
|
13
13
|
const qjsonCompiled_1 = require("../../../common/agentic/modelFiles/qjsonCompiled");
|
|
14
|
+
const jsonBody_1 = require("../../../common/agentic/modelFiles/jsonBody");
|
|
14
15
|
const MODE_READONLY = 0o444;
|
|
15
16
|
const MODE_WRITABLE = 0o644;
|
|
16
17
|
// 0444 olan dosyanın üzerine yazabilmek için önce yazılabilir yap, yaz, sonra hedef modu uygula.
|
|
@@ -36,16 +37,10 @@ async function writeModel(root, fsModel, inReadOnlyList) {
|
|
|
36
37
|
const body = fsModel.model[0];
|
|
37
38
|
if (!body)
|
|
38
39
|
return { readOnly };
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
}
|
|
44
|
-
else if (typeof modelData === "object" && modelData !== null) {
|
|
45
|
-
modelData = (0, qjsonCompiled_1.stripQJsonCompiledFieldsFromObject)(modelData);
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
const content = typeof modelData === "string" ? modelData : JSON.stringify(modelData, null, 2);
|
|
40
|
+
const raw = body.model;
|
|
41
|
+
const content = fsModel.modelType === "qjson"
|
|
42
|
+
? (0, qjsonCompiled_1.stripQJsonCompiledFields)(raw)
|
|
43
|
+
: (0, jsonBody_1.formatJsonBody)(raw, fsModel.modelType);
|
|
49
44
|
const dir = pathDirFor(root, fsModel.path, fsModel.ownerName);
|
|
50
45
|
await (0, promises_1.mkdir)(dir, { recursive: true });
|
|
51
46
|
const abs = (0, node_path_1.join)(dir, (0, modelFileTypes_1.fileNameFor)(fsModel.name, fsModel.modelType));
|
|
@@ -53,7 +48,7 @@ async function writeModel(root, fsModel, inReadOnlyList) {
|
|
|
53
48
|
const settingKey = fsModel.usageType === "appSettings" ? fsModel.key : undefined;
|
|
54
49
|
const fileContent = binary
|
|
55
50
|
? content
|
|
56
|
-
: (0, frontmatter_1.writeWithFrontmatter)({ id: fsModel.ID, ownerName: fsModel.ownerName ?? "/", blockComponent, settingKey }, content);
|
|
51
|
+
: (0, frontmatter_1.writeWithFrontmatter)({ id: fsModel.ID, ownerName: fsModel.ownerName ?? "/", overrides: fsModel.overriddenModel?.ID, blockComponent, settingKey }, content);
|
|
57
52
|
await writeGated(abs, fileContent, readOnly);
|
|
58
53
|
return { readOnly, hash: binary ? undefined : (0, state_1.sha)(content) };
|
|
59
54
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pull.js","sourceRoot":"","sources":["../../../../src/control/pull.ts"],"names":[],"mappings":";;;AAAA,+CAA2D;AAC3D,yCAAiC;AACjC,6CAA0C;AAC1C,yCAAkE;AAClE,yEAAqF;AACrF,2CAAwC;AACxC,gFAAsF;AACtF,4EAAsF;AACtF,sFAA8F;AAC9F,
|
|
1
|
+
{"version":3,"file":"pull.js","sourceRoot":"","sources":["../../../../src/control/pull.ts"],"names":[],"mappings":"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"}
|
|
@@ -116,8 +116,8 @@ program
|
|
|
116
116
|
.action(async (path) => {
|
|
117
117
|
const globals = program.opts();
|
|
118
118
|
(0, logger_1.setVerbose)(globals.verbose);
|
|
119
|
-
const {
|
|
120
|
-
process.exitCode = await
|
|
119
|
+
const { qjsonBuild } = await Promise.resolve().then(() => __importStar(require("./isolatedCommands/qjsonBuild")));
|
|
120
|
+
process.exitCode = await qjsonBuild(path);
|
|
121
121
|
});
|
|
122
122
|
program
|
|
123
123
|
.command("figmaPull")
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.qjsonBuild = void 0;
|
|
4
4
|
const qjsonBuild_1 = require("../../../common/agentic/qjsonBuild/qjsonBuild");
|
|
5
5
|
const cliCompiler_1 = require("../../../common/helpers/tsCompiler/cliCompiler");
|
|
6
6
|
const logger_1 = require("../util/logger");
|
|
7
7
|
const validateQjson_1 = require("../../../common/agentic/qjsonBuild/validateQjson");
|
|
8
8
|
const validateStyles_1 = require("../../../common/agentic/qjsonBuild/validateStyles");
|
|
9
9
|
const qjsonBuildCliEnv_1 = require("./qjsonBuildCliEnv");
|
|
10
|
-
async function
|
|
10
|
+
async function qjsonBuild(sourcePath) {
|
|
11
11
|
try {
|
|
12
12
|
const result = await (0, qjsonBuild_1.runQjsonBuild)(sourcePath, qjsonBuildCliEnv_1.cliQjsonEnv, new cliCompiler_1.CLITSCompiler());
|
|
13
13
|
logger_1.logger.info(JSON.stringify(result.compile));
|
|
@@ -22,5 +22,5 @@ async function runQjsonBuild(sourcePath) {
|
|
|
22
22
|
return 1;
|
|
23
23
|
}
|
|
24
24
|
}
|
|
25
|
-
exports.
|
|
25
|
+
exports.qjsonBuild = qjsonBuild;
|
|
26
26
|
//# sourceMappingURL=qjsonBuild.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"qjsonBuild.js","sourceRoot":"","sources":["../../../../src/isolatedCommands/qjsonBuild.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"qjsonBuild.js","sourceRoot":"","sources":["../../../../src/isolatedCommands/qjsonBuild.ts"],"names":[],"mappings":";;;AAAA,8EAA8E;AAC9E,gFAA+E;AAC/E,2CAAwC;AACxC,oFAAqF;AACrF,sFAAsF;AACtF,yDAAiD;AAE1C,KAAK,UAAU,UAAU,CAAC,UAAkB;IACjD,IAAI;QACF,MAAM,MAAM,GAAG,MAAM,IAAA,0BAAa,EAAC,UAAU,EAAE,8BAAW,EAAE,IAAI,2BAAa,EAAE,CAAC,CAAC;QACjF,eAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QAE5C,eAAM,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAC;QAC5E,eAAM,CAAC,IAAI,CAAC,IAAA,iCAAiB,EAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAE7C,eAAM,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAC;QAC5E,eAAM,CAAC,IAAI,CAAC,IAAA,kCAAiB,EAAC,8BAAW,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;QAE3D,OAAO,CAAC,CAAC;KACV;IAAC,OAAO,GAAG,EAAE;QACZ,eAAM,CAAC,KAAK,CAAC,mBAAoB,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;QAC1D,OAAO,CAAC,CAAC;KACV;AACH,CAAC;AAhBD,gCAgBC"}
|
|
@@ -9,6 +9,7 @@ const serverInfo_1 = require("./serverInfo");
|
|
|
9
9
|
const pickWorkspaceDir_1 = require("../control/pickWorkspaceDir");
|
|
10
10
|
const logger_1 = require("../util/logger");
|
|
11
11
|
const qjsonCompiled_1 = require("../../../common/agentic/modelFiles/qjsonCompiled");
|
|
12
|
+
const jsonBody_1 = require("../../../common/agentic/modelFiles/jsonBody");
|
|
12
13
|
const pull_1 = require("../control/pull");
|
|
13
14
|
const push_1 = require("../control/push");
|
|
14
15
|
const state_1 = require("../util/state");
|
|
@@ -18,6 +19,16 @@ const modelRefs_1 = require("../../../common/agentic/modelFiles/modelRefs");
|
|
|
18
19
|
const version_1 = require("../version");
|
|
19
20
|
const protocolVersion_1 = require("../../../common/agentic/studioCli/protocolVersion");
|
|
20
21
|
const PING_INTERVAL_MS = 20000;
|
|
22
|
+
// A peer that sends no frame at all for this long is treated as dead. Deliberately generous
|
|
23
|
+
// (15 missed pings), and one value for every peer in every state — the harm is lopsided. A
|
|
24
|
+
// leftover process is a background annoyance nobody watches in real time, but a false drop is
|
|
25
|
+
// instant and costly: the primary has NO periodic reconnect (ui .../studioCli/index.ts only
|
|
26
|
+
// retries on app-open), so the user must reconnect by hand. Two things block a live browser's
|
|
27
|
+
// main thread long enough to look dead — a paused DevTools breakpoint, and one heavy synchronous
|
|
28
|
+
// step of a push — and a single limit this generous covers both without a special case.
|
|
29
|
+
const PEER_SILENCE_LIMIT_MS = 300000;
|
|
30
|
+
// A sweep landing this late means the HOST was suspended (laptop lid), not that peers fell silent.
|
|
31
|
+
const SUSPEND_GAP_MS = PING_INTERVAL_MS * 2;
|
|
21
32
|
const IDLE_EXIT_MS = 120000;
|
|
22
33
|
const RENDEZVOUS_BIND_RETRY_MS = 2000;
|
|
23
34
|
/**
|
|
@@ -31,6 +42,11 @@ class BridgeServer {
|
|
|
31
42
|
bridgeClient;
|
|
32
43
|
// AI test browser (?cliRole=test) — SINK: sends no events, only receives syncModels.
|
|
33
44
|
testClient;
|
|
45
|
+
// Every live peer on the ephemeral port, including ones that have not said hello yet.
|
|
46
|
+
// The ping/reap loop walks THIS, not the two named slots: a peer that connects and then
|
|
47
|
+
// goes silent before hello belongs to neither slot and would otherwise never be reaped.
|
|
48
|
+
// (Rendezvous peers are not here — they live on their own server and self-close in 500ms.)
|
|
49
|
+
peers = new Set();
|
|
34
50
|
// Bodies pushed in this session (id → item, merged across pushes). Replayed when the test client
|
|
35
51
|
// connects later / on F5 — sync works regardless of connection order.
|
|
36
52
|
lastSync = new Map();
|
|
@@ -39,6 +55,7 @@ class BridgeServer {
|
|
|
39
55
|
renderTarget;
|
|
40
56
|
claimedAppId;
|
|
41
57
|
pingTimer;
|
|
58
|
+
lastTickAt = 0; // when the last ping sweep ran — detects host suspend (see pingTick)
|
|
42
59
|
idleTimer;
|
|
43
60
|
rendezvousRetryTimer;
|
|
44
61
|
_pushInProgress = false;
|
|
@@ -142,11 +159,16 @@ class BridgeServer {
|
|
|
142
159
|
// --- connection lifecycle ---
|
|
143
160
|
onConnection(conn) {
|
|
144
161
|
const peer = new peer_1.Peer(conn);
|
|
162
|
+
this.peers.add(peer);
|
|
145
163
|
peer.onEnvelope((env) => this.dispatch(peer, env));
|
|
146
164
|
peer.onClose(() => this.onPeerClose(peer));
|
|
147
165
|
logger_1.logger.debug("peer connected");
|
|
166
|
+
// Start pinging at CONNECT, not at hello — otherwise a peer that never handshakes is
|
|
167
|
+
// never probed and leaks a socket for the lifetime of the process.
|
|
168
|
+
this.startPing();
|
|
148
169
|
}
|
|
149
170
|
onPeerClose(peer) {
|
|
171
|
+
this.peers.delete(peer);
|
|
150
172
|
if (peer === this.bridgeClient) {
|
|
151
173
|
// F5/page close: the client goes away but the claim + server.json REMAIN (for reconnect).
|
|
152
174
|
// If the tab closed while the picker was open, close the orphaned window (its result will be dropped anyway).
|
|
@@ -159,10 +181,12 @@ class BridgeServer {
|
|
|
159
181
|
this.testClient = undefined;
|
|
160
182
|
logger_1.logger.info("test client disconnected");
|
|
161
183
|
}
|
|
162
|
-
|
|
163
|
-
|
|
184
|
+
// Idle exit tracks the CLIENT slots — a bare peer is not a session. The ping loop tracks
|
|
185
|
+
// the registry instead, so a silent pre-hello peer keeps being probed until it is reaped.
|
|
186
|
+
if (!this.bridgeClient && !this.testClient)
|
|
164
187
|
this.armIdleExit();
|
|
165
|
-
|
|
188
|
+
if (this.peers.size === 0)
|
|
189
|
+
this.stopPing();
|
|
166
190
|
}
|
|
167
191
|
// --- dispatch ---
|
|
168
192
|
dispatch(peer, env) {
|
|
@@ -493,7 +517,7 @@ class BridgeServer {
|
|
|
493
517
|
res.write(JSON.stringify({ skipped: `${s.localKey} — ${hint}` }) + "\n");
|
|
494
518
|
}
|
|
495
519
|
if (models.length === 0 && newModels.length === 0 && deletedIds.length === 0) {
|
|
496
|
-
res.end(JSON.stringify({ message: `
|
|
520
|
+
res.end(JSON.stringify({ message: `push OK — already up to date, no changes to send` }) + "\n");
|
|
497
521
|
return;
|
|
498
522
|
}
|
|
499
523
|
const total = models.length + newModels.length + deletedIds.length;
|
|
@@ -666,8 +690,8 @@ class BridgeServer {
|
|
|
666
690
|
const isNewlyCreated = !nm.existingId || r.id !== nm.existingId;
|
|
667
691
|
if (isNewlyCreated) {
|
|
668
692
|
const bodyToWrite = r.body === undefined
|
|
669
|
-
? nm.body
|
|
670
|
-
: (nm.modelType === "qjson" ? (0, qjsonCompiled_1.stripQJsonCompiledFields)(r.body) : r.body);
|
|
693
|
+
? nm.body // local file content — already formatted
|
|
694
|
+
: (nm.modelType === "qjson" ? (0, qjsonCompiled_1.stripQJsonCompiledFields)(r.body) : (0, jsonBody_1.formatJsonBody)(r.body, nm.modelType));
|
|
671
695
|
const prevMeta = (0, frontmatter_1.parseFrontmatter)(await (0, promises_1.readFile)(absPath, "utf8"))?.meta;
|
|
672
696
|
await (0, promises_1.writeFile)(absPath, (0, frontmatter_1.writeWithFrontmatter)({ ...prevMeta, id: r.id, ownerName: r.ownerName ?? "/" }, bodyToWrite), "utf8");
|
|
673
697
|
}
|
|
@@ -750,7 +774,7 @@ class BridgeServer {
|
|
|
750
774
|
if (counts.okRefFiles > 0)
|
|
751
775
|
parts.push(`refs updated in ${counts.okRefFiles} file(s)`);
|
|
752
776
|
if (parts.length === 0)
|
|
753
|
-
parts.push("
|
|
777
|
+
parts.push("push OK — already up to date, no changes to send");
|
|
754
778
|
const readonlyCount = skipped.filter(s => s.reason === "readonly").length;
|
|
755
779
|
const unsupportedCount = skipped.filter(s => s.reason === "unsupported-type").length;
|
|
756
780
|
if (readonlyCount > 0)
|
|
@@ -836,7 +860,7 @@ class BridgeServer {
|
|
|
836
860
|
// model="" → rename-only message (the body wasn't loaded in the VMM); skip writing the body
|
|
837
861
|
if (payload.model !== "") {
|
|
838
862
|
const ext = (0, node_path_1.extname)(abs).slice(1).toLowerCase();
|
|
839
|
-
const body = ext === "qjson" ? (0, qjsonCompiled_1.stripQJsonCompiledFields)(payload.model) : payload.model;
|
|
863
|
+
const body = ext === "qjson" ? (0, qjsonCompiled_1.stripQJsonCompiledFields)(payload.model) : (0, jsonBody_1.formatJsonBody)(payload.model, ext);
|
|
840
864
|
// If the user saved in Studio, the test replay (F5) must not revert to the stale push body.
|
|
841
865
|
const prev = this.lastSync.get(payload.modelId);
|
|
842
866
|
if (prev)
|
|
@@ -956,14 +980,52 @@ class BridgeServer {
|
|
|
956
980
|
}
|
|
957
981
|
return null;
|
|
958
982
|
}
|
|
959
|
-
// --- keepalive
|
|
983
|
+
// --- keepalive / liveness (every peer) ---
|
|
984
|
+
/** Idempotent — called on every new connection. Restarting the interval here would mean a
|
|
985
|
+
* peer reconnecting more often than PING_INTERVAL_MS keeps resetting it, so no ping is ever
|
|
986
|
+
* actually sent. */
|
|
960
987
|
startPing() {
|
|
961
|
-
this.
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
|
|
988
|
+
if (this.pingTimer)
|
|
989
|
+
return;
|
|
990
|
+
this.lastTickAt = Date.now();
|
|
991
|
+
this.pingTimer = setInterval(() => this.pingTick(), PING_INTERVAL_MS);
|
|
992
|
+
}
|
|
993
|
+
/** Reap the silent, ping the rest.
|
|
994
|
+
*
|
|
995
|
+
* Reaping is what makes orphaned CLI processes go away. armIdleExit() is only re-armed from
|
|
996
|
+
* onPeerClose, and onHello cancels it — so once a client handshakes, ONLY a close event can
|
|
997
|
+
* restart the shutdown timer. A client that dies without sending a FIN (sleep, VPN switch,
|
|
998
|
+
* tab crash) leaves socket.destroyed false forever, onPeerClose never fires, and the process
|
|
999
|
+
* lives on holding its workspace claim. Dropping the peer here supplies that missing close:
|
|
1000
|
+
* destroy → onPeerClose → armIdleExit → the process exits on its own.
|
|
1001
|
+
*
|
|
1002
|
+
* Iterates a COPY: destroy() notifies synchronously, which mutates this.peers mid-loop. */
|
|
1003
|
+
pingTick() {
|
|
1004
|
+
// A sweep that lands far past its schedule means the whole HOST was suspended (laptop lid),
|
|
1005
|
+
// not that peers went quiet: no ping could be sent during the gap, yet Date.now() jumped by
|
|
1006
|
+
// its full length. Reaping on that first sweep after waking would drop perfectly healthy
|
|
1007
|
+
// clients, so forgive the gap and re-measure everyone from now.
|
|
1008
|
+
const sinceLastTick = Date.now() - this.lastTickAt;
|
|
1009
|
+
this.lastTickAt = Date.now();
|
|
1010
|
+
if (sinceLastTick > SUSPEND_GAP_MS) {
|
|
1011
|
+
logger_1.logger.info(`ping sweep ${Math.round(sinceLastTick / 1000)}s late — host was suspended, re-measuring peers`);
|
|
1012
|
+
for (const peer of this.peers)
|
|
1013
|
+
peer.markAlive();
|
|
1014
|
+
}
|
|
1015
|
+
for (const peer of [...this.peers]) {
|
|
1016
|
+
if (!peer.isOpen) {
|
|
1017
|
+
this.peers.delete(peer); // close handler should have done this; belt and braces
|
|
1018
|
+
continue;
|
|
1019
|
+
}
|
|
1020
|
+
if (peer.msSinceLastMessage >= PEER_SILENCE_LIMIT_MS) {
|
|
1021
|
+
logger_1.logger.warn(`peer silent for ${Math.round(peer.msSinceLastMessage / 1000)}s — dropping`);
|
|
1022
|
+
peer.destroy(1001, "no response to ping");
|
|
1023
|
+
continue;
|
|
1024
|
+
}
|
|
1025
|
+
peer.send("ping", {});
|
|
1026
|
+
}
|
|
1027
|
+
if (this.peers.size === 0)
|
|
1028
|
+
this.stopPing();
|
|
967
1029
|
}
|
|
968
1030
|
stopPing() {
|
|
969
1031
|
if (this.pingTimer) {
|