kenaz 0.3.2 → 0.3.3

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 (390) hide show
  1. package/core/.agents/skills/typesafe-ai/LICENSE +21 -21
  2. package/core/.agents/skills/typesafe-ai/SKILL.md +149 -149
  3. package/core/.claude/commands/Ansuz.md +19 -30
  4. package/core/.claude/hooks/_ansuz-conversation.js +1 -0
  5. package/core/.claude/hooks/_ansuz-conversation.test.js +6 -0
  6. package/core/.claude/hooks/_run-user-prompt.js +0 -4
  7. package/core/.claude/hooks/_run-user-prompt.test.js +2 -3
  8. package/core/.claude/hooks/session-init.ps1 +49 -49
  9. package/core/.claude/settings.json +0 -37
  10. package/core/.claude/skills/ui-ux-pro-max/data/charts.csv +26 -26
  11. package/core/.claude/skills/ui-ux-pro-max/data/colors.csv +97 -97
  12. package/core/.claude/skills/ui-ux-pro-max/data/icons.csv +101 -101
  13. package/core/.claude/skills/ui-ux-pro-max/data/landing.csv +31 -31
  14. package/core/.claude/skills/ui-ux-pro-max/data/products.csv +96 -96
  15. package/core/.claude/skills/ui-ux-pro-max/data/react-performance.csv +45 -45
  16. package/core/.claude/skills/ui-ux-pro-max/data/stacks/astro.csv +54 -54
  17. package/core/.claude/skills/ui-ux-pro-max/data/stacks/flutter.csv +53 -53
  18. package/core/.claude/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -56
  19. package/core/.claude/skills/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -53
  20. package/core/.claude/skills/ui-ux-pro-max/data/stacks/nextjs.csv +53 -53
  21. package/core/.claude/skills/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -51
  22. package/core/.claude/skills/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -59
  23. package/core/.claude/skills/ui-ux-pro-max/data/stacks/react-native.csv +52 -52
  24. package/core/.claude/skills/ui-ux-pro-max/data/stacks/react.csv +54 -54
  25. package/core/.claude/skills/ui-ux-pro-max/data/stacks/shadcn.csv +61 -61
  26. package/core/.claude/skills/ui-ux-pro-max/data/stacks/svelte.csv +54 -54
  27. package/core/.claude/skills/ui-ux-pro-max/data/stacks/swiftui.csv +51 -51
  28. package/core/.claude/skills/ui-ux-pro-max/data/stacks/vue.csv +50 -50
  29. package/core/.claude/skills/ui-ux-pro-max/data/styles.csv +68 -68
  30. package/core/.claude/skills/ui-ux-pro-max/data/typography.csv +57 -57
  31. package/core/.claude/skills/ui-ux-pro-max/data/ui-reasoning.csv +101 -101
  32. package/core/.claude/skills/ui-ux-pro-max/data/ux-guidelines.csv +99 -99
  33. package/core/.claude/skills/ui-ux-pro-max/data/web-interface.csv +31 -31
  34. package/core/.claude/skills/ui-ux-pro-max/scripts/core.py +253 -253
  35. package/core/.claude/skills/ui-ux-pro-max/scripts/design_system.py +1067 -1067
  36. package/core/.claude/skills/ui-ux-pro-max/scripts/search.py +106 -106
  37. package/core/.collaboration/core/task-api.js +3 -8
  38. package/core/.formation/tests/hello.txt +2 -2
  39. package/core/.formation/tools/prompt.js +58 -5
  40. package/core/.formation/tools/prompt.test.js +29 -0
  41. package/core/.kenaz/claude-hooks-manifest.json +16 -16
  42. package/core/.kenaz/knowledge/ladybug_2c51da1e_shadow_file_frame_group.patch +163 -163
  43. package/core/.kenaz/knowledge/ladybug_30cf85690e_shadow_page_read_during_checkpoint.patch +393 -393
  44. package/core/.kenaz/knowledge/ladybug_7a17858d3a_node_group_delete_lock.patch +102 -102
  45. package/core/.kenaz/knowledge/ladybug_926a0ba1_column_checkpoint.patch +412 -412
  46. package/core/.kenaz/knowledge/ladybug_a346c4c4b6_pk_index_header_pages.patch +144 -144
  47. package/core/.kenaz/knowledge/ladybug_ba5f38815b_csr_node_group.patch +86 -86
  48. package/core/.kenaz/muninn_episode_write.ps1 +17 -17
  49. package/core/.kenaz/specialist/field_report_watermark.json +1 -1
  50. package/core/.kenaz/specialist/memory_guard_fired.json +1 -1
  51. package/core/.kenaz/specialist/memory_guard_trigger_cache.json +1 -1
  52. package/core/.kenaz/specialist/t1777_probe.txt +1 -1
  53. package/core/.matrix/index.matrix +5 -5
  54. package/core/.specialist/Ansuz/RULES.md +6 -10
  55. package/core/.specialist/tools/__tests__/task-2218-boot-session-id.test.js +17 -1
  56. package/core/.specialist/tools/__tests__/task-2222-session-identity-interleave.test.js +17 -1
  57. package/core/.specialist/tools/__tests__/task-2254-handoff-archive-contract.test.js +6 -5
  58. package/core/.specialist/tools/ansuz-boot-fast.js +44 -100
  59. package/core/.specialist/tools/ansuz-boot-fast.test.js +45 -1
  60. package/core/KENAZ_CORE_VERSION +1 -1
  61. package/core/dev/ANSUZ_STARTUP_INJECTION_REVIEW.md +355 -355
  62. package/core/dev/JEV_INTEGRATION_PLAN.md +189 -189
  63. package/core/dev/design/matrix_format_EXAMPLE_memory.matrix +13 -13
  64. package/core/dev/design/matrix_format_EXAMPLE_project_status.matrix +9 -9
  65. package/core/dev/design/matrix_format_EXAMPLE_tasks.matrix +14 -14
  66. package/core/dev/design/matrix_v2_EXAMPLE.matrix +67 -67
  67. package/core/dev/jev-eval/ACTIVE_CORRECTION.md +52 -52
  68. package/core/dev/jev-eval/CONTEXT_REVIEW.md +31 -31
  69. package/core/dev/jev-eval/EVALUATION_STATUS.md +39 -39
  70. package/core/dev/jev-eval/HISTORICAL_CORPUS.md +33 -33
  71. package/core/dev/jev-eval/README.md +99 -99
  72. package/core/dev/jev-eval/THALAMUS_RANKING.md +58 -58
  73. package/core/dev/jev-eval/reports/annotation-pilot-2026-09-20.json +32 -32
  74. package/core/dev/jev-eval/reports/context-review-2026-09-20.json +48 -48
  75. package/core/dev/jev-eval/reports/history-corpus-2026-09-20.json +52 -52
  76. package/core/dev/pipeline/SELF_ENHANCEMENT_STATUS.json.bak +47 -47
  77. package/core/dev/pipeline/tasks/.gitkeep +1 -1
  78. package/core/dev/pipeline/test_results/TASK_TEST_PARALLEL_002_result.txt +27 -27
  79. package/core/dev/plans/ANSUZ_SLIM_PLAN.md +68 -0
  80. package/core/dev/scripts/init_git.sh +0 -0
  81. package/core/dev/scripts/init_project.sh +0 -0
  82. package/core/dev/scripts/legacy/dev_agent_scheduler.ps1.bak +536 -536
  83. package/core/dev/scripts/legacy/multi_agent_scheduler.ps1.bak +1978 -1978
  84. package/core/dev/scripts/matrix/src/cli/commands/list-tags.ts.wip +140 -140
  85. package/core/dev/scripts/matrix/src/cli/commands/manage-tags.ts.wip +173 -173
  86. package/core/dev/scripts/matrix/src/cli/commands/stats.ts.wip +168 -168
  87. package/core/dev/scripts/matrix/src/cli/commands/tokens.ts.wip +126 -126
  88. package/core/dev/scripts/multi_agent_scheduler.sh +0 -0
  89. package/core/dev/scripts/run_once.sh +0 -0
  90. package/core/dev/scripts/setup_mcp.sh +0 -0
  91. package/core/dev/scripts/setup_rag.sh +0 -0
  92. package/core/dev/scripts/start_dev_agent.sh +0 -0
  93. package/core/dev/scripts/start_multi_agent.sh +0 -0
  94. package/core/dev/scripts/sync_task_queue.sh +0 -0
  95. package/core/k-cli/dist/alaya/run.js +91 -0
  96. package/core/k-cli/dist/core/output.js +24 -0
  97. package/core/k-cli/dist/core/process.js +38 -0
  98. package/core/k-cli/dist/core/project.js +80 -0
  99. package/core/k-cli/dist/core/spawn.js +268 -0
  100. package/core/k-cli/dist/core/types.js +2 -0
  101. package/core/k-cli/dist/dashboard/update.js +53 -0
  102. package/core/k-cli/dist/dashboard/version.js +20 -0
  103. package/core/k-cli/dist/dispatch/run.js +241 -0
  104. package/core/k-cli/dist/dispatch/status.js +103 -0
  105. package/core/k-cli/dist/index.js +283 -0
  106. package/core/k-cli/dist/project/initialize.js +301 -0
  107. package/core/k-cli/dist/project/install.js +89 -0
  108. package/core/k-cli/dist/project/status.js +138 -0
  109. package/core/k-cli/dist/specialist/list.js +100 -0
  110. package/core/k-cli/dist/specialist/run.js +93 -0
  111. package/core/k-cli/dist/task/create.js +194 -0
  112. package/core/k-cli/dist/task/delete.js +98 -0
  113. package/core/k-cli/dist/task/get.js +55 -0
  114. package/core/k-cli/dist/task/list.js +58 -0
  115. package/core/k-cli/dist/task/submit.js +156 -0
  116. package/core/k-cli/dist/ygg/run.js +51 -0
  117. package/core/k-cli/node_modules/.bin/yaml +16 -0
  118. package/core/k-cli/node_modules/.bin/yaml.cmd +17 -0
  119. package/core/k-cli/node_modules/.bin/yaml.ps1 +28 -0
  120. package/core/k-cli/node_modules/.package-lock.json +23 -0
  121. package/core/k-cli/node_modules/yaml/LICENSE +13 -0
  122. package/core/k-cli/node_modules/yaml/README.md +172 -0
  123. package/core/k-cli/node_modules/yaml/bin.mjs +11 -0
  124. package/core/k-cli/node_modules/yaml/browser/dist/compose/compose-collection.js +88 -0
  125. package/core/k-cli/node_modules/yaml/browser/dist/compose/compose-doc.js +43 -0
  126. package/core/k-cli/node_modules/yaml/browser/dist/compose/compose-node.js +109 -0
  127. package/core/k-cli/node_modules/yaml/browser/dist/compose/compose-scalar.js +86 -0
  128. package/core/k-cli/node_modules/yaml/browser/dist/compose/composer.js +217 -0
  129. package/core/k-cli/node_modules/yaml/browser/dist/compose/resolve-block-map.js +115 -0
  130. package/core/k-cli/node_modules/yaml/browser/dist/compose/resolve-block-scalar.js +198 -0
  131. package/core/k-cli/node_modules/yaml/browser/dist/compose/resolve-block-seq.js +49 -0
  132. package/core/k-cli/node_modules/yaml/browser/dist/compose/resolve-end.js +37 -0
  133. package/core/k-cli/node_modules/yaml/browser/dist/compose/resolve-flow-collection.js +207 -0
  134. package/core/k-cli/node_modules/yaml/browser/dist/compose/resolve-flow-scalar.js +223 -0
  135. package/core/k-cli/node_modules/yaml/browser/dist/compose/resolve-props.js +146 -0
  136. package/core/k-cli/node_modules/yaml/browser/dist/compose/util-contains-newline.js +34 -0
  137. package/core/k-cli/node_modules/yaml/browser/dist/compose/util-empty-scalar-position.js +26 -0
  138. package/core/k-cli/node_modules/yaml/browser/dist/compose/util-flow-indent-check.js +15 -0
  139. package/core/k-cli/node_modules/yaml/browser/dist/compose/util-map-includes.js +13 -0
  140. package/core/k-cli/node_modules/yaml/browser/dist/doc/Document.js +335 -0
  141. package/core/k-cli/node_modules/yaml/browser/dist/doc/anchors.js +71 -0
  142. package/core/k-cli/node_modules/yaml/browser/dist/doc/applyReviver.js +55 -0
  143. package/core/k-cli/node_modules/yaml/browser/dist/doc/createNode.js +88 -0
  144. package/core/k-cli/node_modules/yaml/browser/dist/doc/directives.js +176 -0
  145. package/core/k-cli/node_modules/yaml/browser/dist/errors.js +57 -0
  146. package/core/k-cli/node_modules/yaml/browser/dist/index.js +17 -0
  147. package/core/k-cli/node_modules/yaml/browser/dist/log.js +11 -0
  148. package/core/k-cli/node_modules/yaml/browser/dist/nodes/Alias.js +114 -0
  149. package/core/k-cli/node_modules/yaml/browser/dist/nodes/Collection.js +147 -0
  150. package/core/k-cli/node_modules/yaml/browser/dist/nodes/Node.js +38 -0
  151. package/core/k-cli/node_modules/yaml/browser/dist/nodes/Pair.js +36 -0
  152. package/core/k-cli/node_modules/yaml/browser/dist/nodes/Scalar.js +24 -0
  153. package/core/k-cli/node_modules/yaml/browser/dist/nodes/YAMLMap.js +144 -0
  154. package/core/k-cli/node_modules/yaml/browser/dist/nodes/YAMLSeq.js +113 -0
  155. package/core/k-cli/node_modules/yaml/browser/dist/nodes/addPairToJSMap.js +63 -0
  156. package/core/k-cli/node_modules/yaml/browser/dist/nodes/identity.js +36 -0
  157. package/core/k-cli/node_modules/yaml/browser/dist/nodes/toJS.js +37 -0
  158. package/core/k-cli/node_modules/yaml/browser/dist/parse/cst-scalar.js +214 -0
  159. package/core/k-cli/node_modules/yaml/browser/dist/parse/cst-stringify.js +61 -0
  160. package/core/k-cli/node_modules/yaml/browser/dist/parse/cst-visit.js +97 -0
  161. package/core/k-cli/node_modules/yaml/browser/dist/parse/cst.js +98 -0
  162. package/core/k-cli/node_modules/yaml/browser/dist/parse/lexer.js +717 -0
  163. package/core/k-cli/node_modules/yaml/browser/dist/parse/line-counter.js +39 -0
  164. package/core/k-cli/node_modules/yaml/browser/dist/parse/parser.js +967 -0
  165. package/core/k-cli/node_modules/yaml/browser/dist/public-api.js +102 -0
  166. package/core/k-cli/node_modules/yaml/browser/dist/schema/Schema.js +37 -0
  167. package/core/k-cli/node_modules/yaml/browser/dist/schema/common/map.js +17 -0
  168. package/core/k-cli/node_modules/yaml/browser/dist/schema/common/null.js +15 -0
  169. package/core/k-cli/node_modules/yaml/browser/dist/schema/common/seq.js +17 -0
  170. package/core/k-cli/node_modules/yaml/browser/dist/schema/common/string.js +14 -0
  171. package/core/k-cli/node_modules/yaml/browser/dist/schema/core/bool.js +19 -0
  172. package/core/k-cli/node_modules/yaml/browser/dist/schema/core/float.js +43 -0
  173. package/core/k-cli/node_modules/yaml/browser/dist/schema/core/int.js +38 -0
  174. package/core/k-cli/node_modules/yaml/browser/dist/schema/core/schema.js +23 -0
  175. package/core/k-cli/node_modules/yaml/browser/dist/schema/json/schema.js +62 -0
  176. package/core/k-cli/node_modules/yaml/browser/dist/schema/tags.js +96 -0
  177. package/core/k-cli/node_modules/yaml/browser/dist/schema/yaml-1.1/binary.js +58 -0
  178. package/core/k-cli/node_modules/yaml/browser/dist/schema/yaml-1.1/bool.js +26 -0
  179. package/core/k-cli/node_modules/yaml/browser/dist/schema/yaml-1.1/float.js +46 -0
  180. package/core/k-cli/node_modules/yaml/browser/dist/schema/yaml-1.1/int.js +71 -0
  181. package/core/k-cli/node_modules/yaml/browser/dist/schema/yaml-1.1/merge.js +64 -0
  182. package/core/k-cli/node_modules/yaml/browser/dist/schema/yaml-1.1/omap.js +74 -0
  183. package/core/k-cli/node_modules/yaml/browser/dist/schema/yaml-1.1/pairs.js +78 -0
  184. package/core/k-cli/node_modules/yaml/browser/dist/schema/yaml-1.1/schema.js +39 -0
  185. package/core/k-cli/node_modules/yaml/browser/dist/schema/yaml-1.1/set.js +93 -0
  186. package/core/k-cli/node_modules/yaml/browser/dist/schema/yaml-1.1/timestamp.js +101 -0
  187. package/core/k-cli/node_modules/yaml/browser/dist/stringify/foldFlowLines.js +146 -0
  188. package/core/k-cli/node_modules/yaml/browser/dist/stringify/stringify.js +129 -0
  189. package/core/k-cli/node_modules/yaml/browser/dist/stringify/stringifyCollection.js +153 -0
  190. package/core/k-cli/node_modules/yaml/browser/dist/stringify/stringifyComment.js +20 -0
  191. package/core/k-cli/node_modules/yaml/browser/dist/stringify/stringifyDocument.js +85 -0
  192. package/core/k-cli/node_modules/yaml/browser/dist/stringify/stringifyNumber.js +24 -0
  193. package/core/k-cli/node_modules/yaml/browser/dist/stringify/stringifyPair.js +150 -0
  194. package/core/k-cli/node_modules/yaml/browser/dist/stringify/stringifyString.js +336 -0
  195. package/core/k-cli/node_modules/yaml/browser/dist/util.js +11 -0
  196. package/core/k-cli/node_modules/yaml/browser/dist/visit.js +233 -0
  197. package/core/k-cli/node_modules/yaml/browser/index.js +5 -0
  198. package/core/k-cli/node_modules/yaml/browser/package.json +3 -0
  199. package/core/k-cli/node_modules/yaml/dist/cli.d.ts +8 -0
  200. package/core/k-cli/node_modules/yaml/dist/cli.mjs +201 -0
  201. package/core/k-cli/node_modules/yaml/dist/compose/compose-collection.d.ts +11 -0
  202. package/core/k-cli/node_modules/yaml/dist/compose/compose-collection.js +90 -0
  203. package/core/k-cli/node_modules/yaml/dist/compose/compose-doc.d.ts +7 -0
  204. package/core/k-cli/node_modules/yaml/dist/compose/compose-doc.js +45 -0
  205. package/core/k-cli/node_modules/yaml/dist/compose/compose-node.d.ts +29 -0
  206. package/core/k-cli/node_modules/yaml/dist/compose/compose-node.js +112 -0
  207. package/core/k-cli/node_modules/yaml/dist/compose/compose-scalar.d.ts +5 -0
  208. package/core/k-cli/node_modules/yaml/dist/compose/compose-scalar.js +88 -0
  209. package/core/k-cli/node_modules/yaml/dist/compose/composer.d.ts +63 -0
  210. package/core/k-cli/node_modules/yaml/dist/compose/composer.js +222 -0
  211. package/core/k-cli/node_modules/yaml/dist/compose/resolve-block-map.d.ts +6 -0
  212. package/core/k-cli/node_modules/yaml/dist/compose/resolve-block-map.js +117 -0
  213. package/core/k-cli/node_modules/yaml/dist/compose/resolve-block-scalar.d.ts +11 -0
  214. package/core/k-cli/node_modules/yaml/dist/compose/resolve-block-scalar.js +200 -0
  215. package/core/k-cli/node_modules/yaml/dist/compose/resolve-block-seq.d.ts +6 -0
  216. package/core/k-cli/node_modules/yaml/dist/compose/resolve-block-seq.js +51 -0
  217. package/core/k-cli/node_modules/yaml/dist/compose/resolve-end.d.ts +6 -0
  218. package/core/k-cli/node_modules/yaml/dist/compose/resolve-end.js +39 -0
  219. package/core/k-cli/node_modules/yaml/dist/compose/resolve-flow-collection.d.ts +7 -0
  220. package/core/k-cli/node_modules/yaml/dist/compose/resolve-flow-collection.js +209 -0
  221. package/core/k-cli/node_modules/yaml/dist/compose/resolve-flow-scalar.d.ts +10 -0
  222. package/core/k-cli/node_modules/yaml/dist/compose/resolve-flow-scalar.js +225 -0
  223. package/core/k-cli/node_modules/yaml/dist/compose/resolve-props.d.ts +23 -0
  224. package/core/k-cli/node_modules/yaml/dist/compose/resolve-props.js +148 -0
  225. package/core/k-cli/node_modules/yaml/dist/compose/util-contains-newline.d.ts +2 -0
  226. package/core/k-cli/node_modules/yaml/dist/compose/util-contains-newline.js +36 -0
  227. package/core/k-cli/node_modules/yaml/dist/compose/util-empty-scalar-position.d.ts +2 -0
  228. package/core/k-cli/node_modules/yaml/dist/compose/util-empty-scalar-position.js +28 -0
  229. package/core/k-cli/node_modules/yaml/dist/compose/util-flow-indent-check.d.ts +3 -0
  230. package/core/k-cli/node_modules/yaml/dist/compose/util-flow-indent-check.js +17 -0
  231. package/core/k-cli/node_modules/yaml/dist/compose/util-map-includes.d.ts +4 -0
  232. package/core/k-cli/node_modules/yaml/dist/compose/util-map-includes.js +15 -0
  233. package/core/k-cli/node_modules/yaml/dist/doc/Document.d.ts +141 -0
  234. package/core/k-cli/node_modules/yaml/dist/doc/Document.js +337 -0
  235. package/core/k-cli/node_modules/yaml/dist/doc/anchors.d.ts +24 -0
  236. package/core/k-cli/node_modules/yaml/dist/doc/anchors.js +76 -0
  237. package/core/k-cli/node_modules/yaml/dist/doc/applyReviver.d.ts +9 -0
  238. package/core/k-cli/node_modules/yaml/dist/doc/applyReviver.js +57 -0
  239. package/core/k-cli/node_modules/yaml/dist/doc/createNode.d.ts +17 -0
  240. package/core/k-cli/node_modules/yaml/dist/doc/createNode.js +90 -0
  241. package/core/k-cli/node_modules/yaml/dist/doc/directives.d.ts +49 -0
  242. package/core/k-cli/node_modules/yaml/dist/doc/directives.js +178 -0
  243. package/core/k-cli/node_modules/yaml/dist/errors.d.ts +21 -0
  244. package/core/k-cli/node_modules/yaml/dist/errors.js +62 -0
  245. package/core/k-cli/node_modules/yaml/dist/index.d.ts +25 -0
  246. package/core/k-cli/node_modules/yaml/dist/index.js +50 -0
  247. package/core/k-cli/node_modules/yaml/dist/log.d.ts +3 -0
  248. package/core/k-cli/node_modules/yaml/dist/log.js +19 -0
  249. package/core/k-cli/node_modules/yaml/dist/nodes/Alias.d.ts +29 -0
  250. package/core/k-cli/node_modules/yaml/dist/nodes/Alias.js +116 -0
  251. package/core/k-cli/node_modules/yaml/dist/nodes/Collection.d.ts +73 -0
  252. package/core/k-cli/node_modules/yaml/dist/nodes/Collection.js +151 -0
  253. package/core/k-cli/node_modules/yaml/dist/nodes/Node.d.ts +53 -0
  254. package/core/k-cli/node_modules/yaml/dist/nodes/Node.js +40 -0
  255. package/core/k-cli/node_modules/yaml/dist/nodes/Pair.d.ts +22 -0
  256. package/core/k-cli/node_modules/yaml/dist/nodes/Pair.js +39 -0
  257. package/core/k-cli/node_modules/yaml/dist/nodes/Scalar.d.ts +43 -0
  258. package/core/k-cli/node_modules/yaml/dist/nodes/Scalar.js +27 -0
  259. package/core/k-cli/node_modules/yaml/dist/nodes/YAMLMap.d.ts +53 -0
  260. package/core/k-cli/node_modules/yaml/dist/nodes/YAMLMap.js +147 -0
  261. package/core/k-cli/node_modules/yaml/dist/nodes/YAMLSeq.d.ts +60 -0
  262. package/core/k-cli/node_modules/yaml/dist/nodes/YAMLSeq.js +115 -0
  263. package/core/k-cli/node_modules/yaml/dist/nodes/addPairToJSMap.d.ts +4 -0
  264. package/core/k-cli/node_modules/yaml/dist/nodes/addPairToJSMap.js +65 -0
  265. package/core/k-cli/node_modules/yaml/dist/nodes/identity.d.ts +23 -0
  266. package/core/k-cli/node_modules/yaml/dist/nodes/identity.js +53 -0
  267. package/core/k-cli/node_modules/yaml/dist/nodes/toJS.d.ts +29 -0
  268. package/core/k-cli/node_modules/yaml/dist/nodes/toJS.js +39 -0
  269. package/core/k-cli/node_modules/yaml/dist/options.d.ts +350 -0
  270. package/core/k-cli/node_modules/yaml/dist/parse/cst-scalar.d.ts +64 -0
  271. package/core/k-cli/node_modules/yaml/dist/parse/cst-scalar.js +218 -0
  272. package/core/k-cli/node_modules/yaml/dist/parse/cst-stringify.d.ts +8 -0
  273. package/core/k-cli/node_modules/yaml/dist/parse/cst-stringify.js +63 -0
  274. package/core/k-cli/node_modules/yaml/dist/parse/cst-visit.d.ts +39 -0
  275. package/core/k-cli/node_modules/yaml/dist/parse/cst-visit.js +99 -0
  276. package/core/k-cli/node_modules/yaml/dist/parse/cst.d.ts +109 -0
  277. package/core/k-cli/node_modules/yaml/dist/parse/cst.js +112 -0
  278. package/core/k-cli/node_modules/yaml/dist/parse/lexer.d.ts +87 -0
  279. package/core/k-cli/node_modules/yaml/dist/parse/lexer.js +719 -0
  280. package/core/k-cli/node_modules/yaml/dist/parse/line-counter.d.ts +22 -0
  281. package/core/k-cli/node_modules/yaml/dist/parse/line-counter.js +41 -0
  282. package/core/k-cli/node_modules/yaml/dist/parse/parser.d.ts +84 -0
  283. package/core/k-cli/node_modules/yaml/dist/parse/parser.js +972 -0
  284. package/core/k-cli/node_modules/yaml/dist/public-api.d.ts +44 -0
  285. package/core/k-cli/node_modules/yaml/dist/public-api.js +107 -0
  286. package/core/k-cli/node_modules/yaml/dist/schema/Schema.d.ts +17 -0
  287. package/core/k-cli/node_modules/yaml/dist/schema/Schema.js +39 -0
  288. package/core/k-cli/node_modules/yaml/dist/schema/common/map.d.ts +2 -0
  289. package/core/k-cli/node_modules/yaml/dist/schema/common/map.js +19 -0
  290. package/core/k-cli/node_modules/yaml/dist/schema/common/null.d.ts +4 -0
  291. package/core/k-cli/node_modules/yaml/dist/schema/common/null.js +17 -0
  292. package/core/k-cli/node_modules/yaml/dist/schema/common/seq.d.ts +2 -0
  293. package/core/k-cli/node_modules/yaml/dist/schema/common/seq.js +19 -0
  294. package/core/k-cli/node_modules/yaml/dist/schema/common/string.d.ts +2 -0
  295. package/core/k-cli/node_modules/yaml/dist/schema/common/string.js +16 -0
  296. package/core/k-cli/node_modules/yaml/dist/schema/core/bool.d.ts +4 -0
  297. package/core/k-cli/node_modules/yaml/dist/schema/core/bool.js +21 -0
  298. package/core/k-cli/node_modules/yaml/dist/schema/core/float.d.ts +4 -0
  299. package/core/k-cli/node_modules/yaml/dist/schema/core/float.js +47 -0
  300. package/core/k-cli/node_modules/yaml/dist/schema/core/int.d.ts +4 -0
  301. package/core/k-cli/node_modules/yaml/dist/schema/core/int.js +42 -0
  302. package/core/k-cli/node_modules/yaml/dist/schema/core/schema.d.ts +1 -0
  303. package/core/k-cli/node_modules/yaml/dist/schema/core/schema.js +25 -0
  304. package/core/k-cli/node_modules/yaml/dist/schema/json/schema.d.ts +2 -0
  305. package/core/k-cli/node_modules/yaml/dist/schema/json/schema.js +64 -0
  306. package/core/k-cli/node_modules/yaml/dist/schema/json-schema.d.ts +69 -0
  307. package/core/k-cli/node_modules/yaml/dist/schema/tags.d.ts +48 -0
  308. package/core/k-cli/node_modules/yaml/dist/schema/tags.js +99 -0
  309. package/core/k-cli/node_modules/yaml/dist/schema/types.d.ts +92 -0
  310. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/binary.d.ts +2 -0
  311. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/binary.js +70 -0
  312. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/bool.d.ts +7 -0
  313. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/bool.js +29 -0
  314. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/float.d.ts +4 -0
  315. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/float.js +50 -0
  316. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/int.d.ts +5 -0
  317. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/int.js +76 -0
  318. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/merge.d.ts +9 -0
  319. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/merge.js +68 -0
  320. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/omap.d.ts +22 -0
  321. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/omap.js +77 -0
  322. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/pairs.d.ts +10 -0
  323. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/pairs.js +82 -0
  324. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/schema.d.ts +1 -0
  325. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/schema.js +41 -0
  326. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/set.d.ts +28 -0
  327. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/set.js +96 -0
  328. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/timestamp.d.ts +6 -0
  329. package/core/k-cli/node_modules/yaml/dist/schema/yaml-1.1/timestamp.js +105 -0
  330. package/core/k-cli/node_modules/yaml/dist/stringify/foldFlowLines.d.ts +34 -0
  331. package/core/k-cli/node_modules/yaml/dist/stringify/foldFlowLines.js +151 -0
  332. package/core/k-cli/node_modules/yaml/dist/stringify/stringify.d.ts +21 -0
  333. package/core/k-cli/node_modules/yaml/dist/stringify/stringify.js +132 -0
  334. package/core/k-cli/node_modules/yaml/dist/stringify/stringifyCollection.d.ts +17 -0
  335. package/core/k-cli/node_modules/yaml/dist/stringify/stringifyCollection.js +155 -0
  336. package/core/k-cli/node_modules/yaml/dist/stringify/stringifyComment.d.ts +10 -0
  337. package/core/k-cli/node_modules/yaml/dist/stringify/stringifyComment.js +24 -0
  338. package/core/k-cli/node_modules/yaml/dist/stringify/stringifyDocument.d.ts +4 -0
  339. package/core/k-cli/node_modules/yaml/dist/stringify/stringifyDocument.js +87 -0
  340. package/core/k-cli/node_modules/yaml/dist/stringify/stringifyNumber.d.ts +2 -0
  341. package/core/k-cli/node_modules/yaml/dist/stringify/stringifyNumber.js +26 -0
  342. package/core/k-cli/node_modules/yaml/dist/stringify/stringifyPair.d.ts +3 -0
  343. package/core/k-cli/node_modules/yaml/dist/stringify/stringifyPair.js +152 -0
  344. package/core/k-cli/node_modules/yaml/dist/stringify/stringifyString.d.ts +9 -0
  345. package/core/k-cli/node_modules/yaml/dist/stringify/stringifyString.js +338 -0
  346. package/core/k-cli/node_modules/yaml/dist/test-events.d.ts +4 -0
  347. package/core/k-cli/node_modules/yaml/dist/test-events.js +134 -0
  348. package/core/k-cli/node_modules/yaml/dist/util.d.ts +16 -0
  349. package/core/k-cli/node_modules/yaml/dist/util.js +28 -0
  350. package/core/k-cli/node_modules/yaml/dist/visit.d.ts +102 -0
  351. package/core/k-cli/node_modules/yaml/dist/visit.js +236 -0
  352. package/core/k-cli/node_modules/yaml/package.json +97 -0
  353. package/core/k-cli/node_modules/yaml/util.js +2 -0
  354. package/core/plugins/kenaz/commands/Ansuz.md +19 -30
  355. package/core/plugins/kenaz/hooks/hooks.json +1 -5
  356. package/core/plugins/kenaz/hooks/kenaz-hook.js +0 -4
  357. package/core/plugins/kenaz/scripts/kenaz.test.js +1 -1
  358. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/charts.csv +26 -26
  359. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/colors.csv +97 -97
  360. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/icons.csv +101 -101
  361. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/landing.csv +31 -31
  362. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/products.csv +96 -96
  363. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/react-performance.csv +45 -45
  364. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/astro.csv +54 -54
  365. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/flutter.csv +53 -53
  366. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -56
  367. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -53
  368. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/nextjs.csv +53 -53
  369. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -51
  370. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -59
  371. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/react-native.csv +52 -52
  372. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/react.csv +54 -54
  373. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/shadcn.csv +61 -61
  374. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/svelte.csv +54 -54
  375. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/swiftui.csv +51 -51
  376. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/stacks/vue.csv +50 -50
  377. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/styles.csv +68 -68
  378. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/typography.csv +57 -57
  379. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/ui-reasoning.csv +101 -101
  380. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/ux-guidelines.csv +99 -99
  381. package/core/plugins/kenaz/skills/ui-ux-pro-max/data/web-interface.csv +31 -31
  382. package/core/plugins/kenaz/skills/ui-ux-pro-max/scripts/core.py +253 -253
  383. package/core/plugins/kenaz/skills/ui-ux-pro-max/scripts/design_system.py +1067 -1067
  384. package/core/plugins/kenaz/skills/ui-ux-pro-max/scripts/search.py +106 -106
  385. package/lib/cli.js +36 -2
  386. package/lib/cli.test.js +24 -0
  387. package/lib/dashboard.js +10 -0
  388. package/package.json +6 -6
  389. package/core/.specialist/tools/__tests__/task-1863-boot-lease-reuse.test.js +0 -99
  390. package/core/.specialist/tools/__tests__/task-1977-banner-cap.test.js +0 -129
