@h2nguyen/arc42-node-mcp-server 2.0.0 → 2.1.1

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 (226) hide show
  1. package/CHANGELOG.md +72 -0
  2. package/README.md +83 -6
  3. package/dist/templates/arc42-reference.d.ts +25 -7
  4. package/dist/templates/arc42-reference.d.ts.map +1 -1
  5. package/dist/templates/arc42-reference.js +96 -47
  6. package/dist/templates/arc42-reference.js.map +1 -1
  7. package/dist/templates/formats/asciidoc/index.d.ts +178 -0
  8. package/dist/templates/formats/asciidoc/index.d.ts.map +1 -0
  9. package/dist/templates/formats/asciidoc/index.js +225 -0
  10. package/dist/templates/formats/asciidoc/index.js.map +1 -0
  11. package/dist/templates/formats/index.d.ts +108 -0
  12. package/dist/templates/formats/index.d.ts.map +1 -0
  13. package/dist/templates/formats/index.js +149 -0
  14. package/dist/templates/formats/index.js.map +1 -0
  15. package/dist/templates/formats/markdown/index.d.ts +172 -0
  16. package/dist/templates/formats/markdown/index.d.ts.map +1 -0
  17. package/dist/templates/formats/markdown/index.js +211 -0
  18. package/dist/templates/formats/markdown/index.js.map +1 -0
  19. package/dist/templates/formats/output-format-factory.d.ts +125 -0
  20. package/dist/templates/formats/output-format-factory.d.ts.map +1 -0
  21. package/dist/templates/formats/output-format-factory.js +166 -0
  22. package/dist/templates/formats/output-format-factory.js.map +1 -0
  23. package/dist/templates/formats/output-format-registry.d.ts +114 -0
  24. package/dist/templates/formats/output-format-registry.d.ts.map +1 -0
  25. package/dist/templates/formats/output-format-registry.js +147 -0
  26. package/dist/templates/formats/output-format-registry.js.map +1 -0
  27. package/dist/templates/formats/output-format-strategy.d.ts +195 -0
  28. package/dist/templates/formats/output-format-strategy.d.ts.map +1 -0
  29. package/dist/templates/formats/output-format-strategy.js +69 -0
  30. package/dist/templates/formats/output-format-strategy.js.map +1 -0
  31. package/dist/templates/index.d.ts +9 -8
  32. package/dist/templates/index.d.ts.map +1 -1
  33. package/dist/templates/index.js +21 -10
  34. package/dist/templates/index.js.map +1 -1
  35. package/dist/templates/locales/cz/index.d.ts +25 -3
  36. package/dist/templates/locales/cz/index.d.ts.map +1 -1
  37. package/dist/templates/locales/cz/index.js +34 -18
  38. package/dist/templates/locales/cz/index.js.map +1 -1
  39. package/dist/templates/locales/cz/templates-asciidoc.d.ts +22 -0
  40. package/dist/templates/locales/cz/templates-asciidoc.d.ts.map +1 -0
  41. package/dist/templates/locales/cz/templates-asciidoc.js +764 -0
  42. package/dist/templates/locales/cz/templates-asciidoc.js.map +1 -0
  43. package/dist/templates/locales/cz/{templates.d.ts → templates-markdown.d.ts} +1 -1
  44. package/dist/templates/locales/cz/templates-markdown.d.ts.map +1 -0
  45. package/dist/templates/locales/cz/{templates.js → templates-markdown.js} +1 -1
  46. package/dist/templates/locales/cz/templates-markdown.js.map +1 -0
  47. package/dist/templates/locales/de/index.d.ts +14 -4
  48. package/dist/templates/locales/de/index.d.ts.map +1 -1
  49. package/dist/templates/locales/de/index.js +22 -25
  50. package/dist/templates/locales/de/index.js.map +1 -1
  51. package/dist/templates/locales/de/templates-asciidoc.d.ts +22 -0
  52. package/dist/templates/locales/de/templates-asciidoc.d.ts.map +1 -0
  53. package/dist/templates/locales/de/templates-asciidoc.js +814 -0
  54. package/dist/templates/locales/de/templates-asciidoc.js.map +1 -0
  55. package/dist/templates/locales/de/{templates.d.ts → templates-markdown.d.ts} +1 -1
  56. package/dist/templates/locales/de/templates-markdown.d.ts.map +1 -0
  57. package/dist/templates/locales/de/{templates.js → templates-markdown.js} +1 -1
  58. package/dist/templates/locales/de/templates-markdown.js.map +1 -0
  59. package/dist/templates/locales/en/index.d.ts +14 -4
  60. package/dist/templates/locales/en/index.d.ts.map +1 -1
  61. package/dist/templates/locales/en/index.js +22 -25
  62. package/dist/templates/locales/en/index.js.map +1 -1
  63. package/dist/templates/locales/en/templates-asciidoc.d.ts +22 -0
  64. package/dist/templates/locales/en/templates-asciidoc.d.ts.map +1 -0
  65. package/dist/templates/locales/en/templates-asciidoc.js +764 -0
  66. package/dist/templates/locales/en/templates-asciidoc.js.map +1 -0
  67. package/dist/templates/locales/en/{templates.d.ts → templates-markdown.d.ts} +1 -1
  68. package/dist/templates/locales/en/templates-markdown.d.ts.map +1 -0
  69. package/dist/templates/locales/en/{templates.js → templates-markdown.js} +1 -1
  70. package/dist/templates/locales/en/templates-markdown.js.map +1 -0
  71. package/dist/templates/locales/es/index.d.ts +15 -10
  72. package/dist/templates/locales/es/index.d.ts.map +1 -1
  73. package/dist/templates/locales/es/index.js +23 -31
  74. package/dist/templates/locales/es/index.js.map +1 -1
  75. package/dist/templates/locales/es/templates-asciidoc.d.ts +22 -0
  76. package/dist/templates/locales/es/templates-asciidoc.d.ts.map +1 -0
  77. package/dist/templates/locales/es/templates-asciidoc.js +764 -0
  78. package/dist/templates/locales/es/templates-asciidoc.js.map +1 -0
  79. package/dist/templates/locales/es/{templates.d.ts → templates-markdown.d.ts} +1 -1
  80. package/dist/templates/locales/es/templates-markdown.d.ts.map +1 -0
  81. package/dist/templates/locales/es/{templates.js → templates-markdown.js} +1 -1
  82. package/dist/templates/locales/es/templates-markdown.js.map +1 -0
  83. package/dist/templates/locales/fr/index.d.ts +14 -9
  84. package/dist/templates/locales/fr/index.d.ts.map +1 -1
  85. package/dist/templates/locales/fr/index.js +22 -30
  86. package/dist/templates/locales/fr/index.js.map +1 -1
  87. package/dist/templates/locales/fr/templates-asciidoc.d.ts +22 -0
  88. package/dist/templates/locales/fr/templates-asciidoc.d.ts.map +1 -0
  89. package/dist/templates/locales/fr/templates-asciidoc.js +764 -0
  90. package/dist/templates/locales/fr/templates-asciidoc.js.map +1 -0
  91. package/dist/templates/locales/fr/{templates.d.ts → templates-markdown.d.ts} +1 -1
  92. package/dist/templates/locales/fr/templates-markdown.d.ts.map +1 -0
  93. package/dist/templates/locales/fr/{templates.js → templates-markdown.js} +1 -1
  94. package/dist/templates/locales/fr/templates-markdown.js.map +1 -0
  95. package/dist/templates/locales/it/index.d.ts +14 -9
  96. package/dist/templates/locales/it/index.d.ts.map +1 -1
  97. package/dist/templates/locales/it/index.js +22 -30
  98. package/dist/templates/locales/it/index.js.map +1 -1
  99. package/dist/templates/locales/it/templates-asciidoc.d.ts +22 -0
  100. package/dist/templates/locales/it/templates-asciidoc.d.ts.map +1 -0
  101. package/dist/templates/locales/it/templates-asciidoc.js +764 -0
  102. package/dist/templates/locales/it/templates-asciidoc.js.map +1 -0
  103. package/dist/templates/locales/it/{templates.d.ts → templates-markdown.d.ts} +1 -1
  104. package/dist/templates/locales/it/templates-markdown.d.ts.map +1 -0
  105. package/dist/templates/locales/it/{templates.js → templates-markdown.js} +1 -1
  106. package/dist/templates/locales/it/templates-markdown.js.map +1 -0
  107. package/dist/templates/locales/language-strategy-factory.d.ts +120 -0
  108. package/dist/templates/locales/language-strategy-factory.d.ts.map +1 -0
  109. package/dist/templates/locales/language-strategy-factory.js +127 -0
  110. package/dist/templates/locales/language-strategy-factory.js.map +1 -0
  111. package/dist/templates/locales/language-strategy.d.ts +16 -12
  112. package/dist/templates/locales/language-strategy.d.ts.map +1 -1
  113. package/dist/templates/locales/language-strategy.js.map +1 -1
  114. package/dist/templates/locales/nl/index.d.ts +14 -9
  115. package/dist/templates/locales/nl/index.d.ts.map +1 -1
  116. package/dist/templates/locales/nl/index.js +22 -30
  117. package/dist/templates/locales/nl/index.js.map +1 -1
  118. package/dist/templates/locales/nl/templates-asciidoc.d.ts +22 -0
  119. package/dist/templates/locales/nl/templates-asciidoc.d.ts.map +1 -0
  120. package/dist/templates/locales/nl/templates-asciidoc.js +764 -0
  121. package/dist/templates/locales/nl/templates-asciidoc.js.map +1 -0
  122. package/dist/templates/locales/nl/{templates.d.ts → templates-markdown.d.ts} +1 -1
  123. package/dist/templates/locales/nl/templates-markdown.d.ts.map +1 -0
  124. package/dist/templates/locales/nl/{templates.js → templates-markdown.js} +1 -1
  125. package/dist/templates/locales/nl/templates-markdown.js.map +1 -0
  126. package/dist/templates/locales/pt/index.d.ts +14 -9
  127. package/dist/templates/locales/pt/index.d.ts.map +1 -1
  128. package/dist/templates/locales/pt/index.js +22 -30
  129. package/dist/templates/locales/pt/index.js.map +1 -1
  130. package/dist/templates/locales/pt/templates-asciidoc.d.ts +22 -0
  131. package/dist/templates/locales/pt/templates-asciidoc.d.ts.map +1 -0
  132. package/dist/templates/locales/pt/templates-asciidoc.js +764 -0
  133. package/dist/templates/locales/pt/templates-asciidoc.js.map +1 -0
  134. package/dist/templates/locales/pt/{templates.d.ts → templates-markdown.d.ts} +1 -1
  135. package/dist/templates/locales/pt/templates-markdown.d.ts.map +1 -0
  136. package/dist/templates/locales/pt/{templates.js → templates-markdown.js} +1 -1
  137. package/dist/templates/locales/pt/templates-markdown.js.map +1 -0
  138. package/dist/templates/locales/ru/index.d.ts +19 -3
  139. package/dist/templates/locales/ru/index.d.ts.map +1 -1
  140. package/dist/templates/locales/ru/index.js +28 -24
  141. package/dist/templates/locales/ru/index.js.map +1 -1
  142. package/dist/templates/locales/ru/templates-asciidoc.d.ts +22 -0
  143. package/dist/templates/locales/ru/templates-asciidoc.d.ts.map +1 -0
  144. package/dist/templates/locales/ru/templates-asciidoc.js +996 -0
  145. package/dist/templates/locales/ru/templates-asciidoc.js.map +1 -0
  146. package/dist/templates/locales/ru/{templates.d.ts → templates-markdown.d.ts} +1 -1
  147. package/dist/templates/locales/ru/templates-markdown.d.ts.map +1 -0
  148. package/dist/templates/locales/ru/{templates.js → templates-markdown.js} +1 -1
  149. package/dist/templates/locales/ru/templates-markdown.js.map +1 -0
  150. package/dist/templates/locales/template-provider.d.ts +22 -10
  151. package/dist/templates/locales/template-provider.d.ts.map +1 -1
  152. package/dist/templates/locales/template-provider.js +53 -14
  153. package/dist/templates/locales/template-provider.js.map +1 -1
  154. package/dist/templates/locales/ukr/index.d.ts +25 -3
  155. package/dist/templates/locales/ukr/index.d.ts.map +1 -1
  156. package/dist/templates/locales/ukr/index.js +34 -18
  157. package/dist/templates/locales/ukr/index.js.map +1 -1
  158. package/dist/templates/locales/ukr/templates-asciidoc.d.ts +22 -0
  159. package/dist/templates/locales/ukr/templates-asciidoc.d.ts.map +1 -0
  160. package/dist/templates/locales/ukr/templates-asciidoc.js +764 -0
  161. package/dist/templates/locales/ukr/templates-asciidoc.js.map +1 -0
  162. package/dist/templates/locales/ukr/{templates.d.ts → templates-markdown.d.ts} +1 -1
  163. package/dist/templates/locales/ukr/templates-markdown.d.ts.map +1 -0
  164. package/dist/templates/locales/ukr/{templates.js → templates-markdown.js} +1 -1
  165. package/dist/templates/locales/ukr/templates-markdown.js.map +1 -0
  166. package/dist/templates/locales/zh/index.d.ts +25 -3
  167. package/dist/templates/locales/zh/index.d.ts.map +1 -1
  168. package/dist/templates/locales/zh/index.js +34 -18
  169. package/dist/templates/locales/zh/index.js.map +1 -1
  170. package/dist/templates/locales/zh/templates-asciidoc.d.ts +22 -0
  171. package/dist/templates/locales/zh/templates-asciidoc.d.ts.map +1 -0
  172. package/dist/templates/locales/zh/templates-asciidoc.js +764 -0
  173. package/dist/templates/locales/zh/templates-asciidoc.js.map +1 -0
  174. package/dist/templates/locales/zh/{templates.d.ts → templates-markdown.d.ts} +1 -1
  175. package/dist/templates/locales/zh/templates-markdown.d.ts.map +1 -0
  176. package/dist/templates/locales/zh/{templates.js → templates-markdown.js} +1 -1
  177. package/dist/templates/locales/zh/templates-markdown.js.map +1 -0
  178. package/dist/tools/arc42-init.d.ts +2 -1
  179. package/dist/tools/arc42-init.d.ts.map +1 -1
  180. package/dist/tools/arc42-init.js +154 -24
  181. package/dist/tools/arc42-init.js.map +1 -1
  182. package/dist/tools/arc42-status.d.ts.map +1 -1
  183. package/dist/tools/arc42-status.js +66 -10
  184. package/dist/tools/arc42-status.js.map +1 -1
  185. package/dist/tools/arc42-workflow-guide.d.ts +1 -0
  186. package/dist/tools/arc42-workflow-guide.d.ts.map +1 -1
  187. package/dist/tools/arc42-workflow-guide.js +16 -14
  188. package/dist/tools/arc42-workflow-guide.js.map +1 -1
  189. package/dist/tools/generate-template.d.ts +1 -0
  190. package/dist/tools/generate-template.d.ts.map +1 -1
  191. package/dist/tools/generate-template.js +16 -5
  192. package/dist/tools/generate-template.js.map +1 -1
  193. package/dist/tools/get-section.d.ts.map +1 -1
  194. package/dist/tools/get-section.js +28 -7
  195. package/dist/tools/get-section.js.map +1 -1
  196. package/dist/tools/update-section.d.ts +1 -1
  197. package/dist/tools/update-section.d.ts.map +1 -1
  198. package/dist/tools/update-section.js +71 -8
  199. package/dist/tools/update-section.js.map +1 -1
  200. package/dist/types.d.ts +2 -0
  201. package/dist/types.d.ts.map +1 -1
  202. package/dist/types.js +1 -0
  203. package/dist/types.js.map +1 -1
  204. package/package.json +1 -1
  205. package/dist/templates/locales/cz/templates.d.ts.map +0 -1
  206. package/dist/templates/locales/cz/templates.js.map +0 -1
  207. package/dist/templates/locales/de/templates.d.ts.map +0 -1
  208. package/dist/templates/locales/de/templates.js.map +0 -1
  209. package/dist/templates/locales/en/templates.d.ts.map +0 -1
  210. package/dist/templates/locales/en/templates.js.map +0 -1
  211. package/dist/templates/locales/es/templates.d.ts.map +0 -1
  212. package/dist/templates/locales/es/templates.js.map +0 -1
  213. package/dist/templates/locales/fr/templates.d.ts.map +0 -1
  214. package/dist/templates/locales/fr/templates.js.map +0 -1
  215. package/dist/templates/locales/it/templates.d.ts.map +0 -1
  216. package/dist/templates/locales/it/templates.js.map +0 -1
  217. package/dist/templates/locales/nl/templates.d.ts.map +0 -1
  218. package/dist/templates/locales/nl/templates.js.map +0 -1
  219. package/dist/templates/locales/pt/templates.d.ts.map +0 -1
  220. package/dist/templates/locales/pt/templates.js.map +0 -1
  221. package/dist/templates/locales/ru/templates.d.ts.map +0 -1
  222. package/dist/templates/locales/ru/templates.js.map +0 -1
  223. package/dist/templates/locales/ukr/templates.d.ts.map +0 -1
  224. package/dist/templates/locales/ukr/templates.js.map +0 -1
  225. package/dist/templates/locales/zh/templates.d.ts.map +0 -1
  226. package/dist/templates/locales/zh/templates.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -5,6 +5,78 @@ All notable changes to the arc42 MCP Server will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [2.1.1] - 2026-02-26
