yugoo-design 0.1.2 → 0.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 (667) hide show
  1. package/README.md +4 -4
  2. package/bin/npm-desktop-preparation.mjs +5 -0
  3. package/package.json +20 -2
  4. package/payload/desktop-preparation/materials.json +180 -2
  5. package/payload/desktop-preparation/qwenwork-package.mjs +4 -0
  6. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/index.md +143 -0
  7. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/material.json +1 -0
  8. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/.agents/skills/design-bundle-creator/SKILL.md +53 -0
  9. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/.agents/skills/design-bundle-creator/agents/openai.yaml +4 -0
  10. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/.agents/skills/design-bundle-creator/assets/skill.template.yaml +40 -0
  11. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/.agents/skills/design-bundle-creator/references/bundle-checklist.md +55 -0
  12. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/.agents/skills/design-bundle-creator/references/canvas-authoring.md +74 -0
  13. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/.agents/skills/design-bundle-creator/references/cooperation-authoring.md +52 -0
  14. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/.agents/skills/design-bundle-creator/references/panel-authoring.md +367 -0
  15. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/.agents/skills/design-bundle-creator/references/validation-authoring.md +154 -0
  16. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/.agents/skills/design-bundle-creator/scripts/inspect-panel-component.mjs +267 -0
  17. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/.agents/skills/design-bundle-creator/scripts/list-panel-components.mjs +25 -0
  18. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/.agents/skills/design-kit-creator/SKILL.md +28 -0
  19. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/.agents/skills/design-kit-creator/agents/openai.yaml +4 -0
  20. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/.agents/skills/design-kit-creator/references/kit-checklist.md +40 -0
  21. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/.agents/skills/design-kit-creator/references/mindset-authoring.md +55 -0
  22. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/.agents/skills/design-skill-creator/SKILL.md +38 -0
  23. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/.agents/skills/design-skill-creator/agents/openai.yaml +4 -0
  24. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/.agents/skills/design-skill-creator/assets/method-template.md +38 -0
  25. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/.agents/skills/design-skill-creator/references/standards.md +94 -0
  26. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/.agents/skills/design-skill-creator/scripts/render-state-contract.mjs +33 -0
  27. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/docs/a2ui-component-catalog-contract.md +69 -0
  28. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/docs/bundle-contract.md +632 -0
  29. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/docs/dsl-spec.md +1411 -0
  30. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/docs/panel-uiux-standard.md +891 -0
  31. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/docs/system-design-baseline.md +898 -0
  32. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/docs/wiki/extending.md +343 -0
  33. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/docs/wiki/terminology.md +57 -0
  34. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/examples/community-workshop-delivery/mindset.md +23 -0
  35. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/packages/skills-web-app/bundles/business_data/SKILL.md +92 -0
  36. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/packages/skills-web-app/bundles/business_data/panel.yaml +145 -0
  37. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/packages/skills-web-app/bundles/business_data/reference/artifact-contract.md +151 -0
  38. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/packages/skills-web-app/bundles/business_data/reference/canvas-guide.md +40 -0
  39. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/packages/skills-web-app/bundles/business_data/reference/example.json +24 -0
  40. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/packages/skills-web-app/bundles/business_data/reference/preview.json +24 -0
  41. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/packages/skills-web-app/bundles/business_data/schema.yaml +67 -0
  42. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/packages/skills-web-app/bundles/business_data/validation.yaml +92 -0
  43. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/packages/skills-web-app/bundles/design_style/SKILL.md +217 -0
  44. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/packages/skills-web-app/bundles/design_style/THIRD_PARTY_NOTICES.md +58 -0
  45. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/packages/skills-web-app/bundles/design_style/reference/artifact-contract.md +195 -0
  46. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/packages/skills-web-app/bundles/design_style/schema.yaml +177 -0
  47. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/packages/skills-web-app/bundles/design_style/validation.yaml +48 -0
  48. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/packages/skills-web-app/bundles/flow_design/SKILL.md +428 -0
  49. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/packages/skills-web-app/bundles/flow_design/reference/artifact-contract.md +44 -0
  50. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/packages/skills-web-app/bundles/flow_design/reference/bpmn_authoring.md +200 -0
  51. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/packages/skills-web-app/bundles/flow_design/reference/canvas-guide.md +39 -0
  52. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/packages/skills-web-app/bundles/flow_design/schema.yaml +61 -0
  53. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/packages/skills-web-app/bundles/flow_design/validation.yaml +64 -0
  54. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/packages/skills-web-app/bundles/function_modules/SKILL.md +142 -0
  55. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/packages/skills-web-app/bundles/function_modules/reference/artifact-contract.md +204 -0
  56. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/packages/skills-web-app/bundles/function_modules/reference/canvas-guide.md +52 -0
  57. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/packages/skills-web-app/bundles/function_modules/reference/preview.json +32 -0
  58. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/packages/skills-web-app/bundles/function_modules/schema.yaml +93 -0
  59. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/packages/skills-web-app/bundles/function_modules/validation.yaml +21 -0
  60. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/packages/skills-web-app/bundles/page_design/SKILL.md +545 -0
  61. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/packages/skills-web-app/bundles/page_design/reference/artifact-contract.md +164 -0
  62. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/packages/skills-web-app/bundles/page_design/reference/canvas-guide.md +45 -0
  63. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/packages/skills-web-app/bundles/page_design/reference/task-to-page-method.md +82 -0
  64. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/packages/skills-web-app/bundles/page_design/schema.yaml +118 -0
  65. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/packages/skills-web-app/bundles/page_design/validation.yaml +104 -0
  66. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/packages/skills-web-app/bundles/research/SKILL.md +513 -0
  67. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/packages/skills-web-app/bundles/research/reference/artifact-contract.md +77 -0
  68. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/packages/skills-web-app/bundles/research/schema.yaml +61 -0
  69. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/packages/skills-web-app/bundles/research/validation.yaml +74 -0
  70. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/packages/skills-web-app/bundles/role_access/SKILL.md +196 -0
  71. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/packages/skills-web-app/bundles/role_access/reference/artifact-contract.md +186 -0
  72. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/packages/skills-web-app/bundles/role_access/reference/canvas-guide.md +38 -0
  73. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/packages/skills-web-app/bundles/role_access/reference/example.json +90 -0
  74. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/packages/skills-web-app/bundles/role_access/schema.yaml +59 -0
  75. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/packages/skills-web-app/bundles/role_access/validation.yaml +147 -0
  76. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/packages/skills-web-app/bundles/smart_questions/SKILL.md +202 -0
  77. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/packages/skills-web-app/bundles/smart_questions/reference/artifact-contract.md +245 -0
  78. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/packages/skills-web-app/bundles/smart_questions/schema.yaml +93 -0
  79. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/packages/skills-web-app/bundles/smart_questions/validation.yaml +17 -0
  80. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/packages/skills-web-app/bundles/web_app_prd_assembly/SKILL.md +306 -0
  81. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/packages/skills-web-app/bundles/web_app_prd_assembly/reference/artifact-contract.md +140 -0
  82. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/packages/skills-web-app/bundles/web_app_prd_assembly/schema.yaml +38 -0
  83. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/packages/skills-web-app/bundles/web_app_prd_assembly/validation.yaml +24 -0
  84. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/packages/skills-web-app/bundles/whiteboard/SKILL.md +54 -0
  85. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/packages/skills-web-app/bundles/whiteboard/reference/artifact-contract.md +56 -0
  86. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/packages/skills-web-app/bundles/whiteboard/reference/canvas-guide.md +39 -0
  87. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/packages/skills-web-app/bundles/whiteboard/reference/drawing-method.md +78 -0
  88. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/packages/skills-web-app/bundles/whiteboard/reference/geometry.md +79 -0
  89. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/packages/skills-web-app/bundles/whiteboard/schema.yaml +18 -0
  90. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/packages/skills-web-app/bundles/whiteboard/validation.yaml +18 -0
  91. package/payload/desktop-preparation/qwenwork-template/authoring/studio-creators/source/packages/skills-web-app/kits/web_app/mindset.md +345 -0
  92. package/payload/desktop-preparation/qwenwork-template/skills/design-bundle-creator/SKILL.md +19 -0
  93. package/payload/desktop-preparation/qwenwork-template/skills/design-kit-creator/SKILL.md +19 -0
  94. package/payload/desktop-preparation/qwenwork-template/skills/design-skill-creator/SKILL.md +19 -0
  95. package/payload/desktop-preparation/src/browser-access.mjs +6 -9
  96. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/index.md +143 -0
  97. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/material.json +1 -0
  98. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/.agents/skills/design-bundle-creator/SKILL.md +53 -0
  99. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/.agents/skills/design-bundle-creator/agents/openai.yaml +4 -0
  100. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/.agents/skills/design-bundle-creator/assets/skill.template.yaml +40 -0
  101. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/.agents/skills/design-bundle-creator/references/bundle-checklist.md +55 -0
  102. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/.agents/skills/design-bundle-creator/references/canvas-authoring.md +74 -0
  103. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/.agents/skills/design-bundle-creator/references/cooperation-authoring.md +52 -0
  104. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/.agents/skills/design-bundle-creator/references/panel-authoring.md +367 -0
  105. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/.agents/skills/design-bundle-creator/references/validation-authoring.md +154 -0
  106. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/.agents/skills/design-bundle-creator/scripts/inspect-panel-component.mjs +267 -0
  107. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/.agents/skills/design-bundle-creator/scripts/list-panel-components.mjs +25 -0
  108. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/.agents/skills/design-kit-creator/SKILL.md +28 -0
  109. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/.agents/skills/design-kit-creator/agents/openai.yaml +4 -0
  110. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/.agents/skills/design-kit-creator/references/kit-checklist.md +40 -0
  111. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/.agents/skills/design-kit-creator/references/mindset-authoring.md +55 -0
  112. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/.agents/skills/design-skill-creator/SKILL.md +38 -0
  113. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/.agents/skills/design-skill-creator/agents/openai.yaml +4 -0
  114. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/.agents/skills/design-skill-creator/assets/method-template.md +38 -0
  115. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/.agents/skills/design-skill-creator/references/standards.md +94 -0
  116. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/.agents/skills/design-skill-creator/scripts/render-state-contract.mjs +33 -0
  117. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/docs/a2ui-component-catalog-contract.md +69 -0
  118. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/docs/bundle-contract.md +632 -0
  119. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/docs/dsl-spec.md +1411 -0
  120. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/docs/panel-uiux-standard.md +891 -0
  121. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/docs/system-design-baseline.md +898 -0
  122. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/docs/wiki/extending.md +343 -0
  123. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/docs/wiki/terminology.md +57 -0
  124. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/examples/community-workshop-delivery/mindset.md +23 -0
  125. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/packages/skills-web-app/bundles/business_data/SKILL.md +92 -0
  126. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/packages/skills-web-app/bundles/business_data/panel.yaml +145 -0
  127. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/packages/skills-web-app/bundles/business_data/reference/artifact-contract.md +151 -0
  128. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/packages/skills-web-app/bundles/business_data/reference/canvas-guide.md +40 -0
  129. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/packages/skills-web-app/bundles/business_data/reference/example.json +24 -0
  130. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/packages/skills-web-app/bundles/business_data/reference/preview.json +24 -0
  131. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/packages/skills-web-app/bundles/business_data/schema.yaml +67 -0
  132. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/packages/skills-web-app/bundles/business_data/validation.yaml +92 -0
  133. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/packages/skills-web-app/bundles/design_style/SKILL.md +217 -0
  134. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/packages/skills-web-app/bundles/design_style/THIRD_PARTY_NOTICES.md +58 -0
  135. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/packages/skills-web-app/bundles/design_style/reference/artifact-contract.md +195 -0
  136. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/packages/skills-web-app/bundles/design_style/schema.yaml +177 -0
  137. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/packages/skills-web-app/bundles/design_style/validation.yaml +48 -0
  138. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/packages/skills-web-app/bundles/flow_design/SKILL.md +428 -0
  139. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/packages/skills-web-app/bundles/flow_design/reference/artifact-contract.md +44 -0
  140. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/packages/skills-web-app/bundles/flow_design/reference/bpmn_authoring.md +200 -0
  141. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/packages/skills-web-app/bundles/flow_design/reference/canvas-guide.md +39 -0
  142. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/packages/skills-web-app/bundles/flow_design/schema.yaml +61 -0
  143. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/packages/skills-web-app/bundles/flow_design/validation.yaml +64 -0
  144. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/packages/skills-web-app/bundles/function_modules/SKILL.md +142 -0
  145. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/packages/skills-web-app/bundles/function_modules/reference/artifact-contract.md +204 -0
  146. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/packages/skills-web-app/bundles/function_modules/reference/canvas-guide.md +52 -0
  147. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/packages/skills-web-app/bundles/function_modules/reference/preview.json +32 -0
  148. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/packages/skills-web-app/bundles/function_modules/schema.yaml +93 -0
  149. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/packages/skills-web-app/bundles/function_modules/validation.yaml +21 -0
  150. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/packages/skills-web-app/bundles/page_design/SKILL.md +545 -0
  151. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/packages/skills-web-app/bundles/page_design/reference/artifact-contract.md +164 -0
  152. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/packages/skills-web-app/bundles/page_design/reference/canvas-guide.md +45 -0
  153. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/packages/skills-web-app/bundles/page_design/reference/task-to-page-method.md +82 -0
  154. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/packages/skills-web-app/bundles/page_design/schema.yaml +118 -0
  155. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/packages/skills-web-app/bundles/page_design/validation.yaml +104 -0
  156. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/packages/skills-web-app/bundles/research/SKILL.md +513 -0
  157. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/packages/skills-web-app/bundles/research/reference/artifact-contract.md +77 -0
  158. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/packages/skills-web-app/bundles/research/schema.yaml +61 -0
  159. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/packages/skills-web-app/bundles/research/validation.yaml +74 -0
  160. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/packages/skills-web-app/bundles/role_access/SKILL.md +196 -0
  161. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/packages/skills-web-app/bundles/role_access/reference/artifact-contract.md +186 -0
  162. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/packages/skills-web-app/bundles/role_access/reference/canvas-guide.md +38 -0
  163. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/packages/skills-web-app/bundles/role_access/reference/example.json +90 -0
  164. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/packages/skills-web-app/bundles/role_access/schema.yaml +59 -0
  165. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/packages/skills-web-app/bundles/role_access/validation.yaml +147 -0
  166. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/packages/skills-web-app/bundles/smart_questions/SKILL.md +202 -0
  167. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/packages/skills-web-app/bundles/smart_questions/reference/artifact-contract.md +245 -0
  168. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/packages/skills-web-app/bundles/smart_questions/schema.yaml +93 -0
  169. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/packages/skills-web-app/bundles/smart_questions/validation.yaml +17 -0
  170. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/packages/skills-web-app/bundles/web_app_prd_assembly/SKILL.md +306 -0
  171. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/packages/skills-web-app/bundles/web_app_prd_assembly/reference/artifact-contract.md +140 -0
  172. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/packages/skills-web-app/bundles/web_app_prd_assembly/schema.yaml +38 -0
  173. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/packages/skills-web-app/bundles/web_app_prd_assembly/validation.yaml +24 -0
  174. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/packages/skills-web-app/bundles/whiteboard/SKILL.md +54 -0
  175. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/packages/skills-web-app/bundles/whiteboard/reference/artifact-contract.md +56 -0
  176. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/packages/skills-web-app/bundles/whiteboard/reference/canvas-guide.md +39 -0
  177. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/packages/skills-web-app/bundles/whiteboard/reference/drawing-method.md +78 -0
  178. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/packages/skills-web-app/bundles/whiteboard/reference/geometry.md +79 -0
  179. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/packages/skills-web-app/bundles/whiteboard/schema.yaml +18 -0
  180. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/packages/skills-web-app/bundles/whiteboard/validation.yaml +18 -0
  181. package/payload/desktop-preparation/studio-authoring-template/authoring/studio-creators/source/packages/skills-web-app/kits/web_app/mindset.md +345 -0
  182. package/payload/desktop-preparation/studio-authoring-template/skills/design-bundle-creator/SKILL.md +19 -0
  183. package/payload/desktop-preparation/studio-authoring-template/skills/design-kit-creator/SKILL.md +19 -0
  184. package/payload/desktop-preparation/studio-authoring-template/skills/design-skill-creator/SKILL.md +19 -0
  185. package/payload/overlays/claude-code/.claude-plugin/plugin.json +1 -1
  186. package/payload/overlays/claude-code/authoring/studio-creators/index.md +143 -0
  187. package/payload/overlays/claude-code/authoring/studio-creators/material.json +1 -0
  188. package/payload/overlays/claude-code/authoring/studio-creators/source/.agents/skills/design-bundle-creator/SKILL.md +53 -0
  189. package/payload/overlays/claude-code/authoring/studio-creators/source/.agents/skills/design-bundle-creator/agents/openai.yaml +4 -0
  190. package/payload/overlays/claude-code/authoring/studio-creators/source/.agents/skills/design-bundle-creator/assets/skill.template.yaml +40 -0
  191. package/payload/overlays/claude-code/authoring/studio-creators/source/.agents/skills/design-bundle-creator/references/bundle-checklist.md +55 -0
  192. package/payload/overlays/claude-code/authoring/studio-creators/source/.agents/skills/design-bundle-creator/references/canvas-authoring.md +74 -0
  193. package/payload/overlays/claude-code/authoring/studio-creators/source/.agents/skills/design-bundle-creator/references/cooperation-authoring.md +52 -0
  194. package/payload/overlays/claude-code/authoring/studio-creators/source/.agents/skills/design-bundle-creator/references/panel-authoring.md +367 -0
  195. package/payload/overlays/claude-code/authoring/studio-creators/source/.agents/skills/design-bundle-creator/references/validation-authoring.md +154 -0
  196. package/payload/overlays/claude-code/authoring/studio-creators/source/.agents/skills/design-bundle-creator/scripts/inspect-panel-component.mjs +267 -0
  197. package/payload/overlays/claude-code/authoring/studio-creators/source/.agents/skills/design-bundle-creator/scripts/list-panel-components.mjs +25 -0
  198. package/payload/overlays/claude-code/authoring/studio-creators/source/.agents/skills/design-kit-creator/SKILL.md +28 -0
  199. package/payload/overlays/claude-code/authoring/studio-creators/source/.agents/skills/design-kit-creator/agents/openai.yaml +4 -0
  200. package/payload/overlays/claude-code/authoring/studio-creators/source/.agents/skills/design-kit-creator/references/kit-checklist.md +40 -0
  201. package/payload/overlays/claude-code/authoring/studio-creators/source/.agents/skills/design-kit-creator/references/mindset-authoring.md +55 -0
  202. package/payload/overlays/claude-code/authoring/studio-creators/source/.agents/skills/design-skill-creator/SKILL.md +38 -0
  203. package/payload/overlays/claude-code/authoring/studio-creators/source/.agents/skills/design-skill-creator/agents/openai.yaml +4 -0
  204. package/payload/overlays/claude-code/authoring/studio-creators/source/.agents/skills/design-skill-creator/assets/method-template.md +38 -0
  205. package/payload/overlays/claude-code/authoring/studio-creators/source/.agents/skills/design-skill-creator/references/standards.md +94 -0
  206. package/payload/overlays/claude-code/authoring/studio-creators/source/.agents/skills/design-skill-creator/scripts/render-state-contract.mjs +33 -0
  207. package/payload/overlays/claude-code/authoring/studio-creators/source/docs/a2ui-component-catalog-contract.md +69 -0
  208. package/payload/overlays/claude-code/authoring/studio-creators/source/docs/bundle-contract.md +632 -0
  209. package/payload/overlays/claude-code/authoring/studio-creators/source/docs/dsl-spec.md +1411 -0
  210. package/payload/overlays/claude-code/authoring/studio-creators/source/docs/panel-uiux-standard.md +891 -0
  211. package/payload/overlays/claude-code/authoring/studio-creators/source/docs/system-design-baseline.md +898 -0
  212. package/payload/overlays/claude-code/authoring/studio-creators/source/docs/wiki/extending.md +343 -0
  213. package/payload/overlays/claude-code/authoring/studio-creators/source/docs/wiki/terminology.md +57 -0
  214. package/payload/overlays/claude-code/authoring/studio-creators/source/examples/community-workshop-delivery/mindset.md +23 -0
  215. package/payload/overlays/claude-code/authoring/studio-creators/source/packages/skills-web-app/bundles/business_data/SKILL.md +92 -0
  216. package/payload/overlays/claude-code/authoring/studio-creators/source/packages/skills-web-app/bundles/business_data/panel.yaml +145 -0
  217. package/payload/overlays/claude-code/authoring/studio-creators/source/packages/skills-web-app/bundles/business_data/reference/artifact-contract.md +151 -0
  218. package/payload/overlays/claude-code/authoring/studio-creators/source/packages/skills-web-app/bundles/business_data/reference/canvas-guide.md +40 -0
  219. package/payload/overlays/claude-code/authoring/studio-creators/source/packages/skills-web-app/bundles/business_data/reference/example.json +24 -0
  220. package/payload/overlays/claude-code/authoring/studio-creators/source/packages/skills-web-app/bundles/business_data/reference/preview.json +24 -0
  221. package/payload/overlays/claude-code/authoring/studio-creators/source/packages/skills-web-app/bundles/business_data/schema.yaml +67 -0
  222. package/payload/overlays/claude-code/authoring/studio-creators/source/packages/skills-web-app/bundles/business_data/validation.yaml +92 -0
  223. package/payload/overlays/claude-code/authoring/studio-creators/source/packages/skills-web-app/bundles/design_style/SKILL.md +217 -0
  224. package/payload/overlays/claude-code/authoring/studio-creators/source/packages/skills-web-app/bundles/design_style/THIRD_PARTY_NOTICES.md +58 -0
  225. package/payload/overlays/claude-code/authoring/studio-creators/source/packages/skills-web-app/bundles/design_style/reference/artifact-contract.md +195 -0
  226. package/payload/overlays/claude-code/authoring/studio-creators/source/packages/skills-web-app/bundles/design_style/schema.yaml +177 -0
  227. package/payload/overlays/claude-code/authoring/studio-creators/source/packages/skills-web-app/bundles/design_style/validation.yaml +48 -0
  228. package/payload/overlays/claude-code/authoring/studio-creators/source/packages/skills-web-app/bundles/flow_design/SKILL.md +428 -0
  229. package/payload/overlays/claude-code/authoring/studio-creators/source/packages/skills-web-app/bundles/flow_design/reference/artifact-contract.md +44 -0
  230. package/payload/overlays/claude-code/authoring/studio-creators/source/packages/skills-web-app/bundles/flow_design/reference/bpmn_authoring.md +200 -0
  231. package/payload/overlays/claude-code/authoring/studio-creators/source/packages/skills-web-app/bundles/flow_design/reference/canvas-guide.md +39 -0
  232. package/payload/overlays/claude-code/authoring/studio-creators/source/packages/skills-web-app/bundles/flow_design/schema.yaml +61 -0
  233. package/payload/overlays/claude-code/authoring/studio-creators/source/packages/skills-web-app/bundles/flow_design/validation.yaml +64 -0
  234. package/payload/overlays/claude-code/authoring/studio-creators/source/packages/skills-web-app/bundles/function_modules/SKILL.md +142 -0
  235. package/payload/overlays/claude-code/authoring/studio-creators/source/packages/skills-web-app/bundles/function_modules/reference/artifact-contract.md +204 -0
  236. package/payload/overlays/claude-code/authoring/studio-creators/source/packages/skills-web-app/bundles/function_modules/reference/canvas-guide.md +52 -0
  237. package/payload/overlays/claude-code/authoring/studio-creators/source/packages/skills-web-app/bundles/function_modules/reference/preview.json +32 -0
  238. package/payload/overlays/claude-code/authoring/studio-creators/source/packages/skills-web-app/bundles/function_modules/schema.yaml +93 -0
  239. package/payload/overlays/claude-code/authoring/studio-creators/source/packages/skills-web-app/bundles/function_modules/validation.yaml +21 -0
  240. package/payload/overlays/claude-code/authoring/studio-creators/source/packages/skills-web-app/bundles/page_design/SKILL.md +545 -0
  241. package/payload/overlays/claude-code/authoring/studio-creators/source/packages/skills-web-app/bundles/page_design/reference/artifact-contract.md +164 -0
  242. package/payload/overlays/claude-code/authoring/studio-creators/source/packages/skills-web-app/bundles/page_design/reference/canvas-guide.md +45 -0
  243. package/payload/overlays/claude-code/authoring/studio-creators/source/packages/skills-web-app/bundles/page_design/reference/task-to-page-method.md +82 -0
  244. package/payload/overlays/claude-code/authoring/studio-creators/source/packages/skills-web-app/bundles/page_design/schema.yaml +118 -0
  245. package/payload/overlays/claude-code/authoring/studio-creators/source/packages/skills-web-app/bundles/page_design/validation.yaml +104 -0
  246. package/payload/overlays/claude-code/authoring/studio-creators/source/packages/skills-web-app/bundles/research/SKILL.md +513 -0
  247. package/payload/overlays/claude-code/authoring/studio-creators/source/packages/skills-web-app/bundles/research/reference/artifact-contract.md +77 -0
  248. package/payload/overlays/claude-code/authoring/studio-creators/source/packages/skills-web-app/bundles/research/schema.yaml +61 -0
  249. package/payload/overlays/claude-code/authoring/studio-creators/source/packages/skills-web-app/bundles/research/validation.yaml +74 -0
  250. package/payload/overlays/claude-code/authoring/studio-creators/source/packages/skills-web-app/bundles/role_access/SKILL.md +196 -0
  251. package/payload/overlays/claude-code/authoring/studio-creators/source/packages/skills-web-app/bundles/role_access/reference/artifact-contract.md +186 -0
  252. package/payload/overlays/claude-code/authoring/studio-creators/source/packages/skills-web-app/bundles/role_access/reference/canvas-guide.md +38 -0
  253. package/payload/overlays/claude-code/authoring/studio-creators/source/packages/skills-web-app/bundles/role_access/reference/example.json +90 -0
  254. package/payload/overlays/claude-code/authoring/studio-creators/source/packages/skills-web-app/bundles/role_access/schema.yaml +59 -0
  255. package/payload/overlays/claude-code/authoring/studio-creators/source/packages/skills-web-app/bundles/role_access/validation.yaml +147 -0
  256. package/payload/overlays/claude-code/authoring/studio-creators/source/packages/skills-web-app/bundles/smart_questions/SKILL.md +202 -0
  257. package/payload/overlays/claude-code/authoring/studio-creators/source/packages/skills-web-app/bundles/smart_questions/reference/artifact-contract.md +245 -0
  258. package/payload/overlays/claude-code/authoring/studio-creators/source/packages/skills-web-app/bundles/smart_questions/schema.yaml +93 -0
  259. package/payload/overlays/claude-code/authoring/studio-creators/source/packages/skills-web-app/bundles/smart_questions/validation.yaml +17 -0
  260. package/payload/overlays/claude-code/authoring/studio-creators/source/packages/skills-web-app/bundles/web_app_prd_assembly/SKILL.md +306 -0
  261. package/payload/overlays/claude-code/authoring/studio-creators/source/packages/skills-web-app/bundles/web_app_prd_assembly/reference/artifact-contract.md +140 -0
  262. package/payload/overlays/claude-code/authoring/studio-creators/source/packages/skills-web-app/bundles/web_app_prd_assembly/schema.yaml +38 -0
  263. package/payload/overlays/claude-code/authoring/studio-creators/source/packages/skills-web-app/bundles/web_app_prd_assembly/validation.yaml +24 -0
  264. package/payload/overlays/claude-code/authoring/studio-creators/source/packages/skills-web-app/bundles/whiteboard/SKILL.md +54 -0
  265. package/payload/overlays/claude-code/authoring/studio-creators/source/packages/skills-web-app/bundles/whiteboard/reference/artifact-contract.md +56 -0
  266. package/payload/overlays/claude-code/authoring/studio-creators/source/packages/skills-web-app/bundles/whiteboard/reference/canvas-guide.md +39 -0
  267. package/payload/overlays/claude-code/authoring/studio-creators/source/packages/skills-web-app/bundles/whiteboard/reference/drawing-method.md +78 -0
  268. package/payload/overlays/claude-code/authoring/studio-creators/source/packages/skills-web-app/bundles/whiteboard/reference/geometry.md +79 -0
  269. package/payload/overlays/claude-code/authoring/studio-creators/source/packages/skills-web-app/bundles/whiteboard/schema.yaml +18 -0
  270. package/payload/overlays/claude-code/authoring/studio-creators/source/packages/skills-web-app/bundles/whiteboard/validation.yaml +18 -0
  271. package/payload/overlays/claude-code/authoring/studio-creators/source/packages/skills-web-app/kits/web_app/mindset.md +345 -0
  272. package/payload/overlays/claude-code/skills/design-bundle-creator/SKILL.md +19 -0
  273. package/payload/overlays/claude-code/skills/design-kit-creator/SKILL.md +19 -0
  274. package/payload/overlays/claude-code/skills/design-skill-creator/SKILL.md +19 -0
  275. package/payload/overlays/codex/.codex-plugin/plugin.json +1 -1
  276. package/payload/overlays/codex/authoring/studio-creators/index.md +143 -0
  277. package/payload/overlays/codex/authoring/studio-creators/material.json +1 -0
  278. package/payload/overlays/codex/authoring/studio-creators/source/.agents/skills/design-bundle-creator/SKILL.md +53 -0
  279. package/payload/overlays/codex/authoring/studio-creators/source/.agents/skills/design-bundle-creator/agents/openai.yaml +4 -0
  280. package/payload/overlays/codex/authoring/studio-creators/source/.agents/skills/design-bundle-creator/assets/skill.template.yaml +40 -0
  281. package/payload/overlays/codex/authoring/studio-creators/source/.agents/skills/design-bundle-creator/references/bundle-checklist.md +55 -0
  282. package/payload/overlays/codex/authoring/studio-creators/source/.agents/skills/design-bundle-creator/references/canvas-authoring.md +74 -0
  283. package/payload/overlays/codex/authoring/studio-creators/source/.agents/skills/design-bundle-creator/references/cooperation-authoring.md +52 -0
  284. package/payload/overlays/codex/authoring/studio-creators/source/.agents/skills/design-bundle-creator/references/panel-authoring.md +367 -0
  285. package/payload/overlays/codex/authoring/studio-creators/source/.agents/skills/design-bundle-creator/references/validation-authoring.md +154 -0
  286. package/payload/overlays/codex/authoring/studio-creators/source/.agents/skills/design-bundle-creator/scripts/inspect-panel-component.mjs +267 -0
  287. package/payload/overlays/codex/authoring/studio-creators/source/.agents/skills/design-bundle-creator/scripts/list-panel-components.mjs +25 -0
  288. package/payload/overlays/codex/authoring/studio-creators/source/.agents/skills/design-kit-creator/SKILL.md +28 -0
  289. package/payload/overlays/codex/authoring/studio-creators/source/.agents/skills/design-kit-creator/agents/openai.yaml +4 -0
  290. package/payload/overlays/codex/authoring/studio-creators/source/.agents/skills/design-kit-creator/references/kit-checklist.md +40 -0
  291. package/payload/overlays/codex/authoring/studio-creators/source/.agents/skills/design-kit-creator/references/mindset-authoring.md +55 -0
  292. package/payload/overlays/codex/authoring/studio-creators/source/.agents/skills/design-skill-creator/SKILL.md +38 -0
  293. package/payload/overlays/codex/authoring/studio-creators/source/.agents/skills/design-skill-creator/agents/openai.yaml +4 -0
  294. package/payload/overlays/codex/authoring/studio-creators/source/.agents/skills/design-skill-creator/assets/method-template.md +38 -0
  295. package/payload/overlays/codex/authoring/studio-creators/source/.agents/skills/design-skill-creator/references/standards.md +94 -0
  296. package/payload/overlays/codex/authoring/studio-creators/source/.agents/skills/design-skill-creator/scripts/render-state-contract.mjs +33 -0
  297. package/payload/overlays/codex/authoring/studio-creators/source/docs/a2ui-component-catalog-contract.md +69 -0
  298. package/payload/overlays/codex/authoring/studio-creators/source/docs/bundle-contract.md +632 -0
  299. package/payload/overlays/codex/authoring/studio-creators/source/docs/dsl-spec.md +1411 -0
  300. package/payload/overlays/codex/authoring/studio-creators/source/docs/panel-uiux-standard.md +891 -0
  301. package/payload/overlays/codex/authoring/studio-creators/source/docs/system-design-baseline.md +898 -0
  302. package/payload/overlays/codex/authoring/studio-creators/source/docs/wiki/extending.md +343 -0
  303. package/payload/overlays/codex/authoring/studio-creators/source/docs/wiki/terminology.md +57 -0
  304. package/payload/overlays/codex/authoring/studio-creators/source/examples/community-workshop-delivery/mindset.md +23 -0
  305. package/payload/overlays/codex/authoring/studio-creators/source/packages/skills-web-app/bundles/business_data/SKILL.md +92 -0
  306. package/payload/overlays/codex/authoring/studio-creators/source/packages/skills-web-app/bundles/business_data/panel.yaml +145 -0
  307. package/payload/overlays/codex/authoring/studio-creators/source/packages/skills-web-app/bundles/business_data/reference/artifact-contract.md +151 -0
  308. package/payload/overlays/codex/authoring/studio-creators/source/packages/skills-web-app/bundles/business_data/reference/canvas-guide.md +40 -0
  309. package/payload/overlays/codex/authoring/studio-creators/source/packages/skills-web-app/bundles/business_data/reference/example.json +24 -0
  310. package/payload/overlays/codex/authoring/studio-creators/source/packages/skills-web-app/bundles/business_data/reference/preview.json +24 -0
  311. package/payload/overlays/codex/authoring/studio-creators/source/packages/skills-web-app/bundles/business_data/schema.yaml +67 -0
  312. package/payload/overlays/codex/authoring/studio-creators/source/packages/skills-web-app/bundles/business_data/validation.yaml +92 -0
  313. package/payload/overlays/codex/authoring/studio-creators/source/packages/skills-web-app/bundles/design_style/SKILL.md +217 -0
  314. package/payload/overlays/codex/authoring/studio-creators/source/packages/skills-web-app/bundles/design_style/THIRD_PARTY_NOTICES.md +58 -0
  315. package/payload/overlays/codex/authoring/studio-creators/source/packages/skills-web-app/bundles/design_style/reference/artifact-contract.md +195 -0
  316. package/payload/overlays/codex/authoring/studio-creators/source/packages/skills-web-app/bundles/design_style/schema.yaml +177 -0
  317. package/payload/overlays/codex/authoring/studio-creators/source/packages/skills-web-app/bundles/design_style/validation.yaml +48 -0
  318. package/payload/overlays/codex/authoring/studio-creators/source/packages/skills-web-app/bundles/flow_design/SKILL.md +428 -0
  319. package/payload/overlays/codex/authoring/studio-creators/source/packages/skills-web-app/bundles/flow_design/reference/artifact-contract.md +44 -0
  320. package/payload/overlays/codex/authoring/studio-creators/source/packages/skills-web-app/bundles/flow_design/reference/bpmn_authoring.md +200 -0
  321. package/payload/overlays/codex/authoring/studio-creators/source/packages/skills-web-app/bundles/flow_design/reference/canvas-guide.md +39 -0
  322. package/payload/overlays/codex/authoring/studio-creators/source/packages/skills-web-app/bundles/flow_design/schema.yaml +61 -0
  323. package/payload/overlays/codex/authoring/studio-creators/source/packages/skills-web-app/bundles/flow_design/validation.yaml +64 -0
  324. package/payload/overlays/codex/authoring/studio-creators/source/packages/skills-web-app/bundles/function_modules/SKILL.md +142 -0
  325. package/payload/overlays/codex/authoring/studio-creators/source/packages/skills-web-app/bundles/function_modules/reference/artifact-contract.md +204 -0
  326. package/payload/overlays/codex/authoring/studio-creators/source/packages/skills-web-app/bundles/function_modules/reference/canvas-guide.md +52 -0
  327. package/payload/overlays/codex/authoring/studio-creators/source/packages/skills-web-app/bundles/function_modules/reference/preview.json +32 -0
  328. package/payload/overlays/codex/authoring/studio-creators/source/packages/skills-web-app/bundles/function_modules/schema.yaml +93 -0
  329. package/payload/overlays/codex/authoring/studio-creators/source/packages/skills-web-app/bundles/function_modules/validation.yaml +21 -0
  330. package/payload/overlays/codex/authoring/studio-creators/source/packages/skills-web-app/bundles/page_design/SKILL.md +545 -0
  331. package/payload/overlays/codex/authoring/studio-creators/source/packages/skills-web-app/bundles/page_design/reference/artifact-contract.md +164 -0
  332. package/payload/overlays/codex/authoring/studio-creators/source/packages/skills-web-app/bundles/page_design/reference/canvas-guide.md +45 -0
  333. package/payload/overlays/codex/authoring/studio-creators/source/packages/skills-web-app/bundles/page_design/reference/task-to-page-method.md +82 -0
  334. package/payload/overlays/codex/authoring/studio-creators/source/packages/skills-web-app/bundles/page_design/schema.yaml +118 -0
  335. package/payload/overlays/codex/authoring/studio-creators/source/packages/skills-web-app/bundles/page_design/validation.yaml +104 -0
  336. package/payload/overlays/codex/authoring/studio-creators/source/packages/skills-web-app/bundles/research/SKILL.md +513 -0
  337. package/payload/overlays/codex/authoring/studio-creators/source/packages/skills-web-app/bundles/research/reference/artifact-contract.md +77 -0
  338. package/payload/overlays/codex/authoring/studio-creators/source/packages/skills-web-app/bundles/research/schema.yaml +61 -0
  339. package/payload/overlays/codex/authoring/studio-creators/source/packages/skills-web-app/bundles/research/validation.yaml +74 -0
  340. package/payload/overlays/codex/authoring/studio-creators/source/packages/skills-web-app/bundles/role_access/SKILL.md +196 -0
  341. package/payload/overlays/codex/authoring/studio-creators/source/packages/skills-web-app/bundles/role_access/reference/artifact-contract.md +186 -0
  342. package/payload/overlays/codex/authoring/studio-creators/source/packages/skills-web-app/bundles/role_access/reference/canvas-guide.md +38 -0
  343. package/payload/overlays/codex/authoring/studio-creators/source/packages/skills-web-app/bundles/role_access/reference/example.json +90 -0
  344. package/payload/overlays/codex/authoring/studio-creators/source/packages/skills-web-app/bundles/role_access/schema.yaml +59 -0
  345. package/payload/overlays/codex/authoring/studio-creators/source/packages/skills-web-app/bundles/role_access/validation.yaml +147 -0
  346. package/payload/overlays/codex/authoring/studio-creators/source/packages/skills-web-app/bundles/smart_questions/SKILL.md +202 -0
  347. package/payload/overlays/codex/authoring/studio-creators/source/packages/skills-web-app/bundles/smart_questions/reference/artifact-contract.md +245 -0
  348. package/payload/overlays/codex/authoring/studio-creators/source/packages/skills-web-app/bundles/smart_questions/schema.yaml +93 -0
  349. package/payload/overlays/codex/authoring/studio-creators/source/packages/skills-web-app/bundles/smart_questions/validation.yaml +17 -0
  350. package/payload/overlays/codex/authoring/studio-creators/source/packages/skills-web-app/bundles/web_app_prd_assembly/SKILL.md +306 -0
  351. package/payload/overlays/codex/authoring/studio-creators/source/packages/skills-web-app/bundles/web_app_prd_assembly/reference/artifact-contract.md +140 -0
  352. package/payload/overlays/codex/authoring/studio-creators/source/packages/skills-web-app/bundles/web_app_prd_assembly/schema.yaml +38 -0
  353. package/payload/overlays/codex/authoring/studio-creators/source/packages/skills-web-app/bundles/web_app_prd_assembly/validation.yaml +24 -0
  354. package/payload/overlays/codex/authoring/studio-creators/source/packages/skills-web-app/bundles/whiteboard/SKILL.md +54 -0
  355. package/payload/overlays/codex/authoring/studio-creators/source/packages/skills-web-app/bundles/whiteboard/reference/artifact-contract.md +56 -0
  356. package/payload/overlays/codex/authoring/studio-creators/source/packages/skills-web-app/bundles/whiteboard/reference/canvas-guide.md +39 -0
  357. package/payload/overlays/codex/authoring/studio-creators/source/packages/skills-web-app/bundles/whiteboard/reference/drawing-method.md +78 -0
  358. package/payload/overlays/codex/authoring/studio-creators/source/packages/skills-web-app/bundles/whiteboard/reference/geometry.md +79 -0
  359. package/payload/overlays/codex/authoring/studio-creators/source/packages/skills-web-app/bundles/whiteboard/schema.yaml +18 -0
  360. package/payload/overlays/codex/authoring/studio-creators/source/packages/skills-web-app/bundles/whiteboard/validation.yaml +18 -0
  361. package/payload/overlays/codex/authoring/studio-creators/source/packages/skills-web-app/kits/web_app/mindset.md +345 -0
  362. package/payload/overlays/codex/skills/design-bundle-creator/SKILL.md +19 -0
  363. package/payload/overlays/codex/skills/design-kit-creator/SKILL.md +19 -0
  364. package/payload/overlays/codex/skills/design-panel/SKILL.md +5 -0
  365. package/payload/overlays/codex/skills/design-skill-creator/SKILL.md +19 -0
  366. package/payload/overlays/codex/skills/yugoo/SKILL.md +34 -1
  367. package/payload/overlays/qoder/.qoder-plugin/plugin.json +1 -1
  368. package/payload/overlays/qoder/authoring/studio-creators/index.md +143 -0
  369. package/payload/overlays/qoder/authoring/studio-creators/material.json +1 -0
  370. package/payload/overlays/qoder/authoring/studio-creators/source/.agents/skills/design-bundle-creator/SKILL.md +53 -0
  371. package/payload/overlays/qoder/authoring/studio-creators/source/.agents/skills/design-bundle-creator/agents/openai.yaml +4 -0
  372. package/payload/overlays/qoder/authoring/studio-creators/source/.agents/skills/design-bundle-creator/assets/skill.template.yaml +40 -0
  373. package/payload/overlays/qoder/authoring/studio-creators/source/.agents/skills/design-bundle-creator/references/bundle-checklist.md +55 -0
  374. package/payload/overlays/qoder/authoring/studio-creators/source/.agents/skills/design-bundle-creator/references/canvas-authoring.md +74 -0
  375. package/payload/overlays/qoder/authoring/studio-creators/source/.agents/skills/design-bundle-creator/references/cooperation-authoring.md +52 -0
  376. package/payload/overlays/qoder/authoring/studio-creators/source/.agents/skills/design-bundle-creator/references/panel-authoring.md +367 -0
  377. package/payload/overlays/qoder/authoring/studio-creators/source/.agents/skills/design-bundle-creator/references/validation-authoring.md +154 -0
  378. package/payload/overlays/qoder/authoring/studio-creators/source/.agents/skills/design-bundle-creator/scripts/inspect-panel-component.mjs +267 -0
  379. package/payload/overlays/qoder/authoring/studio-creators/source/.agents/skills/design-bundle-creator/scripts/list-panel-components.mjs +25 -0
  380. package/payload/overlays/qoder/authoring/studio-creators/source/.agents/skills/design-kit-creator/SKILL.md +28 -0
  381. package/payload/overlays/qoder/authoring/studio-creators/source/.agents/skills/design-kit-creator/agents/openai.yaml +4 -0
  382. package/payload/overlays/qoder/authoring/studio-creators/source/.agents/skills/design-kit-creator/references/kit-checklist.md +40 -0
  383. package/payload/overlays/qoder/authoring/studio-creators/source/.agents/skills/design-kit-creator/references/mindset-authoring.md +55 -0
  384. package/payload/overlays/qoder/authoring/studio-creators/source/.agents/skills/design-skill-creator/SKILL.md +38 -0
  385. package/payload/overlays/qoder/authoring/studio-creators/source/.agents/skills/design-skill-creator/agents/openai.yaml +4 -0
  386. package/payload/overlays/qoder/authoring/studio-creators/source/.agents/skills/design-skill-creator/assets/method-template.md +38 -0
  387. package/payload/overlays/qoder/authoring/studio-creators/source/.agents/skills/design-skill-creator/references/standards.md +94 -0
  388. package/payload/overlays/qoder/authoring/studio-creators/source/.agents/skills/design-skill-creator/scripts/render-state-contract.mjs +33 -0
  389. package/payload/overlays/qoder/authoring/studio-creators/source/docs/a2ui-component-catalog-contract.md +69 -0
  390. package/payload/overlays/qoder/authoring/studio-creators/source/docs/bundle-contract.md +632 -0
  391. package/payload/overlays/qoder/authoring/studio-creators/source/docs/dsl-spec.md +1411 -0
  392. package/payload/overlays/qoder/authoring/studio-creators/source/docs/panel-uiux-standard.md +891 -0
  393. package/payload/overlays/qoder/authoring/studio-creators/source/docs/system-design-baseline.md +898 -0
  394. package/payload/overlays/qoder/authoring/studio-creators/source/docs/wiki/extending.md +343 -0
  395. package/payload/overlays/qoder/authoring/studio-creators/source/docs/wiki/terminology.md +57 -0
  396. package/payload/overlays/qoder/authoring/studio-creators/source/examples/community-workshop-delivery/mindset.md +23 -0
  397. package/payload/overlays/qoder/authoring/studio-creators/source/packages/skills-web-app/bundles/business_data/SKILL.md +92 -0
  398. package/payload/overlays/qoder/authoring/studio-creators/source/packages/skills-web-app/bundles/business_data/panel.yaml +145 -0
  399. package/payload/overlays/qoder/authoring/studio-creators/source/packages/skills-web-app/bundles/business_data/reference/artifact-contract.md +151 -0
  400. package/payload/overlays/qoder/authoring/studio-creators/source/packages/skills-web-app/bundles/business_data/reference/canvas-guide.md +40 -0
  401. package/payload/overlays/qoder/authoring/studio-creators/source/packages/skills-web-app/bundles/business_data/reference/example.json +24 -0
  402. package/payload/overlays/qoder/authoring/studio-creators/source/packages/skills-web-app/bundles/business_data/reference/preview.json +24 -0
  403. package/payload/overlays/qoder/authoring/studio-creators/source/packages/skills-web-app/bundles/business_data/schema.yaml +67 -0
  404. package/payload/overlays/qoder/authoring/studio-creators/source/packages/skills-web-app/bundles/business_data/validation.yaml +92 -0
  405. package/payload/overlays/qoder/authoring/studio-creators/source/packages/skills-web-app/bundles/design_style/SKILL.md +217 -0
  406. package/payload/overlays/qoder/authoring/studio-creators/source/packages/skills-web-app/bundles/design_style/THIRD_PARTY_NOTICES.md +58 -0
  407. package/payload/overlays/qoder/authoring/studio-creators/source/packages/skills-web-app/bundles/design_style/reference/artifact-contract.md +195 -0
  408. package/payload/overlays/qoder/authoring/studio-creators/source/packages/skills-web-app/bundles/design_style/schema.yaml +177 -0
  409. package/payload/overlays/qoder/authoring/studio-creators/source/packages/skills-web-app/bundles/design_style/validation.yaml +48 -0
  410. package/payload/overlays/qoder/authoring/studio-creators/source/packages/skills-web-app/bundles/flow_design/SKILL.md +428 -0
  411. package/payload/overlays/qoder/authoring/studio-creators/source/packages/skills-web-app/bundles/flow_design/reference/artifact-contract.md +44 -0
  412. package/payload/overlays/qoder/authoring/studio-creators/source/packages/skills-web-app/bundles/flow_design/reference/bpmn_authoring.md +200 -0
  413. package/payload/overlays/qoder/authoring/studio-creators/source/packages/skills-web-app/bundles/flow_design/reference/canvas-guide.md +39 -0
  414. package/payload/overlays/qoder/authoring/studio-creators/source/packages/skills-web-app/bundles/flow_design/schema.yaml +61 -0
  415. package/payload/overlays/qoder/authoring/studio-creators/source/packages/skills-web-app/bundles/flow_design/validation.yaml +64 -0
  416. package/payload/overlays/qoder/authoring/studio-creators/source/packages/skills-web-app/bundles/function_modules/SKILL.md +142 -0
  417. package/payload/overlays/qoder/authoring/studio-creators/source/packages/skills-web-app/bundles/function_modules/reference/artifact-contract.md +204 -0
  418. package/payload/overlays/qoder/authoring/studio-creators/source/packages/skills-web-app/bundles/function_modules/reference/canvas-guide.md +52 -0
  419. package/payload/overlays/qoder/authoring/studio-creators/source/packages/skills-web-app/bundles/function_modules/reference/preview.json +32 -0
  420. package/payload/overlays/qoder/authoring/studio-creators/source/packages/skills-web-app/bundles/function_modules/schema.yaml +93 -0
  421. package/payload/overlays/qoder/authoring/studio-creators/source/packages/skills-web-app/bundles/function_modules/validation.yaml +21 -0
  422. package/payload/overlays/qoder/authoring/studio-creators/source/packages/skills-web-app/bundles/page_design/SKILL.md +545 -0
  423. package/payload/overlays/qoder/authoring/studio-creators/source/packages/skills-web-app/bundles/page_design/reference/artifact-contract.md +164 -0
  424. package/payload/overlays/qoder/authoring/studio-creators/source/packages/skills-web-app/bundles/page_design/reference/canvas-guide.md +45 -0
  425. package/payload/overlays/qoder/authoring/studio-creators/source/packages/skills-web-app/bundles/page_design/reference/task-to-page-method.md +82 -0
  426. package/payload/overlays/qoder/authoring/studio-creators/source/packages/skills-web-app/bundles/page_design/schema.yaml +118 -0
  427. package/payload/overlays/qoder/authoring/studio-creators/source/packages/skills-web-app/bundles/page_design/validation.yaml +104 -0
  428. package/payload/overlays/qoder/authoring/studio-creators/source/packages/skills-web-app/bundles/research/SKILL.md +513 -0
  429. package/payload/overlays/qoder/authoring/studio-creators/source/packages/skills-web-app/bundles/research/reference/artifact-contract.md +77 -0
  430. package/payload/overlays/qoder/authoring/studio-creators/source/packages/skills-web-app/bundles/research/schema.yaml +61 -0
  431. package/payload/overlays/qoder/authoring/studio-creators/source/packages/skills-web-app/bundles/research/validation.yaml +74 -0
  432. package/payload/overlays/qoder/authoring/studio-creators/source/packages/skills-web-app/bundles/role_access/SKILL.md +196 -0
  433. package/payload/overlays/qoder/authoring/studio-creators/source/packages/skills-web-app/bundles/role_access/reference/artifact-contract.md +186 -0
  434. package/payload/overlays/qoder/authoring/studio-creators/source/packages/skills-web-app/bundles/role_access/reference/canvas-guide.md +38 -0
  435. package/payload/overlays/qoder/authoring/studio-creators/source/packages/skills-web-app/bundles/role_access/reference/example.json +90 -0
  436. package/payload/overlays/qoder/authoring/studio-creators/source/packages/skills-web-app/bundles/role_access/schema.yaml +59 -0
  437. package/payload/overlays/qoder/authoring/studio-creators/source/packages/skills-web-app/bundles/role_access/validation.yaml +147 -0
  438. package/payload/overlays/qoder/authoring/studio-creators/source/packages/skills-web-app/bundles/smart_questions/SKILL.md +202 -0
  439. package/payload/overlays/qoder/authoring/studio-creators/source/packages/skills-web-app/bundles/smart_questions/reference/artifact-contract.md +245 -0
  440. package/payload/overlays/qoder/authoring/studio-creators/source/packages/skills-web-app/bundles/smart_questions/schema.yaml +93 -0
  441. package/payload/overlays/qoder/authoring/studio-creators/source/packages/skills-web-app/bundles/smart_questions/validation.yaml +17 -0
  442. package/payload/overlays/qoder/authoring/studio-creators/source/packages/skills-web-app/bundles/web_app_prd_assembly/SKILL.md +306 -0
  443. package/payload/overlays/qoder/authoring/studio-creators/source/packages/skills-web-app/bundles/web_app_prd_assembly/reference/artifact-contract.md +140 -0
  444. package/payload/overlays/qoder/authoring/studio-creators/source/packages/skills-web-app/bundles/web_app_prd_assembly/schema.yaml +38 -0
  445. package/payload/overlays/qoder/authoring/studio-creators/source/packages/skills-web-app/bundles/web_app_prd_assembly/validation.yaml +24 -0
  446. package/payload/overlays/qoder/authoring/studio-creators/source/packages/skills-web-app/bundles/whiteboard/SKILL.md +54 -0
  447. package/payload/overlays/qoder/authoring/studio-creators/source/packages/skills-web-app/bundles/whiteboard/reference/artifact-contract.md +56 -0
  448. package/payload/overlays/qoder/authoring/studio-creators/source/packages/skills-web-app/bundles/whiteboard/reference/canvas-guide.md +39 -0
  449. package/payload/overlays/qoder/authoring/studio-creators/source/packages/skills-web-app/bundles/whiteboard/reference/drawing-method.md +78 -0
  450. package/payload/overlays/qoder/authoring/studio-creators/source/packages/skills-web-app/bundles/whiteboard/reference/geometry.md +79 -0
  451. package/payload/overlays/qoder/authoring/studio-creators/source/packages/skills-web-app/bundles/whiteboard/schema.yaml +18 -0
  452. package/payload/overlays/qoder/authoring/studio-creators/source/packages/skills-web-app/bundles/whiteboard/validation.yaml +18 -0
  453. package/payload/overlays/qoder/authoring/studio-creators/source/packages/skills-web-app/kits/web_app/mindset.md +345 -0
  454. package/payload/overlays/qoder/skills/design-bundle-creator/SKILL.md +19 -0
  455. package/payload/overlays/qoder/skills/design-kit-creator/SKILL.md +19 -0
  456. package/payload/overlays/qoder/skills/design-skill-creator/SKILL.md +19 -0
  457. package/payload/shared/authoring/panel-components.json +1345 -1041
  458. package/payload/shared/authoring/studio-creators/index.md +143 -0
  459. package/payload/shared/authoring/studio-creators/material.json +1 -0
  460. package/payload/shared/authoring/studio-creators/source/.agents/skills/design-bundle-creator/SKILL.md +53 -0
  461. package/payload/shared/authoring/studio-creators/source/.agents/skills/design-bundle-creator/agents/openai.yaml +4 -0
  462. package/payload/shared/authoring/studio-creators/source/.agents/skills/design-bundle-creator/assets/skill.template.yaml +40 -0
  463. package/payload/shared/authoring/studio-creators/source/.agents/skills/design-bundle-creator/references/bundle-checklist.md +55 -0
  464. package/payload/shared/authoring/studio-creators/source/.agents/skills/design-bundle-creator/references/canvas-authoring.md +74 -0
  465. package/payload/shared/authoring/studio-creators/source/.agents/skills/design-bundle-creator/references/cooperation-authoring.md +52 -0
  466. package/payload/shared/authoring/studio-creators/source/.agents/skills/design-bundle-creator/references/panel-authoring.md +367 -0
  467. package/payload/shared/authoring/studio-creators/source/.agents/skills/design-bundle-creator/references/validation-authoring.md +154 -0
  468. package/payload/shared/authoring/studio-creators/source/.agents/skills/design-bundle-creator/scripts/inspect-panel-component.mjs +267 -0
  469. package/payload/shared/authoring/studio-creators/source/.agents/skills/design-bundle-creator/scripts/list-panel-components.mjs +25 -0
  470. package/payload/shared/authoring/studio-creators/source/.agents/skills/design-kit-creator/SKILL.md +28 -0
  471. package/payload/shared/authoring/studio-creators/source/.agents/skills/design-kit-creator/agents/openai.yaml +4 -0
  472. package/payload/shared/authoring/studio-creators/source/.agents/skills/design-kit-creator/references/kit-checklist.md +40 -0
  473. package/payload/shared/authoring/studio-creators/source/.agents/skills/design-kit-creator/references/mindset-authoring.md +55 -0
  474. package/payload/shared/authoring/studio-creators/source/.agents/skills/design-skill-creator/SKILL.md +38 -0
  475. package/payload/shared/authoring/studio-creators/source/.agents/skills/design-skill-creator/agents/openai.yaml +4 -0
  476. package/payload/shared/authoring/studio-creators/source/.agents/skills/design-skill-creator/assets/method-template.md +38 -0
  477. package/payload/shared/authoring/studio-creators/source/.agents/skills/design-skill-creator/references/standards.md +94 -0
  478. package/payload/shared/authoring/studio-creators/source/.agents/skills/design-skill-creator/scripts/render-state-contract.mjs +33 -0
  479. package/payload/shared/authoring/studio-creators/source/docs/a2ui-component-catalog-contract.md +69 -0
  480. package/payload/shared/authoring/studio-creators/source/docs/bundle-contract.md +632 -0
  481. package/payload/shared/authoring/studio-creators/source/docs/dsl-spec.md +1411 -0
  482. package/payload/shared/authoring/studio-creators/source/docs/panel-uiux-standard.md +891 -0
  483. package/payload/shared/authoring/studio-creators/source/docs/system-design-baseline.md +898 -0
  484. package/payload/shared/authoring/studio-creators/source/docs/wiki/extending.md +343 -0
  485. package/payload/shared/authoring/studio-creators/source/docs/wiki/terminology.md +57 -0
  486. package/payload/shared/authoring/studio-creators/source/examples/community-workshop-delivery/mindset.md +23 -0
  487. package/payload/shared/authoring/studio-creators/source/packages/skills-web-app/bundles/business_data/SKILL.md +92 -0
  488. package/payload/shared/authoring/studio-creators/source/packages/skills-web-app/bundles/business_data/panel.yaml +145 -0
  489. package/payload/shared/authoring/studio-creators/source/packages/skills-web-app/bundles/business_data/reference/artifact-contract.md +151 -0
  490. package/payload/shared/authoring/studio-creators/source/packages/skills-web-app/bundles/business_data/reference/canvas-guide.md +40 -0
  491. package/payload/shared/authoring/studio-creators/source/packages/skills-web-app/bundles/business_data/reference/example.json +24 -0
  492. package/payload/shared/authoring/studio-creators/source/packages/skills-web-app/bundles/business_data/reference/preview.json +24 -0
  493. package/payload/shared/authoring/studio-creators/source/packages/skills-web-app/bundles/business_data/schema.yaml +67 -0
  494. package/payload/shared/authoring/studio-creators/source/packages/skills-web-app/bundles/business_data/validation.yaml +92 -0
  495. package/payload/shared/authoring/studio-creators/source/packages/skills-web-app/bundles/design_style/SKILL.md +217 -0
  496. package/payload/shared/authoring/studio-creators/source/packages/skills-web-app/bundles/design_style/THIRD_PARTY_NOTICES.md +58 -0
  497. package/payload/shared/authoring/studio-creators/source/packages/skills-web-app/bundles/design_style/reference/artifact-contract.md +195 -0
  498. package/payload/shared/authoring/studio-creators/source/packages/skills-web-app/bundles/design_style/schema.yaml +177 -0
  499. package/payload/shared/authoring/studio-creators/source/packages/skills-web-app/bundles/design_style/validation.yaml +48 -0
  500. package/payload/shared/authoring/studio-creators/source/packages/skills-web-app/bundles/flow_design/SKILL.md +428 -0
  501. package/payload/shared/authoring/studio-creators/source/packages/skills-web-app/bundles/flow_design/reference/artifact-contract.md +44 -0
  502. package/payload/shared/authoring/studio-creators/source/packages/skills-web-app/bundles/flow_design/reference/bpmn_authoring.md +200 -0
  503. package/payload/shared/authoring/studio-creators/source/packages/skills-web-app/bundles/flow_design/reference/canvas-guide.md +39 -0
  504. package/payload/shared/authoring/studio-creators/source/packages/skills-web-app/bundles/flow_design/schema.yaml +61 -0
  505. package/payload/shared/authoring/studio-creators/source/packages/skills-web-app/bundles/flow_design/validation.yaml +64 -0
  506. package/payload/shared/authoring/studio-creators/source/packages/skills-web-app/bundles/function_modules/SKILL.md +142 -0
  507. package/payload/shared/authoring/studio-creators/source/packages/skills-web-app/bundles/function_modules/reference/artifact-contract.md +204 -0
  508. package/payload/shared/authoring/studio-creators/source/packages/skills-web-app/bundles/function_modules/reference/canvas-guide.md +52 -0
  509. package/payload/shared/authoring/studio-creators/source/packages/skills-web-app/bundles/function_modules/reference/preview.json +32 -0
  510. package/payload/shared/authoring/studio-creators/source/packages/skills-web-app/bundles/function_modules/schema.yaml +93 -0
  511. package/payload/shared/authoring/studio-creators/source/packages/skills-web-app/bundles/function_modules/validation.yaml +21 -0
  512. package/payload/shared/authoring/studio-creators/source/packages/skills-web-app/bundles/page_design/SKILL.md +545 -0
  513. package/payload/shared/authoring/studio-creators/source/packages/skills-web-app/bundles/page_design/reference/artifact-contract.md +164 -0
  514. package/payload/shared/authoring/studio-creators/source/packages/skills-web-app/bundles/page_design/reference/canvas-guide.md +45 -0
  515. package/payload/shared/authoring/studio-creators/source/packages/skills-web-app/bundles/page_design/reference/task-to-page-method.md +82 -0
  516. package/payload/shared/authoring/studio-creators/source/packages/skills-web-app/bundles/page_design/schema.yaml +118 -0
  517. package/payload/shared/authoring/studio-creators/source/packages/skills-web-app/bundles/page_design/validation.yaml +104 -0
  518. package/payload/shared/authoring/studio-creators/source/packages/skills-web-app/bundles/research/SKILL.md +513 -0
  519. package/payload/shared/authoring/studio-creators/source/packages/skills-web-app/bundles/research/reference/artifact-contract.md +77 -0
  520. package/payload/shared/authoring/studio-creators/source/packages/skills-web-app/bundles/research/schema.yaml +61 -0
  521. package/payload/shared/authoring/studio-creators/source/packages/skills-web-app/bundles/research/validation.yaml +74 -0
  522. package/payload/shared/authoring/studio-creators/source/packages/skills-web-app/bundles/role_access/SKILL.md +196 -0
  523. package/payload/shared/authoring/studio-creators/source/packages/skills-web-app/bundles/role_access/reference/artifact-contract.md +186 -0
  524. package/payload/shared/authoring/studio-creators/source/packages/skills-web-app/bundles/role_access/reference/canvas-guide.md +38 -0
  525. package/payload/shared/authoring/studio-creators/source/packages/skills-web-app/bundles/role_access/reference/example.json +90 -0
  526. package/payload/shared/authoring/studio-creators/source/packages/skills-web-app/bundles/role_access/schema.yaml +59 -0
  527. package/payload/shared/authoring/studio-creators/source/packages/skills-web-app/bundles/role_access/validation.yaml +147 -0
  528. package/payload/shared/authoring/studio-creators/source/packages/skills-web-app/bundles/smart_questions/SKILL.md +202 -0
  529. package/payload/shared/authoring/studio-creators/source/packages/skills-web-app/bundles/smart_questions/reference/artifact-contract.md +245 -0
  530. package/payload/shared/authoring/studio-creators/source/packages/skills-web-app/bundles/smart_questions/schema.yaml +93 -0
  531. package/payload/shared/authoring/studio-creators/source/packages/skills-web-app/bundles/smart_questions/validation.yaml +17 -0
  532. package/payload/shared/authoring/studio-creators/source/packages/skills-web-app/bundles/web_app_prd_assembly/SKILL.md +306 -0
  533. package/payload/shared/authoring/studio-creators/source/packages/skills-web-app/bundles/web_app_prd_assembly/reference/artifact-contract.md +140 -0
  534. package/payload/shared/authoring/studio-creators/source/packages/skills-web-app/bundles/web_app_prd_assembly/schema.yaml +38 -0
  535. package/payload/shared/authoring/studio-creators/source/packages/skills-web-app/bundles/web_app_prd_assembly/validation.yaml +24 -0
  536. package/payload/shared/authoring/studio-creators/source/packages/skills-web-app/bundles/whiteboard/SKILL.md +54 -0
  537. package/payload/shared/authoring/studio-creators/source/packages/skills-web-app/bundles/whiteboard/reference/artifact-contract.md +56 -0
  538. package/payload/shared/authoring/studio-creators/source/packages/skills-web-app/bundles/whiteboard/reference/canvas-guide.md +39 -0
  539. package/payload/shared/authoring/studio-creators/source/packages/skills-web-app/bundles/whiteboard/reference/drawing-method.md +78 -0
  540. package/payload/shared/authoring/studio-creators/source/packages/skills-web-app/bundles/whiteboard/reference/geometry.md +79 -0
  541. package/payload/shared/authoring/studio-creators/source/packages/skills-web-app/bundles/whiteboard/schema.yaml +18 -0
  542. package/payload/shared/authoring/studio-creators/source/packages/skills-web-app/bundles/whiteboard/validation.yaml +18 -0
  543. package/payload/shared/authoring/studio-creators/source/packages/skills-web-app/kits/web_app/mindset.md +345 -0
  544. package/payload/shared/bundles/ai_agent_capabilities/locales/en-US.json +1 -1
  545. package/payload/shared/bundles/ai_agent_capabilities/locales/zh-CN.json +1 -1
  546. package/payload/shared/bundles/business_data/locales/en-US.json +1 -1
  547. package/payload/shared/bundles/business_data/locales/zh-CN.json +1 -1
  548. package/payload/shared/bundles/business_rules/locales/en-US.json +1 -1
  549. package/payload/shared/bundles/business_rules/locales/zh-CN.json +1 -1
  550. package/payload/shared/bundles/design_style/locales/en-US.json +1 -1
  551. package/payload/shared/bundles/design_style/locales/zh-CN.json +1 -1
  552. package/payload/shared/bundles/flow_design/locales/en-US.json +1 -1
  553. package/payload/shared/bundles/flow_design/locales/zh-CN.json +1 -1
  554. package/payload/shared/bundles/function_modules/locales/en-US.json +1 -2
  555. package/payload/shared/bundles/function_modules/locales/zh-CN.json +1 -2
  556. package/payload/shared/bundles/function_modules/panel.yaml +1 -1
  557. package/payload/shared/bundles/integration_design/locales/en-US.json +1 -1
  558. package/payload/shared/bundles/integration_design/locales/zh-CN.json +1 -1
  559. package/payload/shared/bundles/notification_design/locales/en-US.json +1 -1
  560. package/payload/shared/bundles/notification_design/locales/zh-CN.json +1 -1
  561. package/payload/shared/bundles/page_design/locales/en-US.json +1 -1
  562. package/payload/shared/bundles/page_design/locales/zh-CN.json +1 -1
  563. package/payload/shared/bundles/quality_acceptance/locales/en-US.json +1 -1
  564. package/payload/shared/bundles/quality_acceptance/locales/zh-CN.json +1 -1
  565. package/payload/shared/bundles/research/SKILL.md +38 -4
  566. package/payload/shared/bundles/research/locales/en-US.json +1 -1
  567. package/payload/shared/bundles/research/locales/zh-CN.json +1 -1
  568. package/payload/shared/bundles/research/reference/artifact-contract.md +31 -0
  569. package/payload/shared/bundles/research/reference/preview.json +1 -1
  570. package/payload/shared/bundles/research/skill.yaml +1 -1
  571. package/payload/shared/bundles/research/validation.yaml +3 -0
  572. package/payload/shared/bundles/role_access/locales/en-US.json +1 -1
  573. package/payload/shared/bundles/role_access/locales/zh-CN.json +1 -1
  574. package/payload/shared/bundles/smart_questions/locales/en-US.json +1 -1
  575. package/payload/shared/bundles/smart_questions/locales/zh-CN.json +1 -1
  576. package/payload/shared/bundles/web_app_prd_assembly/locales/en-US.json +1 -1
  577. package/payload/shared/bundles/web_app_prd_assembly/locales/zh-CN.json +1 -1
  578. package/payload/shared/bundles/whiteboard/locales/en-US.json +1 -1
  579. package/payload/shared/bundles/whiteboard/locales/zh-CN.json +1 -1
  580. package/payload/shared/kits/web_app/kit.yaml +1 -1
  581. package/payload/shared/kits/web_app/mindset.md +1 -1
  582. package/payload/shared/knowledge/runtime-manifest.json +3 -2
  583. package/payload/shared/knowledge/runtime.mjs +19 -26
  584. package/payload/shared/scripts/{codex-connection-DuV2wtkn.mjs → codex-connection-1RvU1XCj.mjs} +115 -68
  585. package/payload/shared/scripts/codex-desktop-bridge.mjs +2 -2
  586. package/payload/shared/scripts/{connection-file-Dk1TJHgf.mjs → connection-file-CNwrHbAG.mjs} +3 -1
  587. package/payload/shared/scripts/{content-archive-4UdioMU9.mjs → content-archive-CnwVcuWA.mjs} +66 -22
  588. package/payload/shared/scripts/{core-entry-B6zaTh1o.mjs → core-entry-DESmwP78.mjs} +1121 -993
  589. package/payload/shared/scripts/design.mjs +136 -227
  590. package/payload/shared/scripts/git-runtime-check.mjs +1 -1
  591. package/payload/shared/scripts/knowledge-snapshot-query.mjs +1 -1
  592. package/payload/shared/scripts/{load-DE29wyw0.mjs → load-C-RwS23Y.mjs} +1 -1
  593. package/payload/shared/scripts/panel-preview-BeVRYFk1.mjs +78 -0
  594. package/payload/shared/scripts/{server-BoVIQm2J.mjs → server-BBHB9EQr.mjs} +423 -1462
  595. package/payload/shared/scripts/studio-CS5TyoYn.mjs +868 -0
  596. package/payload/shared/scripts/{studio-instance-composition-ClAJ72-M.mjs → studio-instance-composition-BJzYMyvV.mjs} +165 -62
  597. package/payload/shared/scripts/studio-instances-D-Y1WNya.mjs +1212 -0
  598. package/payload/shared/scripts/studio-panel-drafts-Dq171F6x.mjs +393 -0
  599. package/payload/shared/scripts/{windows-private-storage-DRAXaqae.mjs → windows-native-platform-DLm-tedp.mjs} +7 -150
  600. package/payload/shared/scripts/windows-private-storage-Q0cTolE3.mjs +149 -0
  601. package/payload/shared/scripts/workbuddy-panel-service.mjs +2 -2
  602. package/payload/shared/web/{abnfDiagram-VCTEODGH-BElHS-zE.js → abnfDiagram-VCTEODGH-B9IX6J0A.js} +3 -3
  603. package/payload/shared/web/{architectureDiagram-5GKGNRK7-BECL41Da.js → architectureDiagram-5GKGNRK7-BisnJYZ9.js} +5 -5
  604. package/payload/shared/web/{blockDiagram-I7D4REHJ-BHdPKhvo.js → blockDiagram-I7D4REHJ-B2P0WSPo.js} +9 -9
  605. package/payload/shared/web/{c4Diagram-7LVT6UL2-CWIbzZY_.js → c4Diagram-7LVT6UL2-D48X7taa.js} +7 -7
  606. package/payload/shared/web/{channel-CIc-uLOz.js → channel-BbOrJIbZ.js} +1 -1
  607. package/payload/shared/web/{chunk-4HAMMTFA-b3a3G6vp.js → chunk-4HAMMTFA--gjf22vn.js} +5 -5
  608. package/payload/shared/web/{chunk-75Z2AOVW-CRrsMd7V.js → chunk-75Z2AOVW-B2_IycTx.js} +1 -1
  609. package/payload/shared/web/{chunk-DU6HZSFF-DQGKOvUD.js → chunk-DU6HZSFF-U8npu9I8.js} +1 -1
  610. package/payload/shared/web/{chunk-F27PBJKO-CKTDAMhD.js → chunk-F27PBJKO-CTwYnE5c.js} +1 -1
  611. package/payload/shared/web/{chunk-GMAD6QVW-CR6pf1Wk.js → chunk-GMAD6QVW-CKC1iaEH.js} +3 -3
  612. package/payload/shared/web/{chunk-GVQU2GXP-Cuq0uwWc.js → chunk-GVQU2GXP-dsHcuLJt.js} +2 -2
  613. package/payload/shared/web/{chunk-IMKFNOWR-BIkawNBO.js → chunk-IMKFNOWR-DB9Jxepw.js} +5 -5
  614. package/payload/shared/web/{chunk-L3NEJ4N5-CuRR4sgK.js → chunk-L3NEJ4N5-CdduiJry.js} +5 -5
  615. package/payload/shared/web/{chunk-OSK3NFVY-o5AaXVbW.js → chunk-OSK3NFVY-BOueY91y.js} +6 -6
  616. package/payload/shared/web/{chunk-P2QGCYS3-CQGN9yCW.js → chunk-P2QGCYS3-yDDaRgcO.js} +1 -1
  617. package/payload/shared/web/{chunk-POPQ4Y6H-CoV8F_6L.js → chunk-POPQ4Y6H-CljBbmoJ.js} +1 -1
  618. package/payload/shared/web/{chunk-PWAF6VOD-DLPv7U5s.js → chunk-PWAF6VOD-CIvbnSr5.js} +1 -1
  619. package/payload/shared/web/{chunk-SHT3W25Y-DAA9rzEQ.js → chunk-SHT3W25Y-BtoLtpjX.js} +7 -7
  620. package/payload/shared/web/{chunk-SVP7TREG-CsNwZR-J.js → chunk-SVP7TREG-BZs6p27H.js} +2 -2
  621. package/payload/shared/web/{chunk-TICWLB2K-BkUUbwgD.js → chunk-TICWLB2K-CKuC0THI.js} +5 -5
  622. package/payload/shared/web/{classDiagram-ZZMXUADV-HbaRZ3Nl.js → classDiagram-ZZMXUADV-CSdRlepW.js} +13 -13
  623. package/payload/shared/web/{classDiagram-v2-VYDZK3BY-Bkk8o06s.js → classDiagram-v2-VYDZK3BY-B2q6X41N.js} +13 -13
  624. package/payload/shared/web/client.js +39072 -5906
  625. package/payload/shared/web/{cynefinDiagram-5FMLGOSQ-CP-tjXE5.js → cynefinDiagram-5FMLGOSQ-4N8NcsmJ.js} +3 -3
  626. package/payload/shared/web/{dagre-GXQ25YYZ-GUxh673_.js → dagre-GXQ25YYZ-CcOoDuJv.js} +10 -10
  627. package/payload/shared/web/{diagram-S7CK7UJ4-BFDH1Gbu.js → diagram-S7CK7UJ4-eOfyUI5w.js} +4 -4
  628. package/payload/shared/web/{diagram-UQ7AKVKN-PHM6uSDT.js → diagram-UQ7AKVKN-6SdElfMd.js} +3 -3
  629. package/payload/shared/web/{diagram-VSXAHHWV-C6m_LjuJ.js → diagram-VSXAHHWV-DmzS3Yhs.js} +2 -2
  630. package/payload/shared/web/{diagram-VX7I27RA-G0Og_1eB.js → diagram-VX7I27RA-CJ0mjzif.js} +5 -5
  631. package/payload/shared/web/{diagram-Z3DM3KII-DxLU0CyU.js → diagram-Z3DM3KII-b86RsB6X.js} +3 -3
  632. package/payload/shared/web/{dist-CpfF1Jph.js → dist-USJ_fvfj.js} +49 -49
  633. package/payload/shared/web/{ebnfDiagram-PWID7BFC-Dh7NgFDw.js → ebnfDiagram-PWID7BFC-BBo2ROEO.js} +3 -3
  634. package/payload/shared/web/{erDiagram-RLTQ6QDP-De1Ves_r.js → erDiagram-RLTQ6QDP-B7ovyDrh.js} +12 -12
  635. package/payload/shared/web/{excalidraw-surface-q56LZexh.js → excalidraw-surface-BAJM_4P2.js} +1 -1
  636. package/payload/shared/web/flowDiagram-HODETNUW-BmAFlSDM.js +16 -0
  637. package/payload/shared/web/{ganttDiagram-EL5Y4UJY-9UcawiqG.js → ganttDiagram-EL5Y4UJY-BF9LYJFN.js} +2 -2
  638. package/payload/shared/web/{gitGraphDiagram-WWUBYQGX-BYFpRlq8.js → gitGraphDiagram-WWUBYQGX-BLzvYjNu.js} +2 -2
  639. package/payload/shared/web/{infoDiagram-27XIBGKW-B_sYOrDT.js → infoDiagram-27XIBGKW-Cg4jV_tA.js} +2 -2
  640. package/payload/shared/web/{ishikawaDiagram-5VMMS53U-Dbq0pjSI.js → ishikawaDiagram-5VMMS53U-BqfEZdpO.js} +3 -3
  641. package/payload/shared/web/{journeyDiagram-3NMN7TZE-CzWCm5-W.js → journeyDiagram-3NMN7TZE-_QW0fOqV.js} +2 -2
  642. package/payload/shared/web/{kanban-definition-UXKFOSKX-BPt2iOge.js → kanban-definition-UXKFOSKX-C1qxSJso.js} +9 -9
  643. package/payload/shared/web/{mindmap-definition-YA3MSWOX--s-o7l9c.js → mindmap-definition-YA3MSWOX-CxX8l7QH.js} +11 -11
  644. package/payload/shared/web/{pegDiagram-XKGWAZYB-BtVScKlh.js → pegDiagram-XKGWAZYB-CTCTE951.js} +3 -3
  645. package/payload/shared/web/{pieDiagram-E7YTZNPT-BVRgxFzd.js → pieDiagram-E7YTZNPT-BVaT5mnK.js} +3 -3
  646. package/payload/shared/web/{quadrantDiagram-AXDQQJYC-CoI_hWsn.js → quadrantDiagram-AXDQQJYC-DC6iypTQ.js} +1 -1
  647. package/payload/shared/web/{railroadDiagram-O6MQD6OU-CQvkXn2E.js → railroadDiagram-O6MQD6OU-CKk1xSyC.js} +3 -3
  648. package/payload/shared/web/{requirementDiagram-BXWQKSXE-BeMX6Y3_.js → requirementDiagram-BXWQKSXE-D3r71qoR.js} +11 -11
  649. package/payload/shared/web/{sankeyDiagram-P5KCCOFB-DAW2tMQQ.js → sankeyDiagram-P5KCCOFB-BtB3K5ob.js} +1 -1
  650. package/payload/shared/web/{sequenceDiagram-WJ2MYXX4-CIyt6uFH.js → sequenceDiagram-WJ2MYXX4-BsJtFrjU.js} +4 -4
  651. package/payload/shared/web/{stateDiagram-D77RDMKH-Cl5YhtvO.js → stateDiagram-D77RDMKH-srvF-8IQ.js} +13 -13
  652. package/payload/shared/web/{stateDiagram-v2-MP3YSRHH-BsQEmOAZ.js → stateDiagram-v2-MP3YSRHH-CQCPpAb7.js} +13 -13
  653. package/payload/shared/web/{swimlanes-42K2YHIH-DRkfAovZ.js → swimlanes-42K2YHIH-cwCdwOb4.js} +10 -10
  654. package/payload/shared/web/{swimlanesDiagram-VR7AAH4N-CDtUk-LJ.js → swimlanesDiagram-VR7AAH4N-6PGsW_lL.js} +13 -13
  655. package/payload/shared/web/{timeline-definition-24CTP7MA-Bc0GefZe.js → timeline-definition-24CTP7MA-DbKwK9M6.js} +3 -3
  656. package/payload/shared/web/{vennDiagram-4TSXK5OY-CU3O6wRh.js → vennDiagram-4TSXK5OY-BnJ0tHAd.js} +3 -3
  657. package/payload/shared/web/{wardleyDiagram-VM6X3IG4-USaMhD8m.js → wardleyDiagram-VM6X3IG4-Bm9W5WIA.js} +3 -3
  658. package/payload/shared/web/{xychartDiagram-S5SC5T6Z-C8IhDKnq.js → xychartDiagram-S5SC5T6Z-DInWMmWi.js} +5 -5
  659. package/release-hosts.json +1 -1
  660. package/release-manifest.json +664 -133
  661. package/payload/shared/scripts/panel-preview-CPGv8nTe.mjs +0 -105
  662. package/payload/shared/scripts/studio-content-archive-CNUz472H.mjs +0 -334
  663. package/payload/shared/scripts/studio-instances-DKW4R37b.mjs +0 -592
  664. package/payload/shared/scripts/studio-panel-drafts-Cu48ih5u.mjs +0 -787
  665. package/payload/shared/scripts/windows-private-storage-_g0Kdp0U.mjs +0 -2
  666. package/payload/shared/web/flowDiagram-HODETNUW-DY-blVtj.js +0 -16
  667. package/payload/shared/web/katex-DhTJdtYJ.js +0 -26444
