@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.
- package/CHANGELOG.md +72 -0
- package/README.md +83 -6
- package/dist/templates/arc42-reference.d.ts +25 -7
- package/dist/templates/arc42-reference.d.ts.map +1 -1
- package/dist/templates/arc42-reference.js +96 -47
- package/dist/templates/arc42-reference.js.map +1 -1
- package/dist/templates/formats/asciidoc/index.d.ts +178 -0
- package/dist/templates/formats/asciidoc/index.d.ts.map +1 -0
- package/dist/templates/formats/asciidoc/index.js +225 -0
- package/dist/templates/formats/asciidoc/index.js.map +1 -0
- package/dist/templates/formats/index.d.ts +108 -0
- package/dist/templates/formats/index.d.ts.map +1 -0
- package/dist/templates/formats/index.js +149 -0
- package/dist/templates/formats/index.js.map +1 -0
- package/dist/templates/formats/markdown/index.d.ts +172 -0
- package/dist/templates/formats/markdown/index.d.ts.map +1 -0
- package/dist/templates/formats/markdown/index.js +211 -0
- package/dist/templates/formats/markdown/index.js.map +1 -0
- package/dist/templates/formats/output-format-factory.d.ts +125 -0
- package/dist/templates/formats/output-format-factory.d.ts.map +1 -0
- package/dist/templates/formats/output-format-factory.js +166 -0
- package/dist/templates/formats/output-format-factory.js.map +1 -0
- package/dist/templates/formats/output-format-registry.d.ts +114 -0
- package/dist/templates/formats/output-format-registry.d.ts.map +1 -0
- package/dist/templates/formats/output-format-registry.js +147 -0
- package/dist/templates/formats/output-format-registry.js.map +1 -0
- package/dist/templates/formats/output-format-strategy.d.ts +195 -0
- package/dist/templates/formats/output-format-strategy.d.ts.map +1 -0
- package/dist/templates/formats/output-format-strategy.js +69 -0
- package/dist/templates/formats/output-format-strategy.js.map +1 -0
- package/dist/templates/index.d.ts +9 -8
- package/dist/templates/index.d.ts.map +1 -1
- package/dist/templates/index.js +21 -10
- package/dist/templates/index.js.map +1 -1
- package/dist/templates/locales/cz/index.d.ts +25 -3
- package/dist/templates/locales/cz/index.d.ts.map +1 -1
- package/dist/templates/locales/cz/index.js +34 -18
- package/dist/templates/locales/cz/index.js.map +1 -1
- package/dist/templates/locales/cz/templates-asciidoc.d.ts +22 -0
- package/dist/templates/locales/cz/templates-asciidoc.d.ts.map +1 -0
- package/dist/templates/locales/cz/templates-asciidoc.js +764 -0
- package/dist/templates/locales/cz/templates-asciidoc.js.map +1 -0
- package/dist/templates/locales/cz/{templates.d.ts → templates-markdown.d.ts} +1 -1
- package/dist/templates/locales/cz/templates-markdown.d.ts.map +1 -0
- package/dist/templates/locales/cz/{templates.js → templates-markdown.js} +1 -1
- package/dist/templates/locales/cz/templates-markdown.js.map +1 -0
- package/dist/templates/locales/de/index.d.ts +14 -4
- package/dist/templates/locales/de/index.d.ts.map +1 -1
- package/dist/templates/locales/de/index.js +22 -25
- package/dist/templates/locales/de/index.js.map +1 -1
- package/dist/templates/locales/de/templates-asciidoc.d.ts +22 -0
- package/dist/templates/locales/de/templates-asciidoc.d.ts.map +1 -0
- package/dist/templates/locales/de/templates-asciidoc.js +814 -0
- package/dist/templates/locales/de/templates-asciidoc.js.map +1 -0
- package/dist/templates/locales/de/{templates.d.ts → templates-markdown.d.ts} +1 -1
- package/dist/templates/locales/de/templates-markdown.d.ts.map +1 -0
- package/dist/templates/locales/de/{templates.js → templates-markdown.js} +1 -1
- package/dist/templates/locales/de/templates-markdown.js.map +1 -0
- package/dist/templates/locales/en/index.d.ts +14 -4
- package/dist/templates/locales/en/index.d.ts.map +1 -1
- package/dist/templates/locales/en/index.js +22 -25
- package/dist/templates/locales/en/index.js.map +1 -1
- package/dist/templates/locales/en/templates-asciidoc.d.ts +22 -0
- package/dist/templates/locales/en/templates-asciidoc.d.ts.map +1 -0
- package/dist/templates/locales/en/templates-asciidoc.js +764 -0
- package/dist/templates/locales/en/templates-asciidoc.js.map +1 -0
- package/dist/templates/locales/en/{templates.d.ts → templates-markdown.d.ts} +1 -1
- package/dist/templates/locales/en/templates-markdown.d.ts.map +1 -0
- package/dist/templates/locales/en/{templates.js → templates-markdown.js} +1 -1
- package/dist/templates/locales/en/templates-markdown.js.map +1 -0
- package/dist/templates/locales/es/index.d.ts +15 -10
- package/dist/templates/locales/es/index.d.ts.map +1 -1
- package/dist/templates/locales/es/index.js +23 -31
- package/dist/templates/locales/es/index.js.map +1 -1
- package/dist/templates/locales/es/templates-asciidoc.d.ts +22 -0
- package/dist/templates/locales/es/templates-asciidoc.d.ts.map +1 -0
- package/dist/templates/locales/es/templates-asciidoc.js +764 -0
- package/dist/templates/locales/es/templates-asciidoc.js.map +1 -0
- package/dist/templates/locales/es/{templates.d.ts → templates-markdown.d.ts} +1 -1
- package/dist/templates/locales/es/templates-markdown.d.ts.map +1 -0
- package/dist/templates/locales/es/{templates.js → templates-markdown.js} +1 -1
- package/dist/templates/locales/es/templates-markdown.js.map +1 -0
- package/dist/templates/locales/fr/index.d.ts +14 -9
- package/dist/templates/locales/fr/index.d.ts.map +1 -1
- package/dist/templates/locales/fr/index.js +22 -30
- package/dist/templates/locales/fr/index.js.map +1 -1
- package/dist/templates/locales/fr/templates-asciidoc.d.ts +22 -0
- package/dist/templates/locales/fr/templates-asciidoc.d.ts.map +1 -0
- package/dist/templates/locales/fr/templates-asciidoc.js +764 -0
- package/dist/templates/locales/fr/templates-asciidoc.js.map +1 -0
- package/dist/templates/locales/fr/{templates.d.ts → templates-markdown.d.ts} +1 -1
- package/dist/templates/locales/fr/templates-markdown.d.ts.map +1 -0
- package/dist/templates/locales/fr/{templates.js → templates-markdown.js} +1 -1
- package/dist/templates/locales/fr/templates-markdown.js.map +1 -0
- package/dist/templates/locales/it/index.d.ts +14 -9
- package/dist/templates/locales/it/index.d.ts.map +1 -1
- package/dist/templates/locales/it/index.js +22 -30
- package/dist/templates/locales/it/index.js.map +1 -1
- package/dist/templates/locales/it/templates-asciidoc.d.ts +22 -0
- package/dist/templates/locales/it/templates-asciidoc.d.ts.map +1 -0
- package/dist/templates/locales/it/templates-asciidoc.js +764 -0
- package/dist/templates/locales/it/templates-asciidoc.js.map +1 -0
- package/dist/templates/locales/it/{templates.d.ts → templates-markdown.d.ts} +1 -1
- package/dist/templates/locales/it/templates-markdown.d.ts.map +1 -0
- package/dist/templates/locales/it/{templates.js → templates-markdown.js} +1 -1
- package/dist/templates/locales/it/templates-markdown.js.map +1 -0
- package/dist/templates/locales/language-strategy-factory.d.ts +120 -0
- package/dist/templates/locales/language-strategy-factory.d.ts.map +1 -0
- package/dist/templates/locales/language-strategy-factory.js +127 -0
- package/dist/templates/locales/language-strategy-factory.js.map +1 -0
- package/dist/templates/locales/language-strategy.d.ts +16 -12
- package/dist/templates/locales/language-strategy.d.ts.map +1 -1
- package/dist/templates/locales/language-strategy.js.map +1 -1
- package/dist/templates/locales/nl/index.d.ts +14 -9
- package/dist/templates/locales/nl/index.d.ts.map +1 -1
- package/dist/templates/locales/nl/index.js +22 -30
- package/dist/templates/locales/nl/index.js.map +1 -1
- package/dist/templates/locales/nl/templates-asciidoc.d.ts +22 -0
- package/dist/templates/locales/nl/templates-asciidoc.d.ts.map +1 -0
- package/dist/templates/locales/nl/templates-asciidoc.js +764 -0
- package/dist/templates/locales/nl/templates-asciidoc.js.map +1 -0
- package/dist/templates/locales/nl/{templates.d.ts → templates-markdown.d.ts} +1 -1
- package/dist/templates/locales/nl/templates-markdown.d.ts.map +1 -0
- package/dist/templates/locales/nl/{templates.js → templates-markdown.js} +1 -1
- package/dist/templates/locales/nl/templates-markdown.js.map +1 -0
- package/dist/templates/locales/pt/index.d.ts +14 -9
- package/dist/templates/locales/pt/index.d.ts.map +1 -1
- package/dist/templates/locales/pt/index.js +22 -30
- package/dist/templates/locales/pt/index.js.map +1 -1
- package/dist/templates/locales/pt/templates-asciidoc.d.ts +22 -0
- package/dist/templates/locales/pt/templates-asciidoc.d.ts.map +1 -0
- package/dist/templates/locales/pt/templates-asciidoc.js +764 -0
- package/dist/templates/locales/pt/templates-asciidoc.js.map +1 -0
- package/dist/templates/locales/pt/{templates.d.ts → templates-markdown.d.ts} +1 -1
- package/dist/templates/locales/pt/templates-markdown.d.ts.map +1 -0
- package/dist/templates/locales/pt/{templates.js → templates-markdown.js} +1 -1
- package/dist/templates/locales/pt/templates-markdown.js.map +1 -0
- package/dist/templates/locales/ru/index.d.ts +19 -3
- package/dist/templates/locales/ru/index.d.ts.map +1 -1
- package/dist/templates/locales/ru/index.js +28 -24
- package/dist/templates/locales/ru/index.js.map +1 -1
- package/dist/templates/locales/ru/templates-asciidoc.d.ts +22 -0
- package/dist/templates/locales/ru/templates-asciidoc.d.ts.map +1 -0
- package/dist/templates/locales/ru/templates-asciidoc.js +996 -0
- package/dist/templates/locales/ru/templates-asciidoc.js.map +1 -0
- package/dist/templates/locales/ru/{templates.d.ts → templates-markdown.d.ts} +1 -1
- package/dist/templates/locales/ru/templates-markdown.d.ts.map +1 -0
- package/dist/templates/locales/ru/{templates.js → templates-markdown.js} +1 -1
- package/dist/templates/locales/ru/templates-markdown.js.map +1 -0
- package/dist/templates/locales/template-provider.d.ts +22 -10
- package/dist/templates/locales/template-provider.d.ts.map +1 -1
- package/dist/templates/locales/template-provider.js +53 -14
- package/dist/templates/locales/template-provider.js.map +1 -1
- package/dist/templates/locales/ukr/index.d.ts +25 -3
- package/dist/templates/locales/ukr/index.d.ts.map +1 -1
- package/dist/templates/locales/ukr/index.js +34 -18
- package/dist/templates/locales/ukr/index.js.map +1 -1
- package/dist/templates/locales/ukr/templates-asciidoc.d.ts +22 -0
- package/dist/templates/locales/ukr/templates-asciidoc.d.ts.map +1 -0
- package/dist/templates/locales/ukr/templates-asciidoc.js +764 -0
- package/dist/templates/locales/ukr/templates-asciidoc.js.map +1 -0
- package/dist/templates/locales/ukr/{templates.d.ts → templates-markdown.d.ts} +1 -1
- package/dist/templates/locales/ukr/templates-markdown.d.ts.map +1 -0
- package/dist/templates/locales/ukr/{templates.js → templates-markdown.js} +1 -1
- package/dist/templates/locales/ukr/templates-markdown.js.map +1 -0
- package/dist/templates/locales/zh/index.d.ts +25 -3
- package/dist/templates/locales/zh/index.d.ts.map +1 -1
- package/dist/templates/locales/zh/index.js +34 -18
- package/dist/templates/locales/zh/index.js.map +1 -1
- package/dist/templates/locales/zh/templates-asciidoc.d.ts +22 -0
- package/dist/templates/locales/zh/templates-asciidoc.d.ts.map +1 -0
- package/dist/templates/locales/zh/templates-asciidoc.js +764 -0
- package/dist/templates/locales/zh/templates-asciidoc.js.map +1 -0
- package/dist/templates/locales/zh/{templates.d.ts → templates-markdown.d.ts} +1 -1
- package/dist/templates/locales/zh/templates-markdown.d.ts.map +1 -0
- package/dist/templates/locales/zh/{templates.js → templates-markdown.js} +1 -1
- package/dist/templates/locales/zh/templates-markdown.js.map +1 -0
- package/dist/tools/arc42-init.d.ts +2 -1
- package/dist/tools/arc42-init.d.ts.map +1 -1
- package/dist/tools/arc42-init.js +154 -24
- package/dist/tools/arc42-init.js.map +1 -1
- package/dist/tools/arc42-status.d.ts.map +1 -1
- package/dist/tools/arc42-status.js +66 -10
- package/dist/tools/arc42-status.js.map +1 -1
- package/dist/tools/arc42-workflow-guide.d.ts +1 -0
- package/dist/tools/arc42-workflow-guide.d.ts.map +1 -1
- package/dist/tools/arc42-workflow-guide.js +16 -14
- package/dist/tools/arc42-workflow-guide.js.map +1 -1
- package/dist/tools/generate-template.d.ts +1 -0
- package/dist/tools/generate-template.d.ts.map +1 -1
- package/dist/tools/generate-template.js +16 -5
- package/dist/tools/generate-template.js.map +1 -1
- package/dist/tools/get-section.d.ts.map +1 -1
- package/dist/tools/get-section.js +28 -7
- package/dist/tools/get-section.js.map +1 -1
- package/dist/tools/update-section.d.ts +1 -1
- package/dist/tools/update-section.d.ts.map +1 -1
- package/dist/tools/update-section.js +71 -8
- package/dist/tools/update-section.js.map +1 -1
- package/dist/types.d.ts +2 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +1 -0
- package/dist/types.js.map +1 -1
- package/package.json +1 -1
- package/dist/templates/locales/cz/templates.d.ts.map +0 -1
- package/dist/templates/locales/cz/templates.js.map +0 -1
- package/dist/templates/locales/de/templates.d.ts.map +0 -1
- package/dist/templates/locales/de/templates.js.map +0 -1
- package/dist/templates/locales/en/templates.d.ts.map +0 -1
- package/dist/templates/locales/en/templates.js.map +0 -1
- package/dist/templates/locales/es/templates.d.ts.map +0 -1
- package/dist/templates/locales/es/templates.js.map +0 -1
- package/dist/templates/locales/fr/templates.d.ts.map +0 -1
- package/dist/templates/locales/fr/templates.js.map +0 -1
- package/dist/templates/locales/it/templates.d.ts.map +0 -1
- package/dist/templates/locales/it/templates.js.map +0 -1
- package/dist/templates/locales/nl/templates.d.ts.map +0 -1
- package/dist/templates/locales/nl/templates.js.map +0 -1
- package/dist/templates/locales/pt/templates.d.ts.map +0 -1
- package/dist/templates/locales/pt/templates.js.map +0 -1
- package/dist/templates/locales/ru/templates.d.ts.map +0 -1
- package/dist/templates/locales/ru/templates.js.map +0 -1
- package/dist/templates/locales/ukr/templates.d.ts.map +0 -1
- package/dist/templates/locales/ukr/templates.js.map +0 -1
- package/dist/templates/locales/zh/templates.d.ts.map +0 -1
- 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**:
|
|
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",
|
|
423
|
-
|
|
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: "
|
|
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/
|
|
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;
|
|
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/
|
|
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
|
-
//
|
|
48
|
-
const
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
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
|
-
|
|
68
|
-
|
|
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:
|
|
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(
|
|
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(
|
|
128
|
+
const content = readFileSync(versionFile, 'utf-8');
|
|
97
129
|
const { revnumber, revdate } = parseVersionProperties(content);
|
|
98
130
|
if (!revnumber || !revdate) {
|
|
99
|
-
console.warn(
|
|
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(
|
|
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
|
-
|
|
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: ${
|
|
139
|
-
- Date: ${
|
|
140
|
-
-
|
|
141
|
-
-
|
|
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:
|
|
150
|
-
arc42_template_date:
|
|
151
|
-
|
|
152
|
-
|
|
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":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAC9C,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"arc42-reference.js","sourceRoot":"","sources":["../../src/templates/arc42-reference.ts"],"names":[],"mappings":"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"}
|