9
+
10
+ ### Security
11
+ - Remove direct system shell access to eliminate code execution risk
12
+
13
+ ### Changed
14
+ - Mark dependencies as peer in package-lock.json
15
+ - Update dependencies in package-lock.json (balanced-match, brace-expansion, minimatch) to latest versions
16
+
17
+ ## [2.1.0] - 2026-02-14
18
+
19
+ ### Added
20
+ - **Multiple Output Format Support**: Documentation can now be generated in both Markdown and AsciiDoc formats
21
+ - Supported formats: `markdown` (aliases: md, mdown, mkd) and `asciidoc` (aliases: adoc, ascii, asciidoctor, asc)
22
+ - Format parameter added to `arc42-init`, `generate-template`, and `arc42-workflow-guide` tools
23
+ - Format configuration stored in `config.yaml` for project-level default
24
+ - AsciiDoc is now the **default format** for new projects (richer feature set for professional documentation)
25
+ - **Native AsciiDoc Templates**: All 11 languages now have native AsciiDoc templates sourced directly from the official arc42-template repository
26
+ - Templates preserve AsciiDoc-specific features (includes, admonitions, cross-references)
27
+ - No quality loss from format conversion - true native templates
28
+ - **Output Format Strategy Architecture**: Pluggable format system using Strategy Pattern
29
+ - `OutputFormatStrategy` interface for format-specific syntax generation
30
+ - `OutputFormatRegistry` for centralized format storage with O(1) lookup
31
+ - `OutputFormatFactory` for format creation with normalization and fallback
32
+ - `MarkdownFormatStrategy` and `AsciiDocFormatStrategy` implementations
33
+ - **Plugin Architecture for Language Templates**: New plugin-based template system
34
+ - `FormatTemplatePlugin` interface for format-specific template providers
35
+ - `createLanguageStrategy()` factory for composing strategies with format plugins
36
+ - `createFormatPlugin()` and `createFormatPluginsWithFallback()` helper functions
37
+ - Each language now uses plugin architecture for DRY template management
38
+ - **Format Detection Utilities**: New utility functions in `src/templates/formats/index.ts`
39
+ - `detectOutputFormatFromExtension()` - detect format from file extension
40
+ - `detectOutputFormatFromFilename()` - detect format from filename
41
+ - `isOutputFormatSupported()` - check if format code is supported
42
+ - `getSupportedOutputFormatCodes()` - list all available format codes
43
+ - **Comprehensive Test Coverage**: 1,279 tests with excellent coverage
44
+ - New test files for format module (`output-format-strategy.test.ts`, `output-format-registry.test.ts`, etc.)
45
+ - Integration tests for format-language combinations
46
+ - Coverage: 98.77% statements, 91.82% branches, 99.18% functions, 98.75% lines
47
+
48
+ ### Changed
49
+ - **Breaking**: `LanguageStrategy` interface methods renamed for format awareness:
50
+ - `getTemplate(section)` → `getTemplateForFormat(section, format)`
51
+ - `getWorkflowGuide()` → `getWorkflowGuideForFormat(format)`
52
+ - `getReadmeContent(projectName?)` → `getReadmeContentForFormat(projectName, format)`
53
+ - **Breaking**: Default output format changed from Markdown to AsciiDoc for new projects
54
+ - `arc42-init` now accepts optional `format` parameter (defaults to asciidoc)
55
+ - `generate-template` now accepts optional `format` parameter (defaults to config.yaml setting or asciidoc)
56
+ - `arc42-workflow-guide` now accepts optional `format` parameter (defaults to asciidoc)
57
+ - `arc42-status` now displays configured format alongside language information
58
+ - `update-section` now detects and maintains existing file format based on extension
59
+ - `get-section` now reads files regardless of format (supports both `.md` and `.adoc`)
60
+ - Template files restructured: each language now has separate `templates-markdown.ts` and `templates-asciidoc.ts`
61
+ - Removed unified `templates.ts` files in favor of format-specific template files
62
+
63
+ ### Architecture
64
+ - Added Strategy Pattern for output format implementations (`OutputFormatStrategy` interface)
65
+ - Added Registry Pattern for format storage (`OutputFormatRegistry` class)
66
+ - Added Factory Pattern for format creation (`OutputFormatFactory` class)
67
+ - Added Plugin Pattern for language template providers (`FormatTemplatePlugin` interface)
68
+ - New `src/templates/formats/` module with complete format infrastructure
69
+ - New `src/templates/locales/language-strategy-factory.ts` for plugin-based strategy creation
70
+ - All format strategies follow S.O.L.I.D principles with LSP-compliant substitutability
71
+ - Format constants defined in `output-format-strategy.ts`: `SUPPORTED_OUTPUT_FORMAT_CODES`, `OUTPUT_FORMAT_ALIASES`, `DEFAULT_OUTPUT_FORMAT`
72
+
73
+ ### Documentation
74
+ - Architecture documentation converted from Markdown to AsciiDoc format
75
+ - Added PlantUML diagrams throughout arc42 documentation (business context, building blocks, runtime views, etc.)
76
+ - Updated ADR-011 through ADR-014 documenting format-related architectural decisions
77
+ - Updated glossary with output format terminology
78
+ - Spec documents in `.spec-workflow/specs/multiple-output-formats/` documenting feature requirements and design
79
+
8
80
  ## [2.0.0] - 2026-02-14
