@aigne/doc-smith 0.8.12-beta.8 → 0.8.12

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 (264) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/agents/publish/index.yaml +4 -0
  3. package/agents/publish/publish-docs.mjs +77 -5
  4. package/agents/publish/translate-meta.mjs +103 -0
  5. package/agents/update/generate-document.yaml +30 -28
  6. package/agents/update/update-document-detail.yaml +3 -1
  7. package/agents/utils/update-branding.mjs +69 -0
  8. package/package.json +16 -2
  9. package/prompts/common/document/role-and-personality.md +3 -1
  10. package/prompts/detail/d2-diagram/guide.md +7 -1
  11. package/prompts/detail/d2-diagram/user-prompt.md +3 -0
  12. package/prompts/detail/generate/system-prompt.md +6 -7
  13. package/prompts/detail/generate/user-prompt.md +12 -3
  14. package/prompts/detail/update/user-prompt.md +0 -2
  15. package/prompts/structure/update/user-prompt.md +0 -4
  16. package/utils/file-utils.mjs +69 -24
  17. package/utils/markdown-checker.mjs +0 -20
  18. package/utils/request.mjs +7 -0
  19. package/utils/upload-files.mjs +231 -0
  20. package/utils/utils.mjs +11 -1
  21. package/.aigne/doc-smith/config.yaml +0 -77
  22. package/.aigne/doc-smith/history.yaml +0 -37
  23. package/.aigne/doc-smith/media-description.yaml +0 -91
  24. package/.aigne/doc-smith/output/structure-plan.json +0 -162
  25. package/.aigne/doc-smith/preferences.yml +0 -97
  26. package/.aigne/doc-smith/upload-cache.yaml +0 -1830
  27. package/.github/PULL_REQUEST_TEMPLATE.md +0 -28
  28. package/.github/workflows/ci.yml +0 -54
  29. package/.github/workflows/create-release-pr.yaml +0 -21
  30. package/.github/workflows/publish-docs.yml +0 -65
  31. package/.github/workflows/release.yml +0 -49
  32. package/.github/workflows/reviewer.yml +0 -54
  33. package/.release-please-manifest.json +0 -3
  34. package/RELEASE.md +0 -9
  35. package/assets/screenshots/doc-complete-setup.png +0 -0
  36. package/assets/screenshots/doc-generate-docs.png +0 -0
  37. package/assets/screenshots/doc-generate.png +0 -0
  38. package/assets/screenshots/doc-generated-successfully.png +0 -0
  39. package/assets/screenshots/doc-publish.png +0 -0
  40. package/assets/screenshots/doc-regenerate.png +0 -0
  41. package/assets/screenshots/doc-translate-langs.png +0 -0
  42. package/assets/screenshots/doc-translate.png +0 -0
  43. package/assets/screenshots/doc-update.png +0 -0
  44. package/biome.json +0 -73
  45. package/codecov.yml +0 -15
  46. package/docs/_sidebar.md +0 -15
  47. package/docs/configuration-initial-setup.ja.md +0 -179
  48. package/docs/configuration-initial-setup.md +0 -198
  49. package/docs/configuration-initial-setup.zh-TW.md +0 -179
  50. package/docs/configuration-initial-setup.zh.md +0 -179
  51. package/docs/configuration-managing-preferences.ja.md +0 -100
  52. package/docs/configuration-managing-preferences.md +0 -100
  53. package/docs/configuration-managing-preferences.zh-TW.md +0 -100
  54. package/docs/configuration-managing-preferences.zh.md +0 -100
  55. package/docs/configuration.ja.md +0 -69
  56. package/docs/configuration.md +0 -69
  57. package/docs/configuration.zh-TW.md +0 -69
  58. package/docs/configuration.zh.md +0 -69
  59. package/docs/getting-started.ja.md +0 -107
  60. package/docs/getting-started.md +0 -107
  61. package/docs/getting-started.zh-TW.md +0 -107
  62. package/docs/getting-started.zh.md +0 -107
  63. package/docs/guides-cleaning-up.ja.md +0 -51
  64. package/docs/guides-cleaning-up.md +0 -52
  65. package/docs/guides-cleaning-up.zh-TW.md +0 -51
  66. package/docs/guides-cleaning-up.zh.md +0 -51
  67. package/docs/guides-evaluating-documents.ja.md +0 -66
  68. package/docs/guides-evaluating-documents.md +0 -107
  69. package/docs/guides-evaluating-documents.zh-TW.md +0 -66
  70. package/docs/guides-evaluating-documents.zh.md +0 -66
  71. package/docs/guides-generating-documentation.ja.md +0 -151
  72. package/docs/guides-generating-documentation.md +0 -89
  73. package/docs/guides-generating-documentation.zh-TW.md +0 -151
  74. package/docs/guides-generating-documentation.zh.md +0 -151
  75. package/docs/guides-interactive-chat.ja.md +0 -85
  76. package/docs/guides-interactive-chat.md +0 -93
  77. package/docs/guides-interactive-chat.zh-TW.md +0 -85
  78. package/docs/guides-interactive-chat.zh.md +0 -85
  79. package/docs/guides-managing-history.ja.md +0 -48
  80. package/docs/guides-managing-history.md +0 -53
  81. package/docs/guides-managing-history.zh-TW.md +0 -48
  82. package/docs/guides-managing-history.zh.md +0 -48
  83. package/docs/guides-publishing-your-docs.ja.md +0 -78
  84. package/docs/guides-publishing-your-docs.md +0 -83
  85. package/docs/guides-publishing-your-docs.zh-TW.md +0 -78
  86. package/docs/guides-publishing-your-docs.zh.md +0 -78
  87. package/docs/guides-translating-documentation.ja.md +0 -95
  88. package/docs/guides-translating-documentation.md +0 -100
  89. package/docs/guides-translating-documentation.zh-TW.md +0 -95
  90. package/docs/guides-translating-documentation.zh.md +0 -95
  91. package/docs/guides-updating-documentation.ja.md +0 -77
  92. package/docs/guides-updating-documentation.md +0 -79
  93. package/docs/guides-updating-documentation.zh-TW.md +0 -77
  94. package/docs/guides-updating-documentation.zh.md +0 -77
  95. package/docs/guides.ja.md +0 -32
  96. package/docs/guides.md +0 -32
  97. package/docs/guides.zh-TW.md +0 -32
  98. package/docs/guides.zh.md +0 -32
  99. package/docs/overview.ja.md +0 -61
  100. package/docs/overview.md +0 -61
  101. package/docs/overview.zh-TW.md +0 -61
  102. package/docs/overview.zh.md +0 -61
  103. package/docs/release-notes.ja.md +0 -255
  104. package/docs/release-notes.md +0 -288
  105. package/docs/release-notes.zh-TW.md +0 -255
  106. package/docs/release-notes.zh.md +0 -255
  107. package/prompts/common/afs/afs-tools-usage.md +0 -5
  108. package/prompts/common/afs/use-afs-instruction.md +0 -1
  109. package/release-please-config.json +0 -14
  110. package/tests/agents/chat/chat.test.mjs +0 -46
  111. package/tests/agents/clear/choose-contents.test.mjs +0 -284
  112. package/tests/agents/clear/clear-auth-tokens.test.mjs +0 -268
  113. package/tests/agents/clear/clear-document-config.test.mjs +0 -167
  114. package/tests/agents/clear/clear-document-structure.test.mjs +0 -380
  115. package/tests/agents/clear/clear-generated-docs.test.mjs +0 -222
  116. package/tests/agents/evaluate/code-snippet.test.mjs +0 -163
  117. package/tests/agents/evaluate/fixtures/api-services.md +0 -87
  118. package/tests/agents/evaluate/fixtures/js-sdk.md +0 -94
  119. package/tests/agents/evaluate/generate-report.test.mjs +0 -312
  120. package/tests/agents/generate/check-document-structure.test.mjs +0 -45
  121. package/tests/agents/generate/check-need-generate-structure.test.mjs +0 -279
  122. package/tests/agents/generate/document-structure-tools/add-document.test.mjs +0 -449
  123. package/tests/agents/generate/document-structure-tools/delete-document.test.mjs +0 -410
  124. package/tests/agents/generate/document-structure-tools/generate-sub-structure.test.mjs +0 -277
  125. package/tests/agents/generate/document-structure-tools/move-document.test.mjs +0 -476
  126. package/tests/agents/generate/document-structure-tools/update-document.test.mjs +0 -548
  127. package/tests/agents/generate/generate-structure.test.mjs +0 -45
  128. package/tests/agents/generate/user-review-document-structure.test.mjs +0 -319
  129. package/tests/agents/history/view.test.mjs +0 -97
  130. package/tests/agents/init/init.test.mjs +0 -1657
  131. package/tests/agents/prefs/prefs.test.mjs +0 -431
  132. package/tests/agents/publish/publish-docs.test.mjs +0 -787
  133. package/tests/agents/translate/choose-language.test.mjs +0 -311
  134. package/tests/agents/translate/translate-document.test.mjs +0 -51
  135. package/tests/agents/update/check-document.test.mjs +0 -463
  136. package/tests/agents/update/check-update-is-single.test.mjs +0 -300
  137. package/tests/agents/update/document-tools/update-document-content.test.mjs +0 -329
  138. package/tests/agents/update/generate-document.test.mjs +0 -51
  139. package/tests/agents/update/save-and-translate-document.test.mjs +0 -369
  140. package/tests/agents/update/user-review-document.test.mjs +0 -582
  141. package/tests/agents/utils/action-success.test.mjs +0 -54
  142. package/tests/agents/utils/check-detail-result.test.mjs +0 -743
  143. package/tests/agents/utils/check-feedback-refiner.test.mjs +0 -478
  144. package/tests/agents/utils/choose-docs.test.mjs +0 -406
  145. package/tests/agents/utils/exit.test.mjs +0 -70
  146. package/tests/agents/utils/feedback-refiner.test.mjs +0 -51
  147. package/tests/agents/utils/find-item-by-path.test.mjs +0 -517
  148. package/tests/agents/utils/find-user-preferences-by-path.test.mjs +0 -382
  149. package/tests/agents/utils/format-document-structure.test.mjs +0 -364
  150. package/tests/agents/utils/fs.test.mjs +0 -267
  151. package/tests/agents/utils/load-sources.test.mjs +0 -1470
  152. package/tests/agents/utils/save-docs.test.mjs +0 -109
  153. package/tests/agents/utils/save-output.test.mjs +0 -315
  154. package/tests/agents/utils/save-single-doc.test.mjs +0 -364
  155. package/tests/agents/utils/transform-detail-datasources.test.mjs +0 -320
  156. package/tests/utils/auth-utils.test.mjs +0 -596
  157. package/tests/utils/blocklet.test.mjs +0 -336
  158. package/tests/utils/conflict-detector.test.mjs +0 -355
  159. package/tests/utils/constants.test.mjs +0 -295
  160. package/tests/utils/d2-utils.test.mjs +0 -437
  161. package/tests/utils/deploy.test.mjs +0 -399
  162. package/tests/utils/docs-finder-utils.test.mjs +0 -650
  163. package/tests/utils/file-utils.test.mjs +0 -521
  164. package/tests/utils/history-utils.test.mjs +0 -206
  165. package/tests/utils/kroki-utils.test.mjs +0 -646
  166. package/tests/utils/linter/fixtures/css/keyword-error.css +0 -1
  167. package/tests/utils/linter/fixtures/css/missing-semicolon.css +0 -1
  168. package/tests/utils/linter/fixtures/css/syntax-error.css +0 -1
  169. package/tests/utils/linter/fixtures/css/undeclare-variable.css +0 -1
  170. package/tests/utils/linter/fixtures/css/unused-variable.css +0 -2
  171. package/tests/utils/linter/fixtures/css/valid-code.css +0 -1
  172. package/tests/utils/linter/fixtures/dockerfile/keyword-error.dockerfile +0 -1
  173. package/tests/utils/linter/fixtures/dockerfile/missing-semicolon.dockerfile +0 -2
  174. package/tests/utils/linter/fixtures/dockerfile/syntax-error.dockerfile +0 -2
  175. package/tests/utils/linter/fixtures/dockerfile/undeclare-variable.dockerfile +0 -1
  176. package/tests/utils/linter/fixtures/dockerfile/unused-variable.dockerfile +0 -1
  177. package/tests/utils/linter/fixtures/dockerfile/valid-code.dockerfile +0 -2
  178. package/tests/utils/linter/fixtures/go/keyword-error.go +0 -5
  179. package/tests/utils/linter/fixtures/go/missing-semicolon.go +0 -5
  180. package/tests/utils/linter/fixtures/go/syntax-error.go +0 -6
  181. package/tests/utils/linter/fixtures/go/undeclare-variable.go +0 -5
  182. package/tests/utils/linter/fixtures/go/unused-variable.go +0 -5
  183. package/tests/utils/linter/fixtures/go/valid-code.go +0 -7
  184. package/tests/utils/linter/fixtures/js/keyword-error.js +0 -3
  185. package/tests/utils/linter/fixtures/js/missing-semicolon.js +0 -6
  186. package/tests/utils/linter/fixtures/js/syntax-error.js +0 -4
  187. package/tests/utils/linter/fixtures/js/undeclare-variable.js +0 -3
  188. package/tests/utils/linter/fixtures/js/unused-variable.js +0 -7
  189. package/tests/utils/linter/fixtures/js/valid-code.js +0 -15
  190. package/tests/utils/linter/fixtures/json/keyword-error.json +0 -1
  191. package/tests/utils/linter/fixtures/json/missing-semicolon.json +0 -1
  192. package/tests/utils/linter/fixtures/json/syntax-error.json +0 -1
  193. package/tests/utils/linter/fixtures/json/undeclare-variable.json +0 -1
  194. package/tests/utils/linter/fixtures/json/unused-variable.json +0 -1
  195. package/tests/utils/linter/fixtures/json/valid-code.json +0 -1
  196. package/tests/utils/linter/fixtures/jsx/keyword-error.jsx +0 -5
  197. package/tests/utils/linter/fixtures/jsx/missing-semicolon.jsx +0 -5
  198. package/tests/utils/linter/fixtures/jsx/syntax-error.jsx +0 -5
  199. package/tests/utils/linter/fixtures/jsx/undeclare-variable.jsx +0 -5
  200. package/tests/utils/linter/fixtures/jsx/unused-variable.jsx +0 -4
  201. package/tests/utils/linter/fixtures/jsx/valid-code.jsx +0 -5
  202. package/tests/utils/linter/fixtures/python/keyword-error.py +0 -3
  203. package/tests/utils/linter/fixtures/python/missing-semicolon.py +0 -2
  204. package/tests/utils/linter/fixtures/python/syntax-error.py +0 -3
  205. package/tests/utils/linter/fixtures/python/undeclare-variable.py +0 -3
  206. package/tests/utils/linter/fixtures/python/unused-variable.py +0 -6
  207. package/tests/utils/linter/fixtures/python/valid-code.py +0 -12
  208. package/tests/utils/linter/fixtures/ruby/keyword-error.rb +0 -2
  209. package/tests/utils/linter/fixtures/ruby/missing-semicolon.rb +0 -1
  210. package/tests/utils/linter/fixtures/ruby/syntax-error.rb +0 -2
  211. package/tests/utils/linter/fixtures/ruby/undeclare-variable.rb +0 -1
  212. package/tests/utils/linter/fixtures/ruby/unused-variable.rb +0 -2
  213. package/tests/utils/linter/fixtures/ruby/valid-code.rb +0 -1
  214. package/tests/utils/linter/fixtures/sass/keyword-error.sass +0 -2
  215. package/tests/utils/linter/fixtures/sass/missing-semicolon.sass +0 -3
  216. package/tests/utils/linter/fixtures/sass/syntax-error.sass +0 -3
  217. package/tests/utils/linter/fixtures/sass/undeclare-variable.sass +0 -2
  218. package/tests/utils/linter/fixtures/sass/unused-variable.sass +0 -4
  219. package/tests/utils/linter/fixtures/sass/valid-code.sass +0 -2
  220. package/tests/utils/linter/fixtures/scss/keyword-error.scss +0 -1
  221. package/tests/utils/linter/fixtures/scss/missing-semicolon.scss +0 -1
  222. package/tests/utils/linter/fixtures/scss/syntax-error.scss +0 -1
  223. package/tests/utils/linter/fixtures/scss/undeclare-variable.scss +0 -1
  224. package/tests/utils/linter/fixtures/scss/unused-variable.scss +0 -2
  225. package/tests/utils/linter/fixtures/scss/valid-code.scss +0 -1
  226. package/tests/utils/linter/fixtures/shell/keyword-error.sh +0 -5
  227. package/tests/utils/linter/fixtures/shell/missing-semicolon.sh +0 -3
  228. package/tests/utils/linter/fixtures/shell/syntax-error.sh +0 -4
  229. package/tests/utils/linter/fixtures/shell/undeclare-variable.sh +0 -3
  230. package/tests/utils/linter/fixtures/shell/unused-variable.sh +0 -4
  231. package/tests/utils/linter/fixtures/shell/valid-code.sh +0 -3
  232. package/tests/utils/linter/fixtures/ts/keyword-error.ts +0 -1
  233. package/tests/utils/linter/fixtures/ts/missing-semicolon.ts +0 -1
  234. package/tests/utils/linter/fixtures/ts/syntax-error.ts +0 -1
  235. package/tests/utils/linter/fixtures/ts/undeclare-variable.ts +0 -1
  236. package/tests/utils/linter/fixtures/ts/unused-variable.ts +0 -3
  237. package/tests/utils/linter/fixtures/ts/valid-code.ts +0 -3
  238. package/tests/utils/linter/fixtures/tsx/keyword-error.tsx +0 -5
  239. package/tests/utils/linter/fixtures/tsx/missing-semicolon.tsx +0 -5
  240. package/tests/utils/linter/fixtures/tsx/syntax-error.tsx +0 -5
  241. package/tests/utils/linter/fixtures/tsx/undeclare-variable.tsx +0 -6
  242. package/tests/utils/linter/fixtures/tsx/unused-variable.tsx +0 -6
  243. package/tests/utils/linter/fixtures/tsx/valid-code.tsx +0 -5
  244. package/tests/utils/linter/fixtures/vue/keyword-error.vue +0 -6
  245. package/tests/utils/linter/fixtures/vue/missing-semicolon.vue +0 -6
  246. package/tests/utils/linter/fixtures/vue/syntax-error.vue +0 -6
  247. package/tests/utils/linter/fixtures/vue/undeclare-variable.vue +0 -6
  248. package/tests/utils/linter/fixtures/vue/unused-variable.vue +0 -7
  249. package/tests/utils/linter/fixtures/vue/valid-code.vue +0 -6
  250. package/tests/utils/linter/fixtures/yaml/keyword-error.yml +0 -1
  251. package/tests/utils/linter/fixtures/yaml/missing-semicolon.yml +0 -2
  252. package/tests/utils/linter/fixtures/yaml/syntax-error.yml +0 -1
  253. package/tests/utils/linter/fixtures/yaml/undeclare-variable.yml +0 -1
  254. package/tests/utils/linter/fixtures/yaml/unused-variable.yml +0 -2
  255. package/tests/utils/linter/fixtures/yaml/valid-code.yml +0 -3
  256. package/tests/utils/linter/index.test.mjs +0 -440
  257. package/tests/utils/linter/scan-results.mjs +0 -42
  258. package/tests/utils/load-config.test.mjs +0 -141
  259. package/tests/utils/markdown/index.test.mjs +0 -478
  260. package/tests/utils/mermaid-validator.test.mjs +0 -541
  261. package/tests/utils/mock-chat-model.mjs +0 -12
  262. package/tests/utils/preferences-utils.test.mjs +0 -465
  263. package/tests/utils/save-value-to-config.test.mjs +0 -483
  264. package/tests/utils/utils.test.mjs +0 -941