@@ -0,0 +1,1212 @@
1
+ import { Pt as require_dist, ht as parseKitMounts } from "./core-entry-DESmwP78.mjs";
2
+ import { n as STUDIO_INSTANCE_CHANGE_LIMITS, r as normalizeStudioInstanceChanges, t as createStudioDraftPorts } from "./studio-panel-drafts-Dq171F6x.mjs";
3
+ import { n as readStudioArchiveResource, t as exportStudioSourceArchive } from "./content-archive-CnwVcuWA.mjs";
4
+ import { isAbsolute, join, relative, resolve, sep } from "node:path";
5
+ import { createHash, randomUUID } from "node:crypto";
6
+ //#region packages/studio/src/node/studio-instances.mjs
7
+ /** Independent local Studio sources; composition and identity rewriting belong to Core adapters. */
8
+ var import_dist = require_dist();
9
+ /** Byte-complete virtual snapshot over canonical retained S2 files; no filesystem extraction. */
10
+ function archiveSnapshot(root, entries, sourceId) {
11
+ const files = new Map(entries.map((entry) => [entry.path, Buffer.from(entry.base64, "base64")]));
12
+ const key = (path) => {
13
+ const value = relative(root, resolve(path));
14
+ if (isAbsolute(value) || value === ".." || value.startsWith(`..${sep}`)) throw new Error("Instance archive read escaped its retained tree.");
15
+ return value.split(sep).join("/");
16
+ };
17
+ const children = (path) => {
18
+ const selected = key(path), prefix = selected ? selected + "/" : "";
19
+ return [...new Set([...files.keys()].filter((file) => file.startsWith(prefix)).map((file) => file.slice(prefix.length).split("/")[0]))].sort();
20
+ };
21
+ return {
22
+ root,
23
+ sourceId,
24
+ listFiles: async () => [...files.keys()],
25
+ readBytes: async (path) => {
26
+ const bytes = files.get(key(path));
27
+ if (!bytes) throw new Error("Missing retained instance archive file.");
28
+ return Buffer.from(bytes);
29
+ },
30
+ fs: {
31
+ readText: async (path) => {
32
+ const bytes = files.get(key(path));
33
+ return bytes === void 0 ? void 0 : new TextDecoder("utf8", { fatal: true }).decode(bytes);
34
+ },
35
+ readResource: async (path) => {
36
+ const bytes = files.get(key(path));
37
+ return bytes === void 0 ? void 0 : readStudioArchiveResource(path, bytes);
38
+ },
39
+ listDir: async (path) => children(path),
40
+ isDirectory: async (path) => children(path).length > 0,
41
+ realPath: async (path) => {
42
+ key(path);
43
+ return resolve(path);
44
+ }
45
+ }
46
+ };
47
+ }
48
+ /**
49
+ * @typedef {{path:string,base64:string}} Entry
50
+ * @typedef {{name:string,version:string}} Pin
51
+ * @typedef {{zh:string,en:string}} Title
52
+ * @typedef {{snapshot:string,sourceId:string}} SourceRef
53
+ * @typedef {{bindingKey:string,bundle:Pin & {source:SourceRef,instanceId?:string,revision?:number}}} Mount
54
+ * Required trusted ports (never browser parameters):
55
+ * catalog.listBundles(): Promise<Array<Pin & {title:Title,runtimeName:string}>>
56
+ * catalog.captureKit(pin): Promise<{files:Entry[],title?:Title,mounts:Array<Pin & {bindingKey:string}>}>
57
+ * catalog.captureBundle(pin): Promise<{files:Entry[],title:Title,sourceId:string,runtimeName:string}>
58
+ * composition.forkBundle({files:Entry[],from:Pin,to:Pin,runtimeName:string}): Promise<Entry[]>
59
+ * composition.projectMounts({kit:Pin,kitFiles:Entry[],mounts:Array<Pin & {bindingKey:string}>,resolveBundle(pin)}): Promise<Entry[]>
60
+ * composition.validateKit({kit:Pin,kitFiles:Entry[],mounts:Mount[],resolveBundle(pin)}): Promise<void>
61
+ * resolveBundle returns {files:Entry[],sourceId:string} for retained exact pins only.
62
+ * Optional composition.preview returns the existing StudioPanelPreviewResult:
63
+ * Kit input adds {kind:'kit',bundle,revision,sampleSource} to validateKit input.
64
+ * Bundle input: {kind:'bundle',bundle,runtimeName,bundleFiles,sourceId,revision,sampleSource}.
65
+ * projectMounts owns kit.yaml AND generated XML. forkBundle changes ONLY skill.yaml identity;
66
+ * runtime name, SKILL frontmatter/body and validation paths remain byte-identical.
67
+ */
68
+ const MAX_TEXT = 1048576;
69
+ const pin = (value) => {
70
+ if (!value || typeof value.name !== "string" || !/^[a-z][a-z0-9_]*$/.test(value.name) || typeof value.version !== "string" || !/^\d+\.\d+$/.test(value.version)) throw new Error("Select an exact source version.");
71
+ return {
72
+ name: value.name,
73
+ version: value.version
74
+ };
75
+ };
76
+ const same = (a, b) => a.name === b.name;
77
+ const runtimeNamePattern = /^[a-zA-Z0-9][a-zA-Z0-9_.-]*$/;
78
+ const runtimeNameOf = (value) => {
79
+ if (typeof value !== "string" || !runtimeNamePattern.test(value)) throw new Error("Trusted Bundle runtime name is missing or invalid.");
80
+ return value;
81
+ };
82
+ const titleOf = (value) => {
83
+ if (!value || typeof value.zh !== "string" || typeof value.en !== "string" || !value.zh.trim() || !value.en.trim() || value.zh.length > 200 || value.en.length > 200) throw new Error("Provide Chinese and English display names of at most 200 characters.");
84
+ return {
85
+ zh: value.zh.trim(),
86
+ en: value.en.trim()
87
+ };
88
+ };
89
+ const safePath = (path) => {
90
+ if (typeof path !== "string" || !path || path.length > 1024 || /[\\:\u0000-\u001f\u007f]/u.test(path) || path.split("/").some((part) => !part || [
91
+ ".",
92
+ "..",
93
+ ".git",
94
+ "node_modules",
95
+ "__proto__",
96
+ "constructor",
97
+ "prototype"
98
+ ].includes(part))) throw new Error("Invalid instance source path.");
99
+ return path;
100
+ };
101
+ const checkRevision = (record, expected) => {
102
+ if (!Number.isSafeInteger(expected) || record.revision !== expected) throw new Error("Instance changed elsewhere. Reopen it before saving.");
103
+ };
104
+ const active = (record) => {
105
+ if (record.deletedAt) throw new Error("This working copy is no longer available or has been moved to the system trash.");
106
+ return record;
107
+ };
108
+ const modern = (record) => {
109
+ active(record);
110
+ if (record.recordVersion !== 2) throw new Error("This legacy instance requires explicit migration before editing or mounting.");
111
+ return record;
112
+ };
113
+ const decode = (base64) => {
114
+ const text = new TextDecoder("utf-8", { fatal: true }).decode(Buffer.from(base64, "base64"));
115
+ if (text.includes("\0")) throw new Error("Binary source files cannot be edited as text.");
116
+ return text;
117
+ };
118
+ const localPin = (kind, version, id = randomUUID()) => ({
119
+ name: `local_${kind}_${id.replaceAll("-", "_")}`,
120
+ version
121
+ });
122
+ const localSourceId = (kind, identity) => `local:${kind}:${identity.name}`;
123
+ const requireSourceId = (value) => {
124
+ if (typeof value !== "string" || !value || value.length > 4096 || /[\u0000-\u001f\u007f]/u.test(value)) throw new Error("Trusted source identity is missing or invalid.");
125
+ return value;
126
+ };
127
+ const canonicalFiles = (files) => JSON.stringify(files.map(({ path, base64 }) => [path, base64]).sort((a, b) => a[0] < b[0] ? -1 : a[0] > b[0] ? 1 : 0));
128
+ function blankSources(kind, identity, title) {
129
+ const entry = (path, content) => ({
130
+ path,
131
+ base64: Buffer.from(content, "utf8").toString("base64")
132
+ });
133
+ const frontmatter = (0, import_dist.stringify)({
134
+ ...identity,
135
+ description: kind === "kit" ? "A new Design Kit being authored." : "A new design Bundle being authored."
136
+ });
137
+ if (kind === "kit") return [entry("mindset.md", "---\n" + frontmatter + "---\n\n# " + title.en + "\n\nDefine this Kit’s design purpose, domain judgment and Bundle selection guidance.\n\n<design_skills>\n</design_skills>\n"), entry("kit.yaml", (0, import_dist.stringify)({
138
+ version: 1,
139
+ mounts: []
140
+ }))];
141
+ return [
142
+ entry("SKILL.md", "---\n" + frontmatter + "---\n\n# " + title.en + "\n\nThis is an unfinished authoring source. Define the user need, owned design facts, domain methods, failure handling and revision protocol before using this Bundle.\n\nKeep the [output contract](reference/output-contract.md), schema, validation and Panel aligned.\n"),
143
+ entry("skill.yaml", (0, import_dist.stringify)({
144
+ ...identity,
145
+ title,
146
+ label: { ...title },
147
+ execution: { handoff: "must_edit" },
148
+ presentation: { mode: "declarative" }
149
+ })),
150
+ entry("schema.yaml", "# Define the domain-owned design facts before use.\ntype: object\nadditional_properties: false\nproperties: {}\n"),
151
+ entry("validation.yaml", (0, import_dist.stringify)({
152
+ skill: identity.name,
153
+ rules: []
154
+ })),
155
+ entry("panel.yaml", "# Compose the shared components after defining the design facts.\nversion: 1\nsections: []\nfields: []\n"),
156
+ entry("reference/output-contract.md", "# Output contract\n\nThis Bundle is not yet defined. Specify owned facts, source evidence, validation and saved outputs alongside the method.\n"),
157
+ entry("reference/preview.json", "{}\n")
158
+ ];
159
+ }
160
+ async function createStudioInstances(options) {
161
+ const { catalog, composition, stateRoot } = options;
162
+ if (!catalog || ![
163
+ "listBundles",
164
+ "captureKit",
165
+ "captureBundle"
166
+ ].every((method) => typeof catalog[method] === "function") || !composition || ![
167
+ "forkBundle",
168
+ "projectMounts",
169
+ "validateKit"
170
+ ].every((method) => typeof composition[method] === "function")) throw new Error("Independent Studio catalog and Core composition ports are required.");
171
+ const { repository, sources } = await createStudioDraftPorts(options, "instance");
172
+ const entriesOf = async (snapshotId) => {
173
+ const snapshot = await sources.open(snapshotId), entries = [];
174
+ const walk = async (prefix) => {
175
+ for (const name of await snapshot.fs.listDir(join(snapshot.root, prefix))) {
176
+ const path = prefix ? `${prefix}/${name}` : name;
177
+ if (await snapshot.fs.isDirectory(join(snapshot.root, path))) await walk(path);
178
+ else entries.push({
179
+ path,
180
+ base64: (await snapshot.fs.readBytes(join(snapshot.root, path))).toString("base64")
181
+ });
182
+ }
183
+ };
184
+ await walk("");
185
+ return entries;
186
+ };
187
+ const filesOf = async (record) => {
188
+ const files = new Map((await entriesOf(record.baseSnapshot)).map((entry) => [entry.path, entry.base64]));
189
+ for (const [path, content] of Object.entries(record.overlays)) files.set(path, Buffer.from(content).toString("base64"));
190
+ return [...files].map(([path, base64]) => ({
191
+ path,
192
+ base64
193
+ }));
194
+ };
195
+ const references = (record, records) => records.filter((item) => !item.deletedAt && item.kind === "kit" && item.mounts.some((mount) => (mount.bundle.instanceId ?? mount.instanceId) === record.id || record.current === true && record.kind === "bundle" && mount.bundle.name === record.bundle.name)).map(({ id, title }) => ({
196
+ id,
197
+ title
198
+ }));
199
+ const projection = (record, records) => {
200
+ const { overlays: _overlays, importedFromSnapshot: _imported, ...result } = record;
201
+ return {
202
+ ...result,
203
+ refs: references(record, records),
204
+ ...record.recordVersion !== 2 ? { requiresMigration: true } : {}
205
+ };
206
+ };
207
+ const displayCopy = async (record) => {
208
+ if (record.recordVersion !== 2) return {};
209
+ const snapshot = await sources.open(record.baseSnapshot);
210
+ const text = async (path) => {
211
+ safePath(path);
212
+ let value;
213
+ try {
214
+ value = record.overlays[path] ?? await snapshot.fs.readText(join(snapshot.root, path));
215
+ } catch (error) {
216
+ if (error.code === "ENOENT") return void 0;
217
+ throw error;
218
+ }
219
+ return typeof value === "string" && Buffer.byteLength(value) <= MAX_TEXT ? value : void 0;
220
+ };
221
+ const source = await text(record.kind === "kit" ? "mindset.md" : "SKILL.md");
222
+ const frontmatter = /^---\r?\n([\s\S]*?)\r?\n---(?:\r?\n|$)/.exec(source ?? "");
223
+ let meta = {}, translated;
224
+ try {
225
+ meta = frontmatter ? (0, import_dist.parse)(frontmatter[1]) ?? {} : {};
226
+ } catch {}
227
+ if (record.kind === "kit") translated = meta.display_description;
228
+ else {
229
+ let locales = {};
230
+ try {
231
+ locales = (0, import_dist.parse)(await text("panel.yaml") ?? "")?.i18n?.locales ?? {};
232
+ } catch {}
233
+ const readLocale = async (locale) => {
234
+ const path = locales[locale];
235
+ if (typeof path !== "string" || !/^locales\/[A-Za-z0-9._-]+\.json$/.test(path)) return void 0;
236
+ try {
237
+ return JSON.parse(await text(path) ?? "{}").bundleDescription;
238
+ } catch {
239
+ return;
240
+ }
241
+ };
242
+ translated = {
243
+ zh: await readLocale("zh-CN"),
244
+ en: await readLocale("en-US")
245
+ };
246
+ if (translated.zh === void 0 && translated.en === void 0) try {
247
+ translated = (0, import_dist.parse)(await text("skill.yaml") ?? "")?.description;
248
+ } catch {}
249
+ }
250
+ return {
251
+ ...typeof meta.description === "string" ? { description: meta.description } : {},
252
+ ...translated && ["zh", "en"].every((language) => typeof translated[language] === "string" && translated[language].trim()) ? { displayDescription: {
253
+ zh: translated.zh,
254
+ en: translated.en
255
+ } } : {}
256
+ };
257
+ };
258
+ const candidates = async (records) => {
259
+ const result = [...(await catalog.listBundles().catch(() => [])).map((item) => ({
260
+ ...pin(item),
261
+ title: titleOf(item.title),
262
+ runtimeName: runtimeNameOf(item.runtimeName),
263
+ ...typeof item.description === "string" ? { description: item.description } : {},
264
+ ...item.displayDescription && ["zh", "en"].every((language) => typeof item.displayDescription[language] === "string" && item.displayDescription[language].trim()) ? { displayDescription: {
265
+ zh: item.displayDescription.zh,
266
+ en: item.displayDescription.en
267
+ } } : {}
268
+ })), ...await Promise.all(records.filter((item) => item.recordVersion === 2 && item.kind === "bundle" && !item.deletedAt).map(async (item) => ({
269
+ ...pin(item.bundle),
270
+ title: item.title,
271
+ runtimeName: runtimeNameOf(item.runtimeName),
272
+ instanceId: item.id,
273
+ revision: item.revision,
274
+ ...await displayCopy(item)
275
+ })))];
276
+ const unique = /* @__PURE__ */ new Map();
277
+ for (const item of result) if (!unique.get(item.name) || item.instanceId !== void 0) unique.set(item.name, item);
278
+ return [...unique.values()];
279
+ };
280
+ const identityDiagnostics = (record, files) => {
281
+ if (record.kind !== "bundle") return [];
282
+ const file = files.find((file) => file.path === "skill.yaml");
283
+ if (!file) return [];
284
+ let manifest;
285
+ try {
286
+ manifest = (0, import_dist.parse)(decode(file.base64));
287
+ } catch {
288
+ return [];
289
+ }
290
+ if ((manifest?.identity ?? manifest?.name) === record.bundle.name) return [];
291
+ return [{
292
+ code: "instance.identity",
293
+ subject: "skill.yaml",
294
+ message: `skill.yaml:请设置 identity: ${record.bundle.name};name 与 SKILL.md 的运行名称保持一致。\nSet skill.yaml identity to ${record.bundle.name}. Keep name consistent with the runtime name in SKILL.md.`
295
+ }];
296
+ };
297
+ const displayDiagnostics = (record, diagnostics) => diagnostics.map((diagnostic) => {
298
+ if (record.kind !== "kit") return diagnostic;
299
+ if (/Mindset .*?(?:must contain|has an empty).*?<design_skills> catalog/.test(diagnostic.message)) return {
300
+ ...diagnostic,
301
+ subject: "mindset.md",
302
+ message: "mindset.md 的技能目录尚未完善:请保留方法正文,并按 kit.yaml 中的挂载补充一个 <design_skills> 目录。\nComplete one <design_skills> catalog in mindset.md using the mounts in kit.yaml, while preserving the method guidance."
303
+ };
304
+ return {
305
+ ...diagnostic,
306
+ message: diagnostic.message.replaceAll(record.kit.name, `${record.title.zh} / ${record.title.en}`)
307
+ };
308
+ });
309
+ const readinessDiagnostics = (record, diagnostics) => displayDiagnostics(record, diagnostics).map(({ subject, ...diagnostic }) => ({
310
+ ...diagnostic,
311
+ ...subject ? { path: subject } : {}
312
+ }));
313
+ const readiness = async (record) => {
314
+ if (!record.importedFromSnapshot) return {};
315
+ const files = await filesOf(record), paths = new Set(files.map((file) => file.path)), diagnostics = [];
316
+ const required = record.kind === "bundle" ? [
317
+ "SKILL.md",
318
+ "skill.yaml",
319
+ "schema.yaml",
320
+ "validation.yaml"
321
+ ] : ["mindset.md", "kit.yaml"];
322
+ for (const path of required) if (!paths.has(path)) diagnostics.push({
323
+ code: "instance.missing_source",
324
+ path,
325
+ message: `Missing ${path}. Add this source file to complete the definition.`,
326
+ severity: "error"
327
+ });
328
+ if (!diagnostics.length) try {
329
+ if (record.kind === "kit") {
330
+ for (const mount of record.mounts) if (!(await resolveMounts(record.mounts, record.current === true)(mount.bundle)).files.some((file) => file.path === "SKILL.md")) diagnostics.push({
331
+ code: "instance.missing_mount",
332
+ path: "kit.yaml",
333
+ message: `Missing exact Bundle ${mount.bundle.name}@${mount.bundle.version}. Repair the Bundle selection in mount management.`,
334
+ severity: "error"
335
+ });
336
+ if (!diagnostics.length) await composition.validateKit(await kitInput(record));
337
+ } else {
338
+ const identity = identityDiagnostics(record, files);
339
+ if (identity.length) return { readiness: {
340
+ ready: false,
341
+ diagnostics: readinessDiagnostics(record, identity)
342
+ } };
343
+ if (typeof composition.validateBundle !== "function") throw new Error("The host has not supplied the Core Bundle definition validator.");
344
+ await composition.validateBundle({
345
+ bundle: record.bundle,
346
+ bundleFiles: files,
347
+ sourceId: record.sourceId,
348
+ runtimeName: record.runtimeName
349
+ });
350
+ }
351
+ } catch (error) {
352
+ diagnostics.push({
353
+ code: "instance.definition",
354
+ message: error instanceof Error ? error.message : String(error),
355
+ severity: "error"
356
+ });
357
+ }
358
+ return { readiness: {
359
+ ready: diagnostics.length === 0,
360
+ diagnostics: readinessDiagnostics(record, diagnostics)
361
+ } };
362
+ };
363
+ const importedRuntime = (record, files) => {
364
+ if (record.kind !== "bundle" || !record.importedFromSnapshot) return {};
365
+ try {
366
+ const method = decode(files.find((file) => file.path === "SKILL.md")?.base64 ?? "");
367
+ const metadata = (0, import_dist.parse)(/^---\r?\n([\s\S]*?)\r?\n---(?:\r?\n|$)/.exec(method)?.[1] ?? "");
368
+ return { runtimeName: runtimeNameOf(metadata?.name) };
369
+ } catch {
370
+ return {};
371
+ }
372
+ };
373
+ const projectImported = async (record, files) => typeof composition.projectSourceIdentity === "function" ? composition.projectSourceIdentity({
374
+ kind: record.kind,
375
+ files,
376
+ identity: record[record.kind]
377
+ }) : files;
378
+ const describe = async (record, records = void 0) => {
379
+ records ??= await repository.list();
380
+ if (record.recordVersion !== 2) return projection(record, records);
381
+ const files = (await filesOf(record)).map((entry) => {
382
+ const bytes = Buffer.byteLength(entry.base64, "base64");
383
+ let editable = bytes <= MAX_TEXT;
384
+ try {
385
+ decode(entry.base64);
386
+ } catch {
387
+ editable = false;
388
+ }
389
+ return {
390
+ path: entry.path,
391
+ bytes,
392
+ editable
393
+ };
394
+ }).sort((a, b) => a.path.localeCompare(b.path));
395
+ return {
396
+ ...projection(record, records),
397
+ ...await displayCopy(record),
398
+ ...await readiness(record),
399
+ files,
400
+ ...record.kind === "kit" ? { availableBundles: await candidates(records) } : {}
401
+ };
402
+ };
403
+ const read = async (input) => describe(active(await repository.read(typeof input === "string" ? input : input.id)));
404
+ const mountRequests = (kitFiles, mounts) => {
405
+ const declaration = kitFiles.find((file) => file.path === "kit.yaml");
406
+ try {
407
+ return declaration ? parseKitMounts(decode(declaration.base64)) : mounts.map((mount) => pin(mount.bundle));
408
+ } catch {
409
+ return mounts.map((mount) => pin(mount.bundle));
410
+ }
411
+ };
412
+ const resolveMounts = (mounts, currentLibrary = false) => async (requested) => {
413
+ const selected = mounts.find((mount) => same(mount.bundle, pin(requested)));
414
+ if (!selected) throw new Error("Core requested a Bundle outside the selected exact mounts.");
415
+ if (selected.bundle.instanceId) {
416
+ const current = modern(await repository.read(selected.bundle.instanceId));
417
+ if (current.kind !== "bundle" || current.bundle.name !== selected.bundle.name) throw new Error("Mounted Bundle identity changed.");
418
+ return {
419
+ files: await filesOf(current),
420
+ sourceId: current.sourceId
421
+ };
422
+ }
423
+ const current = (await repository.list()).find((record) => !record.deletedAt && record.current === true && record.kind === "bundle" && record.bundle.name === selected.bundle.name);
424
+ if (current) return {
425
+ files: await filesOf(current),
426
+ sourceId: current.sourceId
427
+ };
428
+ if (currentLibrary && selected.bundle.version !== requested.version) return catalog.captureBundle(pin(requested));
429
+ return {
430
+ files: await entriesOf(selected.bundle.source.snapshot),
431
+ sourceId: selected.bundle.source.sourceId
432
+ };
433
+ };
434
+ const kitInput = async (record) => ({
435
+ kit: record.kit,
436
+ kitFiles: await filesOf(record),
437
+ mounts: record.mounts,
438
+ resolveBundle: resolveMounts(record.mounts, record.current === true)
439
+ });
440
+ const retain = async (tx, files, sourceId) => {
441
+ requireSourceId(sourceId);
442
+ return {
443
+ snapshot: (await tx.retainTree(files)).id,
444
+ sourceId
445
+ };
446
+ };
447
+ const mountOne = async (tx, requested, available) => {
448
+ const selected = available.find((item) => same(item, pin(requested)));
449
+ if (!selected) throw new Error(`Bundle ${requested.name}@${requested.version} is unavailable in the global catalog.`);
450
+ const bindingKey = runtimeNameOf(requested.bindingKey ?? selected.runtimeName);
451
+ if (bindingKey !== selected.runtimeName) throw new Error("Bundle binding key must preserve its runtime name.");
452
+ if (selected.instanceId) {
453
+ if (requested.instanceId !== void 0 && requested.instanceId !== selected.instanceId) throw new Error("Bundle instance identity does not match its pin.");
454
+ const record = modern(await tx.read(selected.instanceId));
455
+ return {
456
+ bindingKey,
457
+ bundle: {
458
+ ...record.bundle,
459
+ instanceId: record.id,
460
+ revision: record.revision,
461
+ source: await retain(tx, await filesOf(record), record.sourceId)
462
+ }
463
+ };
464
+ }
465
+ if (requested.instanceId !== void 0 || requested.revision !== void 0) throw new Error("Installed Bundle pins do not accept local instance fields.");
466
+ const captured = await catalog.captureBundle(pin(requested));
467
+ return {
468
+ bindingKey,
469
+ bundle: {
470
+ ...pin(requested),
471
+ source: await retain(tx, captured.files, captured.sourceId)
472
+ }
473
+ };
474
+ };
475
+ const projectedKit = async (record, mounts) => {
476
+ const kitFiles = await composition.projectMounts({
477
+ allowEmptyDraft: true,
478
+ kit: record.kit,
479
+ kitFiles: await filesOf(record),
480
+ mounts: mounts.map((mount) => ({
481
+ bindingKey: mount.bindingKey,
482
+ ...pin(mount.bundle)
483
+ })),
484
+ resolveBundle: resolveMounts(mounts, record.current === true)
485
+ });
486
+ if (kitFiles.some((entry) => entry.path.startsWith("skills/"))) throw new Error("Kit-owned sources cannot contain copied Bundle trees.");
487
+ return kitFiles;
488
+ };
489
+ const newTitle = (input, base) => titleOf(input ?? {
490
+ zh: `${base.zh} 副本`,
491
+ en: `${base.en} copy`
492
+ });
493
+ const prepareFiles = async (current, input) => {
494
+ const before = await filesOf(current), entries = new Map(before.map((file) => [file.path, file.base64])), diff = [];
495
+ let diffBytes = 0;
496
+ for (const { path, content } of input.changes) {
497
+ const original = entries.get(path);
498
+ if (original === void 0 && content === null) throw new Error(`Cannot remove missing source file ${path}.`);
499
+ if (original !== void 0 && Buffer.byteLength(original, "base64") > MAX_TEXT) throw new Error("Text editing is limited to 1 MiB per existing file.");
500
+ const previous = original === void 0 ? void 0 : decode(original);
501
+ diffBytes += Buffer.byteLength(previous ?? "") + Buffer.byteLength(content ?? "");
502
+ if (diffBytes > STUDIO_INSTANCE_CHANGE_LIMITS.diffBytes) throw new Error("Instance diff exceeds the 8 MiB text budget.");
503
+ if (current.kind === "kit" && (path === "kit.yaml" || path.startsWith("skills/"))) throw new Error("Use Bundle mount management to edit the Kit declaration; Kit copies contain only Kit-owned files.");
504
+ if (content === null) entries.delete(path);
505
+ else entries.set(path, Buffer.from(content, "utf8").toString("base64"));
506
+ if (previous !== (content ?? void 0)) diff.push({
507
+ path,
508
+ ...previous === void 0 ? {} : { before: previous },
509
+ ...content === null ? {} : { after: content }
510
+ });
511
+ }
512
+ const files = [...entries].map(([path, base64]) => ({
513
+ path,
514
+ base64
515
+ }));
516
+ if (files.length > 4096 || files.reduce((bytes, file) => bytes + Buffer.byteLength(file.base64, "base64"), 0) > 16777216) throw new Error("Instance source tree exceeds 4096 files or 16 MiB.");
517
+ const paths = new Set(entries.keys());
518
+ for (const path of paths) {
519
+ const parts = path.split("/");
520
+ for (let length = 1; length < parts.length; length++) if (paths.has(parts.slice(0, length).join("/"))) throw new Error("Instance source file conflicts with a directory.");
521
+ }
522
+ const dependencyRequests = current.kind === "kit" ? mountRequests(files, current.mounts) : [];
523
+ const digest = createHash("sha256").update(JSON.stringify({
524
+ id: current.id,
525
+ baseRevision: current.revision,
526
+ kind: current.kind,
527
+ pin: current[current.kind],
528
+ runtimeName: current.runtimeName,
529
+ sourceId: current.sourceId,
530
+ mounts: await Promise.all(dependencyRequests.map(async (requested) => ({
531
+ name: requested.name,
532
+ source: await resolveMounts(current.mounts, current.current === true)(requested)
533
+ }))),
534
+ before: canonicalFiles(before),
535
+ after: canonicalFiles(files),
536
+ bundle: input.bundle,
537
+ sampleSource: input.sampleSource
538
+ })).digest("hex");
539
+ return {
540
+ files,
541
+ diff: diff.sort((a, b) => a.path < b.path ? -1 : a.path > b.path ? 1 : 0),
542
+ digest
543
+ };
544
+ };
545
+ const previewChanges = async (current, input, prepared) => {
546
+ const revision = current.revision + 1;
547
+ let result;
548
+ try {
549
+ if (typeof composition.preview !== "function") throw new Error("The host has not supplied the Core preview adapter.");
550
+ if (current.kind === "bundle") {
551
+ if (input.bundle && !same(input.bundle, current.bundle)) throw new Error("Select this exact Bundle instance.");
552
+ const identity = identityDiagnostics(current, prepared.files);
553
+ result = identity.length ? { diagnostics: identity } : await composition.preview({
554
+ kind: "bundle",
555
+ bundle: current.bundle,
556
+ runtimeName: importedRuntime(current, prepared.files).runtimeName ?? current.runtimeName,
557
+ bundleFiles: prepared.files,
558
+ sourceId: current.sourceId,
559
+ revision,
560
+ sampleSource: input.sampleSource
561
+ });
562
+ } else {
563
+ const bundle = pin(input.bundle);
564
+ if (!current.mounts.some((mount) => same(mount.bundle, bundle))) throw new Error("Select an exact mounted Bundle.");
565
+ result = await composition.preview({
566
+ kind: "kit",
567
+ kit: current.kit,
568
+ kitFiles: prepared.files,
569
+ mounts: current.mounts,
570
+ resolveBundle: resolveMounts(current.mounts, current.current === true),
571
+ bundle,
572
+ revision,
573
+ sampleSource: input.sampleSource
574
+ });
575
+ }
576
+ if (!result || !Array.isArray(result.diagnostics)) throw new Error("Core preview did not return a diagnostic result.");
577
+ if (result.preview && result.preview.revision !== revision) throw new Error("Core preview revision does not match this candidate.");
578
+ } catch (error) {
579
+ result = { diagnostics: [{
580
+ code: "instance.candidate",
581
+ message: error instanceof Error ? error.message : String(error)
582
+ }] };
583
+ }
584
+ return {
585
+ id: current.id,
586
+ baseRevision: current.revision,
587
+ revision,
588
+ digest: prepared.digest,
589
+ diff: prepared.diff,
590
+ valid: !!result.preview && !result.diagnostics.some((entry) => entry.severity !== "warning"),
591
+ diagnostics: displayDiagnostics(current, result.diagnostics),
592
+ ...result.preview ? { preview: result.preview } : {}
593
+ };
594
+ };
595
+ const definitionOnly = (current, input, files) => {
596
+ if (current.kind === "kit") return input.bundle === void 0;
597
+ try {
598
+ const manifest = (0, import_dist.parse)(decode(files.find((file) => file.path === "skill.yaml")?.base64 ?? ""));
599
+ return manifest && typeof manifest === "object" && !Array.isArray(manifest) && (manifest.presentation === void 0 || manifest.presentation?.mode === "none");
600
+ } catch {
601
+ return false;
602
+ }
603
+ };
604
+ const definitionDiagnostics = async (current, input, files) => {
605
+ const diagnostics = [];
606
+ try {
607
+ if (current.kind === "kit") await composition.validateKit({
608
+ kit: current.kit,
609
+ kitFiles: files,
610
+ mounts: current.mounts,
611
+ resolveBundle: resolveMounts(current.mounts, current.current === true)
612
+ });
613
+ else {
614
+ if (input.bundle && !same(input.bundle, current.bundle)) throw new Error("Select this exact Bundle instance.");
615
+ diagnostics.push(...identityDiagnostics(current, files));
616
+ if (!diagnostics.length) {
617
+ if (typeof composition.validateBundle !== "function") throw new Error("The host has not supplied the Core Bundle definition validator.");
618
+ await composition.validateBundle({
619
+ bundle: current.bundle,
620
+ bundleFiles: files,
621
+ sourceId: current.sourceId,
622
+ runtimeName: importedRuntime(current, files).runtimeName ?? current.runtimeName
623
+ });
624
+ }
625
+ }
626
+ } catch (error) {
627
+ diagnostics.push({
628
+ code: "instance.definition",
629
+ message: error instanceof Error ? error.message : String(error)
630
+ });
631
+ }
632
+ return diagnostics;
633
+ };
634
+ const validateChanges = async (current, input, prepared) => {
635
+ if (!definitionOnly(current, input, prepared.files)) return previewChanges(current, input, prepared);
636
+ const diagnostics = await definitionDiagnostics(current, input, prepared.files);
637
+ return {
638
+ id: current.id,
639
+ baseRevision: current.revision,
640
+ revision: current.revision + 1,
641
+ digest: prepared.digest,
642
+ diff: prepared.diff,
643
+ valid: diagnostics.length === 0,
644
+ diagnostics: displayDiagnostics(current, diagnostics)
645
+ };
646
+ };
647
+ return {
648
+ read,
649
+ async captureKit({ id, expectedRevision } = {}) {
650
+ return repository.transaction(async (tx) => {
651
+ const record = modern(await tx.read(id));
652
+ if (expectedRevision !== void 0) checkRevision(record, expectedRevision);
653
+ if (record.kind !== "kit") throw new Error("Select a Kit source.");
654
+ const captured = /* @__PURE__ */ new Map(), kitFiles = await filesOf(record), resolveBundle = resolveMounts(record.mounts, record.current === true);
655
+ for (const requested of mountRequests(kitFiles, record.mounts)) captured.set(requested.name, await resolveBundle(requested));
656
+ return {
657
+ kit: record.kit,
658
+ kitFiles,
659
+ mounts: structuredClone(record.mounts),
660
+ resolveBundle: async (requested) => captured.get(requested.name)
661
+ };
662
+ });
663
+ },
664
+ async loadKit(input) {
665
+ if (typeof composition.loadKit !== "function") throw new Error("The host has not supplied the Core Kit loader.");
666
+ return composition.loadKit(await this.captureKit(input));
667
+ },
668
+ async editCurrent(input) {
669
+ if (!["kit", "bundle"].includes(input.kind)) throw new Error("Select a Kit or Bundle.");
670
+ const selected = pin(input[input.kind]);
671
+ const record = await repository.transaction(async (tx) => {
672
+ const records = await tx.list();
673
+ const existing = records.find((item) => !item.deletedAt && item.kind === input.kind && item.current === true && item[item.kind].name === selected.name);
674
+ if (existing) return existing;
675
+ const captured = input.kind === "kit" ? await catalog.captureKit(selected) : await catalog.captureBundle(selected);
676
+ const sourceId = input.kind === "bundle" ? captured.sourceId : `local:kit:${selected.name}`;
677
+ const source = await retain(tx, captured.files, sourceId);
678
+ const mounts = [];
679
+ if (input.kind === "kit") {
680
+ const available = await candidates(records);
681
+ for (const mounted of captured.mounts) mounts.push(await mountOne(tx, mounted, available));
682
+ }
683
+ return tx.create({
684
+ recordVersion: 2,
685
+ current: true,
686
+ kind: input.kind,
687
+ [input.kind]: selected,
688
+ title: captured.title ?? {
689
+ zh: selected.name,
690
+ en: selected.name
691
+ },
692
+ source: { [input.kind]: selected },
693
+ sourceId,
694
+ baseSnapshot: source.snapshot,
695
+ overlays: {},
696
+ mounts,
697
+ ...input.kind === "bundle" ? { runtimeName: captured.runtimeName } : {},
698
+ createdAt: (/* @__PURE__ */ new Date()).toISOString()
699
+ });
700
+ });
701
+ return describe(record);
702
+ },
703
+ /** Unsaved, bounded source candidate; diff and real preview use the same bytes. */
704
+ async exportArchive(request) {
705
+ const input = structuredClone(request);
706
+ return repository.transaction(async (tx) => {
707
+ const current = active(await tx.read(input.id));
708
+ if (current.revision !== input.expectedRevision) throw new Error("Instance revision changed before archive export.");
709
+ if (current.recordVersion !== 2) throw new Error("Migrate the working copy before archive export.");
710
+ const root = resolve(stateRoot, "instance-archive-view", current.id);
711
+ const snapshot = archiveSnapshot(root, await filesOf(current), `studio-instance:${current.id}`);
712
+ if (current.kind === "bundle") snapshot.bundle = pin(current.bundle);
713
+ else {
714
+ snapshot.bundles = [];
715
+ const resolveBundle = resolveMounts(current.mounts, current.current === true);
716
+ for (const requested of mountRequests(await filesOf(current), current.mounts)) {
717
+ const captured = await resolveBundle(requested);
718
+ snapshot.bundles.push({
719
+ ...pin(requested),
720
+ sourceId: captured.sourceId,
721
+ snapshot: archiveSnapshot(resolve(root, "..", `${current.id}-bundle-${requested.name}`), captured.files, captured.sourceId)
722
+ });
723
+ }
724
+ }
725
+ return exportStudioSourceArchive(snapshot, {
726
+ kind: current.kind,
727
+ pin: current.kind === "kit" ? current.kit : current.bundle,
728
+ title: current.title,
729
+ provenance: input.provenance,
730
+ ...input.dependencies ? { dependencies: input.dependencies } : {}
731
+ });
732
+ });
733
+ },
734
+ async prepareChanges(request) {
735
+ const input = normalizeStudioInstanceChanges(request);
736
+ return repository.transaction(async (tx) => {
737
+ const current = modern(await tx.read(input.id));
738
+ checkRevision(current, input.expectedRevision);
739
+ return validateChanges(current, input, await prepareFiles(current, input));
740
+ });
741
+ },
742
+ /** One snapshot pointer + one existing atomic record CAS, never per-file writes. */
743
+ async saveChanges(request) {
744
+ const input = normalizeStudioInstanceChanges(request), mode = request.mode ?? "draft", digest = request.digest;
745
+ if (!["draft", "validated"].includes(mode)) throw new Error("Select draft or validated save mode.");
746
+ if ((mode === "validated" || digest !== void 0) && (typeof digest !== "string" || !/^[a-f0-9]{64}$/.test(digest))) throw new Error("Select the exact prepared candidate digest.");
747
+ let receipt;
748
+ const record = await repository.transaction(async (tx) => {
749
+ const current = modern(await tx.read(input.id));
750
+ checkRevision(current, input.expectedRevision);
751
+ const prepared = await prepareFiles(current, input);
752
+ if (digest !== void 0 && digest !== prepared.digest) throw new Error("Candidate source digest changed. Prepare and review the current changes again.");
753
+ let validation = "not_requested";
754
+ if (mode === "validated") {
755
+ const sourceOnly = definitionOnly(current, input, prepared.files);
756
+ const candidate = await validateChanges(current, input, prepared);
757
+ if (!candidate.valid) throw new Error(`Candidate failed Core ${sourceOnly ? "definition" : "preview"}: ${candidate.diagnostics.map((entry) => `${entry.code}: ${entry.message}`).join("; ") || "no valid declarative preview"}`);
758
+ validation = sourceOnly ? "definition_passed" : "preview_passed";
759
+ }
760
+ const retained = await retain(tx, prepared.files, current.sourceId);
761
+ const saved = await tx.replace(current.id, input.expectedRevision, {
762
+ ...current,
763
+ ...importedRuntime(current, prepared.files),
764
+ baseSnapshot: retained.snapshot,
765
+ overlays: {}
766
+ });
767
+ receipt = {
768
+ baseRevision: current.revision,
769
+ revision: saved.revision,
770
+ digest: prepared.digest,
771
+ mode,
772
+ validation
773
+ };
774
+ return saved;
775
+ });
776
+ return {
777
+ ...await describe(record),
778
+ changeReceipt: receipt
779
+ };
780
+ },
781
+ async list({ kind } = {}) {
782
+ if (kind !== void 0 && !["kit", "bundle"].includes(kind)) throw new Error("Unknown instance kind.");
783
+ const records = await repository.list();
784
+ return Promise.all(records.filter((record) => !record.deletedAt && (!kind || record.kind === kind)).map(async (record) => ({
785
+ ...projection(record, records),
786
+ ...await displayCopy(record),
787
+ ...await readiness(record)
788
+ })));
789
+ },
790
+ async listBundles() {
791
+ return candidates(await repository.list());
792
+ },
793
+ async importSources(request) {
794
+ const input = structuredClone(request);
795
+ if (!input || !["kit", "bundle"].includes(input.kind) || !Array.isArray(input.files)) throw new Error("Provide Kit or Bundle source files.");
796
+ const kind = input.kind;
797
+ for (const file of input.files) safePath(file?.path);
798
+ const paths = new Set(input.files.map((file) => file.path));
799
+ for (const path of kind === "bundle" ? ["SKILL.md"] : ["mindset.md", "kit.yaml"]) if (!paths.has(path)) throw new Error(`Missing required import source ${path}.`);
800
+ const metadata = (path) => {
801
+ try {
802
+ const text = decode(input.files.find((file) => file.path === path)?.base64 ?? "");
803
+ return (0, import_dist.parse)(path.endsWith(".md") ? /^---\r?\n([\s\S]*?)\r?\n---(?:\r?\n|$)/.exec(text)?.[1] ?? "" : text) ?? {};
804
+ } catch {
805
+ return {};
806
+ }
807
+ };
808
+ const method = metadata(kind === "bundle" ? "SKILL.md" : "mindset.md"), manifest = metadata(kind === "bundle" ? "skill.yaml" : "kit.yaml");
809
+ const version = /^\d+\.\d+$/.test(String(manifest.version)) ? String(manifest.version) : /^\d+\.\d+$/.test(String(method.version)) ? String(method.version) : "1.0";
810
+ const identity = localPin(kind, version), sourceId = localSourceId(kind, identity);
811
+ const runtimeName = [method.name, manifest.name].find((value) => typeof value === "string" && runtimeNamePattern.test(value)) ?? identity.name;
812
+ const label = typeof method.name === "string" && method.name.trim() ? method.name.trim().slice(0, 180) : kind === "kit" ? "Imported Kit" : "Imported Bundle";
813
+ const inferredTitle = ["zh", "en"].every((language) => typeof manifest.title?.[language] === "string" && manifest.title[language].trim() && manifest.title[language].length <= 200) ? manifest.title : {
814
+ zh: label,
815
+ en: label
816
+ };
817
+ const baseTitle = titleOf(input.title ?? inferredTitle);
818
+ const created = await repository.transaction(async (tx) => {
819
+ const original = await retain(tx, input.files, sourceId);
820
+ const labels = [...(await tx.list()).filter((record) => !record.deletedAt).map((record) => record.title), ...(await catalog.listBundles()).map((item) => item.title)];
821
+ let title = baseTitle, suffix = 2;
822
+ while (labels.some((item) => item.zh === title.zh || item.en === title.en)) {
823
+ title = titleOf({
824
+ zh: `${baseTitle.zh.slice(0, 180)} (${suffix})`,
825
+ en: `${baseTitle.en.slice(0, 180)} (${suffix})`
826
+ });
827
+ suffix++;
828
+ }
829
+ let files = input.files, mounts = [];
830
+ if (kind === "kit") {
831
+ const consumed = /* @__PURE__ */ new Set(), declared = Array.isArray(manifest.mounts) ? manifest.mounts : [];
832
+ for (const item of declared) {
833
+ let selected, bindingKey;
834
+ try {
835
+ selected = pin(item);
836
+ bindingKey = runtimeNameOf(item.bindingKey);
837
+ } catch {
838
+ continue;
839
+ }
840
+ if (mounts.some((mount) => same(mount.bundle, selected) || mount.bindingKey === bindingKey)) continue;
841
+ const prefix = [
842
+ `bundles/${selected.name}/${selected.version}/`,
843
+ `bundles/${selected.name}/`,
844
+ `skills/${bindingKey}/`
845
+ ].find((prefix) => input.files.some((file) => file.path.startsWith(prefix)));
846
+ let bundleFiles = prefix ? input.files.filter((file) => file.path.startsWith(prefix)).map((file) => {
847
+ consumed.add(file.path);
848
+ return {
849
+ ...file,
850
+ path: file.path.slice(prefix.length)
851
+ };
852
+ }) : [];
853
+ let mountedSourceId = `import:bundle:${selected.name}@${selected.version}`;
854
+ if (!prefix) try {
855
+ const capture = await catalog.captureBundle(selected);
856
+ bundleFiles = capture.files;
857
+ mountedSourceId = capture.sourceId;
858
+ } catch {}
859
+ mounts.push({
860
+ bindingKey,
861
+ bundle: {
862
+ ...selected,
863
+ source: await retain(tx, bundleFiles, mountedSourceId)
864
+ }
865
+ });
866
+ }
867
+ files = input.files.filter((file) => !consumed.has(file.path));
868
+ }
869
+ const record = {
870
+ recordVersion: 2,
871
+ kind,
872
+ [kind]: identity,
873
+ title,
874
+ source: {},
875
+ sourceId,
876
+ baseSnapshot: original.snapshot,
877
+ importedFromSnapshot: original.snapshot,
878
+ overlays: {},
879
+ mounts,
880
+ ...kind === "bundle" ? { runtimeName } : {},
881
+ createdAt: (/* @__PURE__ */ new Date()).toISOString()
882
+ };
883
+ files = await projectImported(record, files);
884
+ record.baseSnapshot = (await retain(tx, files, sourceId)).snapshot;
885
+ return tx.create(record);
886
+ });
887
+ return describe(created);
888
+ },
889
+ async create(input) {
890
+ if (!input || typeof input !== "object" || Array.isArray(input) || Object.keys(input).some((key) => !["kind", "title"].includes(key)) || !["kit", "bundle"].includes(input.kind)) throw new Error("Provide a new Kit or Bundle kind and display title.");
891
+ const kind = input.kind, title = titleOf(input.title), identity = localPin(kind, "1.0");
892
+ const sourceId = localSourceId(kind, identity), initial = blankSources(kind, identity, title);
893
+ const files = kind === "kit" ? await composition.projectMounts({
894
+ allowEmptyDraft: true,
895
+ kit: identity,
896
+ kitFiles: initial,
897
+ mounts: [],
898
+ resolveBundle: async () => {
899
+ throw new Error("Blank Kit creation cannot resolve installed Bundles.");
900
+ }
901
+ }) : initial;
902
+ const created = await repository.transaction(async (tx) => {
903
+ const source = await retain(tx, files, sourceId);
904
+ return tx.create({
905
+ recordVersion: 2,
906
+ kind,
907
+ [kind]: identity,
908
+ title,
909
+ source: {},
910
+ sourceId,
911
+ baseSnapshot: source.snapshot,
912
+ overlays: {},
913
+ mounts: [],
914
+ createdBlank: true,
915
+ ...kind === "bundle" ? { runtimeName: identity.name } : {},
916
+ createdAt: (/* @__PURE__ */ new Date()).toISOString()
917
+ });
918
+ });
919
+ return describe(created);
920
+ },
921
+ async copy(input) {
922
+ if (!["kit", "bundle"].includes(input.kind)) throw new Error("Select a Kit or Bundle instance.");
923
+ const created = await repository.transaction(async (tx) => {
924
+ const original = input.sourceId ? modern(await tx.read(input.sourceId)) : void 0;
925
+ if (original && original.kind !== input.kind) throw new Error("The source instance kind does not match.");
926
+ if (original && input.expectedRevision !== void 0) checkRevision(original, input.expectedRevision);
927
+ let files, origin, baseTitle, mounts = [], sourcePin, runtimeName;
928
+ if (original) {
929
+ files = await filesOf(original);
930
+ sourcePin = original[original.kind];
931
+ origin = original.source;
932
+ baseTitle = original.title;
933
+ mounts = structuredClone(original.mounts);
934
+ runtimeName = original.runtimeName;
935
+ } else if (input.kind === "bundle") {
936
+ sourcePin = pin(input.bundle);
937
+ const captured = await catalog.captureBundle(sourcePin);
938
+ requireSourceId(captured.sourceId);
939
+ runtimeName = runtimeNameOf(captured.runtimeName);
940
+ files = captured.files;
941
+ baseTitle = titleOf(captured.title);
942
+ origin = { bundle: sourcePin };
943
+ } else {
944
+ sourcePin = pin(input.kit);
945
+ const captured = await catalog.captureKit(sourcePin);
946
+ files = captured.files;
947
+ origin = { kit: sourcePin };
948
+ const label = sourcePin.name.replace(/[_-]+/g, " ");
949
+ baseTitle = captured.title ?? {
950
+ zh: label,
951
+ en: label
952
+ };
953
+ const available = await candidates(await tx.list());
954
+ for (const mounted of captured.mounts) mounts.push(await mountOne(tx, mounted, available));
955
+ }
956
+ const identity = localPin(input.kind, sourcePin.version), sourceId = localSourceId(input.kind, identity);
957
+ if (input.kind === "kit" && files.some((file) => file.path.startsWith("skills/"))) throw new Error("Kit capture must contain only Kit-owned files; legacy whole-Kit sources require explicit migration.");
958
+ if (input.kind === "bundle") files = original?.importedFromSnapshot ? await projectImported({
959
+ kind: "bundle",
960
+ bundle: identity
961
+ }, files) : await composition.forkBundle({
962
+ files,
963
+ from: sourcePin,
964
+ to: identity,
965
+ runtimeName
966
+ });
967
+ const source = await retain(tx, files, sourceId);
968
+ const record = {
969
+ recordVersion: 2,
970
+ kind: input.kind,
971
+ [input.kind]: identity,
972
+ title: newTitle(input.title, baseTitle),
973
+ source: origin,
974
+ sourceId,
975
+ baseSnapshot: source.snapshot,
976
+ overlays: {},
977
+ mounts,
978
+ ...input.kind === "bundle" ? { runtimeName } : {},
979
+ ...original?.createdBlank ? { createdBlank: true } : {},
980
+ ...original?.importedFromSnapshot ? { importedFromSnapshot: original.importedFromSnapshot } : {},
981
+ createdAt: (/* @__PURE__ */ new Date()).toISOString(),
982
+ ...original ? { forkedFrom: {
983
+ id: original.id,
984
+ revision: original.revision,
985
+ pin: sourcePin
986
+ } } : {}
987
+ };
988
+ if (record.kind === "kit") record.baseSnapshot = (await retain(tx, record.importedFromSnapshot ? await projectImported(record, files) : await projectedKit(record, mounts), sourceId)).snapshot;
989
+ return tx.create(record);
990
+ });
991
+ return describe(created);
992
+ },
993
+ async rename({ id, expectedRevision, title }) {
994
+ const nextTitle = titleOf(title);
995
+ const record = await repository.transaction(async (tx) => {
996
+ const current = modern(await tx.read(id));
997
+ checkRevision(current, expectedRevision);
998
+ return tx.replace(id, expectedRevision, {
999
+ ...current,
1000
+ title: nextTitle
1001
+ });
1002
+ });
1003
+ return describe(record);
1004
+ },
1005
+ async updateMounts({ id, expectedRevision, bundles }) {
1006
+ if (!Array.isArray(bundles) || bundles.length > 4096) throw new Error("Provide a bounded Bundle selection.");
1007
+ if (new Set(bundles.map((item) => pin(item).name)).size !== bundles.length) throw new Error("A Kit can mount each Bundle only once.");
1008
+ const record = await repository.transaction(async (tx) => {
1009
+ const current = modern(await tx.read(id));
1010
+ checkRevision(current, expectedRevision);
1011
+ if (current.kind !== "kit") throw new Error("Mount management requires a local Kit instance.");
1012
+ const available = await candidates(await tx.list()), mounts = [];
1013
+ for (const selected of bundles) {
1014
+ const existing = current.mounts.find((mount) => same(mount.bundle, pin(selected)) && (selected.bindingKey === void 0 || selected.bindingKey === mount.bindingKey) && (selected.instanceId === void 0 || selected.instanceId === mount.bundle.instanceId) && (selected.revision === void 0 || selected.revision === mount.bundle.revision));
1015
+ let mounted = existing;
1016
+ if (existing && current.importedFromSnapshot) {
1017
+ const files = await entriesOf(existing.bundle.source.snapshot);
1018
+ if (available.some((item) => same(item, selected))) {
1019
+ let incomplete = !files.some((file) => file.path === "SKILL.md");
1020
+ if (!incomplete && typeof composition.validateBundle === "function") try {
1021
+ await composition.validateBundle({
1022
+ bundle: pin(existing.bundle),
1023
+ bundleFiles: files,
1024
+ sourceId: existing.bundle.source.sourceId,
1025
+ runtimeName: existing.bindingKey
1026
+ });
1027
+ } catch {
1028
+ incomplete = true;
1029
+ }
1030
+ if (incomplete) try {
1031
+ mounted = await mountOne(tx, selected, available);
1032
+ } catch {}
1033
+ }
1034
+ }
1035
+ mounts.push(mounted ?? await mountOne(tx, selected, available));
1036
+ }
1037
+ if (new Set(mounts.map((mount) => mount.bindingKey)).size !== mounts.length) throw new Error("Bundle binding keys must be unique.");
1038
+ const source = await retain(tx, await projectedKit(current, mounts), current.sourceId);
1039
+ return tx.replace(id, expectedRevision, {
1040
+ ...current,
1041
+ mounts,
1042
+ baseSnapshot: source.snapshot,
1043
+ overlays: {}
1044
+ });
1045
+ });
1046
+ return describe(record);
1047
+ },
1048
+ async remove({ id, expectedRevision }) {
1049
+ return repository.transaction(async (tx) => {
1050
+ const current = active(await tx.read(id));
1051
+ checkRevision(current, expectedRevision);
1052
+ const refs = references(current, await tx.list());
1053
+ if (refs.length) throw new Error(`This Bundle is referenced by ${refs.map((item) => item.title.en).join(", ")}. Referenced instances are protected from deletion.`);
1054
+ return tx.trash(id, expectedRevision);
1055
+ });
1056
+ },
1057
+ async readFile({ id, path }) {
1058
+ safePath(path);
1059
+ const record = modern(await repository.read(id)), file = (await filesOf(record)).find((entry) => entry.path === path);
1060
+ if (!file) throw new Error("Instance source file does not exist.");
1061
+ if (Buffer.byteLength(file.base64, "base64") > MAX_TEXT) throw new Error("Text editing is limited to 1 MiB per file.");
1062
+ return {
1063
+ id,
1064
+ revision: record.revision,
1065
+ path,
1066
+ content: decode(file.base64)
1067
+ };
1068
+ },
1069
+ async saveFile({ id, expectedRevision, path, content }) {
1070
+ safePath(path);
1071
+ if (typeof content !== "string" || Buffer.byteLength(content) > MAX_TEXT || content.includes("\0")) throw new Error("Source must be UTF-8 text of at most 1 MiB.");
1072
+ const record = await repository.transaction(async (tx) => {
1073
+ const current = modern(await tx.read(id));
1074
+ checkRevision(current, expectedRevision);
1075
+ const files = await filesOf(current), found = files.find((entry) => entry.path === path);
1076
+ if (!found) throw new Error("Select an existing source file to edit.");
1077
+ decode(found.base64);
1078
+ if (current.kind === "kit" && path === "kit.yaml") throw new Error("Use Bundle mount management to edit the Kit declaration.");
1079
+ return tx.replace(id, expectedRevision, {
1080
+ ...current,
1081
+ ...importedRuntime(current, files.map((file) => file.path === path ? {
1082
+ path,
1083
+ base64: Buffer.from(content).toString("base64")
1084
+ } : file)),
1085
+ overlays: {
1086
+ ...current.overlays,
1087
+ [path]: content
1088
+ }
1089
+ });
1090
+ });
1091
+ return describe(record);
1092
+ },
1093
+ async preview({ id, expectedRevision, bundle: requested, sampleSource }) {
1094
+ return repository.transaction(async (tx) => {
1095
+ const record = modern(await tx.read(id));
1096
+ checkRevision(record, expectedRevision);
1097
+ const files = record.kind === "bundle" ? await filesOf(record) : void 0;
1098
+ if (files && definitionOnly(record, {}, files)) return { diagnostics: displayDiagnostics(record, await definitionDiagnostics(record, {}, files)) };
1099
+ if (typeof composition.preview !== "function") throw new Error("The host has not supplied the Core preview adapter.");
1100
+ if (record.kind === "bundle") {
1101
+ const diagnostics = identityDiagnostics(record, files);
1102
+ if (diagnostics.length) return { diagnostics };
1103
+ return composition.preview({
1104
+ kind: "bundle",
1105
+ bundle: record.bundle,
1106
+ runtimeName: record.runtimeName,
1107
+ bundleFiles: files,
1108
+ sourceId: record.sourceId,
1109
+ revision: record.revision,
1110
+ sampleSource
1111
+ });
1112
+ }
1113
+ const bundle = pin(requested);
1114
+ if (!record.mounts.some((mount) => same(mount.bundle, bundle))) throw new Error("Select an exact mounted Bundle.");
1115
+ const result = await composition.preview({
1116
+ kind: "kit",
1117
+ ...await kitInput(record),
1118
+ bundle,
1119
+ revision: record.revision,
1120
+ sampleSource
1121
+ });
1122
+ return {
1123
+ ...result,
1124
+ diagnostics: displayDiagnostics(record, result.diagnostics)
1125
+ };
1126
+ });
1127
+ },
1128
+ async migrate({ id, expectedRevision }) {
1129
+ const migrated = await repository.transaction(async (tx) => {
1130
+ const current = active(await tx.read(id));
1131
+ checkRevision(current, expectedRevision);
1132
+ if (current.recordVersion === 2) throw new Error("Instance is already migrated.");
1133
+ const allFiles = await filesOf(current), identity = localPin(current.kind, current.source[current.kind].version, id), sourceId = localSourceId(current.kind, identity);
1134
+ let files, mounts = [], runtimeName;
1135
+ if (current.kind === "bundle") {
1136
+ const prefix = `${current.bundlePath}/`;
1137
+ files = allFiles.filter((entry) => entry.path.startsWith(prefix)).map((entry) => ({
1138
+ ...entry,
1139
+ path: entry.path.slice(prefix.length)
1140
+ }));
1141
+ runtimeName = runtimeNameOf(current.source.bundle.name);
1142
+ files = await composition.forkBundle({
1143
+ files,
1144
+ from: current.source.bundle,
1145
+ to: identity,
1146
+ runtimeName
1147
+ });
1148
+ } else {
1149
+ for (const path of Object.keys(current.overlays)) if (path.startsWith("skills/")) {
1150
+ const name = path.split("/")[1];
1151
+ if (!current.mounts.some((mount) => mount.bundle.name === name && mount.instanceId)) throw new Error("Legacy Kit contains independent Bundle edits. Preserve them as Bundle copies before migrating this Kit.");
1152
+ }
1153
+ files = allFiles.filter((entry) => !entry.path.startsWith("skills/"));
1154
+ for (const old of current.mounts) {
1155
+ const prefix = `skills/${old.bundle.name}/`;
1156
+ let bundleFiles = allFiles.filter((entry) => entry.path.startsWith(prefix)).map((entry) => ({
1157
+ ...entry,
1158
+ path: entry.path.slice(prefix.length)
1159
+ }));
1160
+ let bundle = pin(old.bundle), authority;
1161
+ if (old.instanceId) {
1162
+ const linked = active(await tx.read(old.instanceId));
1163
+ bundle = linked.recordVersion === 2 ? linked.bundle : localPin("bundle", old.bundle.version, old.instanceId);
1164
+ authority = localSourceId("bundle", bundle);
1165
+ bundleFiles = await composition.forkBundle({
1166
+ files: bundleFiles,
1167
+ from: old.bundle,
1168
+ to: bundle,
1169
+ runtimeName: old.bundle.name
1170
+ });
1171
+ } else {
1172
+ const trusted = await catalog.captureBundle(bundle);
1173
+ if (canonicalFiles(trusted.files) !== canonicalFiles(bundleFiles)) throw new Error("Legacy Bundle bytes differ from the trusted catalog. Migrate a separate local Bundle before adopting this source.");
1174
+ authority = requireSourceId(trusted.sourceId);
1175
+ }
1176
+ mounts.push({
1177
+ bindingKey: old.bundle.name,
1178
+ bundle: {
1179
+ ...bundle,
1180
+ source: await retain(tx, bundleFiles, authority),
1181
+ ...old.instanceId ? {
1182
+ instanceId: old.instanceId,
1183
+ revision: old.revision
1184
+ } : {}
1185
+ }
1186
+ });
1187
+ }
1188
+ }
1189
+ const next = {
1190
+ ...current,
1191
+ recordVersion: 2,
1192
+ [current.kind]: identity,
1193
+ sourceId,
1194
+ baseSnapshot: (await retain(tx, files, sourceId)).snapshot,
1195
+ overlays: {},
1196
+ mounts,
1197
+ ...current.kind === "bundle" ? { runtimeName } : {},
1198
+ migration: {
1199
+ fromRevision: current.revision,
1200
+ fromSnapshot: current.baseSnapshot
1201
+ }
1202
+ };
1203
+ delete next.bundlePath;
1204
+ if (current.kind === "kit") next.baseSnapshot = (await retain(tx, await projectedKit(next, mounts), sourceId)).snapshot;
1205
+ return tx.migrate(id, expectedRevision, next);
1206
+ });
1207
+ return describe(migrated);
1208
+ }
1209
+ };
1210
+ }
1211
+ //#endregion
1212
+ export { createStudioInstances };