9
81
 
10
82
  ### Added
package/README.md CHANGED
@@ -36,6 +36,10 @@ A Model Context Protocol (MCP) server that helps you create comprehensive archit
36
36
  * [Supported Languages](#supported-languages)
37
37
  * [Using Languages](#using-languages)
38
38
  * [Language Configuration](#language-configuration)
39
+ * [📄 Multi-Format Support](#-multi-format-support)
40
+ * [Supported Formats](#supported-formats)
41
+ * [Using Formats](#using-formats)
42
+ * [Format Configuration](#format-configuration)
39
43
  * [📚 The 12 arc42 Sections](#-the-12-arc42-sections)
40
44
  * [📖 Usage Examples](#-usage-examples)
41
45
  * [Example 1: Starting Fresh](#example-1-starting-fresh)
@@ -92,7 +96,7 @@ This MCP server dynamically reads version information from the **arc42 template
92
96
  | Submodule Path | `vendor/arc42-template` |
93
97
  | Version File | `vendor/arc42-template/EN/version.properties` |
94
98
 
95
- > **Note**: The templates in this server are adapted from AsciiDoc to Markdown format with guidance text customized for AI-assisted documentation.
99
+ > **Note**: This server provides native templates in both **AsciiDoc** and **Markdown** formats for all 11 supported languages. AsciiDoc is the default format for new projects.
96
100
 
97
101
  To display the current arc42 template version:
98
102
 
@@ -410,6 +414,7 @@ Load the complete arc42 documentation workflow guide with instructions for all 1
410
414
  ```typescript
411
415
  arc42-workflow-guide {
412
416
  language?: "EN" | "DE" | "ES" | ... // Optional: language code (default: EN)
417
+ format?: "asciidoc" | "markdown" // Optional: output format (default: asciidoc)
413
418
  }
414
419
  ```
415
420
 
@@ -419,8 +424,9 @@ Initialize arc42 documentation workspace for your project.
419
424
  ```typescript
420
425
  arc42-init {
421
426
  projectName: "Your Project Name",
422
- language?: "EN", // Optional: language for templates (default: EN)
423
- force?: false, // Re-initialize even if exists
427
+ language?: "EN", // Optional: language for templates (default: EN)
428
+ format?: "asciidoc", // Optional: output format (default: asciidoc)
429
+ force?: false, // Re-initialize even if exists
424
430
  targetFolder?: "/path/to/project" // Optional: specify target directory
425
431
  }
426
432
  ```
@@ -432,7 +438,7 @@ Check the status of your documentation, including completion percentage and sect
432
438
  arc42-status {
433
439
  targetFolder?: "/path/to/project" // Optional: specify target directory
434
440
  }
435
- // Returns: language info, available languages, and localized section titles
441
+ // Returns: language info, format info, available languages/formats, and localized section titles
436
442
  ```
437
443
 
438
444
  ### generate-template
@@ -442,6 +448,7 @@ Generate a detailed template for any of the 12 arc42 sections.
442
448
  generate-template {
443
449
  section: "01_introduction_and_goals" | "02_architecture_constraints" | ...,
444
450
  language?: "EN" | "DE" | "ES" | ... // Optional: language code (default: EN)
451
+ format?: "asciidoc" | "markdown" // Optional: output format (default: asciidoc)
445
452
  }
446
453
  ```
447
454
 
@@ -451,10 +458,11 @@ Update content in a specific arc42 section.
451
458
  ```typescript
452
459
  update-section {
453
460
  section: "01_introduction_and_goals",
454
- content: "# Your markdown content here",
461
+ content: "= Your AsciiDoc or Markdown content here",
455
462
  mode?: "replace" | "append",
456
463
  targetFolder?: "/path/to/project" // Optional: specify target directory
457
464
  }
465
+ // Note: Automatically detects format from existing file extension
458
466
  ```
459
467
 
460
468
  ### get-section
@@ -465,6 +473,7 @@ get-section {
465
473
  section: "01_introduction_and_goals",
466
474
  targetFolder?: "/path/to/project" // Optional: specify target directory
467
475
  }
476
+ // Note: Supports both .md and .adoc file formats
468
477
  ```
469
478
 
470
479
  ## 🌍 Multi-Language Support
@@ -522,12 +531,79 @@ The language is stored in `config.yaml` when you initialize a workspace:
522
531
  ```yaml
523
532
  projectName: My Project
524
533
  language: DE
534
+ format: asciidoc
525
535
  ```
526
536
 
527
537
  - `arc42-status` reads and displays the configured language
528
538
  - Templates and section titles are localized based on this setting
529
539
  - Language codes are case-insensitive (`de`, `DE`, `De` all work)
530
540
 
541
+ ## 📄 Multi-Format Support
542
+
543
+ This MCP server supports documentation output in **2 formats**: Markdown and AsciiDoc.
544
+
545
+ ### Supported Formats
546
+
547
+ | Code | Format | Extension | Aliases |
548
+ |------------|----------|-----------|------------------------------|
549
+ | `asciidoc` | AsciiDoc | `.adoc` | adoc, ascii, asciidoctor, asc |
550
+ | `markdown` | Markdown | `.md` | md, mdown, mkd |
551
+
552
+ > **Default**: AsciiDoc is the default format for new projects. AsciiDoc provides richer formatting features (includes, admonitions, cross-references) ideal for professional documentation.
553
+
554
+ ### Using Formats
555
+
556
+ **Initialize with a specific format:**
557
+
558
+ ```typescript
559
+ arc42-init {
560
+ projectName: "My Project",
561
+ format: "markdown" // Use Markdown instead of default AsciiDoc
562
+ }
563
+ ```
564
+
565
+ **Generate templates in a specific format:**
566
+
567
+ ```typescript
568
+ generate-template {
569
+ section: "01_introduction_and_goals",
570
+ format: "asciidoc" // AsciiDoc template
571
+ }
572
+ ```
573
+
574
+ **Get workflow guide in a specific format:**
575
+
576
+ ```typescript
577
+ arc42-workflow-guide {
578
+ format: "markdown" // Markdown guide
579
+ }
580
+ ```
581
+
582
+ **Combine language and format:**
583
+
584
+ ```typescript
585
+ arc42-init {
586
+ projectName: "Mein Projekt",
587
+ language: "DE",
588
+ format: "asciidoc" // German AsciiDoc templates
589
+ }
590
+ ```
591
+
592
+ ### Format Configuration
593
+
594
+ The format is stored in `config.yaml` when you initialize a workspace:
595
+
596
+ ```yaml
597
+ projectName: My Project
598
+ language: EN
599
+ format: asciidoc
600
+ ```
601
+
602
+ - `arc42-status` reads and displays the configured format
603
+ - `update-section` automatically detects file format from extension
604
+ - `get-section` supports both `.md` and `.adoc` files
605
+ - Format codes are case-insensitive and support aliases (`adoc`, `ASCIIDOC`, `md` all work)
606
+
531
607
  ## 📚 The 12 arc42 Sections
532
608
 
533
609
  1. **Introduction and Goals** - Requirements, quality goals, stakeholders
@@ -882,7 +958,8 @@ This project is licensed under the Apache License 2.0 – see the [LICENSE](LICE
882
958
  - **arc42 GitHub**: https://github.com/arc42
883
959
  - **arc42 Examples**: https://arc42.org/examples (Additional examples are embedded within the documentation at https://docs.arc42.org/)
884
960
  - **arc42 FAQ**: https://faq.arc42.org/
885
- - **arc42 Node MCP Server Github**: https://github.com/h2nguyen/Arc42-Node-MCP-Server
961
+ - **arc42 Node MCP Server on Github**: https://github.com/h2nguyen/Arc42-Node-MCP-Server
962
+ - **arc42 Node MCP Server on NPM**: https://www.npmjs.com/package/@h2nguyen/arc42-node-mcp-server/v/latest
886
963
  - **MCP Specification**: https://modelcontextprotocol.io/specification/
887
964
 
888
965
  ---
@@ -5,8 +5,14 @@
5
5
  * When the submodule is updated, this file automatically reflects the new version.
6
6
  *
7
7
  * Source: https://github.com/arc42/arc42-template
8
- * Version file: vendor/arc42-template/EN/version.properties
8
+ * Version file: vendor/arc42-template/{LANG}/version.properties
9
9
  */
10
+ /** Supported languages in the arc42 template */
11
+ export type Arc42Language = 'EN' | 'DE' | 'ES' | 'FR' | 'IT' | 'NL' | 'PT' | 'RU' | 'CZ' | 'UKR' | 'ZH';
12
+ /** Default language for arc42 templates */
13
+ export declare const DEFAULT_LANGUAGE: Arc42Language;
14
+ /** List of all supported languages */
15
+ export declare const SUPPORTED_LANGUAGES: Arc42Language[];
10
16
  export interface Arc42Reference {
11
17
  /** The arc42 template version (e.g., "9.0-EN") */
12
18
  version: string;
@@ -18,6 +24,8 @@ export interface Arc42Reference {
18
24
  sourceRepo: string;
19
25
  /** Whether the submodule is available */
20
26
  submoduleAvailable: boolean;
27
+ /** Language code used for this reference */
28
+ language: Arc42Language;
21
29
  /** Notes about any deviations from the original template */
22
30
  notes: string[];
23
31
  }
@@ -30,29 +38,39 @@ export declare function parseVersionProperties(content: string): {
30
38
  revdate: string;
31
39
  };
32
40
  /**
33
- * Get commit SHA from git submodule
41
+ * Get commit SHA from git submodule by reading .git files directly
42
+ * (Avoids shell access for security - no execSync required)
34
43
  * @internal Exported for testing purposes
35
44
  */
36
45
  export declare function getSubmoduleCommitSha(): string;
37
46
  /**
38
47
  * Reference information for the arc42 template version this MCP server is based on.
39
- * This is loaded dynamically from the submodule at module initialization.
48
+ * This is loaded dynamically from the submodule at module initialization (default: English).
40
49
  */
41
50
  export declare const ARC42_REFERENCE: Arc42Reference;
51
+ /**
52
+ * Get arc42 reference information for a specific language
53
+ * @param language - Language code (defaults to EN)
54
+ */
55
+ export declare function getArc42ReferenceForLanguage(language?: Arc42Language): Arc42Reference;
42
56
  /**
43
57
  * Get a formatted string describing the arc42 reference version
58
+ * @param language - Language code (defaults to EN)
44
59
  */
45
- export declare function getArc42ReferenceString(): string;
60
+ export declare function getArc42ReferenceString(language?: Arc42Language): string;
46
61
  /**
47
62
  * Get the full reference information as a Markdown block
63
+ * @param language - Language code (defaults to EN)
48
64
  */
49
- export declare function getArc42ReferenceMarkdown(): string;
65
+ export declare function getArc42ReferenceMarkdown(language?: Arc42Language): string;
50
66
  /**
51
67
  * Get reference info suitable for config.yaml
68
+ * @param language - Language code (defaults to EN)
52
69
  */
53
- export declare function getArc42ReferenceConfig(): Record<string, string>;
70
+ export declare function getArc42ReferenceConfig(language?: Arc42Language): Record<string, string>;
54
71
  /**
55
72
  * Force reload the reference from submodule (useful for testing)
73
+ * @param language - Language code (defaults to EN)
56
74
  */
57
- export declare function reloadArc42Reference(): Arc42Reference;
75
+ export declare function reloadArc42Reference(language?: Arc42Language): Arc42Reference;
58
76
  //# sourceMappingURL=arc42-reference.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"arc42-reference.d.ts","sourceRoot":"","sources":["../../src/templates/arc42-reference.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAeH,MAAM,WAAW,cAAc;IAC7B,kDAAkD;IAClD,OAAO,EAAE,MAAM,CAAC;IAChB,6CAA6C;IAC7C,IAAI,EAAE,MAAM,CAAC;IACb,0DAA0D;IAC1D,SAAS,EAAE,MAAM,CAAC;IAClB,4BAA4B;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,yCAAyC;IACzC,kBAAkB,EAAE,OAAO,CAAC;IAC5B,4DAA4D;IAC5D,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAkB9F;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CAwB9C;AAwDD;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,cAAqC,CAAC;AAEpE;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,MAAM,CAEhD;AAED;;GAEG;AACH,wBAAgB,yBAAyB,IAAI,MAAM,CAQlD;AAED;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAOhE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,cAAc,CAErD"}
1
+ {"version":3,"file":"arc42-reference.d.ts","sourceRoot":"","sources":["../../src/templates/arc42-reference.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAaH,gDAAgD;AAChD,MAAM,MAAM,aAAa,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,IAAI,CAAC;AAExG,2CAA2C;AAC3C,eAAO,MAAM,gBAAgB,EAAE,aAAoB,CAAC;AAEpD,sCAAsC;AACtC,eAAO,MAAM,mBAAmB,EAAE,aAAa,EAAwE,CAAC;AASxH,MAAM,WAAW,cAAc;IAC7B,kDAAkD;IAClD,OAAO,EAAE,MAAM,CAAC;IAChB,6CAA6C;IAC7C,IAAI,EAAE,MAAM,CAAC;IACb,0DAA0D;IAC1D,SAAS,EAAE,MAAM,CAAC;IAClB,4BAA4B;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,yCAAyC;IACzC,kBAAkB,EAAE,OAAO,CAAC;IAC5B,4CAA4C;IAC5C,QAAQ,EAAE,aAAa,CAAC;IACxB,4DAA4D;IAC5D,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAkB9F;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CAiD9C;AA6DD;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,cAAqC,CAAC;AAEpE;;;GAGG;AACH,wBAAgB,4BAA4B,CAAC,QAAQ,GAAE,aAAgC,GAAG,cAAc,CAEvG;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,CAAC,EAAE,aAAa,GAAG,MAAM,CAGxE;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,QAAQ,CAAC,EAAE,aAAa,GAAG,MAAM,CAU1E;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,CAAC,EAAE,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CASxF;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,CAAC,EAAE,aAAa,GAAG,cAAc,CAE7E"}
@@ -5,18 +5,26 @@
5
5
  * When the submodule is updated, this file automatically reflects the new version.
6
6
  *
7
7
  * Source: https://github.com/arc42/arc42-template
8
- * Version file: vendor/arc42-template/EN/version.properties
8
+ * Version file: vendor/arc42-template/{LANG}/version.properties
9
9
  */
10
10
  import { existsSync, readFileSync } from 'fs';
11
- import { execSync } from 'child_process';
12
11
  import { join, dirname } from 'path';
13
12
  import { fileURLToPath } from 'url';
14
13
  const __filename = fileURLToPath(import.meta.url);
15
14
  const __dirname = dirname(__filename);
16
15
  // Path to submodule (relative to src/templates/)
17
16
  const SUBMODULE_PATH = join(__dirname, '../../vendor/arc42-template');
18
- const VERSION_FILE = join(SUBMODULE_PATH, 'EN/version.properties');
19
17
  const SOURCE_REPO = 'https://github.com/arc42/arc42-template';
18
+ /** Default language for arc42 templates */
19
+ export const DEFAULT_LANGUAGE = 'EN';
20
+ /** List of all supported languages */
21
+ export const SUPPORTED_LANGUAGES = ['EN', 'DE', 'ES', 'FR', 'IT', 'NL', 'PT', 'RU', 'CZ', 'UKR', 'ZH'];
22
+ /**
23
+ * Get the version file path for a specific language
24
+ */
25
+ function getVersionFilePath(language = DEFAULT_LANGUAGE) {
26
+ return join(SUBMODULE_PATH, language, 'version.properties');
27
+ }
20
28
  /**
21
29
  * Parse version.properties file content
22
30
  * @internal Exported for testing purposes
@@ -39,64 +47,88 @@ export function parseVersionProperties(content) {
39
47
  };
40
48
  }
41
49
  /**
42
- * Get commit SHA from git submodule
50
+ * Get commit SHA from git submodule by reading .git files directly
51
+ * (Avoids shell access for security - no execSync required)
43
52
  * @internal Exported for testing purposes
44
53
  */
45
54
  export function getSubmoduleCommitSha() {
46
55
  try {
47
- // Try to get commit from the submodule itself
48
- const result = execSync('git rev-parse HEAD', {
49
- cwd: SUBMODULE_PATH,
50
- encoding: 'utf-8',
51
- stdio: ['pipe', 'pipe', 'pipe']
52
- });
53
- return result.trim();
54
- }
55
- catch {
56
- // Fallback: try to get from parent repo's submodule status
57
- try {
58
- const projectRoot = join(__dirname, '../..');
59
- const result = execSync('git submodule status vendor/arc42-template', {
60
- cwd: projectRoot,
61
- encoding: 'utf-8',
62
- stdio: ['pipe', 'pipe', 'pipe']
63
- });
64
- const match = result.match(/^\s*([a-f0-9]+)\s+vendor/);
65
- return match ? match[1] : 'unknown';
56
+ // Method 1: Read from submodule's .git file (gitdir reference)
57
+ const submoduleGitPath = join(SUBMODULE_PATH, '.git');
58
+ if (existsSync(submoduleGitPath)) {
59
+ const gitContent = readFileSync(submoduleGitPath, 'utf-8').trim();
60
+ // .git file in submodule contains "gitdir: ../../.git/modules/vendor/arc42-template"
61
+ if (gitContent.startsWith('gitdir:')) {
62
+ const gitDir = gitContent.replace('gitdir:', '').trim();
63
+ const resolvedGitDir = join(SUBMODULE_PATH, gitDir);
64
+ const headPath = join(resolvedGitDir, 'HEAD');
65
+ if (existsSync(headPath)) {
66
+ const headContent = readFileSync(headPath, 'utf-8').trim();
67
+ // HEAD can be a direct commit SHA or a ref
68
+ if (headContent.startsWith('ref:')) {
69
+ const refPath = join(resolvedGitDir, headContent.replace('ref:', '').trim());
70
+ if (existsSync(refPath)) {
71
+ return readFileSync(refPath, 'utf-8').trim();
72
+ }
73
+ }
74
+ else {
75
+ // Direct commit SHA
76
+ return headContent;
77
+ }
78
+ }
79
+ }
66
80
  }
67
- catch {
68
- return 'unknown';
81
+ // Method 2: Read from parent repo's .git/modules directory
82
+ const projectRoot = join(__dirname, '../..');
83
+ const modulesHeadPath = join(projectRoot, '.git/modules/vendor/arc42-template/HEAD');
84
+ if (existsSync(modulesHeadPath)) {
85
+ const headContent = readFileSync(modulesHeadPath, 'utf-8').trim();
86
+ if (!headContent.startsWith('ref:')) {
87
+ return headContent;
88
+ }
89
+ // If it's a ref, resolve it
90
+ const refPath = join(projectRoot, '.git/modules/vendor/arc42-template', headContent.replace('ref:', '').trim());
91
+ if (existsSync(refPath)) {
92
+ return readFileSync(refPath, 'utf-8').trim();
93
+ }
69
94
  }
95
+ return 'unknown';
96
+ }
97
+ catch {
98
+ return 'unknown';
70
99
  }
71
100
  }
72
101
  /**
73
- * Read arc42 reference info from the submodule
102
+ * Read arc42 reference info from the submodule for a specific language
74
103
  * Falls back to hardcoded values if submodule is not available
104
+ * @param language - Language code (defaults to EN)
75
105
  */
76
- function loadArc42Reference() {
106
+ function loadArc42Reference(language = DEFAULT_LANGUAGE) {
77
107
  // Default/fallback values (used when submodule not available, e.g., npm install)
78
108
  const fallback = {
79
- version: '9.0-EN',
109
+ version: `9.0-${language}`,
80
110
  date: 'July 2025',
81
111
  commitSha: 'b29e08928644af7ae49f51d729d14313db0d934c',
82
112
  sourceRepo: SOURCE_REPO,
83
113
  submoduleAvailable: false,
114
+ language,
84
115
  notes: [
85
116
  'Templates adapted from AsciiDoc to Markdown format',
86
117
  'Section guidance text customized for AI-assisted documentation',
87
118
  'Fallback values used - submodule not available'
88
119
  ]
89
120
  };
121
+ const versionFile = getVersionFilePath(language);
90
122
  // Check if submodule exists
91
- if (!existsSync(SUBMODULE_PATH) || !existsSync(VERSION_FILE)) {
123
+ if (!existsSync(SUBMODULE_PATH) || !existsSync(versionFile)) {
92
124
  return fallback;
93
125
  }
94
126
  try {
95
127
  // Read version.properties
96
- const content = readFileSync(VERSION_FILE, 'utf-8');
128
+ const content = readFileSync(versionFile, 'utf-8');
97
129
  const { revnumber, revdate } = parseVersionProperties(content);
98
130
  if (!revnumber || !revdate) {
99
- console.warn('Warning: Could not parse version.properties, using fallback');
131
+ console.warn(`Warning: Could not parse version.properties for ${language}, using fallback`);
100
132
  return fallback;
101
133
  }
102
134
  // Get commit SHA
@@ -107,6 +139,7 @@ function loadArc42Reference() {
107
139
  commitSha,
108
140
  sourceRepo: SOURCE_REPO,
109
141
  submoduleAvailable: true,
142
+ language,
110
143
  notes: [
111
144
  'Templates adapted from AsciiDoc to Markdown format',
112
145
  'Section guidance text customized for AI-assisted documentation'
@@ -114,48 +147,64 @@ function loadArc42Reference() {
114
147
  };
115
148
  }
116
149
  catch (error) {
117
- console.warn('Warning: Failed to read from submodule, using fallback:', error);
150
+ console.warn(`Warning: Failed to read from submodule for ${language}, using fallback:`, error);
118
151
  return fallback;
119
152
  }
120
153
  }
121
154
  /**
122
155
  * Reference information for the arc42 template version this MCP server is based on.
123
- * This is loaded dynamically from the submodule at module initialization.
156
+ * This is loaded dynamically from the submodule at module initialization (default: English).
124
157
  */
125
158
  export const ARC42_REFERENCE = loadArc42Reference();
159
+ /**
160
+ * Get arc42 reference information for a specific language
161
+ * @param language - Language code (defaults to EN)
162
+ */
163
+ export function getArc42ReferenceForLanguage(language = DEFAULT_LANGUAGE) {
164
+ return loadArc42Reference(language);
165
+ }
126
166
  /**
127
167
  * Get a formatted string describing the arc42 reference version
168
+ * @param language - Language code (defaults to EN)
128
169
  */
129
- export function getArc42ReferenceString() {
130
- return `arc42 Template v${ARC42_REFERENCE.version} (${ARC42_REFERENCE.date})`;
170
+ export function getArc42ReferenceString(language) {
171
+ const ref = language ? loadArc42Reference(language) : ARC42_REFERENCE;
172
+ return `arc42 Template v${ref.version} (${ref.date})`;
131
173
  }
132
174
  /**
133
175
  * Get the full reference information as a Markdown block
176
+ * @param language - Language code (defaults to EN)
134
177
  */
135
- export function getArc42ReferenceMarkdown() {
178
+ export function getArc42ReferenceMarkdown(language) {
179
+ const ref = language ? loadArc42Reference(language) : ARC42_REFERENCE;
136
180
  return `---
137
181
  **arc42 Template Reference**
138
- - Version: ${ARC42_REFERENCE.version}
139
- - Date: ${ARC42_REFERENCE.date}
140
- - Source: [arc42-template](${ARC42_REFERENCE.sourceRepo})
141
- - Commit: \`${ARC42_REFERENCE.commitSha.substring(0, 7)}\`
182
+ - Version: ${ref.version}
183
+ - Date: ${ref.date}
184
+ - Language: ${ref.language}
185
+ - Source: [arc42-template](${ref.sourceRepo})
186
+ - Commit: \`${ref.commitSha.substring(0, 7)}\`
142
187
  ---`;
143
188
  }
144
189
  /**
145
190
  * Get reference info suitable for config.yaml
191
+ * @param language - Language code (defaults to EN)
146
192
  */
147
- export function getArc42ReferenceConfig() {
193
+ export function getArc42ReferenceConfig(language) {
194
+ const ref = language ? loadArc42Reference(language) : ARC42_REFERENCE;
148
195
  return {
149
- arc42_template_version: ARC42_REFERENCE.version,
150
- arc42_template_date: ARC42_REFERENCE.date,
151
- arc42_template_source: ARC42_REFERENCE.sourceRepo,
152
- arc42_template_commit: ARC42_REFERENCE.commitSha
196
+ arc42_template_version: ref.version,
197
+ arc42_template_date: ref.date,
198
+ arc42_template_language: ref.language,
199
+ arc42_template_source: ref.sourceRepo,
200
+ arc42_template_commit: ref.commitSha
153
201
  };
154
202
  }
155
203
  /**
156
204
  * Force reload the reference from submodule (useful for testing)
205
+ * @param language - Language code (defaults to EN)
157
206
  */
158
- export function reloadArc42Reference() {
159
- return loadArc42Reference();
207
+ export function reloadArc42Reference(language) {
208
+ return loadArc42Reference(language);
160
209
  }
161
210
  //# sourceMappingURL=arc42-reference.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"arc42-reference.js","sourceRoot":"","sources":["../../src/templates/arc42-reference.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"arc42-reference.js","sourceRoot":"","sources":["../../src/templates/arc42-reference.ts"],"names":[],"mappings":"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"}