@stechquick/studio-cli 4.0.3-2
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/clean/domain/infrastructure/ICloudProviderFileSystem.js +5 -0
- package/dist/common/clean/domain/infrastructure/ICloudProviderFileSystem.js.map +1 -0
- package/dist/common/clean/domain/infrastructure/ICrypto.js +5 -0
- package/dist/common/clean/domain/infrastructure/ICrypto.js.map +1 -0
- package/dist/common/clean/domain/infrastructure/ILogger.js +5 -0
- package/dist/common/clean/domain/infrastructure/ILogger.js.map +1 -0
- package/dist/common/clean/domain/infrastructure/IMime.js +5 -0
- package/dist/common/clean/domain/infrastructure/IMime.js.map +1 -0
- package/dist/common/clean/domain/useCases/ICloudProvider.js +3 -0
- package/dist/common/clean/domain/useCases/ICloudProvider.js.map +1 -0
- package/dist/common/clean/domain/useCases/ICloudProviderPublish.js +5 -0
- package/dist/common/clean/domain/useCases/ICloudProviderPublish.js.map +1 -0
- package/dist/common/everything/accessmanager/types.js +8 -0
- package/dist/common/everything/accessmanager/types.js.map +1 -0
- package/dist/common/everything/action/types.js +5 -0
- package/dist/common/everything/action/types.js.map +1 -0
- package/dist/common/everything/befunc/runtimeModels/types.js +5 -0
- package/dist/common/everything/befunc/runtimeModels/types.js.map +1 -0
- package/dist/common/everything/dataSet/runtimemodels/types.js +5 -0
- package/dist/common/everything/dataSet/runtimemodels/types.js.map +1 -0
- package/dist/common/everything/dataType/runtimemodels/types.js +35 -0
- package/dist/common/everything/dataType/runtimemodels/types.js.map +1 -0
- package/dist/common/everything/endpoint/runtimeModels/types.js +5 -0
- package/dist/common/everything/endpoint/runtimeModels/types.js.map +1 -0
- package/dist/common/everything/enum/runtimeModels/types.js +3 -0
- package/dist/common/everything/enum/runtimeModels/types.js.map +1 -0
- package/dist/common/everything/flow/runtimeModels/types.js +7 -0
- package/dist/common/everything/flow/runtimeModels/types.js.map +1 -0
- package/dist/common/everything/restService/runtimeModels/types.js +5 -0
- package/dist/common/everything/restService/runtimeModels/types.js.map +1 -0
- package/dist/common/everything/sla/runtimemodels/types.js +5 -0
- package/dist/common/everything/sla/runtimemodels/types.js.map +1 -0
- package/dist/common/everything/soapService/runtimeModels/types.js +6 -0
- package/dist/common/everything/soapService/runtimeModels/types.js.map +1 -0
- package/dist/common/everything/studio/ui/IStudioUIModelBase.js +3 -0
- package/dist/common/everything/studio/ui/IStudioUIModelBase.js.map +1 -0
- package/dist/common/everything/studio/ui/IStudioUIObjectBase.js +3 -0
- package/dist/common/everything/studio/ui/IStudioUIObjectBase.js.map +1 -0
- package/dist/common/everything/workflow/runtimemodels/types.js +90 -0
- package/dist/common/everything/workflow/runtimemodels/types.js.map +1 -0
- package/dist/common/helpers/objectHelper.js +43 -0
- package/dist/common/helpers/objectHelper.js.map +1 -0
- package/dist/common/helpers/promiseHelper.js +47 -0
- package/dist/common/helpers/promiseHelper.js.map +1 -0
- package/dist/common/helpers/typeHelper.js +3 -0
- package/dist/common/helpers/typeHelper.js.map +1 -0
- package/dist/common/qCloudTemp/announcement.js +3 -0
- package/dist/common/qCloudTemp/announcement.js.map +1 -0
- package/dist/common/qCloudTemp/application.js +3 -0
- package/dist/common/qCloudTemp/application.js.map +1 -0
- package/dist/common/qCloudTemp/applicationCopy.js +3 -0
- package/dist/common/qCloudTemp/applicationCopy.js.map +1 -0
- package/dist/common/qCloudTemp/applicationVersion.js +3 -0
- package/dist/common/qCloudTemp/applicationVersion.js.map +1 -0
- package/dist/common/qCloudTemp/authentication.js +3 -0
- package/dist/common/qCloudTemp/authentication.js.map +1 -0
- package/dist/common/qCloudTemp/authorization.js +4 -0
- package/dist/common/qCloudTemp/authorization.js.map +1 -0
- package/dist/common/qCloudTemp/backoffice.js +3 -0
- package/dist/common/qCloudTemp/backoffice.js.map +1 -0
- package/dist/common/qCloudTemp/exporter.js +3 -0
- package/dist/common/qCloudTemp/exporter.js.map +1 -0
- package/dist/common/qCloudTemp/externalToken.js +3 -0
- package/dist/common/qCloudTemp/externalToken.js.map +1 -0
- package/dist/common/qCloudTemp/feedback.js +3 -0
- package/dist/common/qCloudTemp/feedback.js.map +1 -0
- package/dist/common/qCloudTemp/invitation.js +3 -0
- package/dist/common/qCloudTemp/invitation.js.map +1 -0
- package/dist/common/qCloudTemp/membership.js +3 -0
- package/dist/common/qCloudTemp/membership.js.map +1 -0
- package/dist/common/qCloudTemp/modelDatas.js +3 -0
- package/dist/common/qCloudTemp/modelDatas.js.map +1 -0
- package/dist/common/qCloudTemp/organizationGroupApplication.js +3 -0
- package/dist/common/qCloudTemp/organizationGroupApplication.js.map +1 -0
- package/dist/common/qCloudTemp/quickCloud.js +34 -0
- package/dist/common/qCloudTemp/quickCloud.js.map +1 -0
- package/dist/common/qCloudTemp/storageTypes.js +3 -0
- package/dist/common/qCloudTemp/storageTypes.js.map +1 -0
- package/dist/common/qCloudTemp/symDtoObjects.js +8 -0
- package/dist/common/qCloudTemp/symDtoObjects.js.map +1 -0
- package/dist/common/qCloudTemp/tags.js +3 -0
- package/dist/common/qCloudTemp/tags.js.map +1 -0
- package/dist/common/qCloudTemp/template.js +107 -0
- package/dist/common/qCloudTemp/template.js.map +1 -0
- package/dist/common/qCloudTemp/userPreference.js +3 -0
- package/dist/common/qCloudTemp/userPreference.js.map +1 -0
- package/dist/common/qCloudTemp/userRequest.js +8 -0
- package/dist/common/qCloudTemp/userRequest.js.map +1 -0
- package/dist/common/studioCli/messages.js +14 -0
- package/dist/common/studioCli/messages.js.map +1 -0
- package/dist/common/studioCli/protocolVersion.js +14 -0
- package/dist/common/studioCli/protocolVersion.js.map +1 -0
- package/dist/jobs/src/application/shared/fileUrlCreator.js +72 -0
- package/dist/jobs/src/application/shared/fileUrlCreator.js.map +1 -0
- package/dist/jobs/src/domain/model/IExportJob.js +3 -0
- package/dist/jobs/src/domain/model/IExportJob.js.map +1 -0
- package/dist/studio-cli/src/.ai-kit/.mcp.json +8 -0
- package/dist/studio-cli/src/.ai-kit/AGENTS.md +18 -0
- package/dist/studio-cli/src/.ai-kit/AGENT_GUIDE-legacy.md +29 -0
- package/dist/studio-cli/src/.ai-kit/AGENT_GUIDE-s.md +30 -0
- package/dist/studio-cli/src/.ai-kit/AGENT_GUIDE.md +86 -0
- package/dist/studio-cli/src/.ai-kit/CLAUDE.md +12 -0
- package/dist/studio-cli/src/.ai-kit/README.md +81 -0
- package/dist/studio-cli/src/.ai-kit/agents/qjson-legacy-migrator.md +308 -0
- package/dist/studio-cli/src/.ai-kit/agents/quick-events.md +41 -0
- package/dist/studio-cli/src/.ai-kit/agents/quick-qjson-author-legacy.md +29 -0
- package/dist/studio-cli/src/.ai-kit/agents/quick-qjson-author-s.md +29 -0
- package/dist/studio-cli/src/.ai-kit/agents/quick-qjson-author.md +33 -0
- package/dist/studio-cli/src/.ai-kit/agents/quick-styling-legacy.md +37 -0
- package/dist/studio-cli/src/.ai-kit/agents/quick-styling.md +36 -0
- package/dist/studio-cli/src/.ai-kit/examples/README.md +12 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/AllowdDates.qjson +122 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/Avatarlar.qjson +1084 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/BarChart.qjson +1061 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/BarChart_Type_Time_Sample.qjson +344 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/BottomSheetScrollWithHeaderInformation.qjson +1609 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/CardTitle.qjson +143 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/Charts_Custom_Legend_Sample.qjson +763 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/Charts_tooltipLabel_sample.qjson +631 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/CheckBoxQvalue.qjson +91 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/CheckboxDisabledExample.qjson +153 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/Click Outside.qjson +144 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/ComboBoxReset.qjson +839 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/ComboboxAddItemWithDialog.qjson +296 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/ComboboxAddItemWithTextField.qjson +186 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/ComboboxDefaultSelection.qjson +99 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/ComboboxWithTreeView.qjson +94 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/Combobox_SelectAll.qjson +704 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/ComponentsInteractionExamples.qjson +722 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/CookieExamples.qjson +828 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/CreateComponent_WithTransmitDataSource_Sample.qjson +749 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/Cryptography-with-ivKey.qjson +2159 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/Dashboard.qjson +1135 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/DataExamples.qjson +696 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/DataStorageExamples.qjson +1296 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/DataTable-Single-select-Multi-Select-TotalCalculation.qjson +441 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/DataTableAddRemoveItem.qjson +312 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/DataTableBoldHeader.qjson +34 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/DataTableEdit.qjson +422 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/DataTableFixedColumn.qjson +133 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/DataTableIndexExample.qjson +117 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/DataTableSearch.qjson +105 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/DataTableVerticalBorder.qjson +34 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/DataTableWithTooltip.qjson +354 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/DataTable_ChildButtonVisibleSample.qjson +892 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/DatePickerExampleApp (1).qjson +770 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/DatePickerInlineExample.qjson +299 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/DatePickerLocale.qjson +87 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/DatepickerDatenow.qjson +96 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/DatepickerExample.qjson +147 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/Detailed_Table_Row_Expand.qjson +388 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/Detailed_Table_Rows.qjson +114 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/DialogBlockSubPage.qjson +1014 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/DialogExample.qjson +420 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/DialogExampleWith/304/261con.qjson +345 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/DialogWithEagerProp.qjson +129 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/DoughnutChart.qjson +1005 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/Download.qjson +139 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/DxColumnChooser.qjson +341 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/DxColumnFixing.qjson +317 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/DxColumn_fix_allowFixing.qjson +466 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/DxDataGrid-DxExport.qjson +225 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/DxDataGrid-DxFilterRow.qjson +174 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/DxDataGrid-DxSearchPanel.qjson +170 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/DxDataGrid-columnAutoWidth.qjson +135 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/DxDataGridArrStoreLiveCon.qjson +201 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/DxDataGridArrStoreLiveConReason.qjson +290 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/DxDataGridExternalFilterCleaning.qjson +358 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/DxDataGridExternalFiltering.qjson +300 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/DxDataGridRowDragging.qjson +257 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/DxDatagrid_MultipleSelection.qjson +503 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/DxDatagrid_ServiceCall.qjson +204 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/DxDatagrid_SimplestGridWithArrayStore.qjson +215 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/DxDatagrid_SingleSelection.qjson +337 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/DxDatagrid_allowFixing.qjson +321 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/DxDatagrid_columnResizingMode.qjson +718 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/DxDatagrid_hoverStateEnabled.qjson +144 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/DxDatagrid_onCellClickEvent.qjson +147 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/DxDatagrid_width_menu.qjson +574 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/DxTreeListArrStoreLiveCon.qjson +302 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/DxTreelist-color.qjson +237 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/DxTreelist-columnreordering.qjson +241 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/DxTreelist-editing.qjson +1471 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/DxTreelist-extarnelfiltre.qjson +122 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/Expansion_Panels.qjson +298 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/FileInput.qjson +228 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/Frame_openHtmlContentInFrame.qjson +556 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/Highlight_datatable_select.qjson +53 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/Icon_Samples.qjson +148 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/Instructions.request.qjson +605 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/Intersect.qjson +423 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/LightBox.qjson +809 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/LineChart.qjson +1046 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/LineChart_Type_Time_Sample.qjson +340 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/ListExample.qjson +475 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/LoginPage.qjson +525 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/MMDelay.qjson +356 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/MMtrigger.qjson +195 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/NavigationDrawerExample.qjson +808 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/NavigationDrawerWithAppBar.qjson +1621 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/Parallax.qjson +381 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/PermanentStore_Example.qjson +1445 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/PieChart.qjson +1005 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/Profile_Card.qjson +345 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/ProgressLinear.qjson +547 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/QCaptcha.qjson +318 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/QDocumentViewer.qjson +41 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/QFrameAllowFullScreenExample.qjson +368 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/QFrameExample.qjson +117 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/QIdleTimer.qjson +100 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/QImgZoomRotate.qjson +428 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/QImgZoomTypeNextTo.qjson +187 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/QImgZoomTypeOn.qjson +187 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/QLabel_URL.qjson +105 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/QLabel_URL_Click.qjson +133 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/QLegend.qjson +501 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/QLegendBlock.qjson +732 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/QLegend_unchanged.qjson +746 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/QMapExample.qjson +785 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/QMenuExample.qjson +68 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/QOtp.qjson +979 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/QQRCode.qjson +295 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/QReCaptcha.qjson +361 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/QRichTextExample.qjson +139 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/QRichText_Cursor_Sample.qjson +352 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/QTutorialFinalDemo.qjson +494 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/QVideoExample.qjson +1135 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/Qlabel_Props.qjson +1591 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/Qmenu-Icon-Img-SizeandColor.qjson +244 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/Quick_Bind.qjson +110 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/Quick_Bind_Sample.qjson +172 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/Rating.qjson +101 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/RenderingComponent_Sample.qjson +1592 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/RequestExamples.qjson +680 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/ResetValidation-ResetUsage.qjson +1326 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/Resize.qjson +140 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/Ripple.qjson +431 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/Sparkline.qjson +386 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/State_storing.qjson +286 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/SwitchComponent.qjson +42 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/Table_Pagination.qjson +99 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/Table_Search.qjson +64 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/Table_Select.qjson +106 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/ToolTip_props.qjson +2649 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/TooltipDisplayOfVDataTableDataTotal.qjson +312 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/TreeViewExample.qjson +92 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VAppBar.qjson +1681 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VAutocompleteRegex.qjson +45 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VBottomSheet.qjson +429 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VCard.qjson +1945 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VCombobox_customValidation.qjson +290 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VDataTable-slot-columnVeriyeG/303/266reRenklendirme.qjson +493 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VDataTableIconExample.qjson +116 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VDataTableItemAggregation.qjson +499 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VDataTable_Change_FooterPageText.qjson +107 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VDataTable_Multiple_Select_Control.qjson +50 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VDataTable_SetGetComboboxValue_.qjson +148 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VDataTable_SetItemSelect_GetSelection.qjson +627 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VDataTable_SlotInstances.qjson +362 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VDataTable_Validation.qjson +226 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VDataTable_With_QTableCell_Sample.qjson +281 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VDataTable_customSearchFilter.qjson +255 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VDataTable_firstColumn_fixedActionsColumn.qjson +216 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VDataTable_uniqueSlot_itemKey_Object.qjson +545 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VDatePicker_AllowdDates.qjson +89 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VDialog.qjson +3512 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VExpansionPanel_UsageAndProps.qjson +3811 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VFileInput-Slot-VIcon-Dolu.qjson +232 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VFileInputGetUploadedContent.qjson +111 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VFileInput_ImagePicker.qjson +308 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VFooter.qjson +1480 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VForm.qjson +410 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VFormActionExample.qjson +2289 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VInlineDatePicker_titleDateFormat.qjson +319 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VInlineDatepickerMaxMin.qjson +36 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VInlineDatepickerReset.qjson +88 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VInlineTimePicker.qjson +149 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VListGroup.qjson +1817 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VList_NavigationMenu.qjson +1636 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VMenu_PopoverInTable.qjson +534 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VMenu_sample.qjson +470 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VStepperExample.qjson +748 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VStepper_vertical.qjson +364 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VSteppers_EditableNonLinear.qjson +658 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VSteppers_LinearWithContinueButton.qjson +719 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VTextFieldQuickInputFormat.qjson +40 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VTextFieldValidation.qjson +1087 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VTextField_FocusExample.qjson +329 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VTextField_Validation_examples.qjson +877 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VTextField_customValidation.qjson +159 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VTextField_formatValueSample1.qjson +40 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VTextField_formatValueSapmle2.qjson +40 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VTextField_formatValue_exceptLetters.qjson +40 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VTextField_formatValue_specialChars.qjson +40 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VTextField_keyDown.qjson +37 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VTextField_rangeOfNumber_validation.qjson +55 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VTextareaQuickInputFormat.qjson +37 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VTextarea_format_regex_sample.qjson +321 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VTimelineExample.qjson +322 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/Vcontainer.qjson +417 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/VinlineDatePicker.qjson +61 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/V/304/261nlineDatepickerDeleteValue.qjson +304 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/alert.qjson +459 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/alertSamplePage.qjson +455 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/authorizationDashboard.qjson +24914 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/badge copy.qjson +158 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/badge.qjson +158 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/bottomSheetScrollable.qjson +3220 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/breadcrumbs.qjson +587 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/button.qjson +1765 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/cellTemplate.qjson +76 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/combobox.qjson +90 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/comboboxSelected.qjson +118 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/createChildren.qjson +406 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/createClosedPanes.qjson +245 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/creditcard.qjson +28 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/crypto.qjson +5965 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/customFilterUsingCalculateFilterExpressionEvent.qjson +305 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/customStore.qjson +156 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/dataTableFormatColumn.qjson +151 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/data_table_component_access.qjson +130 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/datagridAddDynamicColumn.qjson +1381 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/datatableAddandDeleteItem.qjson +1195 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/deleteComponent.qjson +533 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/divider.qjson +185 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/dxColumncssClass.qjson +249 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/dxDataGridAddinEditingDeleting.qjson +486 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/dxDataGridLines.qjson +120 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/dxDataGridRemove.qjson +216 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/dxDatagridHeatMap.qjson +334 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/dxDatagridUpdate.qjson +80 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/dxMasterDetail.qjson +261 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/dxPaging_withServiceCall.qjson +159 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/dxRowDragging.qjson +179 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/dxSummary_dxTotalItem_usage.qjson +219 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/dxTotalItemCustomizeText.qjson +226 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/dxTreeList_exportToExcel.qjson +266 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/dynamicComp.qjson +162 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/efficientTreeviewSearchforLargeDatasets.qjson +736 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/email.qjson +29 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/encoding.qjson +304 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/encryptedStorage_Sample.qjson +596 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/fileInput-1.qjson +904 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/fileUploadBlockComponent.qjson +68 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/fileUploadServiceCallBlockComp.qjson +128 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/findAndDeleteRelatedDynamicComp.qjson +211 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/first.qjson +57 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/fixedActionsColumn.qjson +133 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/formatWithFormatType.qjson +1740 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/getComponent_example.qjson +491 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/globalLocalization.qjson +189 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/goldenLayout.qjson +228 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/images.qjson +1461 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/list.qjson +162 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/localization_AddLanguageRTL_Sample.qjson +1192 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/newCustomerRegister.qjson +2598 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/number.qjson +41 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/number_VTextarea.qjson +37 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/onlyAlphabetic.qjson +32 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/parentPage.qjson +292 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/pipeline.qjson +77 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/pipelineSample.qjson +422 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/placeQidDynamic.qjson +193 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/progress-circular.qjson +1056 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/qtimer.qjson +335 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/radioGroupGetValues.qjson +125 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/region_definition_example.qjson +580 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/resetAndResetValidationUsage.qjson +1827 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/responsive1.qjson +312 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/responsive2.qjson +312 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/responsive3.qjson +1546 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/scrollButton.qjson +331 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/scrollDirective.qjson +297 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/selectedRow-propertyDisable.qjson +238 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/serviceCallerBlockComponent.qjson +63 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/sheet.qjson +149 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/slider.qjson +81 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/snackbars.qjson +2454 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/sso.qjson +260 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/subPage.qjson +710 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/tab.qjson +271 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/tableadditem.qjson +125 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/themeExamplePage.qjson +876 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/tiffImage.qjson +315 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/timePicker.qjson +452 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/treeview.qjson +156 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/treeview2.qjson +503 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/uniqueRowSlots.qjson +226 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/vMenu.qjson +212 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/vcarousel.qjson +659 -0
- package/dist/studio-cli/src/.ai-kit/examples/cssClass/vdatatable_slots_with_custom_validation_usage.qjson +1585 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/AllowdDates.qjson +126 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/BarChartEvents.qjson +323 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/BarChartTitle.qjson +411 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/BarChartYTicks.qjson +399 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/BarChart_TicksCallback.qjson +309 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/CalendarClickMoreExample.qjson +2 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/CalendarUsageExample.qjson +2 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/ChartLegendFont.qjson +788 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/DataTable_customSort.qjson +277 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/DocumentViewer_tiff_Sample.qjson +927 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/DoughnutChartEvents.qjson +243 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/DxDataGrid_CustomStore.qjson +267 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/Icon_Samples.qjson +181 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/Instructions.request.qjson +584 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/Intersect.qjson +404 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/LightBox.qjson +777 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/LineChart.qjson +1049 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/LineChartEvents.qjson +327 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/LineChartPointProps.qjson +416 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/LineChart_TicksCallback.qjson +309 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/LineChart_Type_Time_Sample.qjson +342 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/MMDelay.qjson +384 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/MMtrigger.qjson +209 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/NavigationDrawerExample.qjson +899 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/NavigationDrawerWithAppBar.qjson +1647 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/Parallax.qjson +416 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/PieChart.qjson +1103 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/QCaptcha.qjson +409 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/QDocumentViewer.qjson +149 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/QFrameAllowFullScreenExample.qjson +360 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/QFrameExample.qjson +213 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/QIdleTimer.qjson +221 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/QImgZoomRotate.qjson +432 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/QImgZoomTypeNextTo.qjson +196 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/QImgZoomTypeOn.qjson +196 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/QLabel_URL_Click_SendParams.qjson +477 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/VList_NavMenu.qjson +3008 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/alertSamplePage.qjson +450 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/authorizationDashboard.qjson +24914 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/badge.qjson +151 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/bottomSheetScrollable.qjson +3120 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/breadcrumbs.qjson +563 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/button.qjson +1658 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/cellTemplate.qjson +96 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/combobox.qjson +109 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/comboboxSelected.qjson +119 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/createChildren.qjson +411 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/createClosedPanes.qjson +265 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/creditcard.qjson +49 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/crypto.qjson +5632 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/customFilterUsingCalculateFilterExpressionEvent.qjson +301 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/customStore.qjson +157 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/dataTableFormatColumn.qjson +151 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/data_table_component_access.qjson +130 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/datagridAddDynamicColumn.qjson +1381 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/datatableAddandDeleteItem.qjson +1195 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/datatable_selectable_feature_select_unselect_usage.qjson +300 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/deleteComponent.qjson +501 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/divider.qjson +180 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/dxColumncssClass.qjson +249 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/dxDataGridAddinEditingDeleting.qjson +486 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/dxDataGridLines.qjson +121 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/dxDataGridRemove.qjson +209 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/dxDatagridHeatMap.qjson +335 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/dxDatagridUpdate.qjson +80 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/dxMasterDetail.qjson +257 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/dxPaging_withServiceCall.qjson +160 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/dxRowDragging.qjson +175 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/dxSummary_dxTotalItem_usage.qjson +215 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/dxTotalItemCustomizeText.qjson +222 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/dxTreeList_exportToExcel.qjson +267 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/dynamicComp.qjson +156 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/efficientTreeviewSearchforLargeDatasets.qjson +736 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/email.qjson +177 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/encoding.qjson +304 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/encryptedStorage_Sample.qjson +596 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/exportToXlsx_Sample.qjson +1956 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/images.qjson +1379 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/images_olddd.qjson +1366 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/newCustomerRegister.qjson +2598 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/number.qjson +169 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/number_VTextarea.qjson +163 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/onlyAlphabetic.qjson +164 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/parentPage.qjson +351 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/pipeline.qjson +78 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/pipelineSample.qjson +410 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/placeQidDynamic.qjson +289 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/progress-circular.qjson +1014 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/samplePageLottie.qjson +696 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/server-SideAutocompleteHandling.qjson +696 -0
- package/dist/studio-cli/src/.ai-kit/examples/style/xlsxToJson_Sample.qjson +772 -0
- package/dist/studio-cli/src/.ai-kit/knowledge/00-qjson-structure-legacy.md +65 -0
- package/dist/studio-cli/src/.ai-kit/knowledge/00-qjson-structure.md +67 -0
- package/dist/studio-cli/src/.ai-kit/knowledge/01-properties.md +77 -0
- package/dist/studio-cli/src/.ai-kit/knowledge/02-events-and-scripting.md +79 -0
- package/dist/studio-cli/src/.ai-kit/knowledge/03-layout-and-slots-legacy.md +72 -0
- package/dist/studio-cli/src/.ai-kit/knowledge/03-layout-and-slots.md +64 -0
- package/dist/studio-cli/src/.ai-kit/knowledge/04-styling-legacy.md +73 -0
- package/dist/studio-cli/src/.ai-kit/knowledge/04-styling.md +177 -0
- package/dist/studio-cli/src/.ai-kit/knowledge/05-components.md +97 -0
- package/dist/studio-cli/src/.ai-kit/knowledge/06-services.md +68 -0
- package/dist/studio-cli/src/.ai-kit/knowledge/07-localization.md +40 -0
- package/dist/studio-cli/src/.ai-kit/knowledge/08-dynamic-components.md +49 -0
- package/dist/studio-cli/src/.ai-kit/knowledge/09-page-skeletons-legacy.md +83 -0
- package/dist/studio-cli/src/.ai-kit/knowledge/09-page-skeletons.md +87 -0
- package/dist/studio-cli/src/.ai-kit/knowledge/10-validation-and-sync-legacy.md +69 -0
- package/dist/studio-cli/src/.ai-kit/knowledge/10-validation-and-sync.md +78 -0
- package/dist/studio-cli/src/.ai-kit/knowledge/11-cli-bridge.md +97 -0
- package/dist/studio-cli/src/.ai-kit/knowledge/12-render-check.md +45 -0
- package/dist/studio-cli/src/.ai-kit/opencode.jsonc +95 -0
- package/dist/studio-cli/src/.ai-kit/reference/component-catalog-legacy.md +120 -0
- package/dist/studio-cli/src/.ai-kit/reference/component-catalog.md +135 -0
- package/dist/studio-cli/src/.ai-kit/reference/component-contracts.json +14964 -0
- package/dist/studio-cli/src/.ai-kit/reference/component-index.json +114 -0
- package/dist/studio-cli/src/.ai-kit/reference/component-styles.json +6983 -0
- package/dist/studio-cli/src/.ai-kit/reference/events-system.md +98 -0
- package/dist/studio-cli/src/.ai-kit/reference/layout-system.md +99 -0
- package/dist/studio-cli/src/.ai-kit/reference/mapping-S-vuetify-class.md +103 -0
- package/dist/studio-cli/src/.ai-kit/reference/qjson-schema-legacy.md +189 -0
- package/dist/studio-cli/src/.ai-kit/reference/qjson-schema.md +188 -0
- package/dist/studio-cli/src/.ai-kit/reference/quick-api.md +248 -0
- package/dist/studio-cli/src/.ai-kit/reference/styling-system.md +193 -0
- package/dist/studio-cli/src/.ai-kit/skills/figma-to-qjson/SKILL.md +116 -0
- package/dist/studio-cli/src/.ai-kit/skills/quick-qjson/SKILL.md +36 -0
- package/dist/studio-cli/src/.ai-kit/tools/README.md +42 -0
- package/dist/studio-cli/src/control/controlClient.js +119 -0
- package/dist/studio-cli/src/control/controlClient.js.map +1 -0
- package/dist/studio-cli/src/control/convertToBlock.js +70 -0
- package/dist/studio-cli/src/control/convertToBlock.js.map +1 -0
- package/dist/studio-cli/src/control/pickWorkspaceDir.js +105 -0
- package/dist/studio-cli/src/control/pickWorkspaceDir.js.map +1 -0
- package/dist/studio-cli/src/control/protocolHandler.js +60 -0
- package/dist/studio-cli/src/control/protocolHandler.js.map +1 -0
- package/dist/studio-cli/src/control/pull.js +135 -0
- package/dist/studio-cli/src/control/pull.js.map +1 -0
- package/dist/studio-cli/src/control/push.js +113 -0
- package/dist/studio-cli/src/control/push.js.map +1 -0
- package/dist/studio-cli/src/control/registerProtocol.js +251 -0
- package/dist/studio-cli/src/control/registerProtocol.js.map +1 -0
- package/dist/studio-cli/src/control/startWorking.js +70 -0
- package/dist/studio-cli/src/control/startWorking.js.map +1 -0
- package/dist/studio-cli/src/control/workspaceSetup.js +66 -0
- package/dist/studio-cli/src/control/workspaceSetup.js.map +1 -0
- package/dist/studio-cli/src/index.js +193 -0
- package/dist/studio-cli/src/index.js.map +1 -0
- package/dist/studio-cli/src/isolatedCommands/figmaPull.js +207 -0
- package/dist/studio-cli/src/isolatedCommands/figmaPull.js.map +1 -0
- package/dist/studio-cli/src/isolatedCommands/qjsonBuild.js +26 -0
- package/dist/studio-cli/src/isolatedCommands/qjsonBuild.js.map +1 -0
- package/dist/studio-cli/src/isolatedCommands/validateQjson.js +560 -0
- package/dist/studio-cli/src/isolatedCommands/validateQjson.js.map +1 -0
- package/dist/studio-cli/src/isolatedCommands/validateStyles.js +672 -0
- package/dist/studio-cli/src/isolatedCommands/validateStyles.js.map +1 -0
- package/dist/studio-cli/src/server/bridgeServer.js +817 -0
- package/dist/studio-cli/src/server/bridgeServer.js.map +1 -0
- package/dist/studio-cli/src/server/peer.js +119 -0
- package/dist/studio-cli/src/server/peer.js.map +1 -0
- package/dist/studio-cli/src/server/serverInfo.js +59 -0
- package/dist/studio-cli/src/server/serverInfo.js.map +1 -0
- package/dist/studio-cli/src/server/wsRaw.js +252 -0
- package/dist/studio-cli/src/server/wsRaw.js.map +1 -0
- package/dist/studio-cli/src/util/frontmatter.js +71 -0
- package/dist/studio-cli/src/util/frontmatter.js.map +1 -0
- package/dist/studio-cli/src/util/logger.js +28 -0
- package/dist/studio-cli/src/util/logger.js.map +1 -0
- package/dist/studio-cli/src/util/modelRef.js +38 -0
- package/dist/studio-cli/src/util/modelRef.js.map +1 -0
- package/dist/studio-cli/src/util/state.js +36 -0
- package/dist/studio-cli/src/util/state.js.map +1 -0
- package/dist/studio-cli/src/version.js +6 -0
- package/dist/studio-cli/src/version.js.map +1 -0
- package/dist/ui/src/common/promiseHelper.js +6 -0
- package/dist/ui/src/common/promiseHelper.js.map +1 -0
- package/dist/ui/src/domain/model/IObject.js +3 -0
- package/dist/ui/src/domain/model/IObject.js.map +1 -0
- package/dist/ui/src/domain/model/models.js +163 -0
- package/dist/ui/src/domain/model/models.js.map +1 -0
- package/package.json +32 -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 + .ai-kit kit.
|
|
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 **`.ai-kit/`** kit — 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 **`.ai-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
|
+
`npx tsx .ai-kit/tools/check_qjson.ts <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,36 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: quick-qjson
|
|
3
|
+
description: Create, edit, and validate Quick / Plateau Studio .qjson UI pages. Use whenever the task involves authoring, modifying, reviewing, or validating .qjson files exported from Studio — covers the qjson schema, the quick.* scripting API, the component registry, the styling/layout/events systems, and validating a page before it is synced back to Studio.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Quick QJSON authoring
|
|
7
|
+
|
|
8
|
+
This workspace holds **Quick / Plateau Studio `.qjson`** UI pages exported from Studio (the web IDE). You edit them locally and sync them back. The complete, source-of-truth knowledge lives in the **`.ai-kit/`** folder at the workspace root — treat it as authoritative over any prior assumptions about Quick.
|
|
9
|
+
|
|
10
|
+
> Paths below are written relative to the workspace root (your working directory), so they resolve regardless of where this skill file is installed.
|
|
11
|
+
|
|
12
|
+
## Start here
|
|
13
|
+
Read **`.ai-kit/AGENT_GUIDE.md`** — the dispatcher. Its **Step 0** reads the page's root-level `opt.V` and routes you to the **`S`** track (new page / `opt.V >= 2.0`, guide `AGENT_GUIDE-s.md`) or the **legacy** track (`opt.V` missing / `< 2.0`, guide `AGENT_GUIDE-legacy.md`). Style/layout docs are split by era; open only your track's docs plus the shared ones. Don't load it all up front.
|
|
14
|
+
|
|
15
|
+
- Shared how-to (both tracks) → `.ai-kit/knowledge/` `01`,`02`,`05`,`06`,`07`,`08`,`11`
|
|
16
|
+
- Shared reference — the **generation inputs, read before you write** → `.ai-kit/reference/` (`quick-api.md`, `component-index.json`, `component-contracts.json`, `component-styles.json`, `events-system.md`)
|
|
17
|
+
- Style-split docs (pick your track) → schema `qjson-schema[-legacy].md`; structure `00-qjson-structure[-legacy].md`; layout `03-layout-and-slots[-legacy].md`; styling `04-styling.md`/`04-styling-legacy.md`; styling ref `styling-system.md`/`layout-system.md`; catalog `component-catalog[-legacy].md`; skeletons `09-page-skeletons[-legacy].md`; validation `10-validation-and-sync[-legacy].md`
|
|
18
|
+
- Copy-paste skeletons / examples → your track's `09-page-skeletons[-legacy].md`; `.ai-kit/examples/style/` (S) or `.ai-kit/examples/cssClass/` (legacy) — see `.ai-kit/examples/README.md`
|
|
19
|
+
- Deep official docs (fallback) → `.ai-kit/docs/` (index: `.ai-kit/docs/README.md`)
|
|
20
|
+
|
|
21
|
+
## Workflow
|
|
22
|
+
1. Read the target `.qjson` + 1–2 sibling pages to copy project conventions (IDs, service URLs, CSS classes, `<<qjson:id>>` navigation).
|
|
23
|
+
2. Author only `pJson` / `lrids` — **omit the compiled `cJson` / `clrids` entirely** (never write them into a new file; strip them from any downloaded file you edit — Studio regenerates them on import).
|
|
24
|
+
3. Build top-down from a skeleton; for large pages edit 1–3 sections at a time.
|
|
25
|
+
4. **Compile before finishing:** `studio buildQjson <file>` (compiles with the bundled Quick compiler and reports any errors). Fix every error.
|
|
26
|
+
5. Report: changed file(s), what changed, the validation result, and any project assumption you made.
|
|
27
|
+
|
|
28
|
+
## Golden rules (full list + rationale in `.ai-kit/AGENT_GUIDE.md`)
|
|
29
|
+
- Valid `T` (check `component-index.json`); unique `P.ID.H` and `_Editor.eID` (need not match). Don't invent props/events — use `component-contracts.json`.
|
|
30
|
+
- Prop strings single-quoted in `H`; QScript object literals use `=`; `QLabel.text` → PType `prop`; `VIcon` icon → `text` (PType `text`).
|
|
31
|
+
- Events: `quick.return` (never native `return`); no browser globals; **event handlers are always `"HL":"TS"`** (property/binding expressions default to `QS`). Props use `LR('key')`, events use `quick.LR('key')`.
|
|
32
|
+
- Layout mechanism is per-system (read `opt.V` first): **`S` page** → width/direction/spacing in `S` (`S.col`, `S.flexDirection`, …), never `O.layout`; **legacy page** → `O.layout.dOpt` ↔ `class` synced, size columns with `c:col-N`. Charts only `Bar`/`Line`/`Doughnut`; alerts include `actionButtons`; `VBtn` label is a child component.
|
|
33
|
+
- Don't rename files — Studio syncs back by name/id.
|
|
34
|
+
|
|
35
|
+
## Specialists
|
|
36
|
+
You can delegate to the specialist subagents in `.ai-kit/agents/` — `quick-styling` (styling **and** layout on `S`-system pages), `quick-styling-legacy` (`O.layout` + CSS classes on legacy `V<2` pages), `quick-events` (shared) — under the `quick-qjson-author` orchestrator, which reads `opt.V` and routes to the right presentation specialist (routing decision: `.ai-kit/AGENT_GUIDE.md` Step 0).
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# Tools
|
|
2
|
+
|
|
3
|
+
The point here is to replace the manual *paste-into-Studio → copy-the-error → paste-to-AI → paste-back* loop with a **local compile the AI runs itself**: generate/edit qjson → compile → read errors → fix → repeat, until clean.
|
|
4
|
+
|
|
5
|
+
## `studio buildQjson` — compile (use this in the fix-loop)
|
|
6
|
+
|
|
7
|
+
studio-cli bundles the official Quick compiler and exposes it as a single command:
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
studio buildQjson <file.qjson | folder>
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
It compiles `pJson → cJson` exactly like the editor and reports **QScript/TypeScript syntax & type errors** in your handlers — the editor's real check, always in sync with the runtime. Exit code `0` = compiled clean, non-zero = errors.
|
|
14
|
+
|
|
15
|
+
Its output has **three sections**, run in order on the same file(s): (1) the official compiler report above, (2) a **structural validation** pass (the editor-domain checks the compiler doesn't do — unknown component `T`, duplicate `ID`/`eID`, bad `PType`/`HL`, `dOpt`↔`class` drift, containment), and (3) a **style validation** pass (below). Read all three.
|
|
16
|
+
|
|
17
|
+
### Running `studio buildQjson` from a workspace
|
|
18
|
+
`studio pull` installs this kit into your workspace. Make sure `studio` is on your PATH (a global install — the normal case), then run `studio buildQjson <file>` from anywhere in the workspace.
|
|
19
|
+
|
|
20
|
+
### The fix-loop (what the agent does)
|
|
21
|
+
```
|
|
22
|
+
generate/edit page.qjson
|
|
23
|
+
→ studio buildQjson page.qjson
|
|
24
|
+
→ if it reports errors: read them, fix the file, repeat
|
|
25
|
+
→ else: deliver
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
### Built-in S-first style check (section 3 of `buildQjson`)
|
|
29
|
+
|
|
30
|
+
The compiler checks *script/type* correctness but **silently ignores unknown styling** — a wrong `S` param (e.g. `fontColor` on a VIcon, which really wants `iconColor`) or a Vuetify prop that should be `S` (`color` on a VBtn) compiles "clean" yet renders nothing. `buildQjson` closes that gap automatically in its third section, deterministically, straight from `component-contracts.json` + `component-styles.json`. It activates **only on S-track pages** (`opt.V >= 2.0`, or a page that carries an `S` object); legacy pages don't render `S`, so they're reported as `skipped`.
|
|
31
|
+
|
|
32
|
+
Per node it flags, with a suggested fix:
|
|
33
|
+
- **`prop-to-S`** — a styling prop with an `S` equivalent (`color`→`backgroundColor`, `elevation`→`boxShadow`, VCol `cols/sm/md/lg`→`col`, `block`→`width:100%`).
|
|
34
|
+
- **`class-token-to-S` / `class-token-misuse`** — a `class` token that has an `S` target the component supports (move it), or a grid class on the wrong component (`col-12` on a VBtn → `width:100%`).
|
|
35
|
+
- **`unknown-S-param`** — an `S` param the component doesn't have (with a "did you mean" rename, e.g. `borderTopLeftRadius`→`innerBorderTopLeftRadius` on VTextField).
|
|
36
|
+
- **`unknown-prop`**, **`style-conflict`** (same style in both `S` and `class`), **`legacy-layout`** (`O.layout`/`dOpt` still present).
|
|
37
|
+
|
|
38
|
+
Rule order matches the S-first policy: **contract prop → S equivalent → Vuetify class only as last resort.** No separate command to run — every `buildQjson` includes it, so it's part of the same fix-loop.
|
|
39
|
+
|
|
40
|
+
## Reference data (`reference/*.json`)
|
|
41
|
+
|
|
42
|
+
The style + structural checks read two maintainer-owned files — `component-contracts.json` (per-component props/events/PType) and `component-styles.json` (per-component `S` params) — extracted from authoritative Quick runtime sources (`ComponentPims.ts`, `componentList.js`, `styleDefinitions.ts`). They're regenerated by the Quick team when the runtime changes; treat them as read-only ground truth in a workspace.
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Control komutu istemcisi — yalnızca TETİKLEYİCİ. workspace'in `.studio/server.json`'ından portu
|
|
3
|
+
// okur, çalışan `studio connect` daemon'ına POST /control/<cmd> atar (boş), server'ın özetini basar.
|
|
4
|
+
// ASIL İŞİ SERVER YAPAR (dosya tarama/yazma, relay, state) — büyük veri HTTP'den geçmez.
|
|
5
|
+
// pid kontrolü YOK — server ayakta değilse fetch zaten bağlantı reddiyle patlar.
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.runControl = void 0;
|
|
8
|
+
const serverInfo_1 = require("../server/serverInfo");
|
|
9
|
+
const logger_1 = require("../util/logger");
|
|
10
|
+
const BAR_WIDTH = 20;
|
|
11
|
+
function createProgress(text) {
|
|
12
|
+
if (!process.stdout.isTTY)
|
|
13
|
+
return { update: () => { }, stop: () => { } };
|
|
14
|
+
let maxLen = 0;
|
|
15
|
+
const write = (line) => {
|
|
16
|
+
maxLen = Math.max(maxLen, line.length);
|
|
17
|
+
process.stdout.write(`\r${line}`);
|
|
18
|
+
};
|
|
19
|
+
write(` ${text}`);
|
|
20
|
+
return {
|
|
21
|
+
update: (written, total) => {
|
|
22
|
+
const filled = total > 0 ? Math.round((written / total) * BAR_WIDTH) : 0;
|
|
23
|
+
const bar = "-".repeat(filled).padEnd(BAR_WIDTH, " ");
|
|
24
|
+
write(` ${text} ${bar} ${written}/${total}`);
|
|
25
|
+
},
|
|
26
|
+
stop: () => {
|
|
27
|
+
process.stdout.write("\n");
|
|
28
|
+
},
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
async function readNdjsonStream(body, onLine) {
|
|
32
|
+
const reader = body.getReader();
|
|
33
|
+
const decoder = new TextDecoder();
|
|
34
|
+
let buffer = "";
|
|
35
|
+
while (true) {
|
|
36
|
+
const { done, value } = await reader.read();
|
|
37
|
+
if (done)
|
|
38
|
+
break;
|
|
39
|
+
buffer += decoder.decode(value, { stream: true });
|
|
40
|
+
const lines = buffer.split("\n");
|
|
41
|
+
buffer = lines.pop() ?? "";
|
|
42
|
+
for (const line of lines) {
|
|
43
|
+
const t = line.trim();
|
|
44
|
+
if (t)
|
|
45
|
+
try {
|
|
46
|
+
onLine(JSON.parse(t));
|
|
47
|
+
}
|
|
48
|
+
catch { /* skip */ }
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
if (buffer.trim())
|
|
52
|
+
try {
|
|
53
|
+
onLine(JSON.parse(buffer.trim()));
|
|
54
|
+
}
|
|
55
|
+
catch { /* skip */ }
|
|
56
|
+
}
|
|
57
|
+
/** @returns process çıkış kodu (0 ok, 1 hata) */
|
|
58
|
+
async function runControl(rootDir, cmd) {
|
|
59
|
+
const info = (0, serverInfo_1.readServerInfo)(rootDir);
|
|
60
|
+
if (!info) {
|
|
61
|
+
logger_1.logger.error("no studio server in this workspace — run `studio connect` first");
|
|
62
|
+
return 1;
|
|
63
|
+
}
|
|
64
|
+
const progress = createProgress(`${cmd}…`);
|
|
65
|
+
let res;
|
|
66
|
+
try {
|
|
67
|
+
res = await fetch(`http://127.0.0.1:${info.port}/control/${cmd}`, { method: "POST" });
|
|
68
|
+
}
|
|
69
|
+
catch {
|
|
70
|
+
progress.stop();
|
|
71
|
+
logger_1.logger.error("studio server not reachable — is `studio connect` running?");
|
|
72
|
+
return 1;
|
|
73
|
+
}
|
|
74
|
+
const contentType = res.headers.get("content-type") ?? "";
|
|
75
|
+
if (contentType.includes("application/x-ndjson") && res.body) {
|
|
76
|
+
let lastMessage;
|
|
77
|
+
const skippedLines = [];
|
|
78
|
+
await readNdjsonStream(res.body, (data) => {
|
|
79
|
+
if (data["progress"] !== undefined && data["total"] !== undefined) {
|
|
80
|
+
progress.update(Number(data["progress"]), Number(data["total"]));
|
|
81
|
+
}
|
|
82
|
+
else if (data["skipped"] !== undefined) {
|
|
83
|
+
skippedLines.push(String(data["skipped"]));
|
|
84
|
+
}
|
|
85
|
+
else if (data["message"] !== undefined) {
|
|
86
|
+
lastMessage = String(data["message"]);
|
|
87
|
+
}
|
|
88
|
+
else if (data["error"] !== undefined) {
|
|
89
|
+
lastMessage = String(data["error"]);
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
progress.stop();
|
|
93
|
+
for (const line of skippedLines)
|
|
94
|
+
logger_1.logger.warn(`skipped: ${line}`);
|
|
95
|
+
if (!res.ok) {
|
|
96
|
+
logger_1.logger.error(`${cmd} failed: HTTP ${res.status}`);
|
|
97
|
+
return 1;
|
|
98
|
+
}
|
|
99
|
+
if (lastMessage)
|
|
100
|
+
logger_1.logger.info(lastMessage);
|
|
101
|
+
return 0;
|
|
102
|
+
}
|
|
103
|
+
// NDJSON olmayan yanıt (push, startWorking, hata vb.)
|
|
104
|
+
progress.stop();
|
|
105
|
+
const text = await res.text();
|
|
106
|
+
if (!res.ok) {
|
|
107
|
+
logger_1.logger.error(`${cmd} failed: ${text || `HTTP ${res.status}`}`);
|
|
108
|
+
return 1;
|
|
109
|
+
}
|
|
110
|
+
try {
|
|
111
|
+
logger_1.logger.info(JSON.parse(text).message ?? text);
|
|
112
|
+
}
|
|
113
|
+
catch {
|
|
114
|
+
logger_1.logger.info(text);
|
|
115
|
+
}
|
|
116
|
+
return 0;
|
|
117
|
+
}
|
|
118
|
+
exports.runControl = runControl;
|
|
119
|
+
//# sourceMappingURL=controlClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"controlClient.js","sourceRoot":"","sources":["../../../../src/control/controlClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.runConvertToBlock = void 0;
|
|
4
|
+
const promises_1 = require("node:fs/promises");
|
|
5
|
+
const node_path_1 = require("node:path");
|
|
6
|
+
const serverInfo_1 = require("../server/serverInfo");
|
|
7
|
+
const frontmatter_1 = require("../util/frontmatter");
|
|
8
|
+
const logger_1 = require("../util/logger");
|
|
9
|
+
/** studio convertToBlock <yol>: dosyadan modelId çözer, Studio'da qjson'ı block component'e çevirir. */
|
|
10
|
+
async function runConvertToBlock(rootDir, filePath) {
|
|
11
|
+
const absPath = (0, node_path_1.resolve)(filePath);
|
|
12
|
+
let content;
|
|
13
|
+
try {
|
|
14
|
+
content = await (0, promises_1.readFile)(absPath, "utf8");
|
|
15
|
+
}
|
|
16
|
+
catch {
|
|
17
|
+
logger_1.logger.error(`cannot read file: ${absPath}`);
|
|
18
|
+
return 1;
|
|
19
|
+
}
|
|
20
|
+
const parsed = (0, frontmatter_1.parseFrontmatter)(content);
|
|
21
|
+
if (!parsed) {
|
|
22
|
+
logger_1.logger.error(`no studio frontmatter in ${absPath} — is this a studio-managed file?`);
|
|
23
|
+
return 1;
|
|
24
|
+
}
|
|
25
|
+
const { id: modelId } = parsed.meta;
|
|
26
|
+
const info = (0, serverInfo_1.readServerInfo)(rootDir);
|
|
27
|
+
if (!info) {
|
|
28
|
+
logger_1.logger.error("no studio server in this workspace — run `studio connect` first");
|
|
29
|
+
return 1;
|
|
30
|
+
}
|
|
31
|
+
let res;
|
|
32
|
+
try {
|
|
33
|
+
res = await fetch(`http://127.0.0.1:${info.port}/control/convertToBlock`, {
|
|
34
|
+
method: "POST",
|
|
35
|
+
headers: { "Content-Type": "application/json" },
|
|
36
|
+
body: JSON.stringify({ modelId }),
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
logger_1.logger.error("studio server not reachable — is `studio connect` running?");
|
|
41
|
+
return 1;
|
|
42
|
+
}
|
|
43
|
+
if (!res.ok) {
|
|
44
|
+
const text = await res.text();
|
|
45
|
+
let errMsg = text;
|
|
46
|
+
try {
|
|
47
|
+
const j = JSON.parse(text);
|
|
48
|
+
if (j.error)
|
|
49
|
+
errMsg = j.error;
|
|
50
|
+
}
|
|
51
|
+
catch { /* keep raw */ }
|
|
52
|
+
logger_1.logger.error(`convertToBlock failed: ${errMsg || `HTTP ${res.status}`}`);
|
|
53
|
+
return 1;
|
|
54
|
+
}
|
|
55
|
+
const result = (await res.json());
|
|
56
|
+
if (!result.converted) {
|
|
57
|
+
logger_1.logger.error(`convert failed for model ${modelId}`);
|
|
58
|
+
return 1;
|
|
59
|
+
}
|
|
60
|
+
// Dönüşüm sonrası lokaldeki frontmatter'ı da güncelle (bayrak zaten varsa dokunma).
|
|
61
|
+
if (!parsed.meta.blockComponent) {
|
|
62
|
+
await (0, promises_1.writeFile)(absPath, (0, frontmatter_1.writeWithFrontmatter)({ ...parsed.meta, blockComponent: true }, parsed.body), "utf8");
|
|
63
|
+
}
|
|
64
|
+
logger_1.logger.info(result.alreadyBlock
|
|
65
|
+
? `${filePath} is already a block component`
|
|
66
|
+
: `${filePath} converted to block component`);
|
|
67
|
+
return 0;
|
|
68
|
+
}
|
|
69
|
+
exports.runConvertToBlock = runConvertToBlock;
|
|
70
|
+
//# sourceMappingURL=convertToBlock.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"convertToBlock.js","sourceRoot":"","sources":["../../../../src/control/convertToBlock.ts"],"names":[],"mappings":";;;AAAA,+CAAuD;AACvD,yCAAoC;AACpC,qDAAsD;AACtD,qDAA6E;AAC7E,2CAAwC;AAGxC,wGAAwG;AACjG,KAAK,UAAU,iBAAiB,CAAC,OAAe,EAAE,QAAgB;IACvE,MAAM,OAAO,GAAG,IAAA,mBAAO,EAAC,QAAQ,CAAC,CAAC;IAElC,IAAI,OAAe,CAAC;IACpB,IAAI;QACF,OAAO,GAAG,MAAM,IAAA,mBAAQ,EAAC,OAAO,EAAE,MAAM,CAAC,CAAC;KAC3C;IAAC,MAAM;QACN,eAAM,CAAC,KAAK,CAAC,qBAAqB,OAAO,EAAE,CAAC,CAAC;QAC7C,OAAO,CAAC,CAAC;KACV;IAED,MAAM,MAAM,GAAG,IAAA,8BAAgB,EAAC,OAAO,CAAC,CAAC;IACzC,IAAI,CAAC,MAAM,EAAE;QACX,eAAM,CAAC,KAAK,CAAC,4BAA4B,OAAO,mCAAmC,CAAC,CAAC;QACrF,OAAO,CAAC,CAAC;KACV;IAED,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC;IAEpC,MAAM,IAAI,GAAG,IAAA,2BAAc,EAAC,OAAO,CAAC,CAAC;IACrC,IAAI,CAAC,IAAI,EAAE;QACT,eAAM,CAAC,KAAK,CAAC,iEAAiE,CAAC,CAAC;QAChF,OAAO,CAAC,CAAC;KACV;IAED,IAAI,GAAa,CAAC;IAClB,IAAI;QACF,GAAG,GAAG,MAAM,KAAK,CAAC,oBAAoB,IAAI,CAAC,IAAI,yBAAyB,EAAE;YACxE,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC;SAClC,CAAC,CAAC;KACJ;IAAC,MAAM;QACN,eAAM,CAAC,KAAK,CAAC,4DAA4D,CAAC,CAAC;QAC3E,OAAO,CAAC,CAAC;KACV;IAED,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE;QACX,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAC9B,IAAI,MAAM,GAAG,IAAI,CAAC;QAClB,IAAI;YAAE,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAuB,CAAC;YAAC,IAAI,CAAC,CAAC,KAAK;gBAAE,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC;SAAE;QAAC,MAAM,EAAE,cAAc,EAAE;QACjH,eAAM,CAAC,KAAK,CAAC,0BAA0B,MAAM,IAAI,QAAQ,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACzE,OAAO,CAAC,CAAC;KACV;IAED,MAAM,MAAM,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAgC,CAAC;IAEjE,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;QACrB,eAAM,CAAC,KAAK,CAAC,4BAA4B,OAAO,EAAE,CAAC,CAAC;QACpD,OAAO,CAAC,CAAC;KACV;IAED,oFAAoF;IACpF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE;QAC/B,MAAM,IAAA,oBAAS,EAAC,OAAO,EAAE,IAAA,kCAAoB,EAAC,EAAE,GAAG,MAAM,CAAC,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;KAC/G;IAED,eAAM,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY;QAC7B,CAAC,CAAC,GAAG,QAAQ,+BAA+B;QAC5C,CAAC,CAAC,GAAG,QAAQ,+BAA+B,CAAC,CAAC;IAChD,OAAO,CAAC,CAAC;AACX,CAAC;AA7DD,8CA6DC"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
+
exports.pickWorkspaceDir = void 0;
|
|
27
|
+
const os = __importStar(require("node:os"));
|
|
28
|
+
const node_child_process_1 = require("node:child_process");
|
|
29
|
+
const node_fs_1 = require("node:fs");
|
|
30
|
+
const node_path_1 = require("node:path");
|
|
31
|
+
const logger_1 = require("../util/logger");
|
|
32
|
+
/**
|
|
33
|
+
* Open a native OS folder picker dialog and return the selected absolute path,
|
|
34
|
+
* or null if the user cancelled.
|
|
35
|
+
*
|
|
36
|
+
* macOS : osascript "choose folder"
|
|
37
|
+
* Windows: PowerShell + WinForms FolderBrowserDialog
|
|
38
|
+
*/
|
|
39
|
+
function pickWorkspaceDir() {
|
|
40
|
+
const platform = os.platform();
|
|
41
|
+
if (platform === "darwin") {
|
|
42
|
+
return pickMac();
|
|
43
|
+
}
|
|
44
|
+
else if (platform === "win32") {
|
|
45
|
+
return pickWindows();
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
logger_1.logger.error(`Folder picker is not supported on platform: ${platform}`);
|
|
49
|
+
return null;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
exports.pickWorkspaceDir = pickWorkspaceDir;
|
|
53
|
+
function pickMac() {
|
|
54
|
+
// "with prompt" surfaces the dialog even when called from a background process.
|
|
55
|
+
// "default location" starts in the home directory.
|
|
56
|
+
const script = [
|
|
57
|
+
'tell application "Finder" to activate',
|
|
58
|
+
'set chosen to choose folder with prompt "Select workspace folder for Studio CLI:"',
|
|
59
|
+
"return POSIX path of chosen",
|
|
60
|
+
].join("\n");
|
|
61
|
+
const result = (0, node_child_process_1.spawnSync)("osascript", ["-e", script], { encoding: "utf8" });
|
|
62
|
+
if (result.status !== 0) {
|
|
63
|
+
// User cancelled (exit 1) or other error.
|
|
64
|
+
const stderr = result.stderr?.trim();
|
|
65
|
+
if (stderr && !stderr.includes("User canceled")) {
|
|
66
|
+
logger_1.logger.error(`osascript error: ${stderr}`);
|
|
67
|
+
}
|
|
68
|
+
return null;
|
|
69
|
+
}
|
|
70
|
+
return result.stdout.trim().replace(/\/$/, "") || null;
|
|
71
|
+
}
|
|
72
|
+
function pickWindows() {
|
|
73
|
+
const outFile = (0, node_path_1.join)(os.tmpdir(), `studio-pick-${process.pid}-${Date.now()}.txt`);
|
|
74
|
+
const ps = [
|
|
75
|
+
"Add-Type -AssemblyName System.Windows.Forms",
|
|
76
|
+
"$d = New-Object System.Windows.Forms.FolderBrowserDialog",
|
|
77
|
+
'$d.Description = "Select workspace folder for Studio CLI:"',
|
|
78
|
+
"$d.ShowNewFolderButton = $false",
|
|
79
|
+
"$null = $d.ShowDialog()",
|
|
80
|
+
`[System.IO.File]::WriteAllText('${outFile}', $d.SelectedPath, [System.Text.Encoding]::UTF8)`,
|
|
81
|
+
].join("; ");
|
|
82
|
+
// -WindowStyle Hidden + windowsHide: boş PowerShell konsol penceresini bastırır. Klasör
|
|
83
|
+
// diyaloğu ayrı GUI penceresi olduğu için yine görünür.
|
|
84
|
+
const result = (0, node_child_process_1.spawnSync)("powershell.exe", ["-NoProfile", "-WindowStyle", "Hidden", "-Command", ps], { encoding: "utf8", windowsHide: true });
|
|
85
|
+
if (result.status !== 0) {
|
|
86
|
+
const stderr = result.stderr?.trim();
|
|
87
|
+
if (stderr)
|
|
88
|
+
logger_1.logger.error(`PowerShell error: ${stderr}`);
|
|
89
|
+
return null;
|
|
90
|
+
}
|
|
91
|
+
// İptal edilirse SelectedPath "" → dosya boş → null.
|
|
92
|
+
try {
|
|
93
|
+
return (0, node_fs_1.readFileSync)(outFile, "utf8").replace(/^/, "").trim() || null;
|
|
94
|
+
}
|
|
95
|
+
catch {
|
|
96
|
+
return null;
|
|
97
|
+
}
|
|
98
|
+
finally {
|
|
99
|
+
try {
|
|
100
|
+
(0, node_fs_1.unlinkSync)(outFile);
|
|
101
|
+
}
|
|
102
|
+
catch { /* yok say */ }
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=pickWorkspaceDir.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pickWorkspaceDir.js","sourceRoot":"","sources":["../../../../src/control/pickWorkspaceDir.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4CAA8B;AAC9B,2DAA+C;AAC/C,qCAAmD;AACnD,yCAAiC;AACjC,2CAAwC;AAExC;;;;;;GAMG;AACH,SAAgB,gBAAgB;IAC9B,MAAM,QAAQ,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC;IAE/B,IAAI,QAAQ,KAAK,QAAQ,EAAE;QACzB,OAAO,OAAO,EAAE,CAAC;KAClB;SAAM,IAAI,QAAQ,KAAK,OAAO,EAAE;QAC/B,OAAO,WAAW,EAAE,CAAC;KACtB;SAAM;QACL,eAAM,CAAC,KAAK,CAAC,+CAA+C,QAAQ,EAAE,CAAC,CAAC;QACxE,OAAO,IAAI,CAAC;KACb;AACH,CAAC;AAXD,4CAWC;AAED,SAAS,OAAO;IACd,gFAAgF;IAChF,mDAAmD;IACnD,MAAM,MAAM,GAAG;QACb,uCAAuC;QACvC,mFAAmF;QACnF,6BAA6B;KAC9B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEb,MAAM,MAAM,GAAG,IAAA,8BAAS,EAAC,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC;IAE5E,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;QACvB,0CAA0C;QAC1C,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC;QACrC,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE;YAC/C,eAAM,CAAC,KAAK,CAAC,oBAAoB,MAAM,EAAE,CAAC,CAAC;SAC5C;QACD,OAAO,IAAI,CAAC;KACb;IAED,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC;AACzD,CAAC;AAED,SAAS,WAAW;IAClB,MAAM,OAAO,GAAG,IAAA,gBAAI,EAAC,EAAE,CAAC,MAAM,EAAE,EAAE,eAAe,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAClF,MAAM,EAAE,GAAG;QACT,6CAA6C;QAC7C,0DAA0D;QAC1D,4DAA4D;QAC5D,iCAAiC;QACjC,yBAAyB;QACzB,mCAAmC,OAAO,mDAAmD;KAC9F,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEb,wFAAwF;IACxF,wDAAwD;IACxD,MAAM,MAAM,GAAG,IAAA,8BAAS,EACtB,gBAAgB,EAChB,CAAC,YAAY,EAAE,cAAc,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,CAAC,EACxD,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,CACxC,CAAC;IAEF,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;QACvB,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC;QACrC,IAAI,MAAM;YAAE,eAAM,CAAC,KAAK,CAAC,qBAAqB,MAAM,EAAE,CAAC,CAAC;QACxD,OAAO,IAAI,CAAC;KACb;IAED,qDAAqD;IACrD,IAAI;QACF,OAAO,IAAA,sBAAY,EAAC,OAAO,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC;KACvE;IAAC,MAAM;QACN,OAAO,IAAI,CAAC;KACb;YAAS;QACR,IAAI;YAAE,IAAA,oBAAU,EAAC,OAAO,CAAC,CAAC;SAAE;QAAC,MAAM,EAAE,aAAa,EAAE;KACrD;AACH,CAAC"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.runProtocolOpen = void 0;
|
|
4
|
+
const node_child_process_1 = require("node:child_process");
|
|
5
|
+
const logger_1 = require("../util/logger");
|
|
6
|
+
/**
|
|
7
|
+
* Handle an incoming studio:// URL dispatched by the OS protocol handler.
|
|
8
|
+
*
|
|
9
|
+
* URL structure: studio://<command>[?<params>]
|
|
10
|
+
* - hostname = command (e.g. "connect")
|
|
11
|
+
* - pathname = must be empty or "/" (anything else is an error)
|
|
12
|
+
* - search = optional query params for the command
|
|
13
|
+
*
|
|
14
|
+
* Example: studio://connect
|
|
15
|
+
*/
|
|
16
|
+
async function runProtocolOpen(url) {
|
|
17
|
+
logger_1.logger.info(`Received URL: ${url}`);
|
|
18
|
+
let parsed;
|
|
19
|
+
try {
|
|
20
|
+
parsed = new URL(url);
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
logger_1.logger.error(`Invalid URL: ${url}`);
|
|
24
|
+
return 1;
|
|
25
|
+
}
|
|
26
|
+
const command = parsed.hostname;
|
|
27
|
+
const pathname = parsed.pathname.replace(/^\//, "");
|
|
28
|
+
switch (command) {
|
|
29
|
+
case "connect":
|
|
30
|
+
return handleConnect(pathname, parsed.searchParams);
|
|
31
|
+
default:
|
|
32
|
+
logger_1.logger.error(`Unknown command: "${command}". No handler registered for studio://${command}.`);
|
|
33
|
+
return 1;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
exports.runProtocolOpen = runProtocolOpen;
|
|
37
|
+
// ---------------------------------------------------------------------------
|
|
38
|
+
// Handlers
|
|
39
|
+
// ---------------------------------------------------------------------------
|
|
40
|
+
function handleConnect(pathname, params) {
|
|
41
|
+
if (pathname !== "") {
|
|
42
|
+
logger_1.logger.error(`Unexpected path in URL: "/${pathname}". studio://connect does not accept a path.`);
|
|
43
|
+
return 1;
|
|
44
|
+
}
|
|
45
|
+
const args = [process.argv[1], "connect"];
|
|
46
|
+
const dir = params.get("dir");
|
|
47
|
+
if (dir) {
|
|
48
|
+
args.push("--dir", dir);
|
|
49
|
+
}
|
|
50
|
+
// Spawn detached so the protocol handler exits immediately —
|
|
51
|
+
// the OS expects a quick return from URL scheme handlers.
|
|
52
|
+
const child = (0, node_child_process_1.spawn)(process.execPath, args, {
|
|
53
|
+
detached: true,
|
|
54
|
+
stdio: "ignore",
|
|
55
|
+
});
|
|
56
|
+
child.unref();
|
|
57
|
+
logger_1.logger.info(`Launched: studio connect${dir ? ` --dir ${dir}` : ""} (pid ${child.pid})`);
|
|
58
|
+
return 0;
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=protocolHandler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"protocolHandler.js","sourceRoot":"","sources":["../../../../src/control/protocolHandler.ts"],"names":[],"mappings":";;;AAAA,2DAA2C;AAC3C,2CAAwC;AAExC;;;;;;;;;GASG;AACI,KAAK,UAAU,eAAe,CAAC,GAAW;IAC/C,eAAM,CAAC,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC,CAAC;IAEpC,IAAI,MAAW,CAAC;IAChB,IAAI;QAAE,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;KAAE;IAAC,MAAM;QAAE,eAAM,CAAC,KAAK,CAAC,gBAAgB,GAAG,EAAE,CAAC,CAAC;QAAC,OAAO,CAAC,CAAC;KAAE;IAEvF,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC;IAChC,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAEpD,QAAQ,OAAO,EAAE;QACf,KAAK,SAAS;YACZ,OAAO,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;QAEtD;YACE,eAAM,CAAC,KAAK,CAAC,qBAAqB,OAAO,yCAAyC,OAAO,GAAG,CAAC,CAAC;YAC9F,OAAO,CAAC,CAAC;KACZ;AACH,CAAC;AAjBD,0CAiBC;AAED,8EAA8E;AAC9E,WAAW;AACX,8EAA8E;AAE9E,SAAS,aAAa,CAAC,QAAgB,EAAE,MAAuB;IAC9D,IAAI,QAAQ,KAAK,EAAE,EAAE;QACnB,eAAM,CAAC,KAAK,CAAC,6BAA6B,QAAQ,6CAA6C,CAAC,CAAC;QACjG,OAAO,CAAC,CAAC;KACV;IAED,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IAE1C,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAC9B,IAAI,GAAG,EAAE;QACP,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;KACzB;IAED,6DAA6D;IAC7D,0DAA0D;IAC1D,MAAM,KAAK,GAAG,IAAA,0BAAK,EAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE;QAC1C,QAAQ,EAAE,IAAI;QACd,KAAK,EAAE,QAAQ;KAChB,CAAC,CAAC;IACH,KAAK,CAAC,KAAK,EAAE,CAAC;IACd,eAAM,CAAC,IAAI,CAAC,2BAA2B,GAAG,CAAC,CAAC,CAAC,UAAU,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC;IACxF,OAAO,CAAC,CAAC;AACX,CAAC"}
|