@stechquick/studio-cli 4.1.0-7 → 4.1.2-0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (508) hide show
  1. package/dist/common/agentic/compiler/build/nemoInterfaces.js +2 -1
  2. package/dist/common/agentic/compiler/build/nemoInterfaces.js.map +1 -1
  3. package/dist/common/agentic/qjsonBuild/io.js +4 -0
  4. package/dist/common/agentic/qjsonBuild/io.js.map +1 -0
  5. package/dist/common/agentic/qjsonBuild/qjsonBuild.js +16 -0
  6. package/dist/common/agentic/qjsonBuild/qjsonBuild.js.map +1 -0
  7. package/dist/{studio-cli/src/isolatedCommands → common/agentic/qjsonBuild}/validateQjson.js +36 -74
  8. package/dist/common/agentic/qjsonBuild/validateQjson.js.map +1 -0
  9. package/dist/{studio-cli/src/isolatedCommands → common/agentic/qjsonBuild}/validateStyles.js +37 -85
  10. package/dist/common/agentic/qjsonBuild/validateStyles.js.map +1 -0
  11. package/dist/common/agentic/quickHostCompiler/commands/GlobalManager.js +4 -4
  12. package/dist/common/agentic/quickHostCompiler/commands/GlobalManager.js.map +1 -1
  13. package/dist/common/agentic/quickHostCompiler/commands/compile.js +56 -77
  14. package/dist/common/agentic/quickHostCompiler/commands/compile.js.map +1 -1
  15. package/dist/common/helpers/aiKitResolver.js +31 -0
  16. package/dist/common/helpers/aiKitResolver.js.map +1 -0
  17. package/dist/common/helpers/appFlagsHelper.js +12 -0
  18. package/dist/common/helpers/appFlagsHelper.js.map +1 -0
  19. package/dist/common/helpers/tsCompiler/cliCompiler.js +9 -9
  20. package/dist/common/helpers/tsCompiler/cliCompiler.js.map +1 -1
  21. package/dist/common/qCloudTemp/livePreview.js +3 -0
  22. package/dist/common/qCloudTemp/livePreview.js.map +1 -0
  23. package/dist/quick/common/shrimp/interfaces/Scripting/IGlobals.js.map +1 -1
  24. package/dist/studio-cli/kits/super-app-kit/.ai-kit/coming-soon.md +0 -0
  25. package/dist/studio-cli/kits/super-app-kit/AGENTS.md +0 -0
  26. package/dist/studio-cli/kits/super-app-kit/CLAUDE.md +0 -0
  27. package/dist/studio-cli/kits/ui-app-kit/.ai-kit/cli-kit/knowledge/buildqjson.md +34 -0
  28. package/dist/studio-cli/{src/.ai-kit/knowledge/11-cli-bridge.md → kits/ui-app-kit/.ai-kit/cli-kit/knowledge/cli-bridge.md} +1 -1
  29. package/dist/studio-cli/{src/.ai-kit/knowledge/12-render-check.md → kits/ui-app-kit/.ai-kit/cli-kit/knowledge/render-check.md} +2 -2
  30. package/dist/studio-cli/kits/ui-app-kit/.ai-kit/cli-kit/knowledge/sync.md +33 -0
  31. package/dist/studio-cli/kits/ui-app-kit/.ai-kit/index.md +27 -0
  32. package/dist/studio-cli/kits/ui-app-kit/.ai-kit/ui-kit/index.md +87 -0
  33. package/dist/studio-cli/{src/.ai-kit/knowledge/05-components.md → kits/ui-app-kit/.ai-kit/ui-kit/knowledge/components.md} +4 -4
  34. package/dist/studio-cli/{src/.ai-kit/knowledge/08-dynamic-components.md → kits/ui-app-kit/.ai-kit/ui-kit/knowledge/dynamic-components.md} +1 -1
  35. package/dist/studio-cli/{src/.ai-kit/knowledge/02-events-and-scripting.md → kits/ui-app-kit/.ai-kit/ui-kit/knowledge/events-and-scripting.md} +3 -3
  36. package/dist/studio-cli/{src/.ai-kit/knowledge/03-layout-and-slots-legacy.md → kits/ui-app-kit/.ai-kit/ui-kit/knowledge/layout-and-slots-legacy.md} +8 -8
  37. package/dist/studio-cli/{src/.ai-kit/knowledge/03-layout-and-slots.md → kits/ui-app-kit/.ai-kit/ui-kit/knowledge/layout-and-slots.md} +8 -8
  38. package/dist/studio-cli/{src/.ai-kit/knowledge/07-localization.md → kits/ui-app-kit/.ai-kit/ui-kit/knowledge/localization.md} +3 -3
  39. package/dist/studio-cli/{src/.ai-kit/knowledge/09-page-skeletons-legacy.md → kits/ui-app-kit/.ai-kit/ui-kit/knowledge/page-skeletons-legacy.md} +5 -5
  40. package/dist/studio-cli/{src/.ai-kit/knowledge/09-page-skeletons.md → kits/ui-app-kit/.ai-kit/ui-kit/knowledge/page-skeletons.md} +6 -6
  41. package/dist/studio-cli/{src/.ai-kit/knowledge/01-properties.md → kits/ui-app-kit/.ai-kit/ui-kit/knowledge/properties.md} +4 -4
  42. package/dist/studio-cli/{src/.ai-kit/knowledge/00-qjson-structure-legacy.md → kits/ui-app-kit/.ai-kit/ui-kit/knowledge/qjson-structure-legacy.md} +11 -11
  43. package/dist/studio-cli/{src/.ai-kit/knowledge/00-qjson-structure.md → kits/ui-app-kit/.ai-kit/ui-kit/knowledge/qjson-structure.md} +12 -12
  44. package/dist/studio-cli/{src/.ai-kit/knowledge/06-services.md → kits/ui-app-kit/.ai-kit/ui-kit/knowledge/services.md} +1 -1
  45. package/dist/studio-cli/{src/.ai-kit/knowledge/04-styling-legacy.md → kits/ui-app-kit/.ai-kit/ui-kit/knowledge/styling-legacy.md} +10 -10
  46. package/dist/studio-cli/{src/.ai-kit/knowledge/04-styling.md → kits/ui-app-kit/.ai-kit/ui-kit/knowledge/styling.md} +10 -10
  47. package/dist/studio-cli/kits/ui-app-kit/.ai-kit/ui-kit/knowledge/validation-legacy.md +49 -0
  48. package/dist/studio-cli/kits/ui-app-kit/.ai-kit/ui-kit/knowledge/validation.md +55 -0
  49. package/dist/studio-cli/{src/.ai-kit/AGENT_GUIDE-legacy.md → kits/ui-app-kit/.ai-kit/ui-kit/legacy-track.md} +11 -12
  50. package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/reference/component-catalog-legacy.md +7 -7
  51. package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/reference/component-catalog.md +10 -10
  52. package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/reference/component-contracts.json +1 -6
  53. package/dist/studio-cli/kits/ui-app-kit/.ai-kit/ui-kit/reference/component-index.json +358 -0
  54. package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/reference/component-styles.json +1 -2
  55. package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/reference/events-system.md +12 -14
  56. package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/reference/layout-system.md +7 -7
  57. package/dist/studio-cli/kits/ui-app-kit/.ai-kit/ui-kit/reference/mapping-S-vuetify-class.md +103 -0
  58. package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/reference/qjson-schema-legacy.md +9 -9
  59. package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/reference/qjson-schema.md +10 -10
  60. package/dist/studio-cli/kits/ui-app-kit/.ai-kit/ui-kit/reference/quick-api.json +2085 -0
  61. package/dist/studio-cli/kits/ui-app-kit/.ai-kit/ui-kit/reference/quick-api.md +284 -0
  62. package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/reference/styling-system.md +13 -13
  63. package/dist/studio-cli/{src/.ai-kit/AGENT_GUIDE-s.md → kits/ui-app-kit/.ai-kit/ui-kit/s-track.md} +13 -14
  64. package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.claude}/skills/figma-to-qjson/SKILL.md +4 -4
  65. package/dist/studio-cli/kits/ui-app-kit/.claude/skills/quick-qjson/SKILL.md +10 -0
  66. package/dist/studio-cli/kits/ui-app-kit/.opencode/opencode.json +19 -0
  67. package/dist/studio-cli/kits/ui-app-kit/.opencode/skills/figma-to-qjson/SKILL.md +116 -0
  68. package/dist/studio-cli/kits/ui-app-kit/.opencode/skills/quick-qjson/SKILL.md +10 -0
  69. package/dist/studio-cli/kits/ui-app-kit/AGENTS.md +18 -0
  70. package/dist/studio-cli/kits/ui-app-kit/CLAUDE.md +18 -0
  71. package/dist/studio-cli/kits/wf-kit/.ai-kit/coming-soon.md +0 -0
  72. package/dist/studio-cli/kits/wf-kit/AGENTS.md +0 -0
  73. package/dist/studio-cli/kits/wf-kit/CLAUDE.md +0 -0
  74. package/dist/studio-cli/src/control/controlClient.js +22 -15
  75. package/dist/studio-cli/src/control/controlClient.js.map +1 -1
  76. package/dist/studio-cli/src/control/convertToBlock.js +1 -1
  77. package/dist/studio-cli/src/control/convertToBlock.js.map +1 -1
  78. package/dist/studio-cli/src/control/kitInstall.js +29 -0
  79. package/dist/studio-cli/src/control/kitInstall.js.map +1 -0
  80. package/dist/studio-cli/src/control/pull.js +27 -19
  81. package/dist/studio-cli/src/control/pull.js.map +1 -1
  82. package/dist/studio-cli/src/control/startWorking.js +1 -1
  83. package/dist/studio-cli/src/control/startWorking.js.map +1 -1
  84. package/dist/studio-cli/src/index.js +2 -1
  85. package/dist/studio-cli/src/index.js.map +1 -1
  86. package/dist/studio-cli/src/isolatedCommands/qjsonBuild.js +9 -9
  87. package/dist/studio-cli/src/isolatedCommands/qjsonBuild.js.map +1 -1
  88. package/dist/studio-cli/src/isolatedCommands/qjsonBuildCliEnv.js +23 -0
  89. package/dist/studio-cli/src/isolatedCommands/qjsonBuildCliEnv.js.map +1 -0
  90. package/dist/studio-cli/src/server/bridgeServer.js +155 -122
  91. package/dist/studio-cli/src/server/bridgeServer.js.map +1 -1
  92. package/dist/studio-cli/src/server/serverInfo.js +26 -14
  93. package/dist/studio-cli/src/server/serverInfo.js.map +1 -1
  94. package/dist/studio-cli/src/util/trash.js +137 -0
  95. package/dist/studio-cli/src/util/trash.js.map +1 -0
  96. package/dist/studio-cli/src/version.js +1 -1
  97. package/package.json +3 -2
  98. package/dist/common/agentic/quickHostCompiler/index.js +0 -6
  99. package/dist/common/agentic/quickHostCompiler/index.js.map +0 -1
  100. package/dist/studio-cli/src/.ai-kit/.opencode/opencode.json +0 -61
  101. package/dist/studio-cli/src/.ai-kit/AGENTS.md +0 -20
  102. package/dist/studio-cli/src/.ai-kit/AGENT_GUIDE.md +0 -107
  103. package/dist/studio-cli/src/.ai-kit/CLAUDE.md +0 -14
  104. package/dist/studio-cli/src/.ai-kit/README.md +0 -81
  105. package/dist/studio-cli/src/.ai-kit/agents/qjson-legacy-migrator.md +0 -308
  106. package/dist/studio-cli/src/.ai-kit/agents/quick-events.md +0 -41
  107. package/dist/studio-cli/src/.ai-kit/agents/quick-qjson-author-legacy.md +0 -29
  108. package/dist/studio-cli/src/.ai-kit/agents/quick-qjson-author-s.md +0 -29
  109. package/dist/studio-cli/src/.ai-kit/agents/quick-qjson-author.md +0 -33
  110. package/dist/studio-cli/src/.ai-kit/agents/quick-styling-legacy.md +0 -37
  111. package/dist/studio-cli/src/.ai-kit/agents/quick-styling.md +0 -36
  112. package/dist/studio-cli/src/.ai-kit/knowledge/10-validation-and-sync-legacy.md +0 -71
  113. package/dist/studio-cli/src/.ai-kit/knowledge/10-validation-and-sync.md +0 -81
  114. package/dist/studio-cli/src/.ai-kit/reference/component-index.json +0 -114
  115. package/dist/studio-cli/src/.ai-kit/reference/mapping-S-vuetify-class.md +0 -103
  116. package/dist/studio-cli/src/.ai-kit/reference/quick-api.md +0 -248
  117. package/dist/studio-cli/src/.ai-kit/skills/quick-qjson/SKILL.md +0 -36
  118. package/dist/studio-cli/src/.ai-kit/tools/README.md +0 -42
  119. package/dist/studio-cli/src/control/workspaceSetup.js +0 -52
  120. package/dist/studio-cli/src/control/workspaceSetup.js.map +0 -1
  121. package/dist/studio-cli/src/isolatedCommands/validateQjson.js.map +0 -1
  122. package/dist/studio-cli/src/isolatedCommands/validateStyles.js.map +0 -1
  123. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/README.md +0 -0
  124. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/AllowdDates.qjson +0 -0
  125. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/Avatarlar.qjson +0 -0
  126. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/BarChart.qjson +0 -0
  127. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/BarChart_Type_Time_Sample.qjson +0 -0
  128. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/BottomSheetScrollWithHeaderInformation.qjson +0 -0
  129. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/CardTitle.qjson +0 -0
  130. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/Charts_Custom_Legend_Sample.qjson +0 -0
  131. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/Charts_tooltipLabel_sample.qjson +0 -0
  132. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/CheckBoxQvalue.qjson +0 -0
  133. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/CheckboxDisabledExample.qjson +0 -0
  134. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/Click Outside.qjson +0 -0
  135. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/ComboBoxReset.qjson +0 -0
  136. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/ComboboxAddItemWithDialog.qjson +0 -0
  137. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/ComboboxAddItemWithTextField.qjson +0 -0
  138. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/ComboboxDefaultSelection.qjson +0 -0
  139. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/ComboboxWithTreeView.qjson +0 -0
  140. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/Combobox_SelectAll.qjson +0 -0
  141. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/ComponentsInteractionExamples.qjson +0 -0
  142. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/CookieExamples.qjson +0 -0
  143. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/CreateComponent_WithTransmitDataSource_Sample.qjson +0 -0
  144. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/Cryptography-with-ivKey.qjson +0 -0
  145. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/Dashboard.qjson +0 -0
  146. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/DataExamples.qjson +0 -0
  147. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/DataStorageExamples.qjson +0 -0
  148. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/DataTable-Single-select-Multi-Select-TotalCalculation.qjson +0 -0
  149. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/DataTableAddRemoveItem.qjson +0 -0
  150. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/DataTableBoldHeader.qjson +0 -0
  151. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/DataTableEdit.qjson +0 -0
  152. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/DataTableFixedColumn.qjson +0 -0
  153. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/DataTableIndexExample.qjson +0 -0
  154. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/DataTableSearch.qjson +0 -0
  155. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/DataTableVerticalBorder.qjson +0 -0
  156. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/DataTableWithTooltip.qjson +0 -0
  157. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/DataTable_ChildButtonVisibleSample.qjson +0 -0
  158. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/DatePickerExampleApp (1).qjson +0 -0
  159. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/DatePickerInlineExample.qjson +0 -0
  160. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/DatePickerLocale.qjson +0 -0
  161. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/DatepickerDatenow.qjson +0 -0
  162. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/DatepickerExample.qjson +0 -0
  163. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/Detailed_Table_Row_Expand.qjson +0 -0
  164. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/Detailed_Table_Rows.qjson +0 -0
  165. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/DialogBlockSubPage.qjson +0 -0
  166. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/DialogExample.qjson +0 -0
  167. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/DialogExampleWith/304/261con.qjson" +0 -0
  168. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/DialogWithEagerProp.qjson +0 -0
  169. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/DoughnutChart.qjson +0 -0
  170. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/Download.qjson +0 -0
  171. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/DxColumnChooser.qjson +0 -0
  172. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/DxColumnFixing.qjson +0 -0
  173. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/DxColumn_fix_allowFixing.qjson +0 -0
  174. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/DxDataGrid-DxExport.qjson +0 -0
  175. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/DxDataGrid-DxFilterRow.qjson +0 -0
  176. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/DxDataGrid-DxSearchPanel.qjson +0 -0
  177. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/DxDataGrid-columnAutoWidth.qjson +0 -0
  178. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/DxDataGridArrStoreLiveCon.qjson +0 -0
  179. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/DxDataGridArrStoreLiveConReason.qjson +0 -0
  180. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/DxDataGridExternalFilterCleaning.qjson +0 -0
  181. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/DxDataGridExternalFiltering.qjson +0 -0
  182. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/DxDataGridRowDragging.qjson +0 -0
  183. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/DxDatagrid_MultipleSelection.qjson +0 -0
  184. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/DxDatagrid_ServiceCall.qjson +0 -0
  185. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/DxDatagrid_SimplestGridWithArrayStore.qjson +0 -0
  186. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/DxDatagrid_SingleSelection.qjson +0 -0
  187. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/DxDatagrid_allowFixing.qjson +0 -0
  188. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/DxDatagrid_columnResizingMode.qjson +0 -0
  189. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/DxDatagrid_hoverStateEnabled.qjson +0 -0
  190. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/DxDatagrid_onCellClickEvent.qjson +0 -0
  191. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/DxDatagrid_width_menu.qjson +0 -0
  192. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/DxTreeListArrStoreLiveCon.qjson +0 -0
  193. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/DxTreelist-color.qjson +0 -0
  194. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/DxTreelist-columnreordering.qjson +0 -0
  195. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/DxTreelist-editing.qjson +0 -0
  196. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/DxTreelist-extarnelfiltre.qjson +0 -0
  197. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/Expansion_Panels.qjson +0 -0
  198. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/FileInput.qjson +0 -0
  199. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/Frame_openHtmlContentInFrame.qjson +0 -0
  200. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/Highlight_datatable_select.qjson +0 -0
  201. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/Icon_Samples.qjson +0 -0
  202. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/Instructions.request.qjson +0 -0
  203. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/Intersect.qjson +0 -0
  204. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/LightBox.qjson +0 -0
  205. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/LineChart.qjson +0 -0
  206. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/LineChart_Type_Time_Sample.qjson +0 -0
  207. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/ListExample.qjson +0 -0
  208. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/LoginPage.qjson +0 -0
  209. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/MMDelay.qjson +0 -0
  210. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/MMtrigger.qjson +0 -0
  211. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/NavigationDrawerExample.qjson +0 -0
  212. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/NavigationDrawerWithAppBar.qjson +0 -0
  213. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/Parallax.qjson +0 -0
  214. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/PermanentStore_Example.qjson +0 -0
  215. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/PieChart.qjson +0 -0
  216. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/Profile_Card.qjson +0 -0
  217. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/ProgressLinear.qjson +0 -0
  218. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/QCaptcha.qjson +0 -0
  219. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/QDocumentViewer.qjson +0 -0
  220. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/QFrameAllowFullScreenExample.qjson +0 -0
  221. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/QFrameExample.qjson +0 -0
  222. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/QIdleTimer.qjson +0 -0
  223. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/QImgZoomRotate.qjson +0 -0
  224. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/QImgZoomTypeNextTo.qjson +0 -0
  225. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/QImgZoomTypeOn.qjson +0 -0
  226. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/QLabel_URL.qjson +0 -0
  227. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/QLabel_URL_Click.qjson +0 -0
  228. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/QLegend.qjson +0 -0
  229. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/QLegendBlock.qjson +0 -0
  230. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/QLegend_unchanged.qjson +0 -0
  231. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/QMapExample.qjson +0 -0
  232. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/QMenuExample.qjson +0 -0
  233. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/QOtp.qjson +0 -0
  234. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/QQRCode.qjson +0 -0
  235. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/QReCaptcha.qjson +0 -0
  236. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/QRichTextExample.qjson +0 -0
  237. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/QRichText_Cursor_Sample.qjson +0 -0
  238. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/QTutorialFinalDemo.qjson +0 -0
  239. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/QVideoExample.qjson +0 -0
  240. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/Qlabel_Props.qjson +0 -0
  241. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/Qmenu-Icon-Img-SizeandColor.qjson +0 -0
  242. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/Quick_Bind.qjson +0 -0
  243. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/Quick_Bind_Sample.qjson +0 -0
  244. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/Rating.qjson +0 -0
  245. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/RenderingComponent_Sample.qjson +0 -0
  246. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/RequestExamples.qjson +0 -0
  247. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/ResetValidation-ResetUsage.qjson +0 -0
  248. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/Resize.qjson +0 -0
  249. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/Ripple.qjson +0 -0
  250. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/Sparkline.qjson +0 -0
  251. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/State_storing.qjson +0 -0
  252. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/SwitchComponent.qjson +0 -0
  253. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/Table_Pagination.qjson +0 -0
  254. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/Table_Search.qjson +0 -0
  255. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/Table_Select.qjson +0 -0
  256. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/ToolTip_props.qjson +0 -0
  257. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/TooltipDisplayOfVDataTableDataTotal.qjson +0 -0
  258. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/TreeViewExample.qjson +0 -0
  259. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/VAppBar.qjson +0 -0
  260. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/VAutocompleteRegex.qjson +0 -0
  261. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/VBottomSheet.qjson +0 -0
  262. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/VCard.qjson +0 -0
  263. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/VCombobox_customValidation.qjson +0 -0
  264. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/VDataTable-slot-columnVeriyeG/303/266reRenklendirme.qjson" +0 -0
  265. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/VDataTableIconExample.qjson +0 -0
  266. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/VDataTableItemAggregation.qjson +0 -0
  267. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/VDataTable_Change_FooterPageText.qjson +0 -0
  268. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/VDataTable_Multiple_Select_Control.qjson +0 -0
  269. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/VDataTable_SetGetComboboxValue_.qjson +0 -0
  270. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/VDataTable_SetItemSelect_GetSelection.qjson +0 -0
  271. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/VDataTable_SlotInstances.qjson +0 -0
  272. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/VDataTable_Validation.qjson +0 -0
  273. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/VDataTable_With_QTableCell_Sample.qjson +0 -0
  274. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/VDataTable_customSearchFilter.qjson +0 -0
  275. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/VDataTable_firstColumn_fixedActionsColumn.qjson +0 -0
  276. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/VDataTable_uniqueSlot_itemKey_Object.qjson +0 -0
  277. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/VDatePicker_AllowdDates.qjson +0 -0
  278. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/VDialog.qjson +0 -0
  279. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/VExpansionPanel_UsageAndProps.qjson +0 -0
  280. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/VFileInput-Slot-VIcon-Dolu.qjson +0 -0
  281. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/VFileInputGetUploadedContent.qjson +0 -0
  282. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/VFileInput_ImagePicker.qjson +0 -0
  283. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/VFooter.qjson +0 -0
  284. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/VForm.qjson +0 -0
  285. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/VFormActionExample.qjson +0 -0
  286. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/VInlineDatePicker_titleDateFormat.qjson +0 -0
  287. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/VInlineDatepickerMaxMin.qjson +0 -0
  288. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/VInlineDatepickerReset.qjson +0 -0
  289. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/VInlineTimePicker.qjson +0 -0
  290. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/VListGroup.qjson +0 -0
  291. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/VList_NavigationMenu.qjson +0 -0
  292. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/VMenu_PopoverInTable.qjson +0 -0
  293. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/VMenu_sample.qjson +0 -0
  294. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/VStepperExample.qjson +0 -0
  295. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/VStepper_vertical.qjson +0 -0
  296. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/VSteppers_EditableNonLinear.qjson +0 -0
  297. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/VSteppers_LinearWithContinueButton.qjson +0 -0
  298. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/VTextFieldQuickInputFormat.qjson +0 -0
  299. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/VTextFieldValidation.qjson +0 -0
  300. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/VTextField_FocusExample.qjson +0 -0
  301. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/VTextField_Validation_examples.qjson +0 -0
  302. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/VTextField_customValidation.qjson +0 -0
  303. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/VTextField_formatValueSample1.qjson +0 -0
  304. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/VTextField_formatValueSapmle2.qjson +0 -0
  305. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/VTextField_formatValue_exceptLetters.qjson +0 -0
  306. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/VTextField_formatValue_specialChars.qjson +0 -0
  307. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/VTextField_keyDown.qjson +0 -0
  308. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/VTextField_rangeOfNumber_validation.qjson +0 -0
  309. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/VTextareaQuickInputFormat.qjson +0 -0
  310. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/VTextarea_format_regex_sample.qjson +0 -0
  311. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/VTimelineExample.qjson +0 -0
  312. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/Vcontainer.qjson +0 -0
  313. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/VinlineDatePicker.qjson +0 -0
  314. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/V/304/261nlineDatepickerDeleteValue.qjson" +0 -0
  315. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/alert.qjson +0 -0
  316. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/alertSamplePage.qjson +0 -0
  317. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/authorizationDashboard.qjson +0 -0
  318. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/badge copy.qjson +0 -0
  319. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/badge.qjson +0 -0
  320. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/bottomSheetScrollable.qjson +0 -0
  321. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/breadcrumbs.qjson +0 -0
  322. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/button.qjson +0 -0
  323. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/cellTemplate.qjson +0 -0
  324. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/combobox.qjson +0 -0
  325. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/comboboxSelected.qjson +0 -0
  326. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/createChildren.qjson +0 -0
  327. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/createClosedPanes.qjson +0 -0
  328. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/creditcard.qjson +0 -0
  329. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/crypto.qjson +0 -0
  330. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/customFilterUsingCalculateFilterExpressionEvent.qjson +0 -0
  331. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/customStore.qjson +0 -0
  332. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/dataTableFormatColumn.qjson +0 -0
  333. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/data_table_component_access.qjson +0 -0
  334. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/datagridAddDynamicColumn.qjson +0 -0
  335. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/datatableAddandDeleteItem.qjson +0 -0
  336. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/deleteComponent.qjson +0 -0
  337. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/divider.qjson +0 -0
  338. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/dxColumncssClass.qjson +0 -0
  339. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/dxDataGridAddinEditingDeleting.qjson +0 -0
  340. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/dxDataGridLines.qjson +0 -0
  341. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/dxDataGridRemove.qjson +0 -0
  342. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/dxDatagridHeatMap.qjson +0 -0
  343. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/dxDatagridUpdate.qjson +0 -0
  344. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/dxMasterDetail.qjson +0 -0
  345. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/dxPaging_withServiceCall.qjson +0 -0
  346. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/dxRowDragging.qjson +0 -0
  347. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/dxSummary_dxTotalItem_usage.qjson +0 -0
  348. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/dxTotalItemCustomizeText.qjson +0 -0
  349. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/dxTreeList_exportToExcel.qjson +0 -0
  350. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/dynamicComp.qjson +0 -0
  351. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/efficientTreeviewSearchforLargeDatasets.qjson +0 -0
  352. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/email.qjson +0 -0
  353. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/encoding.qjson +0 -0
  354. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/encryptedStorage_Sample.qjson +0 -0
  355. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/fileInput-1.qjson +0 -0
  356. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/fileUploadBlockComponent.qjson +0 -0
  357. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/fileUploadServiceCallBlockComp.qjson +0 -0
  358. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/findAndDeleteRelatedDynamicComp.qjson +0 -0
  359. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/first.qjson +0 -0
  360. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/fixedActionsColumn.qjson +0 -0
  361. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/formatWithFormatType.qjson +0 -0
  362. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/getComponent_example.qjson +0 -0
  363. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/globalLocalization.qjson +0 -0
  364. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/goldenLayout.qjson +0 -0
  365. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/images.qjson +0 -0
  366. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/list.qjson +0 -0
  367. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/localization_AddLanguageRTL_Sample.qjson +0 -0
  368. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/newCustomerRegister.qjson +0 -0
  369. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/number.qjson +0 -0
  370. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/number_VTextarea.qjson +0 -0
  371. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/onlyAlphabetic.qjson +0 -0
  372. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/parentPage.qjson +0 -0
  373. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/pipeline.qjson +0 -0
  374. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/pipelineSample.qjson +0 -0
  375. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/placeQidDynamic.qjson +0 -0
  376. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/progress-circular.qjson +0 -0
  377. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/qtimer.qjson +0 -0
  378. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/radioGroupGetValues.qjson +0 -0
  379. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/region_definition_example.qjson +0 -0
  380. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/resetAndResetValidationUsage.qjson +0 -0
  381. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/responsive1.qjson +0 -0
  382. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/responsive2.qjson +0 -0
  383. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/responsive3.qjson +0 -0
  384. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/scrollButton.qjson +0 -0
  385. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/scrollDirective.qjson +0 -0
  386. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/selectedRow-propertyDisable.qjson +0 -0
  387. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/serviceCallerBlockComponent.qjson +0 -0
  388. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/sheet.qjson +0 -0
  389. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/slider.qjson +0 -0
  390. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/snackbars.qjson +0 -0
  391. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/sso.qjson +0 -0
  392. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/subPage.qjson +0 -0
  393. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/tab.qjson +0 -0
  394. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/tableadditem.qjson +0 -0
  395. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/themeExamplePage.qjson +0 -0
  396. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/tiffImage.qjson +0 -0
  397. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/timePicker.qjson +0 -0
  398. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/treeview.qjson +0 -0
  399. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/treeview2.qjson +0 -0
  400. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/uniqueRowSlots.qjson +0 -0
  401. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/vMenu.qjson +0 -0
  402. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/vcarousel.qjson +0 -0
  403. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/cssClass/vdatatable_slots_with_custom_validation_usage.qjson +0 -0
  404. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/style/AllowdDates.qjson +0 -0
  405. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/style/BarChartEvents.qjson +0 -0
  406. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/style/BarChartTitle.qjson +0 -0
  407. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/style/BarChartYTicks.qjson +0 -0
  408. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/style/BarChart_TicksCallback.qjson +0 -0
  409. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/style/CalendarClickMoreExample.qjson +0 -0
  410. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/style/CalendarUsageExample.qjson +0 -0
  411. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/style/ChartLegendFont.qjson +0 -0
  412. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/style/DataTable_customSort.qjson +0 -0
  413. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/style/DocumentViewer_tiff_Sample.qjson +0 -0
  414. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/style/DoughnutChartEvents.qjson +0 -0
  415. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/style/DxDataGrid_CustomStore.qjson +0 -0
  416. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/style/Icon_Samples.qjson +0 -0
  417. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/style/Instructions.request.qjson +0 -0
  418. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/style/Intersect.qjson +0 -0
  419. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/style/LightBox.qjson +0 -0
  420. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/style/LineChart.qjson +0 -0
  421. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/style/LineChartEvents.qjson +0 -0
  422. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/style/LineChartPointProps.qjson +0 -0
  423. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/style/LineChart_TicksCallback.qjson +0 -0
  424. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/style/LineChart_Type_Time_Sample.qjson +0 -0
  425. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/style/MMDelay.qjson +0 -0
  426. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/style/MMtrigger.qjson +0 -0
  427. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/style/NavigationDrawerExample.qjson +0 -0
  428. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/style/NavigationDrawerWithAppBar.qjson +0 -0
  429. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/style/Parallax.qjson +0 -0
  430. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/style/PieChart.qjson +0 -0
  431. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/style/QCaptcha.qjson +0 -0
  432. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/style/QDocumentViewer.qjson +0 -0
  433. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/style/QFrameAllowFullScreenExample.qjson +0 -0
  434. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/style/QFrameExample.qjson +0 -0
  435. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/style/QIdleTimer.qjson +0 -0
  436. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/style/QImgZoomRotate.qjson +0 -0
  437. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/style/QImgZoomTypeNextTo.qjson +0 -0
  438. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/style/QImgZoomTypeOn.qjson +0 -0
  439. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/style/QLabel_URL_Click_SendParams.qjson +0 -0
  440. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/style/VList_NavMenu.qjson +0 -0
  441. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/style/alertSamplePage.qjson +0 -0
  442. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/style/authorizationDashboard.qjson +0 -0
  443. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/style/badge.qjson +0 -0
  444. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/style/bottomSheetScrollable.qjson +0 -0
  445. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/style/breadcrumbs.qjson +0 -0
  446. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/style/button.qjson +0 -0
  447. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/style/cellTemplate.qjson +0 -0
  448. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/style/combobox.qjson +0 -0
  449. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/style/comboboxSelected.qjson +0 -0
  450. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/style/createChildren.qjson +0 -0
  451. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/style/createClosedPanes.qjson +0 -0
  452. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/style/creditcard.qjson +0 -0
  453. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/style/crypto.qjson +0 -0
  454. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/style/customFilterUsingCalculateFilterExpressionEvent.qjson +0 -0
  455. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/style/customStore.qjson +0 -0
  456. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/style/dataTableFormatColumn.qjson +0 -0
  457. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/style/data_table_component_access.qjson +0 -0
  458. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/style/datagridAddDynamicColumn.qjson +0 -0
  459. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/style/datatableAddandDeleteItem.qjson +0 -0
  460. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/style/datatable_selectable_feature_select_unselect_usage.qjson +0 -0
  461. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/style/deleteComponent.qjson +0 -0
  462. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/style/divider.qjson +0 -0
  463. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/style/dxColumncssClass.qjson +0 -0
  464. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/style/dxDataGridAddinEditingDeleting.qjson +0 -0
  465. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/style/dxDataGridLines.qjson +0 -0
  466. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/style/dxDataGridRemove.qjson +0 -0
  467. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/style/dxDatagridHeatMap.qjson +0 -0
  468. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/style/dxDatagridUpdate.qjson +0 -0
  469. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/style/dxMasterDetail.qjson +0 -0
  470. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/style/dxPaging_withServiceCall.qjson +0 -0
  471. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/style/dxRowDragging.qjson +0 -0
  472. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/style/dxSummary_dxTotalItem_usage.qjson +0 -0
  473. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/style/dxTotalItemCustomizeText.qjson +0 -0
  474. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/style/dxTreeList_exportToExcel.qjson +0 -0
  475. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/style/dynamicComp.qjson +0 -0
  476. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/style/efficientTreeviewSearchforLargeDatasets.qjson +0 -0
  477. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/style/email.qjson +0 -0
  478. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/style/encoding.qjson +0 -0
  479. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/style/encryptedStorage_Sample.qjson +0 -0
  480. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/style/exportToXlsx_Sample.qjson +0 -0
  481. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/style/images.qjson +0 -0
  482. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/style/images_olddd.qjson +0 -0
  483. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/style/newCustomerRegister.qjson +0 -0
  484. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/style/number.qjson +0 -0
  485. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/style/number_VTextarea.qjson +0 -0
  486. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/style/onlyAlphabetic.qjson +0 -0
  487. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/style/parentPage.qjson +0 -0
  488. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/style/pipeline.qjson +0 -0
  489. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/style/pipelineSample.qjson +0 -0
  490. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/style/placeQidDynamic.qjson +0 -0
  491. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/style/progress-circular.qjson +0 -0
  492. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/style/samplePageLottie.qjson +0 -0
  493. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/style/server-SideAutocompleteHandling.qjson +0 -0
  494. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/examples/style/xlsxToJson_Sample.qjson +0 -0
  495. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/knowledge/13-application.md +0 -0
  496. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/knowledge/appSettings/alert-component.md +0 -0
  497. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/knowledge/appSettings/appSettings.md +0 -0
  498. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/knowledge/appSettings/component-list.md +0 -0
  499. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/knowledge/appSettings/container-services-file.md +0 -0
  500. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/knowledge/appSettings/container-services-intellisense.md +0 -0
  501. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/knowledge/appSettings/global-localization.md +0 -0
  502. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/knowledge/appSettings/loading-component.md +0 -0
  503. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/knowledge/appSettings/local-proxy-file.md +0 -0
  504. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/knowledge/appSettings/pipeline.md +0 -0
  505. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/knowledge/appSettings/settings-file.md +0 -0
  506. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/knowledge/appSettings/style-file.md +0 -0
  507. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit/.ai-kit/ui-kit}/knowledge/appSettings/theme.md +0 -0
  508. /package/dist/studio-cli/{src/.ai-kit → kits/ui-app-kit}/.mcp.json +0 -0
