ma-agents 3.18.0-beta.2 → 3.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (168) hide show
  1. package/README.md +2 -2
  2. package/bin/cli.js +29 -32
  3. package/docs/architecture.md +2 -2
  4. package/lib/bmad-cache/cache-manifest.json +0 -12
  5. package/lib/bmad-extension-plugin/.claude-plugin/marketplace.json +1 -1
  6. package/lib/bmad.js +33 -34
  7. package/package.json +1 -1
  8. package/scripts/build-bmad-cache.js +18 -9
  9. package/lib/bmad-cache/gds/.claude-plugin/marketplace.json +0 -56
  10. package/lib/bmad-cache/gds/.markdownlint-cli2.yaml +0 -35
  11. package/lib/bmad-cache/gds/.nvmrc +0 -1
  12. package/lib/bmad-cache/gds/.prettierignore +0 -9
  13. package/lib/bmad-cache/gds/CNAME +0 -1
  14. package/lib/bmad-cache/gds/LICENSE +0 -26
  15. package/lib/bmad-cache/gds/README.md +0 -134
  16. package/lib/bmad-cache/gds/_git_preserved/HEAD +0 -1
  17. package/lib/bmad-cache/gds/_git_preserved/config +0 -13
  18. package/lib/bmad-cache/gds/_git_preserved/description +0 -1
  19. package/lib/bmad-cache/gds/_git_preserved/hooks/applypatch-msg.sample +0 -15
  20. package/lib/bmad-cache/gds/_git_preserved/hooks/commit-msg.sample +0 -74
  21. package/lib/bmad-cache/gds/_git_preserved/hooks/fsmonitor-watchman.sample +0 -168
  22. package/lib/bmad-cache/gds/_git_preserved/hooks/post-update.sample +0 -8
  23. package/lib/bmad-cache/gds/_git_preserved/hooks/pre-applypatch.sample +0 -14
  24. package/lib/bmad-cache/gds/_git_preserved/hooks/pre-commit.sample +0 -49
  25. package/lib/bmad-cache/gds/_git_preserved/hooks/pre-merge-commit.sample +0 -13
  26. package/lib/bmad-cache/gds/_git_preserved/hooks/pre-push.sample +0 -53
  27. package/lib/bmad-cache/gds/_git_preserved/hooks/pre-rebase.sample +0 -169
  28. package/lib/bmad-cache/gds/_git_preserved/hooks/pre-receive.sample +0 -24
  29. package/lib/bmad-cache/gds/_git_preserved/hooks/prepare-commit-msg.sample +0 -42
  30. package/lib/bmad-cache/gds/_git_preserved/hooks/push-to-checkout.sample +0 -78
  31. package/lib/bmad-cache/gds/_git_preserved/hooks/sendemail-validate.sample +0 -77
  32. package/lib/bmad-cache/gds/_git_preserved/hooks/update.sample +0 -128
  33. package/lib/bmad-cache/gds/_git_preserved/index +0 -0
  34. package/lib/bmad-cache/gds/_git_preserved/info/exclude +0 -6
  35. package/lib/bmad-cache/gds/_git_preserved/objects/pack/pack-dcb7c556d9bb6b6b70d2301e094eaac6d7300552.idx +0 -0
  36. package/lib/bmad-cache/gds/_git_preserved/objects/pack/pack-dcb7c556d9bb6b6b70d2301e094eaac6d7300552.pack +0 -0
  37. package/lib/bmad-cache/gds/_git_preserved/objects/pack/pack-dcb7c556d9bb6b6b70d2301e094eaac6d7300552.rev +0 -0
  38. package/lib/bmad-cache/gds/_git_preserved/packed-refs +0 -2
  39. package/lib/bmad-cache/gds/_git_preserved/refs/heads/main +0 -1
  40. package/lib/bmad-cache/gds/_git_preserved/shallow +0 -1
  41. package/lib/bmad-cache/gds/eslint.config.mjs +0 -141
  42. package/lib/bmad-cache/gds/package.json +0 -91
  43. package/lib/bmad-cache/gds/prettier.config.mjs +0 -32
  44. package/lib/bmad-cache/gds/src/agents/gds-agent-game-architect/customize.toml +0 -57
  45. package/lib/bmad-cache/gds/src/agents/gds-agent-game-designer/customize.toml +0 -59
  46. package/lib/bmad-cache/gds/src/agents/gds-agent-game-dev/customize.toml +0 -129
  47. package/lib/bmad-cache/gds/src/agents/gds-agent-game-dev/gametest/qa-index.csv +0 -18
  48. package/lib/bmad-cache/gds/src/agents/gds-agent-game-solo-dev/customize.toml +0 -55
  49. package/lib/bmad-cache/gds/src/agents/gds-agent-tech-writer/customize.toml +0 -65
  50. package/lib/bmad-cache/gds/src/module-help.csv +0 -30
  51. package/lib/bmad-cache/gds/src/module.yaml +0 -113
  52. package/lib/bmad-cache/gds/src/workflows/1-preproduction/gds-brainstorm-game/customize.toml +0 -41
  53. package/lib/bmad-cache/gds/src/workflows/1-preproduction/gds-brainstorm-game/game-brain-methods.csv +0 -26
  54. package/lib/bmad-cache/gds/src/workflows/1-preproduction/gds-create-game-brief/customize.toml +0 -116
  55. package/lib/bmad-cache/gds/src/workflows/1-preproduction/research/gds-domain-research/customize.toml +0 -41
  56. package/lib/bmad-cache/gds/src/workflows/2-design/gds-create-narrative/customize.toml +0 -41
  57. package/lib/bmad-cache/gds/src/workflows/2-design/gds-gdd/assets/game-types.csv +0 -25
  58. package/lib/bmad-cache/gds/src/workflows/2-design/gds-gdd/assets/genre-complexity.csv +0 -26
  59. package/lib/bmad-cache/gds/src/workflows/2-design/gds-gdd/assets/validation-report-template.html +0 -190
  60. package/lib/bmad-cache/gds/src/workflows/2-design/gds-gdd/customize.toml +0 -99
  61. package/lib/bmad-cache/gds/src/workflows/2-design/gds-gdd/scripts/render-validation-html.py +0 -290
  62. package/lib/bmad-cache/gds/src/workflows/2-design/gds-prd/assets/validation-report-template.html +0 -190
  63. package/lib/bmad-cache/gds/src/workflows/2-design/gds-prd/customize.toml +0 -84
  64. package/lib/bmad-cache/gds/src/workflows/2-design/gds-ux/assets/validation-report-template.html +0 -319
  65. package/lib/bmad-cache/gds/src/workflows/2-design/gds-ux/customize.toml +0 -101
  66. package/lib/bmad-cache/gds/src/workflows/3-technical/gds-check-implementation-readiness/customize.toml +0 -41
  67. package/lib/bmad-cache/gds/src/workflows/3-technical/gds-create-epics-and-stories/customize.toml +0 -41
  68. package/lib/bmad-cache/gds/src/workflows/3-technical/gds-game-architecture/architecture-patterns.yaml +0 -508
  69. package/lib/bmad-cache/gds/src/workflows/3-technical/gds-game-architecture/customize.toml +0 -41
  70. package/lib/bmad-cache/gds/src/workflows/3-technical/gds-game-architecture/decision-catalog.yaml +0 -428
  71. package/lib/bmad-cache/gds/src/workflows/3-technical/gds-game-architecture/engine-mcps.yaml +0 -392
  72. package/lib/bmad-cache/gds/src/workflows/3-technical/gds-game-architecture/pattern-categories.csv +0 -13
  73. package/lib/bmad-cache/gds/src/workflows/3-technical/gds-generate-project-context/customize.toml +0 -41
  74. package/lib/bmad-cache/gds/src/workflows/4-production/gds-code-review/customize.toml +0 -41
  75. package/lib/bmad-cache/gds/src/workflows/4-production/gds-correct-course/customize.toml +0 -41
  76. package/lib/bmad-cache/gds/src/workflows/4-production/gds-create-story/customize.toml +0 -41
  77. package/lib/bmad-cache/gds/src/workflows/4-production/gds-dev-story/customize.toml +0 -41
  78. package/lib/bmad-cache/gds/src/workflows/4-production/gds-investigate/customize.toml +0 -62
  79. package/lib/bmad-cache/gds/src/workflows/4-production/gds-retrospective/customize.toml +0 -41
  80. package/lib/bmad-cache/gds/src/workflows/4-production/gds-sprint-planning/customize.toml +0 -41
  81. package/lib/bmad-cache/gds/src/workflows/4-production/gds-sprint-planning/sprint-status-template.yaml +0 -55
  82. package/lib/bmad-cache/gds/src/workflows/4-production/gds-sprint-status/customize.toml +0 -41
  83. package/lib/bmad-cache/gds/src/workflows/gametest/gds-e2e-scaffold/customize.toml +0 -41
  84. package/lib/bmad-cache/gds/src/workflows/gametest/gds-performance-test/customize.toml +0 -41
  85. package/lib/bmad-cache/gds/src/workflows/gametest/gds-playtest-plan/customize.toml +0 -41
  86. package/lib/bmad-cache/gds/src/workflows/gametest/gds-test-automate/customize.toml +0 -41
  87. package/lib/bmad-cache/gds/src/workflows/gametest/gds-test-design/customize.toml +0 -41
  88. package/lib/bmad-cache/gds/src/workflows/gametest/gds-test-framework/customize.toml +0 -41
  89. package/lib/bmad-cache/gds/src/workflows/gametest/gds-test-review/customize.toml +0 -41
  90. package/lib/bmad-cache/gds/src/workflows/gds-document-project/customize.toml +0 -41
  91. package/lib/bmad-cache/gds/src/workflows/gds-document-project/documentation-requirements.csv +0 -12
  92. package/lib/bmad-cache/gds/src/workflows/gds-document-project/templates/project-scan-report-schema.json +0 -160
  93. package/lib/bmad-cache/gds/src/workflows/gds-quick-flow/gds-quick-dev/customize.toml +0 -41
  94. package/lib/bmad-cache/gds/tools/build-docs.mjs +0 -450
  95. package/lib/bmad-cache/gds/website/astro.config.mjs +0 -142
  96. package/lib/bmad-cache/gds/website/public/favicon.ico +0 -0
  97. package/lib/bmad-cache/gds/website/public/img/bmad-dark.png +0 -0
  98. package/lib/bmad-cache/gds/website/public/img/bmad-light.png +0 -0
  99. package/lib/bmad-cache/gds/website/src/components/Banner.astro +0 -71
  100. package/lib/bmad-cache/gds/website/src/components/Header.astro +0 -94
  101. package/lib/bmad-cache/gds/website/src/components/MobileMenuFooter.astro +0 -33
  102. package/lib/bmad-cache/gds/website/src/content/config.ts +0 -6
  103. package/lib/bmad-cache/gds/website/src/content/docs +0 -1
  104. package/lib/bmad-cache/gds/website/src/lib/site-url.mjs +0 -25
  105. package/lib/bmad-cache/gds/website/src/rehype-base-paths.js +0 -88
  106. package/lib/bmad-cache/gds/website/src/rehype-markdown-links.js +0 -117
  107. package/lib/bmad-cache/gds/website/src/styles/custom.css +0 -503
  108. package/lib/bmad-cache/wds/.claude-plugin/marketplace.json +0 -35
  109. package/lib/bmad-cache/wds/.markdownlint-cli2.yaml +0 -38
  110. package/lib/bmad-cache/wds/.nvmrc +0 -1
  111. package/lib/bmad-cache/wds/.prettierignore +0 -9
  112. package/lib/bmad-cache/wds/LICENSE +0 -27
  113. package/lib/bmad-cache/wds/README.md +0 -139
  114. package/lib/bmad-cache/wds/_git_preserved/HEAD +0 -1
  115. package/lib/bmad-cache/wds/_git_preserved/config +0 -13
  116. package/lib/bmad-cache/wds/_git_preserved/description +0 -1
  117. package/lib/bmad-cache/wds/_git_preserved/hooks/applypatch-msg.sample +0 -15
  118. package/lib/bmad-cache/wds/_git_preserved/hooks/commit-msg.sample +0 -74
  119. package/lib/bmad-cache/wds/_git_preserved/hooks/fsmonitor-watchman.sample +0 -168
  120. package/lib/bmad-cache/wds/_git_preserved/hooks/post-update.sample +0 -8
  121. package/lib/bmad-cache/wds/_git_preserved/hooks/pre-applypatch.sample +0 -14
  122. package/lib/bmad-cache/wds/_git_preserved/hooks/pre-commit.sample +0 -49
  123. package/lib/bmad-cache/wds/_git_preserved/hooks/pre-merge-commit.sample +0 -13
  124. package/lib/bmad-cache/wds/_git_preserved/hooks/pre-push.sample +0 -53
  125. package/lib/bmad-cache/wds/_git_preserved/hooks/pre-rebase.sample +0 -169
  126. package/lib/bmad-cache/wds/_git_preserved/hooks/pre-receive.sample +0 -24
  127. package/lib/bmad-cache/wds/_git_preserved/hooks/prepare-commit-msg.sample +0 -42
  128. package/lib/bmad-cache/wds/_git_preserved/hooks/push-to-checkout.sample +0 -78
  129. package/lib/bmad-cache/wds/_git_preserved/hooks/sendemail-validate.sample +0 -77
  130. package/lib/bmad-cache/wds/_git_preserved/hooks/update.sample +0 -128
  131. package/lib/bmad-cache/wds/_git_preserved/index +0 -0
  132. package/lib/bmad-cache/wds/_git_preserved/info/exclude +0 -6
  133. package/lib/bmad-cache/wds/_git_preserved/objects/pack/pack-656c3d8d5426e73043b6a7f45eedaab74e3c419e.idx +0 -0
  134. package/lib/bmad-cache/wds/_git_preserved/objects/pack/pack-656c3d8d5426e73043b6a7f45eedaab74e3c419e.pack +0 -0
  135. package/lib/bmad-cache/wds/_git_preserved/objects/pack/pack-656c3d8d5426e73043b6a7f45eedaab74e3c419e.rev +0 -0
  136. package/lib/bmad-cache/wds/_git_preserved/packed-refs +0 -2
  137. package/lib/bmad-cache/wds/_git_preserved/refs/heads/main +0 -1
  138. package/lib/bmad-cache/wds/_git_preserved/refs/tags/v0.4.3 +0 -1
  139. package/lib/bmad-cache/wds/_git_preserved/shallow +0 -1
  140. package/lib/bmad-cache/wds/eslint.config.mjs +0 -152
  141. package/lib/bmad-cache/wds/package.json +0 -82
  142. package/lib/bmad-cache/wds/prettier.config.mjs +0 -32
  143. package/lib/bmad-cache/wds/src/agents/wds-agent-freya-ux/customize.toml +0 -80
  144. package/lib/bmad-cache/wds/src/agents/wds-agent-mimir-builder/customize.toml +0 -52
  145. package/lib/bmad-cache/wds/src/agents/wds-agent-saga-analyst/customize.toml +0 -70
  146. package/lib/bmad-cache/wds/src/module-help.csv +0 -19
  147. package/lib/bmad-cache/wds/src/module.yaml +0 -173
  148. package/lib/bmad-cache/wds/src/scripts/README.md +0 -155
  149. package/lib/bmad-cache/wds/src/scripts/wds-add-object.js +0 -202
  150. package/lib/bmad-cache/wds/src/scripts/wds-add-spacing.js +0 -158
  151. package/lib/bmad-cache/wds/src/scripts/wds-init-page.js +0 -229
  152. package/lib/bmad-cache/wds/src/scripts/wds-init-scenario.js +0 -120
  153. package/lib/bmad-cache/wds/src/scripts/wds-nav.js +0 -201
  154. package/lib/bmad-cache/wds/src/scripts/wds-validate.js +0 -301
  155. package/lib/bmad-cache/wds/src/workflows/wds-0-project-setup/resources/wds-1-project-brief/templates/platform-requirements.template.yaml +0 -69
  156. package/lib/bmad-cache/wds/src/workflows/wds-0-project-setup/resources/wds-7-design-system/templates/catalog.template.html +0 -363
  157. package/lib/bmad-cache/wds/src/workflows/wds-1-project-brief/templates/platform-requirements.template.yaml +0 -69
  158. package/lib/bmad-cache/wds/src/workflows/wds-3-scenarios/workflow.xml +0 -450
  159. package/lib/bmad-cache/wds/src/workflows/wds-4-ux-design/templates/design-delivery.template.yaml +0 -104
  160. package/lib/bmad-cache/wds/src/workflows/wds-4-ux-design/templates/test-scenario.template.yaml +0 -192
  161. package/lib/bmad-cache/wds/src/workflows/wds-4-ux-design/workflow-specify.xml +0 -387
  162. package/lib/bmad-cache/wds/src/workflows/wds-5-agentic-development/templates/components/dev-mode.css +0 -164
  163. package/lib/bmad-cache/wds/src/workflows/wds-5-agentic-development/templates/components/dev-mode.html +0 -18
  164. package/lib/bmad-cache/wds/src/workflows/wds-5-agentic-development/templates/components/dev-mode.js +0 -430
  165. package/lib/bmad-cache/wds/src/workflows/wds-5-agentic-development/templates/demo-data-template.json +0 -63
  166. package/lib/bmad-cache/wds/src/workflows/wds-5-agentic-development/templates/page-template.html +0 -465
  167. package/lib/bmad-cache/wds/src/workflows/wds-5-agentic-development/templates/work-file-template.yaml +0 -264
  168. package/lib/bmad-cache/wds/src/workflows/wds-7-design-system/templates/catalog.template.html +0 -363