@@ -1,295 +0,0 @@
1
- import { describe, expect, test } from "bun:test";
2
- import {
3
- BLOCKLET_ADD_COMPONENT_DOCS,
4
- CONFLICT_RESOLUTION_RULES,
5
- CONFLICT_RULES,
6
- D2_CONFIG,
7
- DEFAULT_EXCLUDE_PATTERNS,
8
- DEFAULT_INCLUDE_PATTERNS,
9
- DISCUSS_KIT_DID,
10
- DISCUSS_KIT_STORE_URL,
11
- DOCUMENT_STYLES,
12
- DOCUMENTATION_DEPTH,
13
- FILE_CONCURRENCY,
14
- KROKI_CONCURRENCY,
15
- PURPOSE_TO_KNOWLEDGE_MAPPING,
16
- READER_KNOWLEDGE_LEVELS,
17
- SUPPORTED_FILE_EXTENSIONS,
18
- SUPPORTED_LANGUAGES,
19
- TARGET_AUDIENCES,
20
- TMP_ASSETS_DIR,
21
- TMP_DIR,
22
- TMP_DOCS_DIR,
23
- } from "../../utils/constants/index.mjs";
24
-
25
- describe("constants", () => {
26
- describe("DEFAULT_INCLUDE_PATTERNS", () => {
27
- test("should contain common programming language patterns", () => {
28
- expect(DEFAULT_INCLUDE_PATTERNS).toContain("*.js");
29
- expect(DEFAULT_INCLUDE_PATTERNS).toContain("*.ts");
30
- expect(DEFAULT_INCLUDE_PATTERNS).toContain("*.py");
31
- expect(DEFAULT_INCLUDE_PATTERNS).toContain("*.java");
32
- expect(DEFAULT_INCLUDE_PATTERNS).toContain("*.go");
33
- expect(DEFAULT_INCLUDE_PATTERNS).toContain("*.rs");
34
- });
35
-
36
- test("should contain documentation patterns", () => {
37
- expect(DEFAULT_INCLUDE_PATTERNS).toContain("*.md");
38
- expect(DEFAULT_INCLUDE_PATTERNS).toContain("*.rst");
39
- expect(DEFAULT_INCLUDE_PATTERNS).toContain("*.yaml");
40
- expect(DEFAULT_INCLUDE_PATTERNS).toContain("*.json");
41
- });
42
-
43
- test("should contain media file patterns", () => {
44
- expect(DEFAULT_INCLUDE_PATTERNS).toContain("*.png");
45
- expect(DEFAULT_INCLUDE_PATTERNS).toContain("*.jpg");
46
- expect(DEFAULT_INCLUDE_PATTERNS).toContain("*.svg");
47
- expect(DEFAULT_INCLUDE_PATTERNS).toContain("*.mp4");
48
- });
49
-
50
- test("should be an array of strings", () => {
51
- expect(Array.isArray(DEFAULT_INCLUDE_PATTERNS)).toBe(true);
52
- expect(DEFAULT_INCLUDE_PATTERNS.length).toBeGreaterThan(0);
53
- DEFAULT_INCLUDE_PATTERNS.forEach((pattern) => {
54
- expect(typeof pattern).toBe("string");
55
- });
56
- });
57
- });
58
-
59
- describe("DEFAULT_EXCLUDE_PATTERNS", () => {
60
- test("should contain common exclusion patterns", () => {
61
- expect(DEFAULT_EXCLUDE_PATTERNS).toContain("**/*node_modules/**");
62
- expect(DEFAULT_EXCLUDE_PATTERNS).toContain("**/*test/**");
63
- expect(DEFAULT_EXCLUDE_PATTERNS).toContain("**/*tests/**");
64
- expect(DEFAULT_EXCLUDE_PATTERNS).toContain("**/dist/**");
65
- expect(DEFAULT_EXCLUDE_PATTERNS).toContain(".git/**");
66
- });
67
-
68
- test("should be an array of strings", () => {
69
- expect(Array.isArray(DEFAULT_EXCLUDE_PATTERNS)).toBe(true);
70
- expect(DEFAULT_EXCLUDE_PATTERNS.length).toBeGreaterThan(0);
71
- DEFAULT_EXCLUDE_PATTERNS.forEach((pattern) => {
72
- expect(typeof pattern).toBe("string");
73
- });
74
- });
75
- });
76
-
77
- describe("SUPPORTED_LANGUAGES", () => {
78
- test("should contain common languages", () => {
79
- const codes = SUPPORTED_LANGUAGES.map((lang) => lang.code);
80
- expect(codes).toContain("en");
81
- expect(codes).toContain("zh");
82
- expect(codes).toContain("ja");
83
- expect(codes).toContain("ko");
84
- expect(codes).toContain("es");
85
- expect(codes).toContain("fr");
86
- });
87
-
88
- test("should have proper structure", () => {
89
- SUPPORTED_LANGUAGES.forEach((lang) => {
90
- expect(lang).toHaveProperty("code");
91
- expect(lang).toHaveProperty("label");
92
- expect(lang).toHaveProperty("sample");
93
- expect(typeof lang.code).toBe("string");
94
- expect(typeof lang.label).toBe("string");
95
- expect(typeof lang.sample).toBe("string");
96
- });
97
- });
98
- });
99
-
100
- describe("DOCUMENT_STYLES", () => {
101
- test("should contain all expected document styles", () => {
102
- const expectedStyles = [
103
- "getStarted",
104
- "completeTasks",
105
- "findAnswers",
106
- "understandSystem",
107
- "solveProblems",
108
- "mixedPurpose",
109
- ];
110
-
111
- expectedStyles.forEach((style) => {
112
- expect(DOCUMENT_STYLES).toHaveProperty(style);
113
- });
114
- });
115
-
116
- test("should have proper structure for each style", () => {
117
- Object.values(DOCUMENT_STYLES).forEach((style) => {
118
- expect(style).toHaveProperty("name");
119
- expect(style).toHaveProperty("description");
120
- expect(style).toHaveProperty("content");
121
- expect(typeof style.name).toBe("string");
122
- expect(typeof style.description).toBe("string");
123
- expect(typeof style.content).toBe("string");
124
- });
125
- });
126
- });
127
-
128
- describe("TARGET_AUDIENCES", () => {
129
- test("should contain all expected audience types", () => {
130
- const expectedAudiences = [
131
- "endUsers",
132
- "developers",
133
- "devops",
134
- "decisionMakers",
135
- "supportTeams",
136
- "mixedTechnical",
137
- ];
138
-
139
- expectedAudiences.forEach((audience) => {
140
- expect(TARGET_AUDIENCES).toHaveProperty(audience);
141
- });
142
- });
143
-
144
- test("should have proper structure for each audience", () => {
145
- Object.values(TARGET_AUDIENCES).forEach((audience) => {
146
- expect(audience).toHaveProperty("name");
147
- expect(audience).toHaveProperty("description");
148
- expect(audience).toHaveProperty("content");
149
- expect(typeof audience.name).toBe("string");
150
- expect(typeof audience.description).toBe("string");
151
- expect(typeof audience.content).toBe("string");
152
- });
153
- });
154
- });
155
-
156
- describe("READER_KNOWLEDGE_LEVELS", () => {
157
- test("should contain all expected knowledge levels", () => {
158
- const expectedLevels = [
159
- "completeBeginners",
160
- "domainFamiliar",
161
- "experiencedUsers",
162
- "emergencyTroubleshooting",
163
- "exploringEvaluating",
164
- ];
165
-
166
- expectedLevels.forEach((level) => {
167
- expect(READER_KNOWLEDGE_LEVELS).toHaveProperty(level);
168
- });
169
- });
170
-
171
- test("should have proper structure for each level", () => {
172
- Object.values(READER_KNOWLEDGE_LEVELS).forEach((level) => {
173
- expect(level).toHaveProperty("name");
174
- expect(level).toHaveProperty("description");
175
- expect(level).toHaveProperty("content");
176
- expect(typeof level.name).toBe("string");
177
- expect(typeof level.description).toBe("string");
178
- expect(typeof level.content).toBe("string");
179
- });
180
- });
181
- });
182
-
183
- describe("DOCUMENTATION_DEPTH", () => {
184
- test("should contain all expected depth levels", () => {
185
- const expectedDepths = ["essentialOnly", "balancedCoverage", "comprehensive", "aiDecide"];
186
-
187
- expectedDepths.forEach((depth) => {
188
- expect(DOCUMENTATION_DEPTH).toHaveProperty(depth);
189
- });
190
- });
191
-
192
- test("should have proper structure for each depth", () => {
193
- Object.values(DOCUMENTATION_DEPTH).forEach((depth) => {
194
- expect(depth).toHaveProperty("name");
195
- expect(depth).toHaveProperty("description");
196
- expect(depth).toHaveProperty("content");
197
- expect(typeof depth.name).toBe("string");
198
- expect(typeof depth.description).toBe("string");
199
- expect(typeof depth.content).toBe("string");
200
- });
201
- });
202
- });
203
-
204
- describe("PURPOSE_TO_KNOWLEDGE_MAPPING", () => {
205
- test("should map purposes to knowledge levels", () => {
206
- expect(PURPOSE_TO_KNOWLEDGE_MAPPING).toHaveProperty("getStarted");
207
- expect(PURPOSE_TO_KNOWLEDGE_MAPPING).toHaveProperty("findAnswers");
208
- expect(PURPOSE_TO_KNOWLEDGE_MAPPING).toHaveProperty("solveProblems");
209
- expect(PURPOSE_TO_KNOWLEDGE_MAPPING).toHaveProperty("exploringEvaluating");
210
-
211
- expect(PURPOSE_TO_KNOWLEDGE_MAPPING.getStarted).toBe("completeBeginners");
212
- expect(PURPOSE_TO_KNOWLEDGE_MAPPING.findAnswers).toBe("experiencedUsers");
213
- });
214
- });
215
-
216
- describe("CONFLICT_RULES", () => {
217
- test("should have internal and cross conflicts", () => {
218
- expect(CONFLICT_RULES).toHaveProperty("internalConflicts");
219
- expect(CONFLICT_RULES).toHaveProperty("crossConflicts");
220
- expect(Array.isArray(CONFLICT_RULES.crossConflicts)).toBe(true);
221
- });
222
-
223
- test("should have proper structure for cross conflicts", () => {
224
- CONFLICT_RULES.crossConflicts.forEach((conflict) => {
225
- expect(conflict).toHaveProperty("conditions");
226
- expect(conflict).toHaveProperty("severity");
227
- expect(conflict).toHaveProperty("reason");
228
- expect(conflict).toHaveProperty("action");
229
- expect(conflict).toHaveProperty("conflictingOptions");
230
- });
231
- });
232
- });
233
-
234
- describe("CONFLICT_RESOLUTION_RULES", () => {
235
- test("should have resolution rules for different conflict types", () => {
236
- expect(CONFLICT_RESOLUTION_RULES).toHaveProperty("documentPurpose");
237
- expect(CONFLICT_RESOLUTION_RULES).toHaveProperty("targetAudienceTypes");
238
- expect(Array.isArray(CONFLICT_RESOLUTION_RULES.documentPurpose)).toBe(true);
239
- expect(Array.isArray(CONFLICT_RESOLUTION_RULES.targetAudienceTypes)).toBe(true);
240
- });
241
-
242
- test("should have proper structure for resolution rules", () => {
243
- CONFLICT_RESOLUTION_RULES.documentPurpose.forEach((rule) => {
244
- expect(rule).toHaveProperty("conflictItems");
245
- expect(rule).toHaveProperty("strategy");
246
- expect(rule).toHaveProperty("description");
247
- expect(Array.isArray(rule.conflictItems)).toBe(true);
248
- });
249
- });
250
- });
251
-
252
- describe("Numeric constants", () => {
253
- test("should have valid numeric values", () => {
254
- expect(typeof KROKI_CONCURRENCY).toBe("number");
255
- expect(typeof FILE_CONCURRENCY).toBe("number");
256
- expect(KROKI_CONCURRENCY).toBeGreaterThan(0);
257
- expect(FILE_CONCURRENCY).toBeGreaterThan(0);
258
- });
259
- });
260
-
261
- describe("String constants", () => {
262
- test("should have valid string values", () => {
263
- expect(typeof TMP_DIR).toBe("string");
264
- expect(typeof TMP_DOCS_DIR).toBe("string");
265
- expect(typeof TMP_ASSETS_DIR).toBe("string");
266
- expect(typeof DISCUSS_KIT_DID).toBe("string");
267
- expect(typeof DISCUSS_KIT_STORE_URL).toBe("string");
268
- expect(typeof BLOCKLET_ADD_COMPONENT_DOCS).toBe("string");
269
- expect(typeof D2_CONFIG).toBe("string");
270
- });
271
-
272
- test("should have valid URLs", () => {
273
- expect(DISCUSS_KIT_STORE_URL).toMatch(/^https?:\/\//);
274
- expect(BLOCKLET_ADD_COMPONENT_DOCS).toMatch(/^https?:\/\//);
275
- });
276
- });
277
-
278
- describe("SUPPORTED_FILE_EXTENSIONS", () => {
279
- test("should contain common file extensions", () => {
280
- expect(SUPPORTED_FILE_EXTENSIONS).toContain(".txt");
281
- expect(SUPPORTED_FILE_EXTENSIONS).toContain(".md");
282
- expect(SUPPORTED_FILE_EXTENSIONS).toContain(".json");
283
- expect(SUPPORTED_FILE_EXTENSIONS).toContain(".yaml");
284
- expect(SUPPORTED_FILE_EXTENSIONS).toContain(".yml");
285
- });
286
-
287
- test("should be an array of strings starting with dots", () => {
288
- expect(Array.isArray(SUPPORTED_FILE_EXTENSIONS)).toBe(true);
289
- SUPPORTED_FILE_EXTENSIONS.forEach((ext) => {
290
- expect(typeof ext).toBe("string");
291
- expect(ext.startsWith(".")).toBe(true);
292
- });
293
- });
294
- });
295
- });