@@ -12,6 +12,7 @@ const qjsonCompiled_1 = require("../../../common/agentic/modelFiles/qjsonCompile
12
12
  const pull_1 = require("../control/pull");
13
13
  const push_1 = require("../control/push");
14
14
  const state_1 = require("../util/state");
15
+ const trash_1 = require("../util/trash");
15
16
  const frontmatter_1 = require("../../../common/agentic/modelFiles/frontmatter");
16
17
  const modelRefs_1 = require("../../../common/agentic/modelFiles/modelRefs");
17
18
  const version_1 = require("../version");
@@ -20,36 +21,37 @@ const PING_INTERVAL_MS = 20000;
20
21
  const IDLE_EXIT_MS = 120000;
21
22
  const RENDEZVOUS_BIND_RETRY_MS = 2000;
22
23
  /**
23
- * Lokal WebSocket server (santral). Tek bridge client (browser) + ileride kısa-ömürlü
24
- * control client'lar. Port-range keşfi + `.studio/server.json` claim + tipli dispatch.
24
+ * Local WebSocket server (hub). One bridge client (browser) + short-lived
25
+ * control clients later. Port-range discovery + `.studio/server.json` claim + typed dispatch.
25
26
  */
26
27
  class BridgeServer {
27
28
  wss;
28
- // Sabit rendezvous portu listener'ı — web buraya bağlanınca efemer portu bildirir, sonra serbest bırakılır.
29
+ // Fixed rendezvous port listener — when the web connects here it announces the ephemeral port, then it is released.
29
30
  rendezvousWss;
30
31
  bridgeClient;
31
- // AI test tarayıcısı (?cliRole=test) — SINK: event göndermez, yalnız syncModels alır.
32
+ // AI test browser (?cliRole=test) — SINK: sends no events, only receives syncModels.
32
33
  testClient;
33
- // Bu oturumda push'lanan gövdeler (id → item, push'lar arası merge). Test client sonradan
34
- // bağlanınca / F5'te replay edilir — sync, bağlanma sırasından bağımsız çalışır.
34
+ // Bodies pushed in this session (id → item, merged across pushes). Replayed when the test client
35
+ // connects later / on F5 — sync works regardless of connection order.
35
36
  lastSync = new Map();
36
- // GET /render hedefi — primary hello'dan gelir, YALNIZ BELLEKTE tutulur (server.json'a yazılmaz:
37
- // workspace dosyaları agent'a/git'e açıktır, oturum bilgisi diske inmez).
37
+ // GET /render target — comes from the primary hello, kept IN MEMORY ONLY (not written to server.json:
38
+ // workspace files are exposed to the agent/git, session info must not hit disk).
38
39
  renderTarget;
39
40
  claimedAppId;
40
41
  pingTimer;
41
42
  idleTimer;
42
43
  rendezvousRetryTimer;
43
44
  _pushInProgress = false;
44
- // Push'un checkout ettiği (yeni yaratılan) model id'leri. studio.checkout → checkoutChangedHook
45
- // echo'su reply'dan SONRA da gelebildiği için (_pushInProgress yetmez); bu id'lerin checkoutChanged'i
46
- // id bazında, consume-once bastırılır → zamanlamadan bağımsız, manuel checkout'lar etkilenmez.
45
+ // Model ids checked out by the push (newly created). Because the studio.checkout → checkoutChangedHook
46
+ // echo can also arrive AFTER the reply (_pushInProgress isn't enough); the checkoutChanged for these ids is
47
+ // suppressed per-id, consume-once → timing-independent, manual checkouts are unaffected.
47
48
  _expectedCheckoutEchoes = new Set();
48
49
  _deferredModelCreated = [];
49
50
  _deferredModelChanged = [];
50
51
  _pickerOpen = false;
52
+ trashQueue = new trash_1.TrashQueue();
51
53
  host;
52
- port = 0; // OS'in atadığı efemer port (bind() doldurur)
54
+ port = 0; // ephemeral port assigned by the OS (bind() fills it in)
53
55
  rootDir;
54
56
  constructor(options = {}) {
55
57
  this.host = options.host ?? "127.0.0.1";
@@ -61,27 +63,28 @@ class BridgeServer {
61
63
  return this.rootDir;
62
64
  }
63
65
  async start() {
64
- // Önceki (çökmüş) server'dan kalma claim'i temizle — bu fresh bir server.
65
- //TODO: bunu burada yapmanin yan etkilerini dusun.
66
+ // Clear the runtime claim (port/pid) left over from a previous (crashed) server — this is a fresh
67
+ // server. The appId binding is kept.
68
+ //TODO: think about the side effects of doing this here.
66
69
  if (this.rootDir !== undefined)
67
- (0, serverInfo_1.removeServerInfoSync)(this.rootDir);
70
+ (0, serverInfo_1.clearServerInfoRuntimeSync)(this.rootDir);
68
71
  await this.bind();
69
72
  logger_1.logger.info(`bridge listening on ws://${this.host}:${this.port}`);
70
73
  await this.bindRendezvous();
71
74
  logger_1.logger.info("waiting for Studio web to connect…");
72
75
  this.armIdleExit();
73
76
  }
74
- // Sabit rendezvous portunu dinle. Web buraya bağlanınca efemer bridge portunu bildirir, sonra portu
75
- // serbest bırakırız (başka CLI kullanabilir). Port doluysa (başka CLI tutuyor) sessizce atla.
77
+ // Listen on the fixed rendezvous port. When the web connects it announces the ephemeral bridge port, then we
78
+ // release the port (another CLI can use it). If the port is in use (another CLI holds it) silently skip.
76
79
  async bindRendezvous() {
77
80
  const wss = new wsRaw_1.RawWebSocketServer({ host: this.host, port: protocolVersion_1.RENDEZVOUS_PORT });
78
- // Web bağlanınca efemer portu bildir. Rendezvous'u BURADA kapatma — web efemer porta bağlanıp
79
- // hello ile canlı client olunca kapatılır (onHello → closeRendezvous). Böylece web efemer'a
80
- // ulaşamazsa rendezvous'tan tekrar deneyebilir.
81
+ // Announce the ephemeral port when the web connects. Do NOT close the rendezvous HERE — it is closed once the
82
+ // web connects to the ephemeral port and becomes a live client via hello (onHello → closeRendezvous). This way
83
+ // if the web can't reach the ephemeral port it can retry via the rendezvous.
81
84
  wss.onConnection((conn) => {
82
85
  new peer_1.Peer(conn).send("rendezvous", { port: this.port });
83
86
  logger_1.logger.info(`rendezvous → announced port ${this.port}`);
84
- setTimeout(() => conn.close(1000, "rendezvous done"), 500); // frame flush olsun
87
+ setTimeout(() => conn.close(1000, "rendezvous done"), 500); // let the frame flush
85
88
  });
86
89
  try {
87
90
  await wss.listen();
@@ -91,9 +94,9 @@ class BridgeServer {
91
94
  catch (err) {
92
95
  wss.close();
93
96
  if (err.code === "EADDRINUSE") {
94
- // Başka bir CLI zaten keşif noktası. Protokol-launch (klasörsüz) ise bu instance redundant —
95
- // web onu değil rendezvous'u tutanı bulur → orphan kalmasın diye çık. Elle `--dir <path>`
96
- // başlatılmışsa (rootDir set) çıkma; kullanıcı bilinçli açtı, savedPort'la ulaşılabilir.
97
+ // Another CLI is already the discovery point. If this is a protocol-launch (no folder) this instance is
98
+ // redundant — the web finds the rendezvous holder, not this one → exit so it doesn't stay orphaned. If
99
+ // launched manually with `--dir <path>` (rootDir set) don't exit; the user opened it deliberately, reachable via savedPort.
97
100
  if (this.rootDir === undefined) {
98
101
  logger_1.logger.info(`rendezvous ${protocolVersion_1.RENDEZVOUS_PORT} held by another CLI — redundant launch, exiting`);
99
102
  this.close();
@@ -118,15 +121,16 @@ class BridgeServer {
118
121
  close() {
119
122
  this.stopPing();
120
123
  this.cancelIdleExit();
124
+ this.trashQueue.dispose();
121
125
  (0, pickWorkspaceDir_1.killActivePicker)();
122
126
  this.closeRendezvous();
123
127
  this.bridgeClient?.close(1001, "cli shutting down");
124
128
  this.testClient?.close(1001, "cli shutting down");
125
129
  this.wss?.close();
126
130
  if (this.rootDir !== undefined)
127
- (0, serverInfo_1.removeServerInfoSync)(this.rootDir);
131
+ (0, serverInfo_1.clearServerInfoRuntimeSync)(this.rootDir);
128
132
  }
129
- /** OS'in atadığı efemer porta bind et (port:0 → OS boş port seçer). Portu web rendezvous ile öğrenir. */
133
+ /** Bind to the ephemeral port assigned by the OS (port:0 → the OS picks a free port). The web learns the port via the rendezvous. */
130
134
  async bind() {
131
135
  const wss = new wsRaw_1.RawWebSocketServer({ host: this.host, port: 0 });
132
136
  wss.onConnection((conn) => this.onConnection(conn));
@@ -135,7 +139,7 @@ class BridgeServer {
135
139
  this.wss = wss;
136
140
  this.port = wss.boundPort;
137
141
  }
138
- // --- bağlantı yaşam döngüsü ---
142
+ // --- connection lifecycle ---
139
143
  onConnection(conn) {
140
144
  const peer = new peer_1.Peer(conn);
141
145
  peer.onEnvelope((env) => this.dispatch(peer, env));
@@ -144,8 +148,8 @@ class BridgeServer {
144
148
  }
145
149
  onPeerClose(peer) {
146
150
  if (peer === this.bridgeClient) {
147
- // F5/sayfa kapanması: client gider ama claim + server.json KALIR (reconnect için).
148
- // Picker açıkken tab kapandıysa sahipsiz pencereyi kapat (sonuç zaten düşürülecek).
151
+ // F5/page close: the client goes away but the claim + server.json REMAIN (for reconnect).
152
+ // If the tab closed while the picker was open, close the orphaned window (its result will be dropped anyway).
149
153
  if (this._pickerOpen)
150
154
  (0, pickWorkspaceDir_1.killActivePicker)();
151
155
  this.bridgeClient = undefined;
@@ -164,8 +168,8 @@ class BridgeServer {
164
168
  dispatch(peer, env) {
165
169
  switch (env.type) {
166
170
  case "whoAreYou":
167
- /** Probe — yan etki YOK; mevcut durumu + protokol/sürümü bildirir (claim etmez).
168
- * Uyumluluk kontrolü UI'da bu cevaba göre yapılır (bkz. docs/PROTOCOL-VERSION-CHECK.md). */
171
+ /** Probe — NO side effects; reports the current state + protocol/version (does not claim).
172
+ * The compatibility check is done in the UI based on this reply (see docs/PROTOCOL-VERSION-CHECK.md). */
169
173
  peer.reply(env, "whoAreYouResult", { hasClient: this.bridgeClient?.isOpen ?? false, hasTestClient: this.testClient?.isOpen ?? false, appId: this.claimedAppId ?? null, protocol: protocolVersion_1.GENERATION, cliVersion: version_1.VERSION });
170
174
  return;
171
175
  case "hello":
@@ -180,7 +184,7 @@ class BridgeServer {
180
184
  case "pong":
181
185
  return;
182
186
  case "bye":
183
- // Yalnız PRIMARY'nin bye'ı server'ı kapatır; test client'ın gidişi slotu boşaltır.
187
+ // Only the PRIMARY's bye shuts down the server; the test client leaving just frees the slot.
184
188
  if (peer === this.testClient) {
185
189
  logger_1.logger.info(`test client said bye (${env.payload.reason})`);
186
190
  this.testClient = undefined;
@@ -220,8 +224,8 @@ class BridgeServer {
220
224
  logger_1.logger.warn(`unhandled message type: ${env.type}`);
221
225
  }
222
226
  }
223
- /** Dosya yazan event'ler yalnız primary'den kabul edilir (test SINK'tir; web tarafı zaten
224
- * göndermez — bu ikinci emniyet). */
227
+ /** File-writing events are only accepted from the primary (test is a SINK; the web side doesn't send
228
+ * them anyway — this is a second safeguard). */
225
229
  isPrimary(peer) {
226
230
  if (peer === this.bridgeClient)
227
231
  return true;
@@ -230,20 +234,20 @@ class BridgeServer {
230
234
  }
231
235
  onHello(peer, env) {
232
236
  const p = env.payload;
233
- // Protokol uyumluluğu UI tarafında whoAreYou probe'unda çözülür; hello'ya gelindiyse taraflar
234
- // zaten uyumludur (bkz. docs/PROTOCOL-VERSION-CHECK.md). Burada protokol kontrolü YOK.
237
+ // Protocol compatibility is resolved on the UI side in the whoAreYou probe; if we got to hello the parties
238
+ // are already compatible (see docs/PROTOCOL-VERSION-CHECK.md). NO protocol check here.
235
239
  if (p.role === "test") {
236
240
  this.onHelloTest(peer, env);
237
241
  return;
238
242
  }
239
- // Zaten canlı bir bridge client varsa (başka tab) → meşgul.
243
+ // If there's already a live bridge client (another tab) → busy.
240
244
  if (this.bridgeClient?.isOpen && this.bridgeClient !== peer) {
241
245
  peer.reply(env, "helloAck", { cliVersion: version_1.VERSION, protocol: protocolVersion_1.GENERATION, rootDir: this.rootDir ?? null }, { message: "bridge already in use", title: "Bridge busy" });
242
246
  logger_1.logger.warn(`hello rejected — bridge already in use (app ${this.claimedAppId})`);
243
247
  peer.close(1013, "bridge already in use");
244
248
  return;
245
249
  }
246
- // Claim'li ve farklı app → bu server başka workspace'e ait.
250
+ // Claimed and a different app → this server belongs to another workspace.
247
251
  if (this.claimedAppId !== undefined && this.claimedAppId !== p.appId) {
248
252
  peer.reply(env, "helloAck", { cliVersion: version_1.VERSION, protocol: protocolVersion_1.GENERATION, rootDir: this.rootDir ?? null }, { message: `server claimed by another app (${this.claimedAppId})`, title: "Wrong workspace" });
249
253
  logger_1.logger.warn(`hello rejected — claimed by ${this.claimedAppId}, got ${p.appId}`);
@@ -253,9 +257,9 @@ class BridgeServer {
253
257
  const fresh = this.claimedAppId === undefined;
254
258
  this.claimedAppId = p.appId;
255
259
  this.bridgeClient = peer;
256
- // Her primary hello'da tazele (reconnect'te origin/org değişmiş olabilir).
260
+ // Refresh on every primary hello (origin/org may have changed on reconnect).
257
261
  this.renderTarget = (p.organizationId && p.origin) ? { organizationId: p.organizationId, origin: p.origin } : undefined;
258
- // Teşhis: /render'ın çalışıp çalışmayacağı bağlantı anında görünsün (eski UI build'i org/origin göndermez).
262
+ // Diagnostic: make it visible at connect time whether /render will work (an old UI build doesn't send org/origin).
259
263
  if (this.renderTarget)
260
264
  logger_1.logger.info(`render check ready — ${this.renderTarget.origin}/studio/${this.renderTarget.organizationId}/${p.appId}`);
261
265
  else
@@ -270,12 +274,12 @@ class BridgeServer {
270
274
  peer.reply(env, "helloAck", { cliVersion: version_1.VERSION, protocol: protocolVersion_1.GENERATION, rootDir: this.rootDir ?? null });
271
275
  this.startPing();
272
276
  this.cancelIdleExit();
273
- // Web efemer porta bağlanıp handshake yaptı → keşif tamam, rendezvous'u serbest bırak.
277
+ // The web connected to the ephemeral port and handshaked → discovery done, release the rendezvous.
274
278
  this.closeRendezvous();
275
279
  }
276
- /** Test rolü hello'su. Test client claim ETMEZ, server.json'a dokunmaz; yalnız mevcut claim'e
277
- * eklemlenir. Canlı primary ŞART DEĞİL — claim primary F5'inde de kalır (onPeerClose) ve
278
- * primary'siz test client zararsızdır (control komutları zaten 409 döner). */
280
+ /** Test-role hello. The test client does NOT claim, doesn't touch server.json; it just attaches to the
281
+ * existing claim. A live primary is NOT required — the claim survives the primary's F5 (onPeerClose) and
282
+ * a test client without a primary is harmless (control commands return 409 anyway). */
279
283
  onHelloTest(peer, env) {
280
284
  const p = env.payload;
281
285
  if (this.claimedAppId === undefined) {
@@ -301,7 +305,7 @@ class BridgeServer {
301
305
  peer.reply(env, "helloAck", { cliVersion: version_1.VERSION, protocol: protocolVersion_1.GENERATION, rootDir: this.rootDir ?? null });
302
306
  this.startPing();
303
307
  this.cancelIdleExit();
304
- // Test client push'lardan SONRA bağlanmış/F5 atmış olabilir → oturumun birikmiş gövdelerini gönder.
308
+ // The test client may have connected/F5'd AFTER the pushes → send the session's accumulated bodies.
305
309
  if (this.lastSync.size > 0)
306
310
  void this.sendSyncModels("replay");
307
311
  }
@@ -322,9 +326,9 @@ class BridgeServer {
322
326
  logger_1.logger.error(`failed to write server.json: ${err.message}`);
323
327
  }
324
328
  }
325
- // Klasörsüz server: web helloAck.rootDir === null görüp pickFolder ister. Native picker açılır;
326
- // dolu klasör (canlı başka server claim'i) seçilirse folderInUse yollanıp picker yeniden açılır.
327
- // Seçimde rootDir set edilir + (claim'liyse) server.json yazılır. Cancel → path:null.
329
+ // Folderless server: the web sees helloAck.rootDir === null and asks for pickFolder. The native picker opens;
330
+ // if an occupied folder (another live server's claim) is picked, folderInUse is sent and the picker reopens.
331
+ // On selection rootDir is set + (if claimed) server.json is written. Cancel → path:null.
328
332
  async onPickFolder(peer, env) {
329
333
  if (peer !== this.bridgeClient) {
330
334
  peer.reply(env, "pickFolderResult", { path: null }, { message: "only the primary client can pick a folder" });
@@ -343,7 +347,7 @@ class BridgeServer {
343
347
  while (peer.isOpen) {
344
348
  const picked = await (0, pickWorkspaceDir_1.pickWorkspaceDir)();
345
349
  if (!peer.isOpen)
346
- return; // picker açıkken tab kapandı → sonucu düşür
350
+ return; // tab closed while the picker was open → drop the result
347
351
  if (!picked) {
348
352
  peer.reply(env, "pickFolderResult", { path: null });
349
353
  return;
@@ -353,6 +357,13 @@ class BridgeServer {
353
357
  peer.send("folderInUse", { path: picked });
354
358
  continue;
355
359
  }
360
+ // The folder carries a persistent appId binding; if it belongs to a different app, don't let this
361
+ // app's files mix into it — reopen the picker (same warning as a live in-use folder).
362
+ if (this.claimedAppId !== undefined && belongsToAnotherApp(picked, this.claimedAppId)) {
363
+ logger_1.logger.warn(`workspace belongs to another app — asking again: ${picked}`);
364
+ peer.send("folderInUse", { path: picked });
365
+ continue;
366
+ }
356
367
  this.rootDir = picked;
357
368
  if (this.claimedAppId !== undefined)
358
369
  await this.claim(this.claimedAppId);
@@ -365,10 +376,10 @@ class BridgeServer {
365
376
  this._pickerOpen = false;
366
377
  }
367
378
  }
368
- // --- control kanalı (HTTP /control/<cmd>) — santral relay ---
369
- // wsRaw'dan gelen WS-olmayan HTTP. Control isteğini sahiplen (true); gerisi false → 426.
379
+ // --- control channel (HTTP /control/<cmd>) — hub relay ---
380
+ // Non-WS HTTP coming from wsRaw. Own the control request (true); everything else false → 426.
370
381
  routeRequest(req, res) {
371
- // CORS preflight — browser'ın OPTIONS isteğini karşıla.
382
+ // CORS preflight — handle the browser's OPTIONS request.
372
383
  if (req.method === "OPTIONS") {
373
384
  res.writeHead(204, this.corsHeaders());
374
385
  res.end();
@@ -379,20 +390,20 @@ class BridgeServer {
379
390
  void this.handleControl(cmd, req, res);
380
391
  return true;
381
392
  }
382
- // Render-check: agent Playwright ile bu sabit lokal URL'i açar; CLI primary tab'dan TAZE token
383
- // isteyip Studio editör URL'ine 302 redirect eder. Agent token'ı hiç görmez/işlemez.
393
+ // Render-check: the agent opens this fixed local URL with Playwright; the CLI requests a FRESH token from
394
+ // the primary tab and 302-redirects to the Studio editor URL. The agent never sees/handles the token.
384
395
  if (req.method === "GET" && req.url && req.url.split("?")[0] === "/render") {
385
396
  void this.handleRenderRedirect(res);
386
397
  return true;
387
398
  }
388
399
  return false;
389
400
  }
390
- /** `<origin>/studio/<org>/<app>?cliRole=test#token=<taze token>` adresine 302 redirect.
391
- * Token her istekte primary'den TALEPLE alınır (hello-anı token'ı ~1 saatte bayatlar; api.getToken()
392
- * MSAL'dan sessizce yeniler) ve YALNIZ fragment'te taşınır (query değil → access log/Referer'a
393
- * sızmaz; sunucuya hiç gitmez). Diske asla yazılmaz. Yanıtta CORS header'ı BİLEREK YOK — yabancı
394
- * bir sayfa fetch ile redirect zincirini okuyamasın; endpoint yalnız doğrudan navigasyon içindir.
395
- * `?cliRole=test` sayesinde tab açılır açılmaz test client olarak auto-connect olur. */
401
+ /** 302 redirect to `<origin>/studio/<org>/<app>?cliRole=test#token=<fresh token>`.
402
+ * The token is requested ON DEMAND from the primary on every request (the hello-time token goes stale in ~1 hour;
403
+ * api.getToken() silently refreshes it from MSAL) and is carried ONLY in the fragment (not the query → doesn't leak
404
+ * to access logs/Referer; never reaches the server). Never written to disk. The response DELIBERATELY has NO CORS
405
+ * header — so a foreign page can't read the redirect chain via fetch; the endpoint is for direct navigation only.
406
+ * Thanks to `?cliRole=test` the tab auto-connects as a test client as soon as it opens. */
396
407
  async handleRenderRedirect(res) {
397
408
  if (!this.bridgeClient?.isOpen || this.claimedAppId === undefined) {
398
409
  this.respondNoCors(res, 503, { error: "no authenticated Studio session — open Studio and connect the CLI first" });
@@ -439,7 +450,7 @@ class BridgeServer {
439
450
  req.on("error", reject);
440
451
  });
441
452
  }
442
- // Control komutunu erit: gereken mesajı bridgeClient'a relay et, cevabı HTTP'ye dön.
453
+ // Resolve the control command: relay the needed message to the bridgeClient, return the reply over HTTP.
443
454
  async handleControl(cmd, req, res) {
444
455
  if (!this.bridgeClient?.isOpen) {
445
456
  this.respond(res, 409, { error: "studio not connected" });
@@ -452,16 +463,18 @@ class BridgeServer {
452
463
  try {
453
464
  switch (cmd) {
454
465
  case "pull": {
455
- // browser pullResult (snapshot) ile reply eder → dosyaları SERVER yazar (+ state).
456
- // Yanıt: NDJSON stream — her model sonrası {"progress":x,"total":y}, sonda {"message":...}
466
+ // the browser replies with pullResult (snapshot) → the SERVER writes the files (+ state).
467
+ // Response: NDJSON stream — {"progress":x,"total":y} after each model, {"message":...} at the end
457
468
  const snapshot = await this.bridgeClient.request("pull", {}, 300000);
458
469
  const modelTotal = snapshot.models.length;
459
470
  res.writeHead(200, { "Content-Type": "application/x-ndjson", ...this.corsHeaders() });
460
471
  try {
461
- const { total, readOnly } = await (0, pull_1.pull)(this.workspaceDir, snapshot, (written) => {
472
+ const { total, readOnly, failed } = await (0, pull_1.pull)(this.workspaceDir, snapshot, (written) => {
462
473
  res.write(JSON.stringify({ progress: written, total: modelTotal }) + "\n");
463
474
  });
464
- res.end(JSON.stringify({ message: `${total} model(s)${readOnly > 0 ? ` (${readOnly} read-only)` : ""} and .ai-kit pulled` }) + "\n");
475
+ for (const f of failed)
476
+ res.write(JSON.stringify({ skipped: `${f.name} — ${f.error}` }) + "\n");
477
+ res.end(JSON.stringify({ message: `${total} model(s)${readOnly > 0 ? ` (${readOnly} read-only)` : ""}${failed.length > 0 ? `, ${failed.length} failed` : ""} and .ai-kit pulled` }) + "\n");
465
478
  }
466
479
  catch (err) {
467
480
  res.end(JSON.stringify({ error: err.message }) + "\n");
@@ -469,12 +482,12 @@ class BridgeServer {
469
482
  return;
470
483
  }
471
484
  case "push": {
472
- // rootDir'i tara → mevcut (models) + yeni (newModels) dosyaları topla → bulk relay → state güncelle.
485
+ // scan rootDir → collect existing (models) + new (newModels) files → bulk relay → update state.
473
486
  const state = (0, state_1.readState)(this.workspaceDir);
474
487
  const { models, newModels, skipped, deletedIds } = await (0, push_1.push)(this.workspaceDir, state);
475
- // NDJSON stream aç — client progress bar çizer (controlClient.ts readNdjsonStream).
488
+ // open an NDJSON stream — the client draws a progress bar (controlClient.ts readNdjsonStream).
476
489
  res.writeHead(200, { "Content-Type": "application/x-ndjson", ...this.corsHeaders() });
477
- // Her skipped dosya için bireysel satır yaz.
490
+ // Write an individual line for each skipped file.
478
491
  for (const s of skipped) {
479
492
  const hint = s.reason === "readonly" ? "read-only (use startWorking to check out)" : "unsupported type";
480
493
  res.write(JSON.stringify({ skipped: `${s.localKey} — ${hint}` }) + "\n");
@@ -484,20 +497,28 @@ class BridgeServer {
484
497
  return;
485
498
  }
486
499
  const total = models.length + newModels.length + deletedIds.length;
487
- // Push sırasında gelen modelChanged/modelCreated eventleri push'un kendi updateModel
488
- // çağrılarından kaynaklanır (echo). Deferred queue'ya al; push bitince işle.
500
+ // modelChanged/modelCreated events that arrive during the push come from the push's own updateModel
501
+ // calls (echo). Put them in the deferred queue; process when the push finishes.
489
502
  this._pushInProgress = true;
490
- this._expectedCheckoutEchoes.clear(); // önceki push'tan kalan (echo'su gelmemiş) id'leri temizle
503
+ this._expectedCheckoutEchoes.clear(); // clear ids left over from a previous push (whose echo never arrived)
491
504
  try {
492
505
  res.write(JSON.stringify({ progress: 0, total }) + "\n");
493
506
  const pushTimeoutMs = Math.max(300000, total * 60000);
494
- const result = await this.bridgeClient.request("push", { models, newModels, deletedIds }, pushTimeoutMs);
495
- // Yeni yaratılan modeller push tarafından checkout edilir → checkoutChanged echo'su beklenir.
496
- // (Mevcut modeller rename/move/body'de checkout etmez.) Echo geç gelse de id ile bastırılır.
507
+ const heartbeat = setInterval(() => { if (!res.writableEnded)
508
+ res.write(JSON.stringify({ keepalive: 1 }) + "\n"); }, 20000);
509
+ let result;
510
+ try {
511
+ result = await this.bridgeClient.request("push", { models, newModels, deletedIds }, pushTimeoutMs);
512
+ }
513
+ finally {
514
+ clearInterval(heartbeat);
515
+ }
516
+ // Newly created models are checked out by the push → a checkoutChanged echo is expected.
517
+ // (Existing models don't check out on rename/move/body.) Even if the echo arrives late it's suppressed by id.
497
518
  for (const r of result.newModelResults ?? [])
498
519
  if (r.ok && r.id)
499
520
  this._expectedCheckoutEchoes.add(r.id);
500
- // Progress: her uygulanan öğe için tek satır (mevcut + yeni + silinen).
521
+ // Progress: one line per applied item (existing + new + deleted).
501
522
  let done = 0;
502
523
  const tick = () => res.write(JSON.stringify({ progress: ++done, total }) + "\n");
503
524
  const counts = { okBody: 0, okRenamed: 0, okMoved: 0, okBoth: 0, okDeleted: 0, okRefFiles: 0 };
@@ -507,8 +528,8 @@ class BridgeServer {
507
528
  counts.okRefFiles = await this.syncReferences(result.results ?? [], result.deletedResults ?? [], state, res);
508
529
  await (0, state_1.writeState)(this.workspaceDir, state);
509
530
  res.end(JSON.stringify({ message: this.buildPushSummary(counts, models, newModels, skipped) }) + "\n");
510
- // Test tabına yansıt — HTTP yanıtı kapandıktan sonra, best-effort (push'u asla bloklamaz;
511
- // hata da push'a sızmaz — res zaten kapandı, catch'e düşmemeli).
531
+ // Reflect to the test tab — after the HTTP response is closed, best-effort (never blocks the push;
532
+ // errors don't leak into the push either — res is already closed, must not fall into catch).
512
533
  try {
513
534
  this.afterPushSync(models, newModels, result);
514
535
  }
@@ -521,8 +542,8 @@ class BridgeServer {
521
542
  }
522
543
  finally {
523
544
  this._pushInProgress = false;
524
- // Reply sonrası gelebilecek checkout echo'su _expectedCheckoutEchoes ile (id bazında) bastırılır.
525
- // Deferred echo eventlerini işle (push'un kendi kaynaklıları no-op olur).
545
+ // A checkout echo that may arrive after the reply is suppressed (per-id) via _expectedCheckoutEchoes.
546
+ // Process the deferred echo events (those originating from the push itself become no-ops).
526
547
  const deferredChanged = this._deferredModelChanged.splice(0);
527
548
  for (const d of deferredChanged)
528
549
  void this.handleModelChanged(d);
@@ -586,9 +607,9 @@ class BridgeServer {
586
607
  res.writeHead(status, { "Content-Type": "application/json", ...this.corsHeaders() });
587
608
  res.end(JSON.stringify(body));
588
609
  }
589
- // --- push sonuç işleme (handleControl "push" yardımcıları) ---
590
- /** Mevcut modeller: bodyChanged'da state hash güncelle; rename/move sayaçları; her öğe için progress.
591
- * Move owner'ı değiştirdiyse local frontmatter'daki ownerName da güncellenir. */
610
+ // --- push result processing (handleControl "push" helpers) ---
611
+ /** Existing models: update the state hash on bodyChanged; rename/move counters; progress per item.
612
+ * If the move changed the owner, the ownerName in the local frontmatter is updated too. */
592
613
  async applyExistingResults(results, models, state, counts, tick) {
593
614
  for (const r of results) {
594
615
  if (!r.ok) {
@@ -612,7 +633,7 @@ class BridgeServer {
612
633
  tick();
613
634
  }
614
635
  }
615
- /** Move sonrası dosyanın frontmatter ownerName'ini yeni owner'a günceller (gövde/hash değişmez). */
636
+ /** After a move, updates the file's frontmatter ownerName to the new owner (body/hash unchanged). */
616
637
  async rewriteOwnerName(pm, ownerName) {
617
638
  const abs = (0, node_path_1.join)(this.workspaceDir, ...pm.relDir.split("/").filter(Boolean), `${pm.newName}.${pm.modelType}`);
618
639
  try {
@@ -626,7 +647,7 @@ class BridgeServer {
626
647
  logger_1.logger.warn(`frontmatter ownerName update failed for ${pm.newName}: ${err.message}`);
627
648
  }
628
649
  }
629
- /** Yeni dosyalar: yeni yaratılana frontmatter yaz, state hash hesapla; her öğe için progress. */
650
+ /** New files: write frontmatter to the newly created one, compute the state hash; progress per item. */
630
651
  async applyNewModelResults(results, newModels, state, counts, tick, res) {
631
652
  for (const r of results) {
632
653
  if (!r.ok || !r.id || !r.key) {
@@ -657,7 +678,7 @@ class BridgeServer {
657
678
  tick();
658
679
  }
659
680
  }
660
- /** Silinen modeller: state'ten çıkar; her öğe için progress. */
681
+ /** Deleted models: remove from state; progress per item. */
661
682
  applyDeletedResults(results, state, counts, tick) {
662
683
  for (const r of results) {
663
684
  if (!r.ok) {
@@ -670,9 +691,9 @@ class BridgeServer {
670
691
  tick();
671
692
  }
672
693
  }
673
- /** EPIC 13b — rename/move sonrası diğer dosyalardaki <<type:oldPath>> → <<type:newPath>> düzelt;
674
- * delete'te dangling referansları `skipped` satırıyla uyar. Düzeltilen dosya sayısı döner.
675
- * (Studio'da bağ id ile sabit; lokalde path ile olduğu için referans EDEN dosyalar bayatlar.) */
694
+ /** EPIC 13b — after rename/move, fix <<type:oldPath>> → <<type:newPath>> in other files;
695
+ * on delete, warn about dangling references with a `skipped` line. Returns the number of fixed files.
696
+ * (In Studio the link is fixed by id; locally it's by path, so the REFERENCING files go stale.) */
676
697
  async syncReferences(results, deletedResults, state, res) {
677
698
  const rootDir = this.workspaceDir;
678
699
  const renames = results.flatMap(r => (r.ok && r.oldPath && r.newPath && r.oldPath !== r.newPath) ? [{ oldPath: r.oldPath, newPath: r.newPath }] : []);
@@ -691,7 +712,7 @@ class BridgeServer {
691
712
  }
692
713
  }
693
714
  if (changed) {
694
- // Referans eden dosya checkout edilmemişse (0444) yazılamaz → geçici writable yap, sonra geri al.
715
+ // If the referencing file isn't checked out (0444) it can't be written → make it temporarily writable, then revert.
695
716
  const wasWritable = !!((await (0, promises_1.stat)(abs)).mode & 0o200);
696
717
  if (!wasWritable)
697
718
  await (0, promises_1.chmod)(abs, 0o644);
@@ -712,7 +733,7 @@ class BridgeServer {
712
733
  }
713
734
  return okRefFiles;
714
735
  }
715
- /** push özet mesajı (son NDJSON satırı). */
736
+ /** push summary message (last NDJSON line). */
716
737
  buildPushSummary(counts, models, newModels, skipped) {
717
738
  const parts = [];
718
739
  const bodyTotal = models.filter(m => m.bodyChanged).length + newModels.length;
@@ -738,10 +759,10 @@ class BridgeServer {
738
759
  parts.push(`${unsupportedCount} unsupported type skipped`);
739
760
  return parts.join(", ");
740
761
  }
741
- // --- test client sync (push edilen gövdelerin test tabına yansıtılması) ---
742
- /** Push sonuçlarından sync item'larını çıkarır, lastSync'e merge eder ve (bağlıysa) test
743
- * client'a yollar. Primary push payload'ı ASLA replay edilmez — applyNewModel backend'de model
744
- * yaratır, replay double-create olur; bu yüzden FINAL id'lerle bu hafif mesaj gönderilir. */
762
+ // --- test client sync (reflecting pushed bodies to the test tab) ---
763
+ /** Extracts sync items from the push results, merges them into lastSync and (if connected) sends them to the
764
+ * test client. The primary push payload is NEVER replayed — applyNewModel creates a model on the backend,
765
+ * replaying would double-create; so this lightweight message is sent with the FINAL ids. */
745
766
  afterPushSync(models, newModels, result) {
746
767
  const items = [];
747
768
  for (const r of result.results ?? []) {
@@ -754,7 +775,7 @@ class BridgeServer {
754
775
  }
755
776
  for (const r of result.newModelResults ?? []) {
756
777
  if (!r.ok || !r.id)
757
- continue; // primary'de create başarısızsa test'e HİÇ gitmez (hayalet model yok)
778
+ continue; // if create failed on the primary it does NOT go to the test at all (no ghost model)
758
779
  const nm = newModels.find(m => m.localKey === r.localKey);
759
780
  if (!nm)
760
781
  continue;
@@ -765,7 +786,7 @@ class BridgeServer {
765
786
  for (const d of result.deletedResults ?? [])
766
787
  if (d.ok)
767
788
  this.lastSync.delete(d.id);
768
- // Gövdesiz rename/move/create/delete de test tabında refreshItems gerektirir.
789
+ // bodyless rename/move/create/delete also require refreshItems in the test tab.
769
790
  const treeChanged = (result.results ?? []).some(r => r.ok && (r.renamed === true || r.moved === true))
770
791
  || (result.newModelResults ?? []).some(r => r.ok)
771
792
  || (result.deletedResults ?? []).some(r => r.ok);
@@ -773,8 +794,8 @@ class BridgeServer {
773
794
  void this.sendSyncModels("push", items, treeChanged);
774
795
  }
775
796
  }
776
- /** syncModels'i test client'a yollar. replay → lastSync'ün tamamı (test hello/F5 sonrası).
777
- * Best-effort: hata yalnız loglanır; timeout 60s (handler refreshItems + editör açabilir). */
797
+ /** Sends syncModels to the test client. replay → the entire lastSync (after test hello/F5).
798
+ * Best-effort: errors are only logged; timeout 60s (the handler may refreshItems + open the editor). */
778
799
  async sendSyncModels(reason, items, treeChanged = false) {
779
800
  if (!this.testClient?.isOpen || this.claimedAppId === undefined)
780
801
  return;
@@ -791,7 +812,7 @@ class BridgeServer {
791
812
  logger_1.logger.warn(`test sync (${reason}) failed: ${err.message}`);
792
813
  }
793
814
  }
794
- // --- web → local otomatik sync (modelChanged) ---
815
+ // --- web → local auto sync (modelChanged) ---
795
816
  async handleModelChanged(payload) {
796
817
  if (this.rootDir === undefined) {
797
818
  logger_1.logger.debug(`modelChanged: no workspace — dropping id=${payload.modelId}`);
@@ -812,28 +833,28 @@ class BridgeServer {
812
833
  const fm = (0, frontmatter_1.parseFrontmatter)(existing);
813
834
  if (!fm)
814
835
  return;
815
- // model="" → rename-only mesaj (body VMM'de yüklü değildi); body yazma atla
836
+ // model="" → rename-only message (the body wasn't loaded in the VMM); skip writing the body
816
837
  if (payload.model !== "") {
817
838
  const ext = (0, node_path_1.extname)(abs).slice(1).toLowerCase();
818
839
  const body = ext === "qjson" ? (0, qjsonCompiled_1.stripQJsonCompiledFields)(payload.model) : payload.model;
819
- // Kullanıcı Studio'da kaydettiyse test replay'i (F5) bayat push gövdesine dönmesin.
840
+ // If the user saved in Studio, the test replay (F5) must not revert to the stale push body.
820
841
  const prev = this.lastSync.get(payload.modelId);
821
842
  if (prev)
822
843
  this.lastSync.set(payload.modelId, { ...prev, body });
823
844
  const state = (0, state_1.readState)(rootDir);
824
- // Push echo guard: hash state ile aynıysa (az önce pushladık) body yazmayı atla
845
+ // Push echo guard: if the hash equals state (we just pushed) skip writing the body
825
846
  if ((0, state_1.sha)(body) !== state[payload.modelId]) {
826
847
  try {
827
848
  await (0, promises_1.chmod)(abs, 0o644);
828
849
  }
829
- catch { /* zaten yazılabilir veya dosya yok */ }
850
+ catch { /* already writable or the file doesn't exist */ }
830
851
  await (0, promises_1.writeFile)(abs, (0, frontmatter_1.writeWithFrontmatter)(fm.meta, body), "utf8");
831
852
  state[payload.modelId] = (0, state_1.sha)(body);
832
853
  await (0, state_1.writeState)(rootDir, state);
833
854
  logger_1.logger.info(`auto-pulled: ${(0, node_path_1.relative)(rootDir, abs)}`);
834
855
  }
835
856
  }
836
- // Rename ve move sırayla yapılır; currentAbs güncel yolu takip eder.
857
+ // Rename and move are done in order; currentAbs tracks the current path.
837
858
  let currentAbs = abs;
838
859
  if (payload.newName) {
839
860
  const newAbs = (0, node_path_1.join)((0, node_path_1.dirname)(currentAbs), payload.newName + (0, node_path_1.extname)(currentAbs));
@@ -857,9 +878,9 @@ class BridgeServer {
857
878
  }
858
879
  }
859
880
  }
860
- // Studio'da yeni model yaratıldı → lokale tek dosya yaz (pull ile aynı writeModel mantığı).
861
- // Echo guard: aynı ID'li dosya zaten varsa (push ile yaratıldıysa veya zaten pull'landıysa) atla.
862
- // Push devam ederken gelen eventler deferred queue'ya alınır (frontmatter henüz yazılmadı).
881
+ // A new model was created in Studio → write a single file locally (same writeModel logic as pull).
882
+ // Echo guard: if a file with the same ID already exists (created by the push or already pulled) skip.
883
+ // Events arriving while a push is in progress go into the deferred queue (frontmatter not written yet).
863
884
  async handleModelCreated(payload) {
864
885
  if (this.rootDir === undefined) {
865
886
  logger_1.logger.debug(`modelCreated: no workspace — dropping id=${payload.model.ID}`);
@@ -888,28 +909,27 @@ class BridgeServer {
888
909
  logger_1.logger.debug(`modelDeleted: no workspace — dropping id=${payload.modelId}`);
889
910
  return;
890
911
  }
891
- this.lastSync.delete(payload.modelId); // replay silinen modeli diriltmesin
912
+ this.lastSync.delete(payload.modelId); // so replay doesn't resurrect the deleted model
892
913
  const abs = await this.findFileById(payload.modelId);
893
914
  if (!abs) {
894
915
  logger_1.logger.debug(`modelDeleted: no local file for id=${payload.modelId}`);
895
916
  return;
896
917
  }
897
- await (0, promises_1.unlink)(abs);
898
918
  const state = (0, state_1.readState)(this.workspaceDir);
899
919
  delete state[payload.modelId];
900
920
  await (0, state_1.writeState)(this.workspaceDir, state);
901
- logger_1.logger.info(`auto-deleted: ${(0, node_path_1.relative)(this.workspaceDir, abs)}`);
921
+ this.trashQueue.enqueue(abs, this.workspaceDir);
902
922
  }
903
923
  async handleCheckoutChanged(payload) {
904
924
  if (this.rootDir === undefined) {
905
925
  logger_1.logger.debug(`checkoutChanged: no workspace — dropping id=${payload.modelId}`);
906
926
  return;
907
927
  }
908
- // Push'un kendi checkout'undan kaynaklanan echo (yeni model yaratınca studio.checkout).
909
- // Dosya push tarafından zaten doğru modda yazılıyor → log/chmod gereksiz, düşür.
910
- // - Push sürerken: tümünü bastır.
911
- // - Reply'dan sonra geç gelen echo: yalnız push'un checkout ettiği id'ler, consume-once.
912
- // Yalnızca Studio'da manuel start/stop working log'lanır.
928
+ // Echo caused by the push's own checkout (studio.checkout when a new model is created).
929
+ // The file is already written in the correct mode by the push → log/chmod unnecessary, drop it.
930
+ // - While the push is running: suppress all.
931
+ // - Echo arriving late after the reply: only ids the push checked out, consume-once.
932
+ // Only manual start/stop working in Studio is logged.
913
933
  if (this._pushInProgress) {
914
934
  logger_1.logger.debug(`checkoutChanged: push in progress — ignoring (echo) for id=${payload.modelId}`);
915
935
  return;
@@ -936,7 +956,7 @@ class BridgeServer {
936
956
  }
937
957
  return null;
938
958
  }
939
- // --- keepalive (bridge client'a) ---
959
+ // --- keepalive (to the bridge client) ---
940
960
  startPing() {
941
961
  this.stopPing();
942
962
  this.pingTimer = setInterval(() => {
@@ -951,8 +971,8 @@ class BridgeServer {
951
971
  this.pingTimer = undefined;
952
972
  }
953
973
  }
954
- // Client'sız (tarayıcı/sekme kapalı ya da hiç bağlanılmamış) geçen süre IDLE_EXIT_MS'i aşarsa
955
- // process'i kapat → arka planda claimsiz port birikmesin. Bir client bağlanınca iptal edilir.
974
+ // If the time spent without a client (browser/tab closed or never connected) exceeds IDLE_EXIT_MS
975
+ // shut the process down → so claimless ports don't pile up in the background. Canceled when a client connects.
956
976
  armIdleExit() {
957
977
  this.cancelIdleExit();
958
978
  this.idleTimer = setTimeout(() => {
@@ -969,8 +989,9 @@ class BridgeServer {
969
989
  }
970
990
  }
971
991
  exports.BridgeServer = BridgeServer;
972
- // Klasörde canlı bir başka studio server var mı? server.json'daki pid'in yaşadığına bakar.
973
- // Bayat (çökmüş server) server.json'u kilit saymaz — o klasör yeniden claim edilebilir.
992
+ // Is there another live studio server in the folder? Checks whether the pid in server.json is alive.
993
+ // No pid (disconnected — only the appId binding remains) or a dead pid isn't treated as a lock — that
994
+ // folder can be re-claimed.
974
995
  function isWorkspaceLocked(dir) {
975
996
  let info;
976
997
  try {
@@ -979,16 +1000,28 @@ function isWorkspaceLocked(dir) {
979
1000
  catch {
980
1001
  return false;
981
1002
  }
982
- if (!info)
1003
+ const pid = info?.pid;
1004
+ if (pid === undefined)
983
1005
  return false;
984
1006
  try {
985
- process.kill(info.pid, 0);
1007
+ process.kill(pid, 0);
986
1008
  return true;
987
1009
  }
988
1010
  catch (err) {
989
1011
  return err.code === "EPERM";
990
1012
  }
991
1013
  }
1014
+ // Does the folder's persistent server.json appId differ from the connecting app? → it belongs to another
1015
+ // app (its files must not be mixed with this app's). No binding (empty folder) or the same app → false.
1016
+ function belongsToAnotherApp(dir, appId) {
1017
+ try {
1018
+ const info = (0, serverInfo_1.readServerInfo)(dir);
1019
+ return info?.appId !== undefined && info.appId !== appId;
1020
+ }
1021
+ catch {
1022
+ return false;
1023
+ }
1024
+ }
992
1025
  async function walkDir(dir) {
993
1026
  const out = [];
994
1027
  for (const entry of await (0, promises_1.readdir)(dir, { withFileTypes: true })) {