@flextudio/scenario 0.1.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 (856) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +260 -0
  3. package/bin/flex-scenario.mjs +895 -0
  4. package/commands/flex-spec.md +28 -0
  5. package/contract-data/README.md +267 -0
  6. package/contract-data/examples/README.md +147 -0
  7. package/contract-data/examples/basic/basic-list-detail.json +2521 -0
  8. package/contract-data/examples/basic/delivery-address-popup.json +2175 -0
  9. package/contract-data/examples/basic/fixedtop-floating-form.json +1524 -0
  10. package/contract-data/examples/basic/search-period-popup.json +1524 -0
  11. package/contract-data/examples/design/booking-wizard-3step.json +1335 -0
  12. package/contract-data/examples/design/list-detail-form-3step.json +1516 -0
  13. package/contract-data/examples/design/list-filter-2step.json +1365 -0
  14. package/contract-data/examples/design/list-filter-detail-3step.json +1570 -0
  15. package/contract-data/examples/design/result-entry-wizard-4step.json +1861 -0
  16. package/contract-data/examples/intent/mock-employee-list.json +54 -0
  17. package/contract-data/examples/intent/script-cart-flow.json +96 -0
  18. package/contract-data/examples/intent/script-dialog-confirm.json +61 -0
  19. package/contract-data/runtime/v1/collection/README.md +119 -0
  20. package/contract-data/runtime/v1/collection/_c.md +205 -0
  21. package/contract-data/runtime/v1/collection/category.md +165 -0
  22. package/contract-data/runtime/v1/collection/collection.md +135 -0
  23. package/contract-data/runtime/v1/collection/lifecycle.md +140 -0
  24. package/contract-data/runtime/v1/collection/naming.md +174 -0
  25. package/contract-data/runtime/v1/collection/sector.md +176 -0
  26. package/contract-data/runtime/v1/collection/status.md +114 -0
  27. package/contract-data/runtime/v1/intent-system/INTENT.md +552 -0
  28. package/contract-data/runtime/v1/intent-system/README.md +118 -0
  29. package/contract-data/runtime/v1/intent-system/intent.schema.json +164 -0
  30. package/contract-data/runtime/v1/intent-system/kinds/_base.mjs +137 -0
  31. package/contract-data/runtime/v1/intent-system/kinds/clearCategory.mjs +35 -0
  32. package/contract-data/runtime/v1/intent-system/kinds/copyStepValues.mjs +100 -0
  33. package/contract-data/runtime/v1/intent-system/kinds/deleteActive.mjs +45 -0
  34. package/contract-data/runtime/v1/intent-system/kinds/dialog.mjs +127 -0
  35. package/contract-data/runtime/v1/intent-system/kinds/reloadGroup.mjs +28 -0
  36. package/contract-data/runtime/v1/intent-system/kinds/updateActive.mjs +74 -0
  37. package/contract-data/runtime/v1/intent-system/materialize.mjs +495 -0
  38. package/contract-data/runtime/v1/script/README.md +37 -0
  39. package/contract-data/runtime/v1/script/current_step.md +112 -0
  40. package/contract-data/runtime/v1/script/f_collection.md +142 -0
  41. package/contract-data/runtime/v1/script/f_content.md +133 -0
  42. package/contract-data/runtime/v1/script/f_messagebox.md +132 -0
  43. package/contract-data/runtime/v1/script/scenario-gen-rules.md +264 -0
  44. package/contract-data/schema/v1/SKELETON-SHELL.md +120 -0
  45. package/contract-data/schema/v1/bottom-buttons.md +155 -0
  46. package/contract-data/schema/v1/bottom-buttons.schema.json +134 -0
  47. package/contract-data/schema/v1/control/_base.schema.json +1296 -0
  48. package/contract-data/schema/v1/control/button.md +147 -0
  49. package/contract-data/schema/v1/control/button.schema.json +55 -0
  50. package/contract-data/schema/v1/control/calendar-navigator.md +143 -0
  51. package/contract-data/schema/v1/control/calendar-navigator.schema.json +164 -0
  52. package/contract-data/schema/v1/control/calendar.md +128 -0
  53. package/contract-data/schema/v1/control/calendar.schema.json +18 -0
  54. package/contract-data/schema/v1/control/check-box.md +117 -0
  55. package/contract-data/schema/v1/control/check-box.schema.json +41 -0
  56. package/contract-data/schema/v1/control/combo.md +293 -0
  57. package/contract-data/schema/v1/control/combo.schema.json +23 -0
  58. package/contract-data/schema/v1/control/embed.md +211 -0
  59. package/contract-data/schema/v1/control/embed.schema.json +30 -0
  60. package/contract-data/schema/v1/control/image-box.md +237 -0
  61. package/contract-data/schema/v1/control/image-box.schema.json +49 -0
  62. package/contract-data/schema/v1/control/input-date.md +175 -0
  63. package/contract-data/schema/v1/control/input-date.schema.json +27 -0
  64. package/contract-data/schema/v1/control/input-file.md +192 -0
  65. package/contract-data/schema/v1/control/input-file.schema.json +139 -0
  66. package/contract-data/schema/v1/control/input-mask.md +89 -0
  67. package/contract-data/schema/v1/control/input-mask.schema.json +45 -0
  68. package/contract-data/schema/v1/control/input-number.md +55 -0
  69. package/contract-data/schema/v1/control/input-number.schema.json +24 -0
  70. package/contract-data/schema/v1/control/input-text.md +73 -0
  71. package/contract-data/schema/v1/control/input-text.schema.json +24 -0
  72. package/contract-data/schema/v1/control/label.md +127 -0
  73. package/contract-data/schema/v1/control/label.schema.json +113 -0
  74. package/contract-data/schema/v1/control/multi-input-box.md +51 -0
  75. package/contract-data/schema/v1/control/multi-input-box.schema.json +19 -0
  76. package/contract-data/schema/v1/control/other.schema.json +24 -0
  77. package/contract-data/schema/v1/control/radio-box.md +150 -0
  78. package/contract-data/schema/v1/control/radio-box.schema.json +87 -0
  79. package/contract-data/schema/v1/control/search.md +163 -0
  80. package/contract-data/schema/v1/control/search.schema.json +23 -0
  81. package/contract-data/schema/v1/control/tab.md +240 -0
  82. package/contract-data/schema/v1/control/tab.schema.json +112 -0
  83. package/contract-data/schema/v1/control/tree.md +278 -0
  84. package/contract-data/schema/v1/control/tree.schema.json +83 -0
  85. package/contract-data/schema/v1/control.md +264 -0
  86. package/contract-data/schema/v1/control.schema.json +30 -0
  87. package/contract-data/schema/v1/data-objects.md +278 -0
  88. package/contract-data/schema/v1/data-objects.schema.json +161 -0
  89. package/contract-data/schema/v1/data-sources.md +215 -0
  90. package/contract-data/schema/v1/data-sources.schema.json +184 -0
  91. package/contract-data/schema/v1/design-system/DESIGN.md +282 -0
  92. package/contract-data/schema/v1/design-system/README.md +235 -0
  93. package/contract-data/schema/v1/design-system/design.schema.json +496 -0
  94. package/contract-data/schema/v1/design-system/error-mapping.mjs +132 -0
  95. package/contract-data/schema/v1/design-system/materialize.mjs +1435 -0
  96. package/contract-data/schema/v1/design-system/tests/_base.additional-meta.test.mjs +98 -0
  97. package/contract-data/schema/v1/design-system/tests/_base.materialize.test.mjs +596 -0
  98. package/contract-data/schema/v1/design-system/tests/checklist.test.mjs +135 -0
  99. package/contract-data/schema/v1/design-system/tests/design.schema.test.mjs +487 -0
  100. package/contract-data/schema/v1/design-system/tests/error-mapping.test.mjs +244 -0
  101. package/contract-data/schema/v1/design-system/tests/materialize.test.mjs +1093 -0
  102. package/contract-data/schema/v1/design-system/tests/move-step.test.mjs +119 -0
  103. package/contract-data/schema/v1/design-system/tests/override.integration.test.mjs +116 -0
  104. package/contract-data/schema/v1/design-system/tokens.json +76 -0
  105. package/contract-data/schema/v1/events.md +467 -0
  106. package/contract-data/schema/v1/events.schema.json +272 -0
  107. package/contract-data/schema/v1/group.md +146 -0
  108. package/contract-data/schema/v1/group.schema.json +133 -0
  109. package/contract-data/schema/v1/mockup-data.md +186 -0
  110. package/contract-data/schema/v1/naming-objects.schema.json +133 -0
  111. package/contract-data/schema/v1/node.md +32 -0
  112. package/contract-data/schema/v1/node.schema.json +24 -0
  113. package/contract-data/schema/v1/patterns/_base.additional-meta.mjs +135 -0
  114. package/contract-data/schema/v1/patterns/_base.controls.mjs +759 -0
  115. package/contract-data/schema/v1/patterns/_base.icon.mjs +61 -0
  116. package/contract-data/schema/v1/patterns/_base.id.mjs +15 -0
  117. package/contract-data/schema/v1/patterns/_base.materialize.mjs +1181 -0
  118. package/contract-data/schema/v1/patterns/_base.style.mjs +312 -0
  119. package/contract-data/schema/v1/patterns/atom/badge.materialize.mjs +68 -0
  120. package/contract-data/schema/v1/patterns/atom/badge.schema.json +44 -0
  121. package/contract-data/schema/v1/patterns/atom/button.materialize.mjs +91 -0
  122. package/contract-data/schema/v1/patterns/atom/button.schema.json +70 -0
  123. package/contract-data/schema/v1/patterns/atom/checkbox.materialize.mjs +40 -0
  124. package/contract-data/schema/v1/patterns/atom/checkbox.schema.json +39 -0
  125. package/contract-data/schema/v1/patterns/atom/segmented-radio.materialize.mjs +67 -0
  126. package/contract-data/schema/v1/patterns/atom/segmented-radio.schema.json +49 -0
  127. package/contract-data/schema/v1/patterns/atom/switch.materialize.mjs +58 -0
  128. package/contract-data/schema/v1/patterns/atom/switch.schema.json +27 -0
  129. package/contract-data/schema/v1/patterns/molecule/checklist.materialize.mjs +130 -0
  130. package/contract-data/schema/v1/patterns/molecule/checklist.schema.json +63 -0
  131. package/contract-data/schema/v1/patterns/molecule/input-action.materialize.mjs +356 -0
  132. package/contract-data/schema/v1/patterns/molecule/input-action.schema.json +251 -0
  133. package/contract-data/schema/v1/patterns/molecule/input-button.materialize.mjs +183 -0
  134. package/contract-data/schema/v1/patterns/molecule/input-button.schema.json +141 -0
  135. package/contract-data/schema/v1/patterns/molecule/input-pair.materialize.mjs +254 -0
  136. package/contract-data/schema/v1/patterns/molecule/input-pair.schema.json +210 -0
  137. package/contract-data/schema/v1/scenario.md +112 -0
  138. package/contract-data/schema/v1/scenario.schema.json +161 -0
  139. package/contract-data/schema/v1/service/CustomSystem.md +139 -0
  140. package/contract-data/schema/v1/service/CustomSystem.schema.json +41 -0
  141. package/contract-data/schema/v1/service/Firestore.md +125 -0
  142. package/contract-data/schema/v1/service/Firestore.schema.json +28 -0
  143. package/contract-data/schema/v1/service/FlexAutoQuery.md +128 -0
  144. package/contract-data/schema/v1/service/FlexAutoQuery.schema.json +35 -0
  145. package/contract-data/schema/v1/service/FlexSQL.md +96 -0
  146. package/contract-data/schema/v1/service/FlexSQL.schema.json +33 -0
  147. package/contract-data/schema/v1/service/Flextudio API.md +161 -0
  148. package/contract-data/schema/v1/service/Flextudio API.schema.json +115 -0
  149. package/contract-data/schema/v1/service/Flextudio.md +87 -0
  150. package/contract-data/schema/v1/service/Flextudio.schema.json +26 -0
  151. package/contract-data/schema/v1/service/GoogleSheet.md +71 -0
  152. package/contract-data/schema/v1/service/GoogleSheet.schema.json +31 -0
  153. package/contract-data/schema/v1/service/README.md +127 -0
  154. package/contract-data/schema/v1/service/_base.schema.json +31 -0
  155. package/contract-data/schema/v1/service/ksystem.md +76 -0
  156. package/contract-data/schema/v1/service/ksystem.schema.json +36 -0
  157. package/contract-data/schema/v1/service-binding.md +228 -0
  158. package/contract-data/schema/v1/service-binding.schema.json +51 -0
  159. package/contract-data/schema/v1/step.md +546 -0
  160. package/contract-data/schema/v1/step.schema.json +258 -0
  161. package/contract-data/schema/v1/style-objects.md +183 -0
  162. package/contract-data/schema/v1/style-objects.schema.json +155 -0
  163. package/contract-data/spec/catalog.json +406 -0
  164. package/contract-data/spec/rules.md +400 -0
  165. package/node_modules/@flextudio/contract-core/contract.mjs +367 -0
  166. package/node_modules/@flextudio/contract-core/index.mjs +16 -0
  167. package/node_modules/@flextudio/contract-core/package.json +21 -0
  168. package/node_modules/@flextudio/contract-core/paths.mjs +72 -0
  169. package/node_modules/@flextudio/contract-core/schemas.mjs +474 -0
  170. package/node_modules/@flextudio/contract-core/validators.mjs +2471 -0
  171. package/node_modules/ajv/.runkit_example.js +23 -0
  172. package/node_modules/ajv/LICENSE +22 -0
  173. package/node_modules/ajv/README.md +207 -0
  174. package/node_modules/ajv/dist/2019.d.ts +19 -0
  175. package/node_modules/ajv/dist/2019.js +61 -0
  176. package/node_modules/ajv/dist/2019.js.map +1 -0
  177. package/node_modules/ajv/dist/2020.d.ts +19 -0
  178. package/node_modules/ajv/dist/2020.js +55 -0
  179. package/node_modules/ajv/dist/2020.js.map +1 -0
  180. package/node_modules/ajv/dist/ajv.d.ts +18 -0
  181. package/node_modules/ajv/dist/ajv.js +50 -0
  182. package/node_modules/ajv/dist/ajv.js.map +1 -0
  183. package/node_modules/ajv/dist/compile/codegen/code.d.ts +40 -0
  184. package/node_modules/ajv/dist/compile/codegen/code.js +156 -0
  185. package/node_modules/ajv/dist/compile/codegen/code.js.map +1 -0
  186. package/node_modules/ajv/dist/compile/codegen/index.d.ts +79 -0
  187. package/node_modules/ajv/dist/compile/codegen/index.js +697 -0
  188. package/node_modules/ajv/dist/compile/codegen/index.js.map +1 -0
  189. package/node_modules/ajv/dist/compile/codegen/scope.d.ts +79 -0
  190. package/node_modules/ajv/dist/compile/codegen/scope.js +143 -0
  191. package/node_modules/ajv/dist/compile/codegen/scope.js.map +1 -0
  192. package/node_modules/ajv/dist/compile/errors.d.ts +13 -0
  193. package/node_modules/ajv/dist/compile/errors.js +123 -0
  194. package/node_modules/ajv/dist/compile/errors.js.map +1 -0
  195. package/node_modules/ajv/dist/compile/index.d.ts +80 -0
  196. package/node_modules/ajv/dist/compile/index.js +242 -0
  197. package/node_modules/ajv/dist/compile/index.js.map +1 -0
  198. package/node_modules/ajv/dist/compile/jtd/parse.d.ts +4 -0
  199. package/node_modules/ajv/dist/compile/jtd/parse.js +350 -0
  200. package/node_modules/ajv/dist/compile/jtd/parse.js.map +1 -0
  201. package/node_modules/ajv/dist/compile/jtd/serialize.d.ts +4 -0
  202. package/node_modules/ajv/dist/compile/jtd/serialize.js +236 -0
  203. package/node_modules/ajv/dist/compile/jtd/serialize.js.map +1 -0
  204. package/node_modules/ajv/dist/compile/jtd/types.d.ts +6 -0
  205. package/node_modules/ajv/dist/compile/jtd/types.js +14 -0
  206. package/node_modules/ajv/dist/compile/jtd/types.js.map +1 -0
  207. package/node_modules/ajv/dist/compile/names.d.ts +20 -0
  208. package/node_modules/ajv/dist/compile/names.js +28 -0
  209. package/node_modules/ajv/dist/compile/names.js.map +1 -0
  210. package/node_modules/ajv/dist/compile/ref_error.d.ts +6 -0
  211. package/node_modules/ajv/dist/compile/ref_error.js +12 -0
  212. package/node_modules/ajv/dist/compile/ref_error.js.map +1 -0
  213. package/node_modules/ajv/dist/compile/resolve.d.ts +12 -0
  214. package/node_modules/ajv/dist/compile/resolve.js +155 -0
  215. package/node_modules/ajv/dist/compile/resolve.js.map +1 -0
  216. package/node_modules/ajv/dist/compile/rules.d.ts +28 -0
  217. package/node_modules/ajv/dist/compile/rules.js +26 -0
  218. package/node_modules/ajv/dist/compile/rules.js.map +1 -0
  219. package/node_modules/ajv/dist/compile/util.d.ts +40 -0
  220. package/node_modules/ajv/dist/compile/util.js +178 -0
  221. package/node_modules/ajv/dist/compile/util.js.map +1 -0
  222. package/node_modules/ajv/dist/compile/validate/applicability.d.ts +6 -0
  223. package/node_modules/ajv/dist/compile/validate/applicability.js +19 -0
  224. package/node_modules/ajv/dist/compile/validate/applicability.js.map +1 -0
  225. package/node_modules/ajv/dist/compile/validate/boolSchema.d.ts +4 -0
  226. package/node_modules/ajv/dist/compile/validate/boolSchema.js +50 -0
  227. package/node_modules/ajv/dist/compile/validate/boolSchema.js.map +1 -0
  228. package/node_modules/ajv/dist/compile/validate/dataType.d.ts +17 -0
  229. package/node_modules/ajv/dist/compile/validate/dataType.js +203 -0
  230. package/node_modules/ajv/dist/compile/validate/dataType.js.map +1 -0
  231. package/node_modules/ajv/dist/compile/validate/defaults.d.ts +2 -0
  232. package/node_modules/ajv/dist/compile/validate/defaults.js +35 -0
  233. package/node_modules/ajv/dist/compile/validate/defaults.js.map +1 -0
  234. package/node_modules/ajv/dist/compile/validate/index.d.ts +42 -0
  235. package/node_modules/ajv/dist/compile/validate/index.js +520 -0
  236. package/node_modules/ajv/dist/compile/validate/index.js.map +1 -0
  237. package/node_modules/ajv/dist/compile/validate/keyword.d.ts +8 -0
  238. package/node_modules/ajv/dist/compile/validate/keyword.js +124 -0
  239. package/node_modules/ajv/dist/compile/validate/keyword.js.map +1 -0
  240. package/node_modules/ajv/dist/compile/validate/subschema.d.ts +47 -0
  241. package/node_modules/ajv/dist/compile/validate/subschema.js +81 -0
  242. package/node_modules/ajv/dist/compile/validate/subschema.js.map +1 -0
  243. package/node_modules/ajv/dist/core.d.ts +174 -0
  244. package/node_modules/ajv/dist/core.js +618 -0
  245. package/node_modules/ajv/dist/core.js.map +1 -0
  246. package/node_modules/ajv/dist/jtd.d.ts +47 -0
  247. package/node_modules/ajv/dist/jtd.js +72 -0
  248. package/node_modules/ajv/dist/jtd.js.map +1 -0
  249. package/node_modules/ajv/dist/refs/data.json +13 -0
  250. package/node_modules/ajv/dist/refs/json-schema-2019-09/index.d.ts +2 -0
  251. package/node_modules/ajv/dist/refs/json-schema-2019-09/index.js +28 -0
  252. package/node_modules/ajv/dist/refs/json-schema-2019-09/index.js.map +1 -0
  253. package/node_modules/ajv/dist/refs/json-schema-2019-09/meta/applicator.json +53 -0
  254. package/node_modules/ajv/dist/refs/json-schema-2019-09/meta/content.json +17 -0
  255. package/node_modules/ajv/dist/refs/json-schema-2019-09/meta/core.json +57 -0
  256. package/node_modules/ajv/dist/refs/json-schema-2019-09/meta/format.json +14 -0
  257. package/node_modules/ajv/dist/refs/json-schema-2019-09/meta/meta-data.json +37 -0
  258. package/node_modules/ajv/dist/refs/json-schema-2019-09/meta/validation.json +90 -0
  259. package/node_modules/ajv/dist/refs/json-schema-2019-09/schema.json +39 -0
  260. package/node_modules/ajv/dist/refs/json-schema-2020-12/index.d.ts +2 -0
  261. package/node_modules/ajv/dist/refs/json-schema-2020-12/index.js +30 -0
  262. package/node_modules/ajv/dist/refs/json-schema-2020-12/index.js.map +1 -0
  263. package/node_modules/ajv/dist/refs/json-schema-2020-12/meta/applicator.json +48 -0
  264. package/node_modules/ajv/dist/refs/json-schema-2020-12/meta/content.json +17 -0
  265. package/node_modules/ajv/dist/refs/json-schema-2020-12/meta/core.json +51 -0
  266. package/node_modules/ajv/dist/refs/json-schema-2020-12/meta/format-annotation.json +14 -0
  267. package/node_modules/ajv/dist/refs/json-schema-2020-12/meta/meta-data.json +37 -0
  268. package/node_modules/ajv/dist/refs/json-schema-2020-12/meta/unevaluated.json +15 -0
  269. package/node_modules/ajv/dist/refs/json-schema-2020-12/meta/validation.json +90 -0
  270. package/node_modules/ajv/dist/refs/json-schema-2020-12/schema.json +55 -0
  271. package/node_modules/ajv/dist/refs/json-schema-draft-06.json +137 -0
  272. package/node_modules/ajv/dist/refs/json-schema-draft-07.json +151 -0
  273. package/node_modules/ajv/dist/refs/json-schema-secure.json +88 -0
  274. package/node_modules/ajv/dist/refs/jtd-schema.d.ts +3 -0
  275. package/node_modules/ajv/dist/refs/jtd-schema.js +118 -0
  276. package/node_modules/ajv/dist/refs/jtd-schema.js.map +1 -0
  277. package/node_modules/ajv/dist/runtime/equal.d.ts +6 -0
  278. package/node_modules/ajv/dist/runtime/equal.js +7 -0
  279. package/node_modules/ajv/dist/runtime/equal.js.map +1 -0
  280. package/node_modules/ajv/dist/runtime/parseJson.d.ts +18 -0
  281. package/node_modules/ajv/dist/runtime/parseJson.js +185 -0
  282. package/node_modules/ajv/dist/runtime/parseJson.js.map +1 -0
  283. package/node_modules/ajv/dist/runtime/quote.d.ts +5 -0
  284. package/node_modules/ajv/dist/runtime/quote.js +30 -0
  285. package/node_modules/ajv/dist/runtime/quote.js.map +1 -0
  286. package/node_modules/ajv/dist/runtime/re2.d.ts +6 -0
  287. package/node_modules/ajv/dist/runtime/re2.js +6 -0
  288. package/node_modules/ajv/dist/runtime/re2.js.map +1 -0
  289. package/node_modules/ajv/dist/runtime/timestamp.d.ts +5 -0
  290. package/node_modules/ajv/dist/runtime/timestamp.js +42 -0
  291. package/node_modules/ajv/dist/runtime/timestamp.js.map +1 -0
  292. package/node_modules/ajv/dist/runtime/ucs2length.d.ts +5 -0
  293. package/node_modules/ajv/dist/runtime/ucs2length.js +24 -0
  294. package/node_modules/ajv/dist/runtime/ucs2length.js.map +1 -0
  295. package/node_modules/ajv/dist/runtime/uri.d.ts +6 -0
  296. package/node_modules/ajv/dist/runtime/uri.js +6 -0
  297. package/node_modules/ajv/dist/runtime/uri.js.map +1 -0
  298. package/node_modules/ajv/dist/runtime/validation_error.d.ts +7 -0
  299. package/node_modules/ajv/dist/runtime/validation_error.js +11 -0
  300. package/node_modules/ajv/dist/runtime/validation_error.js.map +1 -0
  301. package/node_modules/ajv/dist/standalone/index.d.ts +6 -0
  302. package/node_modules/ajv/dist/standalone/index.js +90 -0
  303. package/node_modules/ajv/dist/standalone/index.js.map +1 -0
  304. package/node_modules/ajv/dist/standalone/instance.d.ts +12 -0
  305. package/node_modules/ajv/dist/standalone/instance.js +35 -0
  306. package/node_modules/ajv/dist/standalone/instance.js.map +1 -0
  307. package/node_modules/ajv/dist/types/index.d.ts +183 -0
  308. package/node_modules/ajv/dist/types/index.js +3 -0
  309. package/node_modules/ajv/dist/types/index.js.map +1 -0
  310. package/node_modules/ajv/dist/types/json-schema.d.ts +125 -0
  311. package/node_modules/ajv/dist/types/json-schema.js +3 -0
  312. package/node_modules/ajv/dist/types/json-schema.js.map +1 -0
  313. package/node_modules/ajv/dist/types/jtd-schema.d.ts +174 -0
  314. package/node_modules/ajv/dist/types/jtd-schema.js +3 -0
  315. package/node_modules/ajv/dist/types/jtd-schema.js.map +1 -0
  316. package/node_modules/ajv/dist/vocabularies/applicator/additionalItems.d.ts +8 -0
  317. package/node_modules/ajv/dist/vocabularies/applicator/additionalItems.js +49 -0
  318. package/node_modules/ajv/dist/vocabularies/applicator/additionalItems.js.map +1 -0
  319. package/node_modules/ajv/dist/vocabularies/applicator/additionalProperties.d.ts +6 -0
  320. package/node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js +106 -0
  321. package/node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js.map +1 -0
  322. package/node_modules/ajv/dist/vocabularies/applicator/allOf.d.ts +3 -0
  323. package/node_modules/ajv/dist/vocabularies/applicator/allOf.js +23 -0
  324. package/node_modules/ajv/dist/vocabularies/applicator/allOf.js.map +1 -0
  325. package/node_modules/ajv/dist/vocabularies/applicator/anyOf.d.ts +4 -0
  326. package/node_modules/ajv/dist/vocabularies/applicator/anyOf.js +12 -0
  327. package/node_modules/ajv/dist/vocabularies/applicator/anyOf.js.map +1 -0
  328. package/node_modules/ajv/dist/vocabularies/applicator/contains.d.ts +7 -0
  329. package/node_modules/ajv/dist/vocabularies/applicator/contains.js +95 -0
  330. package/node_modules/ajv/dist/vocabularies/applicator/contains.js.map +1 -0
  331. package/node_modules/ajv/dist/vocabularies/applicator/dependencies.d.ts +21 -0
  332. package/node_modules/ajv/dist/vocabularies/applicator/dependencies.js +85 -0
  333. package/node_modules/ajv/dist/vocabularies/applicator/dependencies.js.map +1 -0
  334. package/node_modules/ajv/dist/vocabularies/applicator/dependentSchemas.d.ts +3 -0
  335. package/node_modules/ajv/dist/vocabularies/applicator/dependentSchemas.js +11 -0
  336. package/node_modules/ajv/dist/vocabularies/applicator/dependentSchemas.js.map +1 -0
  337. package/node_modules/ajv/dist/vocabularies/applicator/if.d.ts +6 -0
  338. package/node_modules/ajv/dist/vocabularies/applicator/if.js +66 -0
  339. package/node_modules/ajv/dist/vocabularies/applicator/if.js.map +1 -0
  340. package/node_modules/ajv/dist/vocabularies/applicator/index.d.ts +13 -0
  341. package/node_modules/ajv/dist/vocabularies/applicator/index.js +44 -0
  342. package/node_modules/ajv/dist/vocabularies/applicator/index.js.map +1 -0
  343. package/node_modules/ajv/dist/vocabularies/applicator/items.d.ts +5 -0
  344. package/node_modules/ajv/dist/vocabularies/applicator/items.js +52 -0
  345. package/node_modules/ajv/dist/vocabularies/applicator/items.js.map +1 -0
  346. package/node_modules/ajv/dist/vocabularies/applicator/items2020.d.ts +6 -0
  347. package/node_modules/ajv/dist/vocabularies/applicator/items2020.js +30 -0
  348. package/node_modules/ajv/dist/vocabularies/applicator/items2020.js.map +1 -0
  349. package/node_modules/ajv/dist/vocabularies/applicator/not.d.ts +4 -0
  350. package/node_modules/ajv/dist/vocabularies/applicator/not.js +26 -0
  351. package/node_modules/ajv/dist/vocabularies/applicator/not.js.map +1 -0
  352. package/node_modules/ajv/dist/vocabularies/applicator/oneOf.d.ts +6 -0
  353. package/node_modules/ajv/dist/vocabularies/applicator/oneOf.js +60 -0
  354. package/node_modules/ajv/dist/vocabularies/applicator/oneOf.js.map +1 -0
  355. package/node_modules/ajv/dist/vocabularies/applicator/patternProperties.d.ts +3 -0
  356. package/node_modules/ajv/dist/vocabularies/applicator/patternProperties.js +75 -0
  357. package/node_modules/ajv/dist/vocabularies/applicator/patternProperties.js.map +1 -0
  358. package/node_modules/ajv/dist/vocabularies/applicator/prefixItems.d.ts +3 -0
  359. package/node_modules/ajv/dist/vocabularies/applicator/prefixItems.js +12 -0
  360. package/node_modules/ajv/dist/vocabularies/applicator/prefixItems.js.map +1 -0
  361. package/node_modules/ajv/dist/vocabularies/applicator/properties.d.ts +3 -0
  362. package/node_modules/ajv/dist/vocabularies/applicator/properties.js +54 -0
  363. package/node_modules/ajv/dist/vocabularies/applicator/properties.js.map +1 -0
  364. package/node_modules/ajv/dist/vocabularies/applicator/propertyNames.d.ts +6 -0
  365. package/node_modules/ajv/dist/vocabularies/applicator/propertyNames.js +38 -0
  366. package/node_modules/ajv/dist/vocabularies/applicator/propertyNames.js.map +1 -0
  367. package/node_modules/ajv/dist/vocabularies/applicator/thenElse.d.ts +3 -0
  368. package/node_modules/ajv/dist/vocabularies/applicator/thenElse.js +13 -0
  369. package/node_modules/ajv/dist/vocabularies/applicator/thenElse.js.map +1 -0
  370. package/node_modules/ajv/dist/vocabularies/code.d.ts +17 -0
  371. package/node_modules/ajv/dist/vocabularies/code.js +131 -0
  372. package/node_modules/ajv/dist/vocabularies/code.js.map +1 -0
  373. package/node_modules/ajv/dist/vocabularies/core/id.d.ts +3 -0
  374. package/node_modules/ajv/dist/vocabularies/core/id.js +10 -0
  375. package/node_modules/ajv/dist/vocabularies/core/id.js.map +1 -0
  376. package/node_modules/ajv/dist/vocabularies/core/index.d.ts +3 -0
  377. package/node_modules/ajv/dist/vocabularies/core/index.js +16 -0
  378. package/node_modules/ajv/dist/vocabularies/core/index.js.map +1 -0
  379. package/node_modules/ajv/dist/vocabularies/core/ref.d.ts +8 -0
  380. package/node_modules/ajv/dist/vocabularies/core/ref.js +122 -0
  381. package/node_modules/ajv/dist/vocabularies/core/ref.js.map +1 -0
  382. package/node_modules/ajv/dist/vocabularies/discriminator/index.d.ts +5 -0
  383. package/node_modules/ajv/dist/vocabularies/discriminator/index.js +104 -0
  384. package/node_modules/ajv/dist/vocabularies/discriminator/index.js.map +1 -0
  385. package/node_modules/ajv/dist/vocabularies/discriminator/types.d.ts +10 -0
  386. package/node_modules/ajv/dist/vocabularies/discriminator/types.js +9 -0
  387. package/node_modules/ajv/dist/vocabularies/discriminator/types.js.map +1 -0
  388. package/node_modules/ajv/dist/vocabularies/draft2020.d.ts +3 -0
  389. package/node_modules/ajv/dist/vocabularies/draft2020.js +23 -0
  390. package/node_modules/ajv/dist/vocabularies/draft2020.js.map +1 -0
  391. package/node_modules/ajv/dist/vocabularies/draft7.d.ts +3 -0
  392. package/node_modules/ajv/dist/vocabularies/draft7.js +17 -0
  393. package/node_modules/ajv/dist/vocabularies/draft7.js.map +1 -0
  394. package/node_modules/ajv/dist/vocabularies/dynamic/dynamicAnchor.d.ts +5 -0
  395. package/node_modules/ajv/dist/vocabularies/dynamic/dynamicAnchor.js +30 -0
  396. package/node_modules/ajv/dist/vocabularies/dynamic/dynamicAnchor.js.map +1 -0
  397. package/node_modules/ajv/dist/vocabularies/dynamic/dynamicRef.d.ts +5 -0
  398. package/node_modules/ajv/dist/vocabularies/dynamic/dynamicRef.js +51 -0
  399. package/node_modules/ajv/dist/vocabularies/dynamic/dynamicRef.js.map +1 -0
  400. package/node_modules/ajv/dist/vocabularies/dynamic/index.d.ts +3 -0
  401. package/node_modules/ajv/dist/vocabularies/dynamic/index.js +9 -0
  402. package/node_modules/ajv/dist/vocabularies/dynamic/index.js.map +1 -0
  403. package/node_modules/ajv/dist/vocabularies/dynamic/recursiveAnchor.d.ts +3 -0
  404. package/node_modules/ajv/dist/vocabularies/dynamic/recursiveAnchor.js +16 -0
  405. package/node_modules/ajv/dist/vocabularies/dynamic/recursiveAnchor.js.map +1 -0
  406. package/node_modules/ajv/dist/vocabularies/dynamic/recursiveRef.d.ts +3 -0
  407. package/node_modules/ajv/dist/vocabularies/dynamic/recursiveRef.js +10 -0
  408. package/node_modules/ajv/dist/vocabularies/dynamic/recursiveRef.js.map +1 -0
  409. package/node_modules/ajv/dist/vocabularies/errors.d.ts +9 -0
  410. package/node_modules/ajv/dist/vocabularies/errors.js +3 -0
  411. package/node_modules/ajv/dist/vocabularies/errors.js.map +1 -0
  412. package/node_modules/ajv/dist/vocabularies/format/format.d.ts +8 -0
  413. package/node_modules/ajv/dist/vocabularies/format/format.js +92 -0
  414. package/node_modules/ajv/dist/vocabularies/format/format.js.map +1 -0
  415. package/node_modules/ajv/dist/vocabularies/format/index.d.ts +3 -0
  416. package/node_modules/ajv/dist/vocabularies/format/index.js +6 -0
  417. package/node_modules/ajv/dist/vocabularies/format/index.js.map +1 -0
  418. package/node_modules/ajv/dist/vocabularies/jtd/discriminator.d.ts +6 -0
  419. package/node_modules/ajv/dist/vocabularies/jtd/discriminator.js +71 -0
  420. package/node_modules/ajv/dist/vocabularies/jtd/discriminator.js.map +1 -0
  421. package/node_modules/ajv/dist/vocabularies/jtd/elements.d.ts +5 -0
  422. package/node_modules/ajv/dist/vocabularies/jtd/elements.js +24 -0
  423. package/node_modules/ajv/dist/vocabularies/jtd/elements.js.map +1 -0
  424. package/node_modules/ajv/dist/vocabularies/jtd/enum.d.ts +6 -0
  425. package/node_modules/ajv/dist/vocabularies/jtd/enum.js +43 -0
  426. package/node_modules/ajv/dist/vocabularies/jtd/enum.js.map +1 -0
  427. package/node_modules/ajv/dist/vocabularies/jtd/error.d.ts +9 -0
  428. package/node_modules/ajv/dist/vocabularies/jtd/error.js +20 -0
  429. package/node_modules/ajv/dist/vocabularies/jtd/error.js.map +1 -0
  430. package/node_modules/ajv/dist/vocabularies/jtd/index.d.ts +10 -0
  431. package/node_modules/ajv/dist/vocabularies/jtd/index.js +29 -0
  432. package/node_modules/ajv/dist/vocabularies/jtd/index.js.map +1 -0
  433. package/node_modules/ajv/dist/vocabularies/jtd/metadata.d.ts +5 -0
  434. package/node_modules/ajv/dist/vocabularies/jtd/metadata.js +25 -0
  435. package/node_modules/ajv/dist/vocabularies/jtd/metadata.js.map +1 -0
  436. package/node_modules/ajv/dist/vocabularies/jtd/nullable.d.ts +4 -0
  437. package/node_modules/ajv/dist/vocabularies/jtd/nullable.js +22 -0
  438. package/node_modules/ajv/dist/vocabularies/jtd/nullable.js.map +1 -0
  439. package/node_modules/ajv/dist/vocabularies/jtd/optionalProperties.d.ts +3 -0
  440. package/node_modules/ajv/dist/vocabularies/jtd/optionalProperties.js +15 -0
  441. package/node_modules/ajv/dist/vocabularies/jtd/optionalProperties.js.map +1 -0
  442. package/node_modules/ajv/dist/vocabularies/jtd/properties.d.ts +22 -0
  443. package/node_modules/ajv/dist/vocabularies/jtd/properties.js +149 -0
  444. package/node_modules/ajv/dist/vocabularies/jtd/properties.js.map +1 -0
  445. package/node_modules/ajv/dist/vocabularies/jtd/ref.d.ts +4 -0
  446. package/node_modules/ajv/dist/vocabularies/jtd/ref.js +67 -0
  447. package/node_modules/ajv/dist/vocabularies/jtd/ref.js.map +1 -0
  448. package/node_modules/ajv/dist/vocabularies/jtd/type.d.ts +10 -0
  449. package/node_modules/ajv/dist/vocabularies/jtd/type.js +69 -0
  450. package/node_modules/ajv/dist/vocabularies/jtd/type.js.map +1 -0
  451. package/node_modules/ajv/dist/vocabularies/jtd/union.d.ts +3 -0
  452. package/node_modules/ajv/dist/vocabularies/jtd/union.js +12 -0
  453. package/node_modules/ajv/dist/vocabularies/jtd/union.js.map +1 -0
  454. package/node_modules/ajv/dist/vocabularies/jtd/values.d.ts +5 -0
  455. package/node_modules/ajv/dist/vocabularies/jtd/values.js +51 -0
  456. package/node_modules/ajv/dist/vocabularies/jtd/values.js.map +1 -0
  457. package/node_modules/ajv/dist/vocabularies/metadata.d.ts +3 -0
  458. package/node_modules/ajv/dist/vocabularies/metadata.js +18 -0
  459. package/node_modules/ajv/dist/vocabularies/metadata.js.map +1 -0
  460. package/node_modules/ajv/dist/vocabularies/next.d.ts +3 -0
  461. package/node_modules/ajv/dist/vocabularies/next.js +8 -0
  462. package/node_modules/ajv/dist/vocabularies/next.js.map +1 -0
  463. package/node_modules/ajv/dist/vocabularies/unevaluated/index.d.ts +3 -0
  464. package/node_modules/ajv/dist/vocabularies/unevaluated/index.js +7 -0
  465. package/node_modules/ajv/dist/vocabularies/unevaluated/index.js.map +1 -0
  466. package/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedItems.d.ts +6 -0
  467. package/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedItems.js +40 -0
  468. package/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedItems.js.map +1 -0
  469. package/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedProperties.d.ts +6 -0
  470. package/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedProperties.js +65 -0
  471. package/node_modules/ajv/dist/vocabularies/unevaluated/unevaluatedProperties.js.map +1 -0
  472. package/node_modules/ajv/dist/vocabularies/validation/const.d.ts +6 -0
  473. package/node_modules/ajv/dist/vocabularies/validation/const.js +25 -0
  474. package/node_modules/ajv/dist/vocabularies/validation/const.js.map +1 -0
  475. package/node_modules/ajv/dist/vocabularies/validation/dependentRequired.d.ts +5 -0
  476. package/node_modules/ajv/dist/vocabularies/validation/dependentRequired.js +12 -0
  477. package/node_modules/ajv/dist/vocabularies/validation/dependentRequired.js.map +1 -0
  478. package/node_modules/ajv/dist/vocabularies/validation/enum.d.ts +8 -0
  479. package/node_modules/ajv/dist/vocabularies/validation/enum.js +48 -0
  480. package/node_modules/ajv/dist/vocabularies/validation/enum.js.map +1 -0
  481. package/node_modules/ajv/dist/vocabularies/validation/index.d.ts +16 -0
  482. package/node_modules/ajv/dist/vocabularies/validation/index.js +33 -0
  483. package/node_modules/ajv/dist/vocabularies/validation/index.js.map +1 -0
  484. package/node_modules/ajv/dist/vocabularies/validation/limitContains.d.ts +3 -0
  485. package/node_modules/ajv/dist/vocabularies/validation/limitContains.js +15 -0
  486. package/node_modules/ajv/dist/vocabularies/validation/limitContains.js.map +1 -0
  487. package/node_modules/ajv/dist/vocabularies/validation/limitItems.d.ts +3 -0
  488. package/node_modules/ajv/dist/vocabularies/validation/limitItems.js +24 -0
  489. package/node_modules/ajv/dist/vocabularies/validation/limitItems.js.map +1 -0
  490. package/node_modules/ajv/dist/vocabularies/validation/limitLength.d.ts +3 -0
  491. package/node_modules/ajv/dist/vocabularies/validation/limitLength.js +27 -0
  492. package/node_modules/ajv/dist/vocabularies/validation/limitLength.js.map +1 -0
  493. package/node_modules/ajv/dist/vocabularies/validation/limitNumber.d.ts +11 -0
  494. package/node_modules/ajv/dist/vocabularies/validation/limitNumber.js +27 -0
  495. package/node_modules/ajv/dist/vocabularies/validation/limitNumber.js.map +1 -0
  496. package/node_modules/ajv/dist/vocabularies/validation/limitProperties.d.ts +3 -0
  497. package/node_modules/ajv/dist/vocabularies/validation/limitProperties.js +24 -0
  498. package/node_modules/ajv/dist/vocabularies/validation/limitProperties.js.map +1 -0
  499. package/node_modules/ajv/dist/vocabularies/validation/multipleOf.d.ts +8 -0
  500. package/node_modules/ajv/dist/vocabularies/validation/multipleOf.js +26 -0
  501. package/node_modules/ajv/dist/vocabularies/validation/multipleOf.js.map +1 -0
  502. package/node_modules/ajv/dist/vocabularies/validation/pattern.d.ts +8 -0
  503. package/node_modules/ajv/dist/vocabularies/validation/pattern.js +33 -0
  504. package/node_modules/ajv/dist/vocabularies/validation/pattern.js.map +1 -0
  505. package/node_modules/ajv/dist/vocabularies/validation/required.d.ts +8 -0
  506. package/node_modules/ajv/dist/vocabularies/validation/required.js +79 -0
  507. package/node_modules/ajv/dist/vocabularies/validation/required.js.map +1 -0
  508. package/node_modules/ajv/dist/vocabularies/validation/uniqueItems.d.ts +9 -0
  509. package/node_modules/ajv/dist/vocabularies/validation/uniqueItems.js +64 -0
  510. package/node_modules/ajv/dist/vocabularies/validation/uniqueItems.js.map +1 -0
  511. package/node_modules/ajv/lib/2019.ts +81 -0
  512. package/node_modules/ajv/lib/2020.ts +75 -0
  513. package/node_modules/ajv/lib/ajv.ts +70 -0
  514. package/node_modules/ajv/lib/compile/codegen/code.ts +169 -0
  515. package/node_modules/ajv/lib/compile/codegen/index.ts +852 -0
  516. package/node_modules/ajv/lib/compile/codegen/scope.ts +215 -0
  517. package/node_modules/ajv/lib/compile/errors.ts +184 -0
  518. package/node_modules/ajv/lib/compile/index.ts +324 -0
  519. package/node_modules/ajv/lib/compile/jtd/parse.ts +411 -0
  520. package/node_modules/ajv/lib/compile/jtd/serialize.ts +277 -0
  521. package/node_modules/ajv/lib/compile/jtd/types.ts +16 -0
  522. package/node_modules/ajv/lib/compile/names.ts +27 -0
  523. package/node_modules/ajv/lib/compile/ref_error.ts +13 -0
  524. package/node_modules/ajv/lib/compile/resolve.ts +149 -0
  525. package/node_modules/ajv/lib/compile/rules.ts +50 -0
  526. package/node_modules/ajv/lib/compile/util.ts +213 -0
  527. package/node_modules/ajv/lib/compile/validate/applicability.ts +22 -0
  528. package/node_modules/ajv/lib/compile/validate/boolSchema.ts +47 -0
  529. package/node_modules/ajv/lib/compile/validate/dataType.ts +230 -0
  530. package/node_modules/ajv/lib/compile/validate/defaults.ts +32 -0
  531. package/node_modules/ajv/lib/compile/validate/index.ts +582 -0
  532. package/node_modules/ajv/lib/compile/validate/keyword.ts +171 -0
  533. package/node_modules/ajv/lib/compile/validate/subschema.ts +135 -0
  534. package/node_modules/ajv/lib/core.ts +892 -0
  535. package/node_modules/ajv/lib/jtd.ts +132 -0
  536. package/node_modules/ajv/lib/refs/data.json +13 -0
  537. package/node_modules/ajv/lib/refs/json-schema-2019-09/index.ts +28 -0
  538. package/node_modules/ajv/lib/refs/json-schema-2019-09/meta/applicator.json +53 -0
  539. package/node_modules/ajv/lib/refs/json-schema-2019-09/meta/content.json +17 -0
  540. package/node_modules/ajv/lib/refs/json-schema-2019-09/meta/core.json +57 -0
  541. package/node_modules/ajv/lib/refs/json-schema-2019-09/meta/format.json +14 -0
  542. package/node_modules/ajv/lib/refs/json-schema-2019-09/meta/meta-data.json +37 -0
  543. package/node_modules/ajv/lib/refs/json-schema-2019-09/meta/validation.json +90 -0
  544. package/node_modules/ajv/lib/refs/json-schema-2019-09/schema.json +39 -0
  545. package/node_modules/ajv/lib/refs/json-schema-2020-12/index.ts +30 -0
  546. package/node_modules/ajv/lib/refs/json-schema-2020-12/meta/applicator.json +48 -0
  547. package/node_modules/ajv/lib/refs/json-schema-2020-12/meta/content.json +17 -0
  548. package/node_modules/ajv/lib/refs/json-schema-2020-12/meta/core.json +51 -0
  549. package/node_modules/ajv/lib/refs/json-schema-2020-12/meta/format-annotation.json +14 -0
  550. package/node_modules/ajv/lib/refs/json-schema-2020-12/meta/meta-data.json +37 -0
  551. package/node_modules/ajv/lib/refs/json-schema-2020-12/meta/unevaluated.json +15 -0
  552. package/node_modules/ajv/lib/refs/json-schema-2020-12/meta/validation.json +90 -0
  553. package/node_modules/ajv/lib/refs/json-schema-2020-12/schema.json +55 -0
  554. package/node_modules/ajv/lib/refs/json-schema-draft-06.json +137 -0
  555. package/node_modules/ajv/lib/refs/json-schema-draft-07.json +151 -0
  556. package/node_modules/ajv/lib/refs/json-schema-secure.json +88 -0
  557. package/node_modules/ajv/lib/refs/jtd-schema.ts +130 -0
  558. package/node_modules/ajv/lib/runtime/equal.ts +7 -0
  559. package/node_modules/ajv/lib/runtime/parseJson.ts +177 -0
  560. package/node_modules/ajv/lib/runtime/quote.ts +31 -0
  561. package/node_modules/ajv/lib/runtime/re2.ts +6 -0
  562. package/node_modules/ajv/lib/runtime/timestamp.ts +46 -0
  563. package/node_modules/ajv/lib/runtime/ucs2length.ts +20 -0
  564. package/node_modules/ajv/lib/runtime/uri.ts +6 -0
  565. package/node_modules/ajv/lib/runtime/validation_error.ts +13 -0
  566. package/node_modules/ajv/lib/standalone/index.ts +100 -0
  567. package/node_modules/ajv/lib/standalone/instance.ts +36 -0
  568. package/node_modules/ajv/lib/types/index.ts +244 -0
  569. package/node_modules/ajv/lib/types/json-schema.ts +187 -0
  570. package/node_modules/ajv/lib/types/jtd-schema.ts +273 -0
  571. package/node_modules/ajv/lib/vocabularies/applicator/additionalItems.ts +56 -0
  572. package/node_modules/ajv/lib/vocabularies/applicator/additionalProperties.ts +118 -0
  573. package/node_modules/ajv/lib/vocabularies/applicator/allOf.ts +22 -0
  574. package/node_modules/ajv/lib/vocabularies/applicator/anyOf.ts +14 -0
  575. package/node_modules/ajv/lib/vocabularies/applicator/contains.ts +109 -0
  576. package/node_modules/ajv/lib/vocabularies/applicator/dependencies.ts +112 -0
  577. package/node_modules/ajv/lib/vocabularies/applicator/dependentSchemas.ts +11 -0
  578. package/node_modules/ajv/lib/vocabularies/applicator/if.ts +80 -0
  579. package/node_modules/ajv/lib/vocabularies/applicator/index.ts +53 -0
  580. package/node_modules/ajv/lib/vocabularies/applicator/items.ts +59 -0
  581. package/node_modules/ajv/lib/vocabularies/applicator/items2020.ts +36 -0
  582. package/node_modules/ajv/lib/vocabularies/applicator/not.ts +38 -0
  583. package/node_modules/ajv/lib/vocabularies/applicator/oneOf.ts +82 -0
  584. package/node_modules/ajv/lib/vocabularies/applicator/patternProperties.ts +91 -0
  585. package/node_modules/ajv/lib/vocabularies/applicator/prefixItems.ts +12 -0
  586. package/node_modules/ajv/lib/vocabularies/applicator/properties.ts +57 -0
  587. package/node_modules/ajv/lib/vocabularies/applicator/propertyNames.ts +50 -0
  588. package/node_modules/ajv/lib/vocabularies/applicator/thenElse.ts +13 -0
  589. package/node_modules/ajv/lib/vocabularies/code.ts +168 -0
  590. package/node_modules/ajv/lib/vocabularies/core/id.ts +10 -0
  591. package/node_modules/ajv/lib/vocabularies/core/index.ts +16 -0
  592. package/node_modules/ajv/lib/vocabularies/core/ref.ts +129 -0
  593. package/node_modules/ajv/lib/vocabularies/discriminator/index.ts +113 -0
  594. package/node_modules/ajv/lib/vocabularies/discriminator/types.ts +12 -0
  595. package/node_modules/ajv/lib/vocabularies/draft2020.ts +23 -0
  596. package/node_modules/ajv/lib/vocabularies/draft7.ts +17 -0
  597. package/node_modules/ajv/lib/vocabularies/dynamic/dynamicAnchor.ts +31 -0
  598. package/node_modules/ajv/lib/vocabularies/dynamic/dynamicRef.ts +51 -0
  599. package/node_modules/ajv/lib/vocabularies/dynamic/index.ts +9 -0
  600. package/node_modules/ajv/lib/vocabularies/dynamic/recursiveAnchor.ts +14 -0
  601. package/node_modules/ajv/lib/vocabularies/dynamic/recursiveRef.ts +10 -0
  602. package/node_modules/ajv/lib/vocabularies/errors.ts +18 -0
  603. package/node_modules/ajv/lib/vocabularies/format/format.ts +120 -0
  604. package/node_modules/ajv/lib/vocabularies/format/index.ts +6 -0
  605. package/node_modules/ajv/lib/vocabularies/jtd/discriminator.ts +89 -0
  606. package/node_modules/ajv/lib/vocabularies/jtd/elements.ts +32 -0
  607. package/node_modules/ajv/lib/vocabularies/jtd/enum.ts +45 -0
  608. package/node_modules/ajv/lib/vocabularies/jtd/error.ts +23 -0
  609. package/node_modules/ajv/lib/vocabularies/jtd/index.ts +37 -0
  610. package/node_modules/ajv/lib/vocabularies/jtd/metadata.ts +24 -0
  611. package/node_modules/ajv/lib/vocabularies/jtd/nullable.ts +21 -0
  612. package/node_modules/ajv/lib/vocabularies/jtd/optionalProperties.ts +15 -0
  613. package/node_modules/ajv/lib/vocabularies/jtd/properties.ts +184 -0
  614. package/node_modules/ajv/lib/vocabularies/jtd/ref.ts +76 -0
  615. package/node_modules/ajv/lib/vocabularies/jtd/type.ts +75 -0
  616. package/node_modules/ajv/lib/vocabularies/jtd/union.ts +12 -0
  617. package/node_modules/ajv/lib/vocabularies/jtd/values.ts +58 -0
  618. package/node_modules/ajv/lib/vocabularies/metadata.ts +17 -0
  619. package/node_modules/ajv/lib/vocabularies/next.ts +8 -0
  620. package/node_modules/ajv/lib/vocabularies/unevaluated/index.ts +7 -0
  621. package/node_modules/ajv/lib/vocabularies/unevaluated/unevaluatedItems.ts +47 -0
  622. package/node_modules/ajv/lib/vocabularies/unevaluated/unevaluatedProperties.ts +85 -0
  623. package/node_modules/ajv/lib/vocabularies/validation/const.ts +28 -0
  624. package/node_modules/ajv/lib/vocabularies/validation/dependentRequired.ts +23 -0
  625. package/node_modules/ajv/lib/vocabularies/validation/enum.ts +54 -0
  626. package/node_modules/ajv/lib/vocabularies/validation/index.ts +49 -0
  627. package/node_modules/ajv/lib/vocabularies/validation/limitContains.ts +16 -0
  628. package/node_modules/ajv/lib/vocabularies/validation/limitItems.ts +26 -0
  629. package/node_modules/ajv/lib/vocabularies/validation/limitLength.ts +30 -0
  630. package/node_modules/ajv/lib/vocabularies/validation/limitNumber.ts +42 -0
  631. package/node_modules/ajv/lib/vocabularies/validation/limitProperties.ts +26 -0
  632. package/node_modules/ajv/lib/vocabularies/validation/multipleOf.ts +34 -0
  633. package/node_modules/ajv/lib/vocabularies/validation/pattern.ts +39 -0
  634. package/node_modules/ajv/lib/vocabularies/validation/required.ts +98 -0
  635. package/node_modules/ajv/lib/vocabularies/validation/uniqueItems.ts +79 -0
  636. package/node_modules/ajv/package.json +126 -0
  637. package/node_modules/fast-deep-equal/LICENSE +21 -0
  638. package/node_modules/fast-deep-equal/README.md +96 -0
  639. package/node_modules/fast-deep-equal/es6/index.d.ts +2 -0
  640. package/node_modules/fast-deep-equal/es6/index.js +72 -0
  641. package/node_modules/fast-deep-equal/es6/react.d.ts +2 -0
  642. package/node_modules/fast-deep-equal/es6/react.js +79 -0
  643. package/node_modules/fast-deep-equal/index.d.ts +4 -0
  644. package/node_modules/fast-deep-equal/index.js +46 -0
  645. package/node_modules/fast-deep-equal/package.json +61 -0
  646. package/node_modules/fast-deep-equal/react.d.ts +2 -0
  647. package/node_modules/fast-deep-equal/react.js +53 -0
  648. package/node_modules/fast-uri/.gitattributes +2 -0
  649. package/node_modules/fast-uri/.github/dependabot.yml +13 -0
  650. package/node_modules/fast-uri/.github/workflows/ci.yml +106 -0
  651. package/node_modules/fast-uri/.github/workflows/lock-threads.yml +19 -0
  652. package/node_modules/fast-uri/.github/workflows/package-manager-ci.yml +24 -0
  653. package/node_modules/fast-uri/LICENSE +30 -0
  654. package/node_modules/fast-uri/README.md +152 -0
  655. package/node_modules/fast-uri/benchmark/benchmark.mjs +159 -0
  656. package/node_modules/fast-uri/benchmark/equal.mjs +51 -0
  657. package/node_modules/fast-uri/benchmark/non-simple-domain.mjs +22 -0
  658. package/node_modules/fast-uri/benchmark/package.json +17 -0
  659. package/node_modules/fast-uri/benchmark/string-array-to-hex-stripped.mjs +24 -0
  660. package/node_modules/fast-uri/benchmark/ws-is-secure.mjs +65 -0
  661. package/node_modules/fast-uri/eslint.config.js +6 -0
  662. package/node_modules/fast-uri/index.js +406 -0
  663. package/node_modules/fast-uri/lib/schemes.js +267 -0
  664. package/node_modules/fast-uri/lib/utils.js +443 -0
  665. package/node_modules/fast-uri/package.json +68 -0
  666. package/node_modules/fast-uri/test/ajv.test.js +43 -0
  667. package/node_modules/fast-uri/test/equal.test.js +117 -0
  668. package/node_modules/fast-uri/test/fixtures/uri-js-parse.json +501 -0
  669. package/node_modules/fast-uri/test/fixtures/uri-js-serialize.json +120 -0
  670. package/node_modules/fast-uri/test/parse.test.js +323 -0
  671. package/node_modules/fast-uri/test/resolve.test.js +87 -0
  672. package/node_modules/fast-uri/test/rfc-3986.test.js +90 -0
  673. package/node_modules/fast-uri/test/security-normalization.test.js +39 -0
  674. package/node_modules/fast-uri/test/security.test.js +133 -0
  675. package/node_modules/fast-uri/test/serialize.test.js +151 -0
  676. package/node_modules/fast-uri/test/uri-js-compatibility.test.js +33 -0
  677. package/node_modules/fast-uri/test/uri-js.test.js +912 -0
  678. package/node_modules/fast-uri/test/util.test.js +38 -0
  679. package/node_modules/fast-uri/tsconfig.json +9 -0
  680. package/node_modules/fast-uri/types/index.d.ts +60 -0
  681. package/node_modules/fast-uri/types/index.test-d.ts +17 -0
  682. package/node_modules/json-schema-traverse/.eslintrc.yml +27 -0
  683. package/node_modules/json-schema-traverse/.github/FUNDING.yml +2 -0
  684. package/node_modules/json-schema-traverse/.github/workflows/build.yml +28 -0
  685. package/node_modules/json-schema-traverse/.github/workflows/publish.yml +27 -0
  686. package/node_modules/json-schema-traverse/LICENSE +21 -0
  687. package/node_modules/json-schema-traverse/README.md +95 -0
  688. package/node_modules/json-schema-traverse/index.d.ts +40 -0
  689. package/node_modules/json-schema-traverse/index.js +93 -0
  690. package/node_modules/json-schema-traverse/package.json +43 -0
  691. package/node_modules/json-schema-traverse/spec/.eslintrc.yml +6 -0
  692. package/node_modules/json-schema-traverse/spec/fixtures/schema.js +125 -0
  693. package/node_modules/json-schema-traverse/spec/index.spec.js +171 -0
  694. package/node_modules/require-from-string/index.js +34 -0
  695. package/node_modules/require-from-string/license +21 -0
  696. package/node_modules/require-from-string/package.json +28 -0
  697. package/node_modules/require-from-string/readme.md +56 -0
  698. package/package.json +51 -0
  699. package/scripts/api-call.mjs +59 -0
  700. package/scripts/auth.mjs +262 -0
  701. package/scripts/build-skill-payload.mjs +338 -0
  702. package/scripts/cleanup.mjs +166 -0
  703. package/scripts/install-paths.mjs +146 -0
  704. package/scripts/postinstall.mjs +218 -0
  705. package/scripts/postpack.mjs +43 -0
  706. package/scripts/prepack.mjs +222 -0
  707. package/scripts/tty-menu.mjs +100 -0
  708. package/skill/README.md +55 -0
  709. package/skill/SKILL.md +138 -0
  710. package/skill/catalog.json +406 -0
  711. package/skill/design-rules.md +282 -0
  712. package/skill/design-system.md +235 -0
  713. package/skill/docs/SKELETON-SHELL.md +120 -0
  714. package/skill/docs/bottom-buttons.md +155 -0
  715. package/skill/docs/control/button.md +147 -0
  716. package/skill/docs/control/calendar-navigator.md +143 -0
  717. package/skill/docs/control/calendar.md +128 -0
  718. package/skill/docs/control/check-box.md +117 -0
  719. package/skill/docs/control/combo.md +293 -0
  720. package/skill/docs/control/embed.md +211 -0
  721. package/skill/docs/control/image-box.md +237 -0
  722. package/skill/docs/control/input-date.md +175 -0
  723. package/skill/docs/control/input-file.md +192 -0
  724. package/skill/docs/control/input-mask.md +89 -0
  725. package/skill/docs/control/input-number.md +55 -0
  726. package/skill/docs/control/input-text.md +73 -0
  727. package/skill/docs/control/label.md +127 -0
  728. package/skill/docs/control/multi-input-box.md +51 -0
  729. package/skill/docs/control/radio-box.md +150 -0
  730. package/skill/docs/control/search.md +163 -0
  731. package/skill/docs/control/tab.md +240 -0
  732. package/skill/docs/control/tree.md +278 -0
  733. package/skill/docs/control.md +264 -0
  734. package/skill/docs/data-objects.md +278 -0
  735. package/skill/docs/data-sources.md +215 -0
  736. package/skill/docs/events.md +467 -0
  737. package/skill/docs/group.md +146 -0
  738. package/skill/docs/index.json +125 -0
  739. package/skill/docs/mockup-data.md +186 -0
  740. package/skill/docs/node.md +32 -0
  741. package/skill/docs/scenario.md +112 -0
  742. package/skill/docs/service/CustomSystem.md +139 -0
  743. package/skill/docs/service/Firestore.md +125 -0
  744. package/skill/docs/service/FlexAutoQuery.md +128 -0
  745. package/skill/docs/service/FlexSQL.md +96 -0
  746. package/skill/docs/service/Flextudio API.md +161 -0
  747. package/skill/docs/service/Flextudio.md +87 -0
  748. package/skill/docs/service/GoogleSheet.md +71 -0
  749. package/skill/docs/service/README.md +127 -0
  750. package/skill/docs/service/ksystem.md +76 -0
  751. package/skill/docs/service-binding.md +228 -0
  752. package/skill/docs/step.md +546 -0
  753. package/skill/docs/style-objects.md +183 -0
  754. package/skill/examples/README.md +147 -0
  755. package/skill/examples/basic/basic-list-detail.json +2521 -0
  756. package/skill/examples/basic/delivery-address-popup.json +2175 -0
  757. package/skill/examples/basic/fixedtop-floating-form.json +1524 -0
  758. package/skill/examples/basic/search-period-popup.json +1524 -0
  759. package/skill/examples/design/booking-wizard-3step.json +1335 -0
  760. package/skill/examples/design/list-detail-form-3step.json +1516 -0
  761. package/skill/examples/design/list-filter-2step.json +1365 -0
  762. package/skill/examples/design/list-filter-detail-3step.json +1570 -0
  763. package/skill/examples/design/result-entry-wizard-4step.json +1861 -0
  764. package/skill/examples/index.json +150 -0
  765. package/skill/examples/intent/mock-employee-list.json +54 -0
  766. package/skill/examples/intent/script-cart-flow.json +96 -0
  767. package/skill/examples/intent/script-dialog-confirm.json +61 -0
  768. package/skill/intent-rules.md +552 -0
  769. package/skill/intent-system.md +118 -0
  770. package/skill/patterns/atom/badge.json +103 -0
  771. package/skill/patterns/atom/button.json +111 -0
  772. package/skill/patterns/atom/checkbox.json +70 -0
  773. package/skill/patterns/atom/segmented-radio.json +92 -0
  774. package/skill/patterns/atom/switch.json +57 -0
  775. package/skill/patterns/index.json +471 -0
  776. package/skill/patterns/molecule/checklist.json +107 -0
  777. package/skill/patterns/molecule/input-action.json +355 -0
  778. package/skill/patterns/molecule/input-button.json +212 -0
  779. package/skill/patterns/molecule/input-pair.json +284 -0
  780. package/skill/references/build-sequence.md +55 -0
  781. package/skill/references/patterns-cheatsheet.md +87 -0
  782. package/skill/references/spec-evolve/README.md +43 -0
  783. package/skill/references/spec-evolve/conventions.md +92 -0
  784. package/skill/references/spec-evolve/data-connection.md +102 -0
  785. package/skill/references/spec-evolve/intake.md +41 -0
  786. package/skill/references/spec-evolve/key-roles.md +44 -0
  787. package/skill/references/spec-evolve/lint.md +27 -0
  788. package/skill/references/spec-evolve/mockup.md +50 -0
  789. package/skill/references/spec-evolve/query-screens.md +66 -0
  790. package/skill/references/spec-evolve/routing.md +43 -0
  791. package/skill/references/spec-evolve/spec-format.md +76 -0
  792. package/skill/references/spec-evolve/templates/master-detail.spec.md +97 -0
  793. package/skill/references/spec-evolve/templates/query-screen.spec.md +96 -0
  794. package/skill/references/spec-evolve/templates/static-prototype.spec.md +54 -0
  795. package/skill/references/spec-evolve/templates-index.json +26 -0
  796. package/skill/rules.md +400 -0
  797. package/skill/schemas/bottom-buttons.schema.json +134 -0
  798. package/skill/schemas/control/_base.schema.json +1296 -0
  799. package/skill/schemas/control/button.schema.json +55 -0
  800. package/skill/schemas/control/calendar-navigator.schema.json +164 -0
  801. package/skill/schemas/control/calendar.schema.json +18 -0
  802. package/skill/schemas/control/check-box.schema.json +41 -0
  803. package/skill/schemas/control/combo.schema.json +23 -0
  804. package/skill/schemas/control/embed.schema.json +30 -0
  805. package/skill/schemas/control/image-box.schema.json +49 -0
  806. package/skill/schemas/control/input-date.schema.json +27 -0
  807. package/skill/schemas/control/input-file.schema.json +139 -0
  808. package/skill/schemas/control/input-mask.schema.json +45 -0
  809. package/skill/schemas/control/input-number.schema.json +24 -0
  810. package/skill/schemas/control/input-text.schema.json +24 -0
  811. package/skill/schemas/control/label.schema.json +113 -0
  812. package/skill/schemas/control/multi-input-box.schema.json +19 -0
  813. package/skill/schemas/control/other.schema.json +24 -0
  814. package/skill/schemas/control/radio-box.schema.json +87 -0
  815. package/skill/schemas/control/search.schema.json +23 -0
  816. package/skill/schemas/control/tab.schema.json +112 -0
  817. package/skill/schemas/control/tree.schema.json +83 -0
  818. package/skill/schemas/control.schema.json +30 -0
  819. package/skill/schemas/data-objects.schema.json +161 -0
  820. package/skill/schemas/data-sources.schema.json +184 -0
  821. package/skill/schemas/design-system/design.schema.json +496 -0
  822. package/skill/schemas/events.schema.json +272 -0
  823. package/skill/schemas/group.schema.json +133 -0
  824. package/skill/schemas/index.json +362 -0
  825. package/skill/schemas/naming-objects.schema.json +133 -0
  826. package/skill/schemas/node.schema.json +24 -0
  827. package/skill/schemas/patterns/atom/badge.schema.json +44 -0
  828. package/skill/schemas/patterns/atom/button.schema.json +70 -0
  829. package/skill/schemas/patterns/atom/checkbox.schema.json +39 -0
  830. package/skill/schemas/patterns/atom/segmented-radio.schema.json +49 -0
  831. package/skill/schemas/patterns/atom/switch.schema.json +27 -0
  832. package/skill/schemas/patterns/molecule/checklist.schema.json +63 -0
  833. package/skill/schemas/patterns/molecule/input-action.schema.json +251 -0
  834. package/skill/schemas/patterns/molecule/input-button.schema.json +141 -0
  835. package/skill/schemas/patterns/molecule/input-pair.schema.json +210 -0
  836. package/skill/schemas/scenario.schema.json +161 -0
  837. package/skill/schemas/service/CustomSystem.schema.json +41 -0
  838. package/skill/schemas/service/Firestore.schema.json +28 -0
  839. package/skill/schemas/service/FlexAutoQuery.schema.json +35 -0
  840. package/skill/schemas/service/FlexSQL.schema.json +33 -0
  841. package/skill/schemas/service/Flextudio API.schema.json +115 -0
  842. package/skill/schemas/service/Flextudio.schema.json +26 -0
  843. package/skill/schemas/service/GoogleSheet.schema.json +31 -0
  844. package/skill/schemas/service/_base.schema.json +31 -0
  845. package/skill/schemas/service/ksystem.schema.json +36 -0
  846. package/skill/schemas/service-binding.schema.json +51 -0
  847. package/skill/schemas/step.schema.json +258 -0
  848. package/skill/schemas/style-objects.schema.json +155 -0
  849. package/skill/skill-guides/README.md +50 -0
  850. package/skill/skill-guides/control-options.md +126 -0
  851. package/skill/skill-guides/events.md +61 -0
  852. package/skill/skill-guides/failure-discipline.md +95 -0
  853. package/skill/skill-guides/index.json +40 -0
  854. package/skill/skill-guides/prompt-interview.md +92 -0
  855. package/skill/skill-guides/scripts.md +169 -0
  856. package/skill/skill-guides/step-navigation.md +98 -0