@@ -0,0 +1,217 @@
1
+ import { Directives } from '../doc/directives.js';
2
+ import { Document } from '../doc/Document.js';
3
+ import { YAMLWarning, YAMLParseError } from '../errors.js';
4
+ import { isCollection, isPair } from '../nodes/identity.js';
5
+ import { composeDoc } from './compose-doc.js';
6
+ import { resolveEnd } from './resolve-end.js';
7
+
8
+ function getErrorPos(src) {
9
+ if (typeof src === 'number')
10
+ return [src, src + 1];
11
+ if (Array.isArray(src))
12
+ return src.length === 2 ? src : [src[0], src[1]];
13
+ const { offset, source } = src;
14
+ return [offset, offset + (typeof source === 'string' ? source.length : 1)];
15
+ }
16
+ function parsePrelude(prelude) {
17
+ let comment = '';
18
+ let atComment = false;
19
+ let afterEmptyLine = false;
20
+ for (let i = 0; i < prelude.length; ++i) {
21
+ const source = prelude[i];
22
+ switch (source[0]) {
23
+ case '#':
24
+ comment +=
25
+ (comment === '' ? '' : afterEmptyLine ? '\n\n' : '\n') +
26
+ (source.substring(1) || ' ');
27
+ atComment = true;
28
+ afterEmptyLine = false;
29
+ break;
30
+ case '%':
31
+ if (prelude[i + 1]?.[0] !== '#')
32
+ i += 1;
33
+ atComment = false;
34
+ break;
35
+ default:
36
+ // This may be wrong after doc-end, but in that case it doesn't matter
37
+ if (!atComment)
38
+ afterEmptyLine = true;
39
+ atComment = false;
40
+ }
41
+ }
42
+ return { comment, afterEmptyLine };
43
+ }
44
+ /**
45
+ * Compose a stream of CST nodes into a stream of YAML Documents.
46
+ *
47
+ * ```ts
48
+ * import { Composer, Parser } from 'yaml'
49
+ *
50
+ * const src: string = ...
51
+ * const tokens = new Parser().parse(src)
52
+ * const docs = new Composer().compose(tokens)
53
+ * ```
54
+ */
55
+ class Composer {
56
+ constructor(options = {}) {
57
+ this.doc = null;
58
+ this.atDirectives = false;
59
+ this.prelude = [];
60
+ this.errors = [];
61
+ this.warnings = [];
62
+ this.onError = (source, code, message, warning) => {
63
+ const pos = getErrorPos(source);
64
+ if (warning)
65
+ this.warnings.push(new YAMLWarning(pos, code, message));
66
+ else
67
+ this.errors.push(new YAMLParseError(pos, code, message));
68
+ };
69
+ // eslint-disable-next-line @typescript-eslint/prefer-nullish-coalescing
70
+ this.directives = new Directives({ version: options.version || '1.2' });
71
+ this.options = options;
72
+ }
73
+ decorate(doc, afterDoc) {
74
+ const { comment, afterEmptyLine } = parsePrelude(this.prelude);
75
+ //console.log({ dc: doc.comment, prelude, comment })
76
+ if (comment) {
77
+ const dc = doc.contents;
78
+ if (afterDoc) {
79
+ doc.comment = doc.comment ? `${doc.comment}\n${comment}` : comment;
80
+ }
81
+ else if (afterEmptyLine || doc.directives.docStart || !dc) {
82
+ doc.commentBefore = comment;
83
+ }
84
+ else if (isCollection(dc) && !dc.flow && dc.items.length > 0) {
85
+ let it = dc.items[0];
86
+ if (isPair(it))
87
+ it = it.key;
88
+ const cb = it.commentBefore;
89
+ it.commentBefore = cb ? `${comment}\n${cb}` : comment;
90
+ }
91
+ else {
92
+ const cb = dc.commentBefore;
93
+ dc.commentBefore = cb ? `${comment}\n${cb}` : comment;
94
+ }
95
+ }
96
+ if (afterDoc) {
97
+ Array.prototype.push.apply(doc.errors, this.errors);
98
+ Array.prototype.push.apply(doc.warnings, this.warnings);
99
+ }
100
+ else {
101
+ doc.errors = this.errors;
102
+ doc.warnings = this.warnings;
103
+ }
104
+ this.prelude = [];
105
+ this.errors = [];
106
+ this.warnings = [];
107
+ }
108
+ /**
109
+ * Current stream status information.
110
+ *
111
+ * Mostly useful at the end of input for an empty stream.
112
+ */
113
+ streamInfo() {
114
+ return {
115
+ comment: parsePrelude(this.prelude).comment,
116
+ directives: this.directives,
117
+ errors: this.errors,
118
+ warnings: this.warnings
119
+ };
120
+ }
121
+ /**
122
+ * Compose tokens into documents.
123
+ *
124
+ * @param forceDoc - If the stream contains no document, still emit a final document including any comments and directives that would be applied to a subsequent document.
125
+ * @param endOffset - Should be set if `forceDoc` is also set, to set the document range end and to indicate errors correctly.
126
+ */
127
+ *compose(tokens, forceDoc = false, endOffset = -1) {
128
+ for (const token of tokens)
129
+ yield* this.next(token);
130
+ yield* this.end(forceDoc, endOffset);
131
+ }
132
+ /** Advance the composer by one CST token. */
133
+ *next(token) {
134
+ switch (token.type) {
135
+ case 'directive':
136
+ this.directives.add(token.source, (offset, message, warning) => {
137
+ const pos = getErrorPos(token);
138
+ pos[0] += offset;
139
+ this.onError(pos, 'BAD_DIRECTIVE', message, warning);
140
+ });
141
+ this.prelude.push(token.source);
142
+ this.atDirectives = true;
143
+ break;
144
+ case 'document': {
145
+ const doc = composeDoc(this.options, this.directives, token, this.onError);
146
+ if (this.atDirectives && !doc.directives.docStart)
147
+ this.onError(token, 'MISSING_CHAR', 'Missing directives-end/doc-start indicator line');
148
+ this.decorate(doc, false);
149
+ if (this.doc)
150
+ yield this.doc;
151
+ this.doc = doc;
152
+ this.atDirectives = false;
153
+ break;
154
+ }
155
+ case 'byte-order-mark':
156
+ case 'space':
157
+ break;
158
+ case 'comment':
159
+ case 'newline':
160
+ this.prelude.push(token.source);
161
+ break;
162
+ case 'error': {
163
+ const msg = token.source
164
+ ? `${token.message}: ${JSON.stringify(token.source)}`
165
+ : token.message;
166
+ const error = new YAMLParseError(getErrorPos(token), 'UNEXPECTED_TOKEN', msg);
167
+ if (this.atDirectives || !this.doc)
168
+ this.errors.push(error);
169
+ else
170
+ this.doc.errors.push(error);
171
+ break;
172
+ }
173
+ case 'doc-end': {
174
+ if (!this.doc) {
175
+ const msg = 'Unexpected doc-end without preceding document';
176
+ this.errors.push(new YAMLParseError(getErrorPos(token), 'UNEXPECTED_TOKEN', msg));
177
+ break;
178
+ }
179
+ this.doc.directives.docEnd = true;
180
+ const end = resolveEnd(token.end, token.offset + token.source.length, this.doc.options.strict, this.onError);
181
+ this.decorate(this.doc, true);
182
+ if (end.comment) {
183
+ const dc = this.doc.comment;
184
+ this.doc.comment = dc ? `${dc}\n${end.comment}` : end.comment;
185
+ }
186
+ this.doc.range[2] = end.offset;
187
+ break;
188
+ }
189
+ default:
190
+ this.errors.push(new YAMLParseError(getErrorPos(token), 'UNEXPECTED_TOKEN', `Unsupported token ${token.type}`));
191
+ }
192
+ }
193
+ /**
194
+ * Call at end of input to yield any remaining document.
195
+ *
196
+ * @param forceDoc - If the stream contains no document, still emit a final document including any comments and directives that would be applied to a subsequent document.
197
+ * @param endOffset - Should be set if `forceDoc` is also set, to set the document range end and to indicate errors correctly.
198
+ */
199
+ *end(forceDoc = false, endOffset = -1) {
200
+ if (this.doc) {
201
+ this.decorate(this.doc, true);
202
+ yield this.doc;
203
+ this.doc = null;
204
+ }
205
+ else if (forceDoc) {
206
+ const opts = Object.assign({ _directives: this.directives }, this.options);
207
+ const doc = new Document(undefined, opts);
208
+ if (this.atDirectives)
209
+ this.onError(endOffset, 'MISSING_CHAR', 'Missing directives-end indicator line');
210
+ doc.range = [0, endOffset, endOffset];
211
+ this.decorate(doc, false);
212
+ yield doc;
213
+ }
214
+ }
215
+ }
216
+
217
+ export { Composer };
@@ -0,0 +1,115 @@
1
+ import { Pair } from '../nodes/Pair.js';
2
+ import { YAMLMap } from '../nodes/YAMLMap.js';
3
+ import { resolveProps } from './resolve-props.js';
4
+ import { containsNewline } from './util-contains-newline.js';
5
+ import { flowIndentCheck } from './util-flow-indent-check.js';
6
+ import { mapIncludes } from './util-map-includes.js';
7
+
8
+ const startColMsg = 'All mapping items must start at the same column';
9
+ function resolveBlockMap({ composeNode, composeEmptyNode }, ctx, bm, onError, tag) {
10
+ const NodeClass = tag?.nodeClass ?? YAMLMap;
11
+ const map = new NodeClass(ctx.schema);
12
+ if (ctx.atRoot)
13
+ ctx.atRoot = false;
14
+ let offset = bm.offset;
15
+ let commentEnd = null;
16
+ for (const collItem of bm.items) {
17
+ const { start, key, sep, value } = collItem;
18
+ // key properties
19
+ const keyProps = resolveProps(start, {
20
+ indicator: 'explicit-key-ind',
21
+ next: key ?? sep?.[0],
22
+ offset,
23
+ onError,
24
+ parentIndent: bm.indent,
25
+ startOnNewline: true
26
+ });
27
+ const implicitKey = !keyProps.found;
28
+ if (implicitKey) {
29
+ if (key) {
30
+ if (key.type === 'block-seq')
31
+ onError(offset, 'BLOCK_AS_IMPLICIT_KEY', 'A block sequence may not be used as an implicit map key');
32
+ else if ('indent' in key && key.indent !== bm.indent)
33
+ onError(offset, 'BAD_INDENT', startColMsg);
34
+ }
35
+ if (!keyProps.anchor && !keyProps.tag && !sep) {
36
+ commentEnd = keyProps.end;
37
+ if (keyProps.comment) {
38
+ if (map.comment)
39
+ map.comment += '\n' + keyProps.comment;
40
+ else
41
+ map.comment = keyProps.comment;
42
+ }
43
+ continue;
44
+ }
45
+ if (keyProps.newlineAfterProp || containsNewline(key)) {
46
+ onError(key ?? start[start.length - 1], 'MULTILINE_IMPLICIT_KEY', 'Implicit keys need to be on a single line');
47
+ }
48
+ }
49
+ else if (keyProps.found?.indent !== bm.indent) {
50
+ onError(offset, 'BAD_INDENT', startColMsg);
51
+ }
52
+ // key value
53
+ ctx.atKey = true;
54
+ const keyStart = keyProps.end;
55
+ const keyNode = key
56
+ ? composeNode(ctx, key, keyProps, onError)
57
+ : composeEmptyNode(ctx, keyStart, start, null, keyProps, onError);
58
+ if (ctx.schema.compat)
59
+ flowIndentCheck(bm.indent, key, onError);
60
+ ctx.atKey = false;
61
+ if (mapIncludes(ctx, map.items, keyNode))
62
+ onError(keyStart, 'DUPLICATE_KEY', 'Map keys must be unique');
63
+ // value properties
64
+ const valueProps = resolveProps(sep ?? [], {
65
+ indicator: 'map-value-ind',
66
+ next: value,
67
+ offset: keyNode.range[2],
68
+ onError,
69
+ parentIndent: bm.indent,
70
+ startOnNewline: !key || key.type === 'block-scalar'
71
+ });
72
+ offset = valueProps.end;
73
+ if (valueProps.found) {
74
+ if (implicitKey) {
75
+ if (value?.type === 'block-map' && !valueProps.hasNewline)
76
+ onError(offset, 'BLOCK_AS_IMPLICIT_KEY', 'Nested mappings are not allowed in compact mappings');
77
+ if (ctx.options.strict &&
78
+ keyProps.start < valueProps.found.offset - 1024)
79
+ onError(keyNode.range, 'KEY_OVER_1024_CHARS', 'The : indicator must be at most 1024 chars after the start of an implicit block mapping key');
80
+ }
81
+ // value value
82
+ const valueNode = value
83
+ ? composeNode(ctx, value, valueProps, onError)
84
+ : composeEmptyNode(ctx, offset, sep, null, valueProps, onError);
85
+ if (ctx.schema.compat)
86
+ flowIndentCheck(bm.indent, value, onError);
87
+ offset = valueNode.range[2];
88
+ const pair = new Pair(keyNode, valueNode);
89
+ if (ctx.options.keepSourceTokens)
90
+ pair.srcToken = collItem;
91
+ map.items.push(pair);
92
+ }
93
+ else {
94
+ // key with no value
95
+ if (implicitKey)
96
+ onError(keyNode.range, 'MISSING_CHAR', 'Implicit map keys need to be followed by map values');
97
+ if (valueProps.comment) {
98
+ if (keyNode.comment)
99
+ keyNode.comment += '\n' + valueProps.comment;
100
+ else
101
+ keyNode.comment = valueProps.comment;
102
+ }
103
+ const pair = new Pair(keyNode);
104
+ if (ctx.options.keepSourceTokens)
105
+ pair.srcToken = collItem;
106
+ map.items.push(pair);
107
+ }
108
+ }
109
+ if (commentEnd && commentEnd < offset)
110
+ onError(commentEnd, 'IMPOSSIBLE', 'Map comment with trailing content');
111
+ map.range = [bm.offset, offset, commentEnd ?? offset];
112
+ return map;
113
+ }
114
+
115
+ export { resolveBlockMap };
@@ -0,0 +1,198 @@
1
+ import { Scalar } from '../nodes/Scalar.js';
2
+
3
+ function resolveBlockScalar(ctx, scalar, onError) {
4
+ const start = scalar.offset;
5
+ const header = parseBlockScalarHeader(scalar, ctx.options.strict, onError);
6
+ if (!header)
7
+ return { value: '', type: null, comment: '', range: [start, start, start] };
8
+ const type = header.mode === '>' ? Scalar.BLOCK_FOLDED : Scalar.BLOCK_LITERAL;
9
+ const lines = scalar.source ? splitLines(scalar.source) : [];
10
+ // determine the end of content & start of chomping
11
+ let chompStart = lines.length;
12
+ for (let i = lines.length - 1; i >= 0; --i) {
13
+ const content = lines[i][1];
14
+ if (content === '' || content === '\r')
15
+ chompStart = i;
16
+ else
17
+ break;
18
+ }
19
+ // shortcut for empty contents
20
+ if (chompStart === 0) {
21
+ const value = header.chomp === '+' && lines.length > 0
22
+ ? '\n'.repeat(Math.max(1, lines.length - 1))
23
+ : '';
24
+ let end = start + header.length;
25
+ if (scalar.source)
26
+ end += scalar.source.length;
27
+ return { value, type, comment: header.comment, range: [start, end, end] };
28
+ }
29
+ // find the indentation level to trim from start
30
+ let trimIndent = scalar.indent + header.indent;
31
+ let offset = scalar.offset + header.length;
32
+ let contentStart = 0;
33
+ for (let i = 0; i < chompStart; ++i) {
34
+ const [indent, content] = lines[i];
35
+ if (content === '' || content === '\r') {
36
+ if (header.indent === 0 && indent.length > trimIndent)
37
+ trimIndent = indent.length;
38
+ }
39
+ else {
40
+ if (indent.length < trimIndent) {
41
+ const message = 'Block scalars with more-indented leading empty lines must use an explicit indentation indicator';
42
+ onError(offset + indent.length, 'MISSING_CHAR', message);
43
+ }
44
+ if (header.indent === 0)
45
+ trimIndent = indent.length;
46
+ contentStart = i;
47
+ if (trimIndent === 0 && !ctx.atRoot) {
48
+ const message = 'Block scalar values in collections must be indented';
49
+ onError(offset, 'BAD_INDENT', message);
50
+ }
51
+ break;
52
+ }
53
+ offset += indent.length + content.length + 1;
54
+ }
55
+ // include trailing more-indented empty lines in content
56
+ for (let i = lines.length - 1; i >= chompStart; --i) {
57
+ if (lines[i][0].length > trimIndent)
58
+ chompStart = i + 1;
59
+ }
60
+ let value = '';
61
+ let sep = '';
62
+ let prevMoreIndented = false;
63
+ // leading whitespace is kept intact
64
+ for (let i = 0; i < contentStart; ++i)
65
+ value += lines[i][0].slice(trimIndent) + '\n';
66
+ for (let i = contentStart; i < chompStart; ++i) {
67
+ let [indent, content] = lines[i];
68
+ offset += indent.length + content.length + 1;
69
+ const crlf = content[content.length - 1] === '\r';
70
+ if (crlf)
71
+ content = content.slice(0, -1);
72
+ /* istanbul ignore if already caught in lexer */
73
+ if (content && indent.length < trimIndent) {
74
+ const src = header.indent
75
+ ? 'explicit indentation indicator'
76
+ : 'first line';
77
+ const message = `Block scalar lines must not be less indented than their ${src}`;
78
+ onError(offset - content.length - (crlf ? 2 : 1), 'BAD_INDENT', message);
79
+ indent = '';
80
+ }
81
+ if (type === Scalar.BLOCK_LITERAL) {
82
+ value += sep + indent.slice(trimIndent) + content;
83
+ sep = '\n';
84
+ }
85
+ else if (indent.length > trimIndent || content[0] === '\t') {
86
+ // more-indented content within a folded block
87
+ if (sep === ' ')
88
+ sep = '\n';
89
+ else if (!prevMoreIndented && sep === '\n')
90
+ sep = '\n\n';
91
+ value += sep + indent.slice(trimIndent) + content;
92
+ sep = '\n';
93
+ prevMoreIndented = true;
94
+ }
95
+ else if (content === '') {
96
+ // empty line
97
+ if (sep === '\n')
98
+ value += '\n';
99
+ else
100
+ sep = '\n';
101
+ }
102
+ else {
103
+ value += sep + content;
104
+ sep = ' ';
105
+ prevMoreIndented = false;
106
+ }
107
+ }
108
+ switch (header.chomp) {
109
+ case '-':
110
+ break;
111
+ case '+':
112
+ for (let i = chompStart; i < lines.length; ++i)
113
+ value += '\n' + lines[i][0].slice(trimIndent);
114
+ if (value[value.length - 1] !== '\n')
115
+ value += '\n';
116
+ break;
117
+ default:
118
+ value += '\n';
119
+ }
120
+ const end = start + header.length + scalar.source.length;
121
+ return { value, type, comment: header.comment, range: [start, end, end] };
122
+ }
123
+ function parseBlockScalarHeader({ offset, props }, strict, onError) {
124
+ /* istanbul ignore if should not happen */
125
+ if (props[0].type !== 'block-scalar-header') {
126
+ onError(props[0], 'IMPOSSIBLE', 'Block scalar header not found');
127
+ return null;
128
+ }
129
+ const { source } = props[0];
130
+ const mode = source[0];
131
+ let indent = 0;
132
+ let chomp = '';
133
+ let error = -1;
134
+ for (let i = 1; i < source.length; ++i) {
135
+ const ch = source[i];
136
+ if (!chomp && (ch === '-' || ch === '+'))
137
+ chomp = ch;
138
+ else {
139
+ const n = Number(ch);
140
+ if (!indent && n)
141
+ indent = n;
142
+ else if (error === -1)
143
+ error = offset + i;
144
+ }
145
+ }
146
+ if (error !== -1)
147
+ onError(error, 'UNEXPECTED_TOKEN', `Block scalar header includes extra characters: ${source}`);
148
+ let hasSpace = false;
149
+ let comment = '';
150
+ let length = source.length;
151
+ for (let i = 1; i < props.length; ++i) {
152
+ const token = props[i];
153
+ switch (token.type) {
154
+ case 'space':
155
+ hasSpace = true;
156
+ // fallthrough
157
+ case 'newline':
158
+ length += token.source.length;
159
+ break;
160
+ case 'comment':
161
+ if (strict && !hasSpace) {
162
+ const message = 'Comments must be separated from other tokens by white space characters';
163
+ onError(token, 'MISSING_CHAR', message);
164
+ }
165
+ length += token.source.length;
166
+ comment = token.source.substring(1);
167
+ break;
168
+ case 'error':
169
+ onError(token, 'UNEXPECTED_TOKEN', token.message);
170
+ length += token.source.length;
171
+ break;
172
+ /* istanbul ignore next should not happen */
173
+ default: {
174
+ const message = `Unexpected token in block scalar header: ${token.type}`;
175
+ onError(token, 'UNEXPECTED_TOKEN', message);
176
+ const ts = token.source;
177
+ if (ts && typeof ts === 'string')
178
+ length += ts.length;
179
+ }
180
+ }
181
+ }
182
+ return { mode, indent, chomp, comment, length };
183
+ }
184
+ /** @returns Array of lines split up as `[indent, content]` */
185
+ function splitLines(source) {
186
+ const split = source.split(/\n( *)/);
187
+ const first = split[0];
188
+ const m = first.match(/^( *)/);
189
+ const line0 = m?.[1]
190
+ ? [m[1], first.slice(m[1].length)]
191
+ : ['', first];
192
+ const lines = [line0];
193
+ for (let i = 1; i < split.length; i += 2)
194
+ lines.push([split[i], split[i + 1]]);
195
+ return lines;
196
+ }
197
+
198
+ export { resolveBlockScalar };
@@ -0,0 +1,49 @@
1
+ import { YAMLSeq } from '../nodes/YAMLSeq.js';
2
+ import { resolveProps } from './resolve-props.js';
3
+ import { flowIndentCheck } from './util-flow-indent-check.js';
4
+
5
+ function resolveBlockSeq({ composeNode, composeEmptyNode }, ctx, bs, onError, tag) {
6
+ const NodeClass = tag?.nodeClass ?? YAMLSeq;
7
+ const seq = new NodeClass(ctx.schema);
8
+ if (ctx.atRoot)
9
+ ctx.atRoot = false;
10
+ if (ctx.atKey)
11
+ ctx.atKey = false;
12
+ let offset = bs.offset;
13
+ let commentEnd = null;
14
+ for (const { start, value } of bs.items) {
15
+ const props = resolveProps(start, {
16
+ indicator: 'seq-item-ind',
17
+ next: value,
18
+ offset,
19
+ onError,
20
+ parentIndent: bs.indent,
21
+ startOnNewline: true
22
+ });
23
+ if (!props.found) {
24
+ if (props.anchor || props.tag || value) {
25
+ if (value?.type === 'block-seq')
26
+ onError(props.end, 'BAD_INDENT', 'All sequence items must start at the same column');
27
+ else
28
+ onError(offset, 'MISSING_CHAR', 'Sequence item without - indicator');
29
+ }
30
+ else {
31
+ commentEnd = props.end;
32
+ if (props.comment)
33
+ seq.comment = props.comment;
34
+ continue;
35
+ }
36
+ }
37
+ const node = value
38
+ ? composeNode(ctx, value, props, onError)
39
+ : composeEmptyNode(ctx, props.end, start, null, props, onError);
40
+ if (ctx.schema.compat)
41
+ flowIndentCheck(bs.indent, value, onError);
42
+ offset = node.range[2];
43
+ seq.items.push(node);
44
+ }
45
+ seq.range = [bs.offset, offset, commentEnd ?? offset];
46
+ return seq;
47
+ }
48
+
49
+ export { resolveBlockSeq };
@@ -0,0 +1,37 @@
1
+ function resolveEnd(end, offset, reqSpace, onError) {
2
+ let comment = '';
3
+ if (end) {
4
+ let hasSpace = false;
5
+ let sep = '';
6
+ for (const token of end) {
7
+ const { source, type } = token;
8
+ switch (type) {
9
+ case 'space':
10
+ hasSpace = true;
11
+ break;
12
+ case 'comment': {
13
+ if (reqSpace && !hasSpace)
14
+ onError(token, 'MISSING_CHAR', 'Comments must be separated from other tokens by white space characters');
15
+ const cb = source.substring(1) || ' ';
16
+ if (!comment)
17
+ comment = cb;
18
+ else
19
+ comment += sep + cb;
20
+ sep = '';
21
+ break;
22
+ }
23
+ case 'newline':
24
+ if (comment)
25
+ sep += source;
26
+ hasSpace = true;
27
+ break;
28
+ default:
29
+ onError(token, 'UNEXPECTED_TOKEN', `Unexpected ${type} at node end`);
30
+ }
31
+ offset += source.length;
32
+ }
33
+ }
34
+ return { comment, offset };
35
+ }
36
+
37
+ export { resolveEnd };