@@ -1,142 +0,0 @@
1
- // @ts-check
2
- import { defineConfig } from 'astro/config';
3
- import starlight from '@astrojs/starlight';
4
- import sitemap from '@astrojs/sitemap';
5
- import rehypeMarkdownLinks from './src/rehype-markdown-links.js';
6
- import rehypeBasePaths from './src/rehype-base-paths.js';
7
- import { getSiteUrl } from './src/lib/site-url.mjs';
8
-
9
- const siteUrl = getSiteUrl();
10
- const urlParts = new URL(siteUrl);
11
- // Normalize basePath: ensure trailing slash so links can use `${BASE_URL}path`
12
- const basePath = urlParts.pathname === '/' ? '/' : urlParts.pathname.endsWith('/') ? urlParts.pathname : urlParts.pathname + '/';
13
-
14
- export default defineConfig({
15
- site: `${urlParts.origin}${basePath}`,
16
- base: basePath,
17
- outDir: '../build/site',
18
-
19
- // Disable aggressive caching in dev mode
20
- vite: {
21
- optimizeDeps: {
22
- force: true, // Always re-bundle dependencies
23
- },
24
- server: {
25
- watch: {
26
- usePolling: false, // Set to true if file changes aren't detected
27
- },
28
- },
29
- },
30
-
31
- markdown: {
32
- rehypePlugins: [
33
- [rehypeMarkdownLinks, { base: basePath }],
34
- [rehypeBasePaths, { base: basePath }],
35
- ],
36
- },
37
-
38
- integrations: [
39
- sitemap(),
40
- starlight({
41
- title: 'BMad Game Dev Studio',
42
- tagline: 'Game development (Unity, Unreal, Godot) module for the BMad Method.',
43
-
44
- favicon: '/favicon.ico',
45
-
46
- // Social links
47
- social: [
48
- { icon: 'discord', label: 'Discord', href: 'https://discord.gg/gk8jAdXWmj' },
49
- { icon: 'github', label: 'GitHub', href: 'https://github.com/bmad-code-org/bmad-module-game-dev-studio' },
50
- { icon: 'youtube', label: 'YouTube', href: 'https://www.youtube.com/@BMadCode' },
51
- ],
52
-
53
- // Show last updated timestamps
54
- lastUpdated: true,
55
-
56
- // Custom head tags for LLM discovery
57
- head: [
58
- {
59
- tag: 'meta',
60
- attrs: {
61
- name: 'ai-terms',
62
- content: `AI-optimized documentation: ${siteUrl}/llms-full.txt (plain text). Index: ${siteUrl}/llms.txt`,
63
- },
64
- },
65
- {
66
- tag: 'meta',
67
- attrs: {
68
- name: 'llms-full',
69
- content: `${siteUrl}/llms-full.txt`,
70
- },
71
- },
72
- {
73
- tag: 'meta',
74
- attrs: {
75
- name: 'llms',
76
- content: `${siteUrl}/llms.txt`,
77
- },
78
- },
79
- ],
80
-
81
- // Custom CSS
82
- customCss: ['./src/styles/custom.css'],
83
-
84
- // Sidebar configuration (Diataxis structure)
85
- sidebar: [
86
- { label: 'Welcome', slug: 'index' },
87
- {
88
- label: 'Tutorials',
89
- collapsed: false,
90
- autogenerate: { directory: 'tutorials' },
91
- },
92
- {
93
- label: 'How-To Guides',
94
- collapsed: true,
95
- autogenerate: { directory: 'how-to' },
96
- },
97
- {
98
- label: 'Explanation',
99
- collapsed: true,
100
- autogenerate: { directory: 'explanation' },
101
- },
102
- {
103
- label: 'Reference',
104
- collapsed: true,
105
- autogenerate: { directory: 'reference' },
106
- },
107
- {
108
- label: 'BMad Ecosystem',
109
- collapsed: false,
110
- items: [
111
- { label: 'BMad Method', link: 'https://docs.bmad-method.org/', attrs: { target: '_blank' } },
112
- { label: 'BMad Builder', link: 'https://bmad-builder-docs.bmad-method.org/', attrs: { target: '_blank' } },
113
- { label: 'Creative Intelligence Suite', link: 'https://cis-docs.bmad-method.org/', attrs: { target: '_blank' } },
114
- {
115
- label: 'Test Architect (TEA)',
116
- link: 'https://bmad-code-org.github.io/bmad-method-test-architecture-enterprise/',
117
- attrs: { target: '_blank' },
118
- },
119
- ],
120
- },
121
- ],
122
-
123
- // Credits in footer
124
- credits: false,
125
-
126
- // Pagination
127
- pagination: false,
128
-
129
- // Use our docs/404.md instead of Starlight's built-in 404
130
- disable404Route: true,
131
-
132
- // Custom components
133
- components: {
134
- Header: './src/components/Header.astro',
135
- MobileMenuFooter: './src/components/MobileMenuFooter.astro',
136
- },
137
-
138
- // Table of contents
139
- tableOfContents: { minHeadingLevel: 2, maxHeadingLevel: 3 },
140
- }),
141
- ],
142
- });
@@ -1,71 +0,0 @@
1
- ---
2
- import { getSiteUrl } from '../lib/site-url.mjs';
3
-
4
- const llmsFullUrl = `${getSiteUrl()}/llms-full.txt`;
5
- ---
6
-
7
- <div class="ai-banner">
8
- <span>🤖 AI-optimized docs: <a href={llmsFullUrl}>llms-full.txt</a></span>
9
- </div>
10
- <div class="announce-banner">
11
- <span>🚀 Build your own BMad modules and share them with the community! <a href="https://bmad-builder-docs.bmad-method.org/tutorials/build-your-first-module/">Get started</a> or <a href="https://bmad-builder-docs.bmad-method.org/how-to/distribute-your-module/">submit to the marketplace</a>.</span>
12
- </div>
13
-
14
- <style>
15
- .ai-banner,
16
- .announce-banner {
17
- width: 100vw;
18
- margin-left: calc(-50vw + 50%);
19
- height: var(--ai-banner-height, 2.75rem);
20
- background: #1a1a1a;
21
- color: #a1a1a1;
22
- padding: 0.5rem 1rem;
23
- font-size: 0.875rem;
24
- border-bottom: 1px solid #262626;
25
- display: flex;
26
- align-items: center;
27
- justify-content: center;
28
- box-sizing: border-box;
29
- font-family: 'Inter', system-ui, sans-serif;
30
- }
31
-
32
- .ai-banner span,
33
- .announce-banner span {
34
- white-space: nowrap;
35
- overflow: hidden;
36
- text-overflow: ellipsis;
37
- max-width: 100%;
38
- }
39
- .ai-banner a,
40
- .announce-banner a {
41
- color: #3b82f6;
42
- text-decoration: none;
43
- font-weight: 600;
44
- }
45
- .ai-banner a:hover,
46
- .announce-banner a:hover {
47
- color: #fafafa;
48
- text-decoration: underline;
49
- }
50
-
51
- .announce-banner {
52
- background: #1a2332;
53
- border-bottom: 1px solid #1e3a5f;
54
- }
55
-
56
- @media (min-width: 50rem) {
57
- .ai-banner,
58
- .announce-banner {
59
- padding-left: 2.5rem;
60
- padding-right: 2.5rem;
61
- }
62
- }
63
-
64
- @media (min-width: 72rem) {
65
- .ai-banner,
66
- .announce-banner {
67
- padding-left: 3rem;
68
- padding-right: 3rem;
69
- }
70
- }
71
- </style>
@@ -1,94 +0,0 @@
1
- ---
2
- import config from 'virtual:starlight/user-config';
3
- import type { Props } from '@astrojs/starlight/props';
4
-
5
- import LanguageSelect from 'virtual:starlight/components/LanguageSelect';
6
- import Search from 'virtual:starlight/components/Search';
7
- import SiteTitle from 'virtual:starlight/components/SiteTitle';
8
- import SocialIcons from 'virtual:starlight/components/SocialIcons';
9
- import ThemeSelect from 'virtual:starlight/components/ThemeSelect';
10
- import Banner from './Banner.astro';
11
- /**
12
- * Render the `Search` component if Pagefind is enabled or the default search component has been overridden.
13
- */
14
- const shouldRenderSearch =
15
- config.pagefind || config.components.Search !== '@astrojs/starlight/components/Search.astro';
16
- ---
17
-
18
- <Banner />
19
- <div class="header sl-flex">
20
- <div class="title-wrapper sl-flex">
21
- <SiteTitle {...Astro.props} />
22
- </div>
23
- <div class="sl-flex print:hidden">
24
- {shouldRenderSearch && <Search {...Astro.props} />}
25
- </div>
26
- <div class="sl-hidden md:sl-flex print:hidden right-group">
27
- <div class="sl-flex social-icons">
28
- <SocialIcons {...Astro.props} />
29
- </div>
30
- <ThemeSelect {...Astro.props} />
31
- <LanguageSelect {...Astro.props} />
32
- </div>
33
- </div>
34
-
35
- <style>
36
- .header {
37
- gap: var(--sl-nav-gap);
38
- justify-content: space-between;
39
- align-items: center;
40
- height: 100%;
41
- }
42
-
43
- .title-wrapper {
44
- /* Prevent long titles overflowing and covering the search and menu buttons on narrow viewports. */
45
- overflow: clip;
46
- /* Avoid clipping focus ring around link inside title wrapper. */
47
- padding: 0.25rem;
48
- margin: -0.25rem;
49
- min-width: 0;
50
- }
51
-
52
- .right-group,
53
- .social-icons {
54
- gap: 1rem;
55
- align-items: center;
56
- }
57
-
58
- .social-icons::after {
59
- content: '';
60
- height: 2rem;
61
- border-inline-end: 1px solid var(--sl-color-gray-5);
62
- }
63
-
64
- @media (min-width: 50rem) {
65
- :global(:root[data-has-sidebar]) {
66
- --__sidebar-pad: calc(2 * var(--sl-nav-pad-x));
67
- }
68
- :global(:root:not([data-has-toc])) {
69
- --__toc-width: 0rem;
70
- }
71
- .header {
72
- --__sidebar-width: max(0rem, var(--sl-content-inline-start, 0rem) - var(--sl-nav-pad-x));
73
- --__main-column-fr: calc(
74
- (
75
- 100% + var(--__sidebar-pad, 0rem) - var(--__toc-width, var(--sl-sidebar-width)) -
76
- (2 * var(--__toc-width, var(--sl-nav-pad-x))) - var(--sl-content-inline-start, 0rem) -
77
- var(--sl-content-width)
78
- ) / 2
79
- );
80
- display: grid;
81
- grid-template-columns:
82
- /* 1 (site title): runs up until the main content column's left edge or the width of the title, whichever is the largest */
83
- minmax(
84
- calc(var(--__sidebar-width) + max(0rem, var(--__main-column-fr) - var(--sl-nav-gap))),
85
- auto
86
- )
87
- /* 2 (search box): all free space that is available. */
88
- 1fr
89
- /* 3 (right items): use the space that these need. */
90
- auto;
91
- align-content: center;
92
- }
93
- }
94
- </style>
@@ -1,33 +0,0 @@
1
- ---
2
- import LanguageSelect from 'virtual:starlight/components/LanguageSelect';
3
- import SocialIcons from 'virtual:starlight/components/SocialIcons';
4
- import ThemeSelect from 'virtual:starlight/components/ThemeSelect';
5
- import type { Props } from '@astrojs/starlight/props';
6
- ---
7
-
8
- <div class="mobile-preferences sl-flex">
9
- <div class="sl-flex social-icons">
10
- <SocialIcons {...Astro.props} />
11
- </div>
12
- <ThemeSelect {...Astro.props} />
13
- <LanguageSelect {...Astro.props} />
14
- </div>
15
-
16
- <style>
17
- .social-icons {
18
- gap: 1rem;
19
- align-items: center;
20
- padding-block: 1rem;
21
- }
22
- .social-icons:empty {
23
- display: none;
24
- }
25
- .mobile-preferences {
26
- justify-content: space-between;
27
- flex-wrap: wrap;
28
- border-top: 1px solid var(--sl-color-gray-6);
29
- column-gap: 1rem;
30
- padding: 0.5rem 0;
31
- align-items: center;
32
- }
33
- </style>
@@ -1,6 +0,0 @@
1
- import { defineCollection } from 'astro:content';
2
- import { docsSchema } from '@astrojs/starlight/schema';
3
-
4
- export const collections = {
5
- docs: defineCollection({ schema: docsSchema() }),
6
- };
@@ -1 +0,0 @@
1
- ../../../docs
@@ -1,25 +0,0 @@
1
- /**
2
- * Resolve the site's base URL using cascading environment defaults.
3
- *
4
- * Preference order: use SITE_URL if set; otherwise derive a GitHub Pages URL from GITHUB_REPOSITORY; otherwise use the local development URL.
5
- * @returns {string} The resolved site URL (SITE_URL override, or `https://{owner}.github.io/{repo}`, or `http://localhost:3000`).
6
- */
7
- export function getSiteUrl() {
8
- // Explicit override (works in both local and GitHub Actions)
9
- if (process.env.SITE_URL) {
10
- return process.env.SITE_URL;
11
- }
12
-
13
- // GitHub Actions: compute from repository context
14
- if (process.env.GITHUB_REPOSITORY) {
15
- const parts = process.env.GITHUB_REPOSITORY.split('/');
16
- if (parts.length !== 2 || !parts[0] || !parts[1]) {
17
- throw new Error(`Invalid GITHUB_REPOSITORY format: "${process.env.GITHUB_REPOSITORY}". Expected "owner/repo".`);
18
- }
19
- const [owner, repo] = parts;
20
- return `https://${owner}.github.io/${repo}`;
21
- }
22
-
23
- // Local development: use dev server
24
- return 'http://localhost:3000';
25
- }
@@ -1,88 +0,0 @@
1
- /**
2
- * Rehype plugin to prepend base path to absolute URLs
3
- *
4
- * Transforms:
5
- * /img/foo.png → /bmad-module-game-dev-studio/img/foo.png (when base is /bmad-module-game-dev-studio/)
6
- * /llms.txt → /bmad-module-game-dev-studio/llms.txt
7
- *
8
- * Only affects absolute paths (/) - relative paths and external URLs are unchanged.
9
- * Does NOT process .md links (those are handled by rehype-markdown-links).
10
- */
11
-
12
- import { visit } from 'unist-util-visit';
13
-
14
- /**
15
- * Create a rehype plugin that prepends the base path to absolute URLs.
16
- *
17
- * @param {Object} options - Plugin options
18
- * @param {string} options.base - The base path to prepend (e.g., '/bmad-module-game-dev-studio/')
19
- * @returns {function} A HAST tree transformer
20
- */
21
- export default function rehypeBasePaths(options = {}) {
22
- const base = options.base || '/';
23
-
24
- // Normalize base: ensure it ends with / and doesn't have double slashes
25
- const normalizedBase = base === '/' ? '/' : base.endsWith('/') ? base : base + '/';
26
-
27
- return (tree) => {
28
- visit(tree, 'element', (node) => {
29
- // Process img tags with src attribute
30
- if (node.tagName === 'img' && node.properties?.src) {
31
- const src = node.properties.src;
32
-
33
- if (typeof src === 'string' && src.startsWith('/') && !src.startsWith('//')) {
34
- // Don't transform if already has the base path
35
- if (normalizedBase !== '/' && !src.startsWith(normalizedBase)) {
36
- node.properties.src = normalizedBase + src.slice(1);
37
- }
38
- }
39
- }
40
-
41
- // Process iframe tags with src attribute
42
- if (node.tagName === 'iframe' && node.properties?.src) {
43
- const src = node.properties.src;
44
-
45
- if (typeof src === 'string' && src.startsWith('/') && !src.startsWith('//')) {
46
- // Don't transform if already has the base path
47
- if (normalizedBase !== '/' && !src.startsWith(normalizedBase)) {
48
- node.properties.src = normalizedBase + src.slice(1);
49
- }
50
- }
51
- }
52
-
53
- // Process anchor tags with href attribute
54
- if (node.tagName === 'a' && node.properties?.href) {
55
- const href = node.properties.href;
56
-
57
- if (typeof href !== 'string') {
58
- return;
59
- }
60
-
61
- // Only transform absolute paths starting with / (but not //)
62
- if (!href.startsWith('/') || href.startsWith('//')) {
63
- return;
64
- }
65
-
66
- // Skip if already has the base path
67
- if (normalizedBase !== '/' && href.startsWith(normalizedBase)) {
68
- return;
69
- }
70
-
71
- // Skip .md links - those are handled by rehype-markdown-links
72
- // Extract path portion (before ? and #)
73
- const firstDelimiter = Math.min(
74
- href.indexOf('?') === -1 ? Infinity : href.indexOf('?'),
75
- href.indexOf('#') === -1 ? Infinity : href.indexOf('#'),
76
- );
77
- const pathPortion = firstDelimiter === Infinity ? href : href.substring(0, firstDelimiter);
78
-
79
- if (pathPortion.endsWith('.md')) {
80
- return; // Let rehype-markdown-links handle this
81
- }
82
-
83
- // Prepend base path
84
- node.properties.href = normalizedBase + href.slice(1);
85
- }
86
- });
87
- };
88
- }
@@ -1,117 +0,0 @@
1
- /**
2
- * Rehype plugin to transform markdown file links (.md) to page routes
3
- *
4
- * Transforms:
5
- * ./path/to/file.md → ./path/to/file/
6
- * ./path/index.md → ./path/ (index.md becomes directory root)
7
- * ../path/file.md#anchor → ../path/file/#anchor
8
- * ./file.md?query=param → ./file/?query=param
9
- * /docs/absolute/path/file.md → {base}/absolute/path/file/
10
- *
11
- * For absolute paths starting with /docs/, the /docs prefix is stripped
12
- * since the Astro site serves content from the docs directory as the root.
13
- * The base path is prepended to absolute paths for subdirectory deployments.
14
- *
15
- * Affects relative links (./, ../) and absolute paths (/) - external links are unchanged
16
- */
17
-
18
- import { visit } from 'unist-util-visit';
19
-
20
- /**
21
- * Convert Markdown file links (.md) into equivalent page route-style links.
22
- *
23
- * The returned transformer walks the HTML tree and rewrites anchor `href` values that are relative paths (./, ../) or absolute paths (/) pointing to `.md` files. It preserves query strings and hash anchors, rewrites `.../index.md` to the directory root path (`.../`), and rewrites other `.md` file paths by removing the `.md` extension and ensuring a trailing slash. External links (http://, https://) and non-.md links are left unchanged.
24
- *
25
- * @param {Object} options - Plugin options
26
- * @param {string} options.base - The base path to prepend to absolute URLs (e.g., '/bmad-module-game-dev-studio/')
27
- * @returns {function} A HAST tree transformer that mutates `a` element `href` properties as described.
28
- */
29
- export default function rehypeMarkdownLinks(options = {}) {
30
- const base = options.base || '/';
31
- // Normalize base: ensure it ends with / and doesn't have double slashes
32
- const normalizedBase = base === '/' ? '' : base.endsWith('/') ? base.slice(0, -1) : base;
33
-
34
- return (tree) => {
35
- visit(tree, 'element', (node) => {
36
- // Only process anchor tags with href
37
- if (node.tagName !== 'a' || !node.properties?.href) {
38
- return;
39
- }
40
-
41
- const href = node.properties.href;
42
-
43
- // Skip if not a string (shouldn't happen, but be safe)
44
- if (typeof href !== 'string') {
45
- return;
46
- }
47
-
48
- // Skip external links (http://, https://, mailto:, etc.)
49
- if (href.includes('://') || href.startsWith('mailto:') || href.startsWith('tel:')) {
50
- return;
51
- }
52
-
53
- // Only transform paths starting with ./, ../, or / (absolute)
54
- if (!href.startsWith('./') && !href.startsWith('../') && !href.startsWith('/')) {
55
- return;
56
- }
57
-
58
- // Extract path portion (before ? and #) to check if it's a .md file
59
- const firstDelimiter = Math.min(
60
- href.indexOf('?') === -1 ? Infinity : href.indexOf('?'),
61
- href.indexOf('#') === -1 ? Infinity : href.indexOf('#'),
62
- );
63
- const pathPortion = firstDelimiter === Infinity ? href : href.substring(0, firstDelimiter);
64
-
65
- // Don't transform if path doesn't end with .md
66
- if (!pathPortion.endsWith('.md')) {
67
- return;
68
- }
69
-
70
- // Split the URL into parts: path, anchor, and query
71
- let urlPath = pathPortion;
72
- let anchor = '';
73
- let query = '';
74
-
75
- // Extract query string and anchor from original href
76
- if (firstDelimiter !== Infinity) {
77
- const suffix = href.substring(firstDelimiter);
78
- const anchorInSuffix = suffix.indexOf('#');
79
- if (suffix.startsWith('?')) {
80
- if (anchorInSuffix !== -1) {
81
- query = suffix.substring(0, anchorInSuffix);
82
- anchor = suffix.substring(anchorInSuffix);
83
- } else {
84
- query = suffix;
85
- }
86
- } else {
87
- // starts with #
88
- anchor = suffix;
89
- }
90
- }
91
-
92
- // Track if this was an absolute path (for base path prepending)
93
- const isAbsolute = urlPath.startsWith('/');
94
-
95
- // Strip /docs/ prefix from absolute paths (repo-relative → site-relative)
96
- if (urlPath.startsWith('/docs/')) {
97
- urlPath = urlPath.slice(5); // Remove '/docs' prefix, keeping the leading /
98
- }
99
-
100
- // Transform .md to /
101
- // Special case: index.md → directory root (e.g., ./tutorials/index.md → ./tutorials/)
102
- if (urlPath.endsWith('/index.md')) {
103
- urlPath = urlPath.replace(/\/index\.md$/, '/');
104
- } else {
105
- urlPath = urlPath.replace(/\.md$/, '/');
106
- }
107
-
108
- // Prepend base path to absolute URLs for subdirectory deployments
109
- if (isAbsolute && normalizedBase) {
110
- urlPath = normalizedBase + urlPath;
111
- }
112
-
113
- // Reconstruct the href
114
- node.properties.href = urlPath + query + anchor;
115
- });
116
- };
117
- }