@@ -0,0 +1,126 @@
1
+ # Control Options — 컨트롤별 옵션 매트릭스
2
+
3
+ > 어떤 컨트롤에 어떤 옵션 키가 허용되는가.
4
+ >
5
+ > 진실원본: [schema/v1/control/*.schema.json](../schema/v1/control/), [_base.schema.json](../schema/v1/control/_base.schema.json), [design.schema.json](../schema/v1/design-system/design.schema.json).
6
+
7
+ ## ★ 데이터 바인딩 3종 세트 (생성 전 필수 — 가장 자주 빠뜨림)
8
+
9
+ > 입력/선택 컨트롤이 **값을 저장하거나(`Ckeys`/`SaveValueKey`) 외부 선택지를 쓰면(`DataSourceName`)**, 아래 셋이 **항상 함께** 있어야 한다. 하나라도 빠지면 cross-check 가 막고, 값이 데이터 의존이라 **자동 보정되지 않는다** — 생성 시 직접 채운다. (자가 검증에서 가장 흔히 깨지는 지점. 단순 프로토타입이면 [데이터연결 없이 화면만](#데이터연결-없이-화면만-프로토타입) 참조.)
10
+
11
+ 1. **조상 Group 의 데이터연결** — 컨트롤을 감싸는 Group(또는 상위 Group) 에 `"UseDataConnection": true` + `DataConnection` 객체.
12
+ - 없으면 → `[bind]` "uses SaveValueKey but no ancestor Group has UseDataConnection:true + DataConnection".
13
+ 2. **`scenario.DataSources` 에 sample 정의** — `DataSourceName` 으로 참조한 **그 이름의 키를 `scenario.DataSources` 에 `Fixed` 또는 `Grid` 로 반드시 생성**. 참조만 하고 정의를 빠뜨리지 않는다.
14
+ - 미정의 참조 → `[dsref]` "DataSourceName='X' is not defined in scenario.DataSources".
15
+ - `SaveValueKey` 를 쓰는데 `scenario.DataSources` 가 통째로 비어있음 → `[proto]` "scenario.DataSources is empty".
16
+ - 운영 타입(`Collection`/`Service`/`API`) 금지 — AI 샘플은 `Fixed`/`Grid` 만 ([data-sources.md](../schema/v1/data-sources.md)).
17
+ 3. **컨트롤 측 키** — 저장/표시/매핑 키를 컨트롤에 채운다.
18
+ - 입력(InputText/Number/…): `Ckeys` / `SaveValueKey`.
19
+ - 선택(Combo/Search/RadioBox/Tree): `DataSourceName` + 자식의 `DataSourceName` + `CollectionMapper` (UseDataSource:true 면 필수).
20
+ - 날짜(Calendar): `SelectType` 별 페어객체(`SingleDate` / `StartDate`+`EndDate`) 의 **`Ckeys` 를 1개 이상** 채움 — 데이터연결 컨텍스트에서 빈 배열 `[]` 은 `[date]` "must NOT have fewer than 1 items". (비연결이면 `[]` 허용, 단 페어객체 자체는 항상 둘 것.)
21
+
22
+ **증상 → 빠뜨린 것 빠른 표**
23
+
24
+ | validate cross-check | 빠뜨린 것 | 고치기 |
25
+ |---|---|---|
26
+ | `[bind]` | 조상 Group `UseDataConnection`/`DataConnection` | Group 에 데이터연결 부여 (1번) |
27
+ | `[dsref]` `is not defined` | `DataSources` 에 그 이름 정의 | 동일 이름 `Fixed`/`Grid` 추가 (2번) |
28
+ | `[proto]` `DataSources is empty` | `DataSources` 자체 | 최소 1개 `Fixed`/`Grid` 추가 (2번) |
29
+ | `[date]` `fewer than 1 items` | 페어객체 `.Ckeys` 비어있음 | `Ckeys: ["..."]` 채움 (3번) |
30
+ | `must have required property 'DataSourceName'` | 자식 ComboList/List 의 `DataSourceName` | 자식에 추가 ([combo](../schema/v1/control/combo.md)/[search](../schema/v1/control/search.md)) |
31
+
32
+ > ★ **빈 껍데기 컨트롤 금지 (조회 화면).** 조회 화면은 검색조건 Search/Combo 를 여럿 둔다. 각 컨트롤을 `ControlType` 만 있는 골격으로 두면 위 누락들이 **컨트롤 수만큼 곱으로 폭증**한다(Search N개 → ≈4N 에러). **하나를 끝까지 완결한 뒤 복제**하라. materialize 자동 보정은 *본체에 일부 정보가 있을 때만* 작동하고, 정보가 통째로 빈 컨트롤은 손대지 못한다.
33
+
34
+ > **materialize 가 자동 정규화하는 항목 (직접 신경 안 써도 흡수됨)** — Calendar `SelectType` 어휘(`One`→`SingleDate`), `ScenarioTitle`→`""`, BottomButton 잉여 토글(`UseEvents`/`UseClickEvent`)·`MoveTo='Prev'`→빈 `Prev`·`Next` 슬롯 객체→`""`·`design` expand, Combo 본체→자식 `DataSourceName` 동기화(★ `Ckeys` 는 자식 ComboList/List 에만 두고 본체엔 두지 않음 — `[combo-body-ckeys]`), `DataConnection` shape, `AllowExtensions` 문자열, boolean 문자열. **단 위는 "정보가 있을 때 형태만" 교정** — 없는 데이터(`DataSources` 정의, `CollectionMapper` 매핑값, Search 자식 `DataSourceName`)는 직접 채워야 한다.
35
+
36
+ ### 데이터연결 없이 화면만 (프로토타입)
37
+
38
+ 저장 의도가 없는 순수 표시/레이아웃이면 데이터연결을 만들지 않는다 — 단 **그 Group 에 `"UseDataConnection": false` 를 명시**하고, 컨트롤에서 `SaveValueKey`/`Ckeys`/`DataSourceName` 을 두지 않는다. (Calendar 등 페어객체는 두되 `Ckeys: []`.)
39
+
40
+ ## 모든 컨트롤이 공유 — `controlBase`
41
+
42
+ `Id` / `ControlType` / `Caption` / `Width` / `Height` / `Padding` / `Margin` / `Ckeys` / `Events` / `DataConnection` / `Maxlength` / `Placeholder` / `DefaultValue` / `design`
43
+
44
+ ## Input 계열이 추가로 공유 — `inputBase`
45
+
46
+ `InputText` / `InputNumber` / `InputMask` / `InputDate` / `MultiInputBox` / `Combo` / `Search` / `RadioBox` / `CheckBox`:
47
+
48
+ `CtrlDisplayCkey` / `DisplayValue` / `DisplayType` / `UseValidate` / `UseCondition` / `UseEvents`
49
+
50
+ ## 컨트롤별 고유 옵션
51
+
52
+ ### 입력 — text/number/mask/date
53
+
54
+ | 컨트롤 | 고유 옵션 |
55
+ |---|---|
56
+ | `InputText` | `InputType` |
57
+ | `InputNumber` | `InputType` |
58
+ | `InputMask` | `InputType`, `MaskType`, `UseNumberOnly`, `UseFixedDecimalPlaces`, `DecimalPlaces`, `RoundingMode` |
59
+ | `InputDate` | `DateFormat`, `Dialog` |
60
+ | `MultiInputBox` | — |
61
+
62
+ ### 선택 — combo/search/radio/check
63
+
64
+ | 컨트롤 | 고유 옵션 |
65
+ |---|---|
66
+ | `Combo` | `DataSourceName`, `Dialog` |
67
+ | `Search` | `DisplayValue`, `Dialog` |
68
+ | `RadioBox` | `Items`, `DataSourceName`, `Direction`, `CategoryName`, `UseDataSource`, `UseCategory`, `UseAlignRight`, `UseDefaultValue`, `UseItemDesign`, `ItemBgStyle`, `ItemDesign`, `SaveNameKey` / `SaveNameName` / `SaveValueKey`, `UniqueKey`, `CollectionMapper`, `AfterScript` |
69
+ | `CheckBox` | `CheckBoxType`, `Items`, `SaveValueKey`, `UseAlignRight`, `UseTriming`, `ItemBgStyle` |
70
+
71
+ ### 표시 — label/image/button
72
+
73
+ | 컨트롤 | 고유 옵션 |
74
+ |---|---|
75
+ | `Label` | `LabelCKey`, `LabelType`, `labeltext`, `ImageStyle`, `MoveStepOrder`, `MoveSteps`, `UseMove`, `UseClickEvent`, `UseFullShape`, `UseTriming`, `TooltipCKey`, `TooltipText`, `TooltipType` |
76
+ | `ImageBox` | `ImageBoxType`, `DefaultViewGroup`, `EditGroup`, `ViewGroup`, `UseDefaultValue`, `UseMultiData` |
77
+ | `Button` | `ButtonName`, `ButtonValue`, `ButtonValueCKey`, `ImageStyle`, `UseClickEvent` |
78
+
79
+ ### 복합 — tab/tree/embed/calendar/calendar-navigator/input-file
80
+
81
+ | 컨트롤 | 고유 옵션 |
82
+ |---|---|
83
+ | `Tab` | `TabHeader`, `TabHeaderItem`, `SelectTabHeader`, `SelectTabHeaderItem`, `ArrangeItems`, `ArrangeItemsStyle`, `Items`, `ItemName`, `ItemValue`, `LinkedStepId`, `Click` |
84
+ | `Tree` | `CategoryName`, `DataSourceName`, `CollectionMapper`, `MapperOrder`, `TreeType`, `NodeId`, `ParentId`, `Title`, `SubTitle`, `Icon`, `SubIcon`, `ThumbNail`, `DCLinkCkey`, `UseDCLink`, `UseExpandAll`, `UseMultiData`, `UseParentAutoSelect`, `UseSearchBar`, `UseSelectAllData` |
85
+ | `Embed` | `Embed` |
86
+ | `Calendar` | `CalendarType`, `SelectType`, `DayDsKey` |
87
+ | `CalendarNavigator` | `NavigatorType`, `NavigatorDateFormat`, `SingleDate`, `StartDate`, `EndDate`, `SelectDay`, `DayArea`, `DayDsKey`, `DaySetting`, `TypeDsKey`, `UseDayArea`, `UseDaySelector`, `UseDaySetting`, `UseTimeTable`, `UseDataConnection`, `OnChangeSwipe`, `ClickPrevNextBtn`, `CalendarNaviEventsOrder` |
88
+ | `InputFile` | `Title`, `Description`, `Limit`, `AllowExtensions`, `Directory`, `FileName`, `FolderRoute`, `FlexKey`, `Module`, `Const`, `Attributes`, `SharedTarget`, `InnerCKey`, `ckey`, `CategoryName`, `UseCategory`, `UseClickdownload` |
89
+
90
+ ## 자주 헷갈리는 매핑
91
+
92
+ | 의도 | 정답 |
93
+ |---|---|
94
+ | 1000단위 콤마 (금액) | `InputMask` + `InputType:"money"` + `MaskType:"Money"` (★대소문자 정확히 — `money`/`time` 아님; InputType↔MaskType 짝: hhmm↔Time, money↔Money, yyyymmdd↔Date, phone↔Phone) |
95
+ | 라벨 표시 종류 (`LabelType`) | 정적 문구 → `LabelType:"labeltext"` + `labeltext:"값"` / 카테고리 필드값 표시 → `LabelType:"LabelCKey"` + `LabelCKey:"키"`. **임의값 금지** (`ckey`/`labelvalue` 등 — 정확값은 `labeltext` 또는 `LabelCKey` 둘뿐) |
96
+ | 버튼 클릭 이벤트 | `BottomButton` → `Events:{ "Click":"<핸들러>" }` (★`Events` 안에 — top-level `Click` 아님; 값=`scenario.Events` 핸들러 이름). Step 이동은 `MoveTo:"Next"` + `Next:{ "MoveStepOrder":["StepN"] }` (또는 `Prev`). `Button` 컨트롤 → `UseClickEvent:true` + `Events.Click`. **금지**: top-level `Click`, `ClickEvent`/`SubmitEvent` 임의 키, BottomButton 에 `UseClickEvent` |
97
+ | Step 이벤트 키 (`Step.Events`) | 허용 키만: `Init`/`Loaded`/`OnBackLoaded`/`OnLeave`/`OnForeground`/`ScrollEnd` (+`StepEventOrder`). 값은 `scenario.Events` 핸들러 **이름(문자열)** — 임의 키(`SubmitEvent` 등)나 인라인 액션 배열 금지(핸들러 본문은 `scenario.Events` 에) |
98
+ | 파일 첨부 (`InputFile`) | `Module` **필수**(기본 `"FlexFile"`; 5종 enum) + Module별 `Attributes` shape (상세 `docs/control/input-file.md`). `AllowExtensions` 는 소문자 확장자 **배열** `["jpg","pdf"]` (콤마 문자열 아님) |
99
+ | 날짜 입력 | `InputDate` + `DateFormat` |
100
+ | 라벨 문자열 | 컨트롤 본체의 `Caption` |
101
+ | 라벨 글자 크기 | `design.caption.text` |
102
+ | Group vs Control 분리 | Group 의 `Contents` 배열 아이템 = Control 노드 |
103
+ | 이벤트 핸들러 본문 | `scenario.Events` 에 정의 |
104
+ | 비연결 Group 명시 | 모든 Group 에 `UseDataConnection: false` 도 명시(생략 금지, `[group-dc]`) → 상세 `group.md` "함정" |
105
+ | 날짜 캘린더 Ckeys | 아래 "Calendar — SelectType / Ckeys 결정표" 참조 (페어 객체는 항상, `Ckeys` 채움만 조건부) |
106
+
107
+ ## Calendar — SelectType / 페어객체 / Ckeys / 데이터연결 결정표
108
+
109
+ `Calendar`(InputDate 자식 또는 단독)의 `SelectType` 별 필수 구조. **페어 객체(`SingleDate`/`StartDate`/`EndDate`)는 항상 필수이고, `Ckeys` 를 채우느냐만 데이터연결 컨텍스트에 따라 갈린다** (`[date]` cross-check = `core/validators.mjs` checkInputDateConsistency).
110
+
111
+ | SelectType | 필수 페어 객체 | Ckeys — 조상 Group `UseDataConnection:true` | Ckeys — 비연결(프로토타이핑) |
112
+ |---|---|---|---|
113
+ | `SingleDate` | `SingleDate` (항상) | `["..."]` 1개 이상 필수 | `[]` 허용 |
114
+ | `FromTo` (dayCalendar 전용) | `StartDate` + `EndDate` (둘 다 항상) | 각 `["..."]` 1개 이상 | 각 `[]` 허용 |
115
+
116
+ - `monthCalendar` / `yearCalendar` → `SelectType` 은 `SingleDate` 만.
117
+ - `SingleDate: {}` 빈 객체 금지 — `Ckeys` 키는 항상 두되 값만 `[]` / `["..."]` (런타임 `dlgJson.SingleDate.Ckeys` 접근 안전).
118
+ - 상세: `schema/v1/control/calendar.md`, `schema/v1/control/input-date.md`.
119
+
120
+ ## Combo / Search / InputDate 의 Dialog 호스트
121
+
122
+ | 본체 | Dialog 자식 |
123
+ |---|---|
124
+ | `Combo` | `ComboList` |
125
+ | `Search` | `List` |
126
+ | `InputDate` | `Calendar` |
@@ -0,0 +1,61 @@
1
+ # 이벤트(Events) 가이드
2
+
3
+ > 핸들러가 어떻게 정의·연결·실행되는지, 그리고 더 깔끔하게 구성하는 법.
4
+ > 진실원본: [schema/v1/events.md](../schema/v1/events.md) · [core/validators.mjs](../core/validators.mjs)
5
+
6
+ ## 개념 — 이벤트가 동작하는 방식
7
+
8
+ 이벤트는 세 부분으로 나뉜다.
9
+
10
+ 1. **핸들러 맵** — `scenario.Events` 는 `이름 → Action 배열` 맵이다. Action 은 위에서
11
+ 아래로 순차 실행된다.
12
+ 2. **호출자 연결** — Step/Group/Control/BottomButton 이 자신의 `Events.<eventKey>` 값에
13
+ 핸들러 이름을 적어 연결한다.
14
+ 3. **실행 등록** — 호출자의 `*EventOrder` 배열(`StepEventOrder`, `ComboOrder` …)에 올라간
15
+ 이벤트만 실제로 호출된다. 정의만 하고 EventOrder 에 없으면 동작하지 않는다.
16
+
17
+ ```jsonc
18
+ "Events": {
19
+ "Init": [ { "Action": "Script", "Script": "Current.step.set('UserName', '홍길동');" } ],
20
+ "getList": [ { "Action": "Script", "Script": "f.Content('f_3').reload();" } ]
21
+ }
22
+ // 호출자 — EventOrder 에 등록해야 실제 호출됨
23
+ "Steps": { "Step1": { "StepEventOrder": ["Init"], "Events": { "Init": "Init", "Loaded": "getList" } } }
24
+ ```
25
+
26
+ ## 권장 방식 — 기본적으로 이렇게
27
+
28
+ - **Action 은 `Script` 또는 `LinkedEvent` 만** 쓴다. 서버 호출(`Service`/`API`)은 운영 단계에서
29
+ 사용자가 추가한다 — 생성 단계에서는 화면 동작과 샘플 데이터만 표현한다.
30
+ - **Script 본문은 JSON 문자열 한 줄**로 박고 줄바꿈은 `\n` 이스케이프로 표현한다.
31
+ JS `+` 연결이나 raw newline 은 파싱을 깨뜨린다.
32
+ - ✓ `"Script": "if (cond) return;\nf.Content('f_3').reload();"`
33
+ - **핸들러 이름은 영문**(`^[A-Za-z_][A-Za-z0-9_.]*$`). 한국어·공백·하이픈은 쓰지 않는다.
34
+ - **Combo / Search / InputDate 의 이벤트는 자식 Dialog 안**(`Dialog.Layouts[0].Controls[0]`)에
35
+ 둔다. 본체(root)에 `Events`/`UseEvents` 를 붙이지 않는다.
36
+
37
+ ## 더 좋게 — 한 단계 끌어올리는 법
38
+
39
+ - **핸들러를 작게 쪼개고 `LinkedEvent` 로 조합한다.** 한 핸들러에 모든 로직을 몰아넣기보다
40
+ `validate → save → reloadList` 처럼 의미 단위로 나누면 재사용·가독성이 올라간다.
41
+
42
+ ```jsonc
43
+ "userCheck": [
44
+ { "Action": "Script", "Script": "if (f.Setting.UserId === '') return;" },
45
+ { "Action": "LinkedEvent", "EventName": "getList" }
46
+ ]
47
+ ```
48
+ - **이름으로 의도를 드러낸다.** `e1`·`onClick2` 대신 `SaveBookingEvent`·`reloadOrderList` 처럼
49
+ 무엇을 하는지 이름만 봐도 읽히게 짓는다.
50
+ - **EventOrder 를 흐름 문서처럼 쓴다.** `["Init", "Loaded"]` 순서가 곧 화면 생애주기다 —
51
+ 순서를 읽으면 동작이 보이도록 정렬한다.
52
+ - **데이터 갱신은 범위를 최소로.** 전체 Step reload(`Current.step.reload()`)보다 영향받는
53
+ 그룹만 `f.Content('f_3').reload()` 로 갱신하면 깜빡임과 비용이 준다.
54
+
55
+ ## 자주 틀리는 점 — 짧은 체크리스트
56
+
57
+ - [ ] 핸들러를 만들었는데 `*EventOrder` 에 안 넣음 → 호출 안 됨
58
+ - [ ] `Events.<key>` / `LinkedEvent.EventName` 값이 `scenario.Events` 키와 불일치(오타) → `[event-ref]`
59
+ - [ ] Combo/Search/InputDate **본체**에 이벤트 부착 → `[event]`
60
+ - [ ] Action 에 `Service`/`API` 사용 → 생성 금지(`[no-service]`)
61
+ - [ ] Script 를 `+` 연결/여러 줄로 작성 → 파싱 실패
@@ -0,0 +1,95 @@
1
+ # Failure Discipline
2
+
3
+ This file extends `SKILL.md` for the validate-failure path. Where
4
+ `output-discipline` covers the emit step after `validate` returns `ok:true`,
5
+ this file covers what happens when it returns `ok:false` — or returns
6
+ something you did not expect. The failure mode here is not a broken delivery;
7
+ it is wasted cycles chasing the wrong cause.
8
+
9
+ ## The prior
10
+
11
+ **`ok:false` means your input is wrong, not the tool.** The schema is ground
12
+ truth. `flex-scenario`, `ajv`, and the schema compiler are not under
13
+ suspicion. Start every recovery from "the JSON I generated violates the
14
+ contract" and stay there until the report proves otherwise.
15
+
16
+ **A tool-bug hypothesis is the last resort, never the first.** "Maybe ajv
17
+ mishandles cross-document `$ref`," "maybe `unevaluatedProperties` is a known
18
+ limitation," "maybe the spec is ambiguous" — these are the most expensive and
19
+ least likely explanations. If one forms, it is a signal that the prior has
20
+ flipped. Re-suspect the input before opening any `node_module`.
21
+
22
+ **Surprising output is still your output.** A materialized result that looks
23
+ wrong, a fragment validation that comes back empty, a count you did not
24
+ expect — treat it as a fact about what you produced, not a fault in the
25
+ reporter.
26
+
27
+ ## Reading the report
28
+
29
+ **`errorCount` is volume, not severity.** One violation can emit hundreds of
30
+ errors. A report of hundreds errors is not the problems — it is usually one cause
31
+ plus its cascade. Never let the headline number set the response.
32
+
33
+ **Group by `kind` first, then read `schema`-kind from the deepest
34
+ `instancePath` up.** The `schema` errors point at concrete contract
35
+ violations (`must have required property 'X'`, `must match "then" schema`,
36
+ `must be equal to constant`). The deepest path is closest to the real cause;
37
+ shallower errors are usually consequences of it.
38
+
39
+ **Treat `strict-fields` / `unevaluatedProperties` as derivative.** When a
40
+ `oneOf` fails to resolve a branch, the strict variant flags *every* field —
41
+ including valid ones like `ControlType` — as undefined. These are cascade
42
+ noise, not the cause. Read them last, or not at all, until the `schema`
43
+ errors are resolved.
44
+
45
+ **A control that fails every branch failed the branch it was trying to be.**
46
+ A node with `ControlType: "InputDate"` reporting `missing 'ContentsType'`
47
+ (the Group branch) and `must be equal to constant` ×18 (the other control
48
+ branches) is one failure refracted through the discriminator. Read only the
49
+ InputDate branch's `schema` errors; discard the other branches' output.
50
+
51
+ ## Diagnose before editing
52
+
53
+ **Read the actual cause before changing a byte.** No structural rewrite
54
+ precedes diagnosis. "Rewrite it to match a known-good example" before knowing
55
+ what failed produces the same failure with new line numbers.
56
+
57
+ **Cheapest test first.** Before opening `validators.mjs`, `schemas.mjs`, or
58
+ any validator internal: key-diff your failing node against the nearest passing
59
+ example in `examples/`. The difference is almost always one field, and the
60
+ diff finds it faster than reading the engine that reports it.
61
+
62
+ ## One change, re-validate
63
+
64
+ **One minimal edit at the deepest violation, then re-run.** Fix the single
65
+ `schema` error closest to the leaf, re-validate, re-read. Do not batch fixes
66
+ or rewrite a whole control — batching destroys the mapping between a change
67
+ and its effect, and a rewrite reintroduces causes you already cleared.
68
+
69
+ ## Recovery cues
70
+
71
+ The following are drift signals — when any appears, stop the current line of
72
+ investigation and return to the prior.
73
+
74
+ **About to hypothesize a bug in `ajv`, `flex-scenario`, or the schema
75
+ compiler.** The prior has flipped. Re-suspect your input. The cause is in the
76
+ report, not the engine.
77
+
78
+ **About to open `validators.mjs`, `schemas.mjs`, or a file under
79
+ `node_modules/`.** Did you read the `schema`-kind errors at the deepest
80
+ `instancePath` first? The validator internals explain *why noise is emitted*;
81
+ they do not contain the fix. The fix is the one contract violation that
82
+ triggered the cascade.
83
+
84
+ **The error count is large and urgency rises.** Count is cascade volume.
85
+ Collapse the `strict-fields` errors, find the handful of `schema` errors,
86
+ work the deepest one. Panic scales with the number; the work does not.
87
+
88
+ **About to rewrite a whole control, group, or step.** You have not isolated a
89
+ single cause. Narrow to one `instancePath`, fix that, re-validate. Rewriting
90
+ is diagnosis avoidance.
91
+
92
+ **The thought "I'm going in circles" appears.** That *is* the signal — not a
93
+ prompt to theorize harder. Stop. Either run a key-diff against a passing
94
+ example, or make the single deepest-error edit and re-validate. Action on one
95
+ concrete error beats another pass over the theory.
@@ -0,0 +1,40 @@
1
+ {
2
+ "count": 6,
3
+ "guides": [
4
+ {
5
+ "id": "control-options",
6
+ "path": "control-options.md",
7
+ "title": "Control Options — 컨트롤별 옵션 매트릭스",
8
+ "summary": "어떤 컨트롤에 어떤 옵션 키가 허용되는가."
9
+ },
10
+ {
11
+ "id": "events",
12
+ "path": "events.md",
13
+ "title": "이벤트(Events) 가이드",
14
+ "summary": "핸들러가 어떻게 정의·연결·실행되는지, 그리고 더 깔끔하게 구성하는 법."
15
+ },
16
+ {
17
+ "id": "failure-discipline",
18
+ "path": "failure-discipline.md",
19
+ "title": "Failure Discipline"
20
+ },
21
+ {
22
+ "id": "prompt-interview",
23
+ "path": "prompt-interview.md",
24
+ "title": "Prompt Interview — 비대화형 5질문 자기-답변",
25
+ "summary": "CLI 파이프(`flex-scenario gen`) 는 사용자에게 되묻는 통로가 없다. 모호 입력(L1~L2) 에서도 산출물은 **JSON 한 덩어리** 로 떨어진다. 그 결과 모델이 어떤 가정으로 시나리오를 만들었는지 외부에서 보이지 않아 사용자가 redirect 할 수 없는 게 병목 6."
26
+ },
27
+ {
28
+ "id": "scripts",
29
+ "path": "scripts.md",
30
+ "title": "Script 본문 가이드",
31
+ "summary": "이벤트 핸들러의 `Action:'Script'` 본문은 **intent short-form 을 1순위로 사용**한다. raw JS 본문은 intent 가 표현 못 하는 분기/조건이 있을 때만 escape hatch."
32
+ },
33
+ {
34
+ "id": "step-navigation",
35
+ "path": "step-navigation.md",
36
+ "title": "Step 이동 가이드",
37
+ "summary": "헤더 뒤로가기·하단 버튼·리스트 카드 클릭 등 Step 간 이동을 메타 채널로 표현하는 법."
38
+ }
39
+ ]
40
+ }
@@ -0,0 +1,92 @@
1
+ # Prompt Interview — 비대화형 5질문 자기-답변
2
+
3
+ > CLI 파이프(`flex-scenario gen`) 는 사용자에게 되묻는 통로가 없다. 모호 입력(L1~L2) 에서도 산출물은 **JSON 한 덩어리** 로 떨어진다. 그 결과 모델이 어떤 가정으로 시나리오를 만들었는지 외부에서 보이지 않아 사용자가 redirect 할 수 없는 게 병목 6.
4
+ >
5
+ > 이 가이드는 그 병목을 **모델이 자기 자신에게 5질문을 던지고 답을 시나리오에 명시적으로 기록** 하는 절차로 해소한다. 모드는 **비대화형 한 가지** — Claude Code 대화형은 별도 운용 (사람이 직접 묻고 답함).
6
+
7
+ ## 적용 시점
8
+
9
+ - SKILL.md §시퀀스 **3 (요청 분석) 직후, 4 (examples Read) 직전**.
10
+ - 케이스 한 줄에 도메인만 적힌 L1 / 도메인+기능만 적힌 L2 케이스에서 특히 중요. L4~L5 풀스펙 케이스는 사실상 no-op (이미 답이 다 적혀 있음).
11
+
12
+ ## 5질문 — 자기 답변 체크리스트
13
+
14
+ 비대화형이므로 **모델이 직접 답을 만든다**. 답은 케이스 본문에서 추출 가능한 것 → 도메인 상식 추론 → 시나리오 표준 default 순으로 선택.
15
+
16
+ | # | 질문 | 답의 형식 | 추출 단서 / 기본값 |
17
+ |---|---|---|---|
18
+ | Q1 | **무슨 화면인가** (한 문장 정의) | 자유서술 1줄 | 케이스 첫 문장 우선 |
19
+ | Q2 | **Step 수와 흐름** | `N step (Step1: ... → Step2: ... → ...)` | 케이스에 명시 없으면 — 단순 입력 폼: 1, 입력→확인: 2, 입력→내역→확인: 3, 다중 입력 단계: 3~5 |
20
+ | Q3 | **각 Step 의 핵심 필드/컨트롤** | Step 별로 1줄: `Step1: 필드a/필드b/...` | 케이스에서 콤마/줄바꿈으로 묶인 항목 추출 |
21
+ | Q4 | **DataConnection 모드** | `query / new / update / detail` 중 어떤 조합 | 리스트/반복 표시 → `query`, 신규 입력 → `new` (mock 면제), 활성 섹터 편집 → `update`, 단건 조회 → `detail` |
22
+ | Q5 | **완료 후 동작** | `Step.Next` / 닫기 / 메시지 / 다음 화면 | 케이스에 명시 없으면 — 최종 Step 의 "제출/저장" 버튼 → `intent.script:{kind:'dialog', type:'Completed'}` + `MOVETYPE_INIT` 로 처음으로 복귀 |
23
+
24
+ > 5질문 외에 추가로 결정해야 할 슬롯(예: BackButton 표준 적용 여부 / Combo 의 다이얼로그 호스트 자식 / 카테고리명 컨벤션) 은 SKILL.md §"절대 금지" 와 cross-check 가 강제하므로 5질문에 포함하지 않는다 — 표준 자체로 결정됨.
25
+
26
+ ## `__notes` 슬롯 — 답을 시나리오 root 에 기록
27
+
28
+ 자기-답변 결과는 시나리오 root 의 `__notes` 슬롯에 **5~7줄, 한 줄 한 답** 으로 기록한다. 이 슬롯은 `schema/v1/scenario.schema.json` 에 화이트리스트로 등재되어 strict-fields 를 통과한다.
29
+
30
+ ### 형식
31
+
32
+ ```jsonc
33
+ {
34
+ "Steps": { ... },
35
+ "StartSteps": [ "Step1" ],
36
+ "__notes": [
37
+ "Q1: 출장 경비 정산 — 3-step (기본정보 → 비용항목 → 확인) 입력 화면",
38
+ "Q2: 3 step — 케이스에 'Step 1/2/3' 명시되어 그대로 채택",
39
+ "Q3-Step1: 출장지/부서/시작일/종료일/목적",
40
+ "Q3-Step2: 비용 시트 (사용일/항목/금액/영수증/비고) + read-only 합계",
41
+ "Q3-Step3: Step1+Step2 요약 (read-only Label / Input)",
42
+ "Q4: Step2 비용 시트는 DataUsage:'query' (반복 입력). 그 외 Step 은 단일 입력 폼이라 명시적 DC 불필요",
43
+ "Q5: Step3 '제출' 버튼 → dialog(type:'Completed') + MOVETYPE_INIT 으로 첫 Step 복귀"
44
+ ]
45
+ }
46
+ ```
47
+
48
+ ### 기록 원칙
49
+
50
+ 1. **각 줄은 `Q<번호>: ...` 또는 `Q<번호>-Step<N>: ...` 로 시작** — 사용자가 어떤 질문에 답한 줄인지 즉시 파악 가능.
51
+ 2. **케이스 본문에서 추출했는지 / 추론했는지 구분** — 추론한 경우 답 뒤에 짧은 근거 (`(케이스에 명시 없어 N step 단순 폼으로 추정)`) 한 마디 덧붙임. 사용자가 redirect 할 때 추론 부분만 골라 수정 가능.
52
+ 3. **5~7줄 권장, 12줄 한도** (schema `maxItems:12`). 그 이상 필요하면 케이스가 충분히 구체적이라 자기-인터뷰가 불필요한 단계 — 그대로 본문 작성에 집중.
53
+ 4. **결정만 기록, 설명 금지** — "그래서 이렇게 했다" 는 적지 않는다. 결정 자체가 시나리오 본문에 펼쳐져 있다.
54
+
55
+ ## 모드 판별
56
+
57
+ CLI 비대화형 호출에서만 `__notes` 를 채운다. 사람이 Claude Code 에서 직접 SKILL 을 호출한 대화형 흐름에선 모델이 사용자에게 1~2개 되묻고 진행하므로 `__notes` 슬롯은 비워둔다 (또는 사용자가 결정한 답을 같은 형식으로 기록).
58
+
59
+ ```
60
+ case.md → 사용자 통로 없음? (CLI 파이프 / OneShot)
61
+ ├─ Yes → 5질문 자기-답변 → __notes 기록 → 시나리오 작성
62
+ └─ No → 모호 슬롯 1~2개 사용자에게 되묻기 → 답 받고 진행 (__notes 비움)
63
+ ```
64
+
65
+ 판별 단서:
66
+ - 환경변수 `FLEX_INTERACTIVE=1` 이 있으면 대화형.
67
+ - 그 외엔 비대화형으로 가정 — `flex-scenario gen` 은 항상 비대화형.
68
+
69
+ ## L1/L2 케이스 — 무엇을 추정해야 하나
70
+
71
+ L1 (도메인 한 단어), L2 (도메인+기능) 케이스에서 자주 빈 슬롯이 되는 항목과 표준 default:
72
+
73
+ | 빈 슬롯 | 표준 default | 비고 |
74
+ |---|---|---|
75
+ | Step 수 | 단순 폼 1 / 입력→확인 2 / 입력→내역→확인 3 | 케이스에 "한 화면" 같은 단서가 있으면 1, "확인" / "결재" 가 있으면 2~ |
76
+ | 필드 종류 | 도메인 상식 5~7개 + 메모/비고 1개 | 휴가신청: 신청자/부서/시작일/종료일/사유. 견적서: 거래처/품목/수량/단가/금액 |
77
+ | 데이터 모드 | 단건 폼은 명시 안 함. 시트/리스트가 있으면 `query` | `new` / `update` 는 케이스에 "수정/등록" 명시될 때만 |
78
+ | BackButton | 모든 Step `UseBackButton:true` + 첫 Step 닫기 / 후속 Step 이전 Step 복귀 | 표준이므로 5질문 외 자동 |
79
+ | 완료 동작 | `intent.script(dialog)` + `MOVETYPE_INIT` | "처리되었습니다" 한 줄 |
80
+
81
+ ## 안티패턴
82
+
83
+ - **`__notes` 에 본문 설명을 적는다** — 결정 자체는 본문에 펼쳐져 있어야 한다. `__notes` 는 *결정 근거* 만.
84
+ - **5질문 모두 그대로 적는다** — 케이스에 이미 답이 있는 질문은 생략 가능 (L4~L5). `__notes` 는 결정한 *추론 부분* 만 적어도 충분.
85
+ - **`{=Field}` 토큰으로 Step 간 값 전달을 적는다** — Step 간 값 전달은 [INTENT.md §`copyStepValues`](../runtime/v1/intent-system/INTENT.md) 가 정답. `__notes` 와 무관.
86
+ - **사용자에게 되묻는 문구를 답에 적는다** — 비대화형에서 "어떤 도메인을 원하시나요?" 는 의미 없다. 자기 답을 만들어 기록.
87
+
88
+ ## 측정
89
+
90
+ - 비대화형 호출에서 `__notes` 가 비어 있으면 (L1/L2 인데도) 자기-인터뷰 누락 — 회귀.
91
+ - `__notes` 가 7줄 초과 + L4/L5 인 경우 — 과잉 기록 (케이스가 이미 구체적이라 자기-인터뷰 불필요).
92
+ - 사용자가 결과를 보고 "이 가정이 틀렸다" 며 redirect 한 경우, 어떤 Q 항목이 어긋났는지 `__notes` 가 즉시 보여줘야 한다.
@@ -0,0 +1,169 @@
1
+ # Script 본문 가이드
2
+
3
+ > 이벤트 핸들러의 `Action:'Script'` 본문은 **intent short-form 을 1순위로 사용**한다. raw JS 본문은 intent 가 표현 못 하는 분기/조건이 있을 때만 escape hatch.
4
+ >
5
+ > 정본:
6
+ > - **intent 카탈로그**: [runtime/v1/intent-system/INTENT.md](../runtime/v1/intent-system/INTENT.md) (슬롯·scope·kind 매트릭스)
7
+ > - **intent 인프라**: [runtime/v1/intent-system/README.md](../runtime/v1/intent-system/README.md)
8
+ > - raw API 진실원본 (fallback 참고용): [scenario-gen-rules.md](../runtime/v1/script/scenario-gen-rules.md) · [_c.md](../runtime/v1/collection/_c.md) · [f_messagebox.md](../runtime/v1/script/f_messagebox.md) · [f_collection.md](../runtime/v1/script/f_collection.md) · [f_content.md](../runtime/v1/script/f_content.md)
9
+ > - 검증: [core/validators.mjs](../core/validators.mjs) `SCRIPT_DENY_PATTERNS` (펼침 후 결과까지 검사)
10
+
11
+ ## 의도 → intent 매핑 (1순위)
12
+
13
+ | 의도 | intent 표기 | scope |
14
+ |---|---|---|
15
+ | Init 단계 mock 데이터 박기 | `intent.mock: { CtgX: [{...}, ...] }` | `event-script-init` (Step.Events.Init Action) |
16
+ | 활성 섹터의 N개 필드 일괄 갱신 | `intent.script: { kind:'updateActive', cat, set:{...}, reload? }` | `event-script` |
17
+ | 활성 섹터 삭제 | `intent.script: { kind:'deleteActive', cat, reload? }` | `event-script` |
18
+ | 카테고리 통째로 비우기 | `intent.script: { kind:'clearCategory', cat, reload? }` | `event-script` |
19
+ | 그룹 부분 재렌더만 | `intent.script: { kind:'reloadGroup', fid }` | `event-script` |
20
+ | 모달 다이얼로그 (확인/취소·에러) | `intent.script: { kind:'dialog', type, title, body?, buttons:[...] }` | `event-script` |
21
+
22
+ > Categories 정의 / `Collections` 슬롯 / `Panel.*` 은 **스튜디오 자동 재생성** — AI 단에서 채우지 않음. 카테고리 사용 사실은 `intent.mock` 의 카테고리명 + `DataConnection.CategoryName` 으로 cross-check 가 자동 추출.
23
+
24
+ 이 매트릭스의 의도면 intent 로 표현 가능. **intent 펼침 결과가 raw 와 동등** — `[script-allow]` / `[mock-init]` / `[event-ref]` cross-check 모두 통과.
25
+
26
+ ## intent 사용 — 6 가지 표준 패턴
27
+
28
+ ### A. Init mock 데이터 — `intent.mock`
29
+
30
+ ```jsonc
31
+ {
32
+ "Steps": {
33
+ "Step1": {
34
+ "Events": {
35
+ "Init": [{
36
+ "Action": "Script",
37
+ "intent": {
38
+ "mock": {
39
+ "CtgEmployee": [
40
+ { "fName": "홍길동", "fAge": 30 },
41
+ { "fName": "김철수", "fAge": 25 }
42
+ ]
43
+ }
44
+ }
45
+ }]
46
+ }
47
+ }
48
+ }
49
+ }
50
+ ```
51
+
52
+ 가드: 카테고리명 `^Ctg[A-Z]…` / 섹터 키는 [naming-objects.schema.json](../schema/v1/naming-objects.schema.json) 의 `sectorReservedKeys` + `jsReservedWords` 와 case-insensitive 충돌 차단 (`Status` / `STATUS` / `Length` 등).
53
+
54
+ ### B. 활성 섹터 일괄 갱신 — `intent.script.updateActive`
55
+
56
+ ```jsonc
57
+ { "Action": "Script", "intent": { "script": {
58
+ "kind": "updateActive",
59
+ "cat": "CtgList",
60
+ "set": { "fStatus": "확정", "fApprovedAt": "2024-01-01" },
61
+ "reload": "f_3"
62
+ }}}
63
+ ```
64
+
65
+ 펼침 결과: 가드 2단 (`if (!_c.CtgList) return; … if (!cur) return;`) + 직접 대입 N + `f.Content('f_3').reload();`
66
+
67
+ ### C. 활성 섹터 완전삭제 — `intent.script.deleteActive`
68
+
69
+ ```jsonc
70
+ { "Action": "Script", "intent": { "script": {
71
+ "kind": "deleteActive", "cat": "CtgCart", "reload": "f_5"
72
+ }}}
73
+ ```
74
+
75
+ 펼침 결과: 가드 2단 + `cur.release();` (완전삭제) + reload. ★ raw `.delete()` 는 added 가 아닌 섹터를 deleted 상태로 남겨 집계/루프를 오염시키므로 금지 (`[script-allow]` 차단) — 완전삭제는 `release()`.
76
+
77
+ ### D. 카테고리 비우기 — `intent.script.clearCategory`
78
+
79
+ ```jsonc
80
+ { "Action": "Script", "intent": { "script": {
81
+ "kind": "clearCategory", "cat": "CtgOrderHistory", "reload": "f_3"
82
+ }}}
83
+ ```
84
+
85
+ ### E. 그룹 재렌더만 — `intent.script.reloadGroup`
86
+
87
+ ```jsonc
88
+ { "Action": "Script", "intent": { "script": { "kind": "reloadGroup", "fid": "f_3" } } }
89
+ ```
90
+
91
+ ### F. 모달 다이얼로그 — `intent.script.dialog`
92
+
93
+ ```jsonc
94
+ { "Action": "Script", "intent": { "script": {
95
+ "kind": "dialog",
96
+ "type": "Alert",
97
+ "title": "삭제하시겠습니까?",
98
+ "body": "이 작업은 되돌릴 수 없습니다.",
99
+ "buttons": [
100
+ { "label": "확인", "event": "DeleteConfirmEvent" },
101
+ { "label": "취소", "color": "sub" }
102
+ ]
103
+ }}}
104
+ ```
105
+
106
+ - 종결자는 항상 펼침 단계에서 `.show()` — `.send()` 오타 불가능.
107
+ - 버튼 액션은 `event` 문자열 (scenario.Events 키) 또는 생략 (닫기만). inline function 표현 불가.
108
+
109
+ ## intent + raw 머지
110
+
111
+ 같은 Action 안에 `intent` 와 raw `Script` 가 공존 가능. **펼침 결과가 raw 앞에 prepend**:
112
+
113
+ ```jsonc
114
+ {
115
+ "Action": "Script",
116
+ "Script": "// 후속 로직 (intent 가 표현 못 하는 부분)",
117
+ "intent": { "script": { "kind": "updateActive", "cat": "CtgX", "set": { "fA": 1 } } }
118
+ }
119
+ ```
120
+
121
+ 펼친 결과:
122
+ ```
123
+ if (!_c.CtgX) return;
124
+ const cur = _c.CtgX.activeSector;
125
+ if (!cur) return;
126
+ cur.fA = 1;
127
+ // 후속 로직 (intent 가 표현 못 하는 부분)
128
+ ```
129
+
130
+ ## raw escape hatch — intent 미지원 영역
131
+
132
+ intent 매트릭스에 없는 의도는 raw 본문으로. 대표적인 경우:
133
+
134
+ | 의도 | raw 표기 | 정본 |
135
+ |---|---|---|
136
+ | 런타임 단건 섹터 추가 (Init 외) | `f.Collection.addSector({...}, 'CtgX')` | [f_collection.md](../runtime/v1/script/f_collection.md) |
137
+ | 다중 카테고리에 상태 조건부 섹터 제거 | `f.Collection.removeSector('deleted', 'CtgX')` | 동상 |
138
+ | 분기 조건 (`if (_c.CtgX.length > 5) { ... }`) | raw JS — 절제 사용 | [_c.md](../runtime/v1/collection/_c.md) |
139
+ | 날짜 계산 | `f.Date('${rawDate}').format('YYYY-MM-DD')` | [scenario-gen-rules.md §2-3](../runtime/v1/script/scenario-gen-rules.md) |
140
+ | 다음 이벤트 호출 / 중단 | `f.Event(name).runNext()` / `.break()` | 동상 |
141
+ | 외부 스크립트 로드 | `f.Script.load('https://...', null, null)` | 동상 |
142
+ | Step 전체 재렌더 | `Current.step.reload()` | [current_step.md](../runtime/v1/script/current_step.md) |
143
+ | 섹터로 좁힌 부분 재렌더 (Embed `{%Load.sector%}` 바인딩 갱신 등) | `f.Content('<부모그룹 fid>', <그 그룹을 그린 섹터>).reload()` — sector 인자 필수, DC 그룹 자체 fid 금지(비연결 래퍼로) | [f_content.md §3-1·§5-4](../runtime/v1/script/f_content.md), [embed.md](../schema/v1/control/embed.md) |
144
+
145
+ raw 본문 작성 시 가드:
146
+ - **`activeSector` 사용 전 카테고리 + active 가드 2단** — intent.script.updateActive / deleteActive 는 자동 emit, raw 는 직접 적기.
147
+ - **다량 변경은 직접 대입 + 마지막 한 번만 reload**. `set` 호출 매번 reload 트리거하지 말 것.
148
+ - **카테고리명 / 컬렉션키 예약어 충돌 검사** — [naming-objects.schema.json](../schema/v1/naming-objects.schema.json) 의 두 enum. `Status` / `Length` / `IsActive` 등 case-insensitive 충돌은 `[script-allow]` 가 차단하지 않으므로 raw 작성 시 직접 회피.
149
+
150
+ ## 자주 틀리는 점 — 짧은 체크리스트
151
+
152
+ - [ ] `intent.script.dialog` 가 표현 가능한 다이얼로그를 raw `f.MessageBox()` 로 박음 — **intent 우선**, raw 는 표현 한계 시 (예: 동적 button label).
153
+ - [ ] `intent.mock` 대신 raw `addSector` 를 Init 에 박음 — intent 가 카테고리명 / 예약어 / 인자 순서 모두 자동 가드.
154
+ - [ ] `f.MessageBox().send(...)` / `.setBody(...)` / `.chain(...)` — **가짜 메서드**. intent 사용 시 구조적으로 차단.
155
+ - [ ] `_c.<Cat>.clear()` / `_c.<Cat>.deleteActiveSector()` / `_c.<Cat>.activeSector()` / `_c.<Cat>.sectors()` — 가짜. intent.script.clearCategory / deleteActive 권장.
156
+ - [ ] `f.Message()` (인스턴스) — 차단된 채널. `f.MessageBox` 또는 intent.script.dialog 만.
157
+ - [ ] `f.Notification` — 전체 발송 차단. 다이얼로그는 intent.script.dialog.
158
+ - [ ] `Current.step.moveToNext(...)` 같은 명령형 흐름 제어 — 메타 채널 (`BottomButton.MoveTo` / `UseMove + MoveSteps`).
159
+ - [ ] `f.Frame.popUp(...)` — 같은 시나리오 PopUp 은 메타 (`StepDialogType`).
160
+ - [ ] `{=Field}` 가 event Script 본문에 박힘 — display 토큰 전용. event Script 안에서는 `_c.<Cat>.activeSector.<Field>` 로 명시 참조.
161
+
162
+ ## 가짜 핸들이 의심될 때
163
+
164
+ 1. **intent 매트릭스에 의도가 있나?** 있으면 intent 사용.
165
+ 2. **본 파일의 raw escape 표에 있나?** 있으면 raw fallback OK.
166
+ 3. **공식 자동완성에 잡히나?** 스튜디오 IDE 에서 `f.<X>().` / `_c.<Cat>.` 를 쳐서 노출되는 것 외엔 가짜.
167
+ 4. **`runtime/v1/script/` 또는 `runtime/v1/collection/` 에 명시되어 있나?** 없으면 가짜.
168
+
169
+ 그래도 모호하면 `feedback/` 에 한 줄 머지 → ready-to-promote → 검증.