bmad-plus 0.12.0 → 0.12.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.
@@ -1,209 +1,209 @@
1
- /**
2
- * BMAD+ Shared PACKS Module — AUTO-GENERATED, DO NOT EDIT.
3
- * Source of truth: registry.yaml (repo root).
4
- * Regenerate: node tools/build/generate.js --out tools/cli/lib/packs.js
5
- *
6
- * Author: Laurent Rochetta
7
- */
8
-
9
- const PACKS = {
10
- "core": {
11
- "name": "Core",
12
- "icon": "b",
13
- "agents": [
14
- "agent-strategist",
15
- "agent-architect-dev",
16
- "agent-quality",
17
- "agent-orchestrator"
18
- ],
19
- "skills": [
20
- "bmad-plus-autopilot",
21
- "bmad-plus-parallel",
22
- "bmad-plus-sync"
23
- ],
24
- "data": [
25
- "role-triggers.yaml"
26
- ],
27
- "packDir": "pack-core",
28
- "packSrcDir": "packs",
29
- "required": true,
30
- "desc": "Core agents & skills"
31
- },
32
- "osint": {
33
- "name": "OSINT",
34
- "icon": "j",
35
- "agents": [
36
- "agent-shadow"
37
- ],
38
- "skills": [],
39
- "externalPackage": "osint-agent-package",
40
- "packDir": "pack-osint",
41
- "packSrcDir": "packs",
42
- "desc": "OSINT & investigation"
43
- },
44
- "maker": {
45
- "name": "Maker",
46
- "icon": "f",
47
- "agents": [
48
- "agent-maker"
49
- ],
50
- "skills": [],
51
- "data": [],
52
- "packDir": "pack-maker",
53
- "packSrcDir": "packs",
54
- "desc": "Agent creation toolkit"
55
- },
56
- "shield": {
57
- "name": "Shield",
58
- "icon": "m",
59
- "agents": [
60
- "shield-orchestrator"
61
- ],
62
- "skills": [],
63
- "packDir": "pack-shield",
64
- "packSrcDir": "packs",
65
- "desc": "GRC compliance (25+ frameworks)"
66
- },
67
- "seo": {
68
- "name": "SEO",
69
- "icon": "k",
70
- "agents": [
71
- "seo-scout",
72
- "seo-chief",
73
- "seo-judge"
74
- ],
75
- "skills": [],
76
- "packDir": "pack-seo",
77
- "packSrcDir": "packs",
78
- "desc": "SEO audit & optimization"
79
- },
80
- "memory": {
81
- "name": "Memory",
82
- "icon": "x",
83
- "agents": [
84
- "zecher"
85
- ],
86
- "skills": [],
87
- "packDir": "pack-memory",
88
- "packSrcDir": "packs",
89
- "desc": "Persistent cross-session memory"
90
- },
91
- "dev-studio": {
92
- "name": "Dev Studio",
93
- "icon": "v",
94
- "agents": [
95
- "dev-studio-orchestrator"
96
- ],
97
- "skills": [
98
- "dev-studio"
99
- ],
100
- "packDir": "pack-dev-studio",
101
- "packSrcDir": "packs",
102
- "desc": "SDLC automation (6 agents, 56+ skills)"
103
- },
104
- "backup": {
105
- "name": "Backup",
106
- "icon": "y",
107
- "agents": [
108
- "backup-agent"
109
- ],
110
- "skills": [],
111
- "packDir": "pack-backup",
112
- "packSrcDir": "packs",
113
- "desc": "Backup & restore"
114
- },
115
- "animated": {
116
- "name": "Animated",
117
- "icon": "z",
118
- "agents": [
119
- "animated-website-agent"
120
- ],
121
- "skills": [],
122
- "packDir": "pack-animated",
123
- "packSrcDir": "packs",
124
- "desc": "Animated website agents"
125
- }
126
- };
127
-
128
- const PACK_ORDER = [
129
- "core",
130
- "osint",
131
- "maker",
132
- "shield",
133
- "seo",
134
- "memory",
135
- "dev-studio",
136
- "backup",
137
- "animated"
138
- ];
139
-
140
- const EXPECTED_AGENTS = {
141
- "core": {
142
- "agents": [
143
- "agent-strategist",
144
- "agent-architect-dev",
145
- "agent-quality",
146
- "agent-orchestrator"
147
- ],
148
- "packDir": null
149
- },
150
- "osint": {
151
- "agents": [
152
- "agent-shadow"
153
- ],
154
- "packDir": null
155
- },
156
- "maker": {
157
- "agents": [
158
- "agent-maker"
159
- ],
160
- "packDir": null
161
- },
162
- "shield": {
163
- "agents": [],
164
- "packDir": "pack-shield",
165
- "packAgents": [
166
- "shield-orchestrator.md"
167
- ]
168
- },
169
- "seo": {
170
- "agents": [],
171
- "packDir": "pack-seo",
172
- "packAgents": [
173
- "seo-scout.md",
174
- "seo-chief.md",
175
- "seo-judge.md"
176
- ]
177
- },
178
- "memory": {
179
- "agents": [],
180
- "packDir": "pack-memory",
181
- "packAgents": [
182
- "zecher-agent.md",
183
- "memory-orchestrator.md"
184
- ]
185
- },
186
- "dev-studio": {
187
- "agents": [],
188
- "packDir": "pack-dev-studio",
189
- "packAgents": [
190
- "dev-studio-orchestrator.md"
191
- ]
192
- },
193
- "backup": {
194
- "agents": [],
195
- "packDir": "pack-backup",
196
- "packAgents": [
197
- "backup-agent.md"
198
- ]
199
- },
200
- "animated": {
201
- "agents": [],
202
- "packDir": "pack-animated",
203
- "packAgents": [
204
- "animated-website-agent.md"
205
- ]
206
- }
207
- };
208
-
209
- module.exports = { PACKS, PACK_ORDER, EXPECTED_AGENTS };
1
+ /**
2
+ * BMAD+ Shared PACKS Module — AUTO-GENERATED, DO NOT EDIT.
3
+ * Source of truth: registry.yaml (repo root).
4
+ * Regenerate: node tools/build/generate.js --out tools/cli/lib/packs.js
5
+ *
6
+ * Author: Laurent Rochetta
7
+ */
8
+
9
+ const PACKS = {
10
+ "core": {
11
+ "name": "Core",
12
+ "icon": "b",
13
+ "agents": [
14
+ "agent-strategist",
15
+ "agent-architect-dev",
16
+ "agent-quality",
17
+ "agent-orchestrator"
18
+ ],
19
+ "skills": [
20
+ "bmad-plus-autopilot",
21
+ "bmad-plus-parallel",
22
+ "bmad-plus-sync"
23
+ ],
24
+ "data": [
25
+ "role-triggers.yaml"
26
+ ],
27
+ "packDir": "pack-core",
28
+ "packSrcDir": "packs",
29
+ "required": true,
30
+ "desc": "Core agents & skills"
31
+ },
32
+ "osint": {
33
+ "name": "OSINT",
34
+ "icon": "j",
35
+ "agents": [
36
+ "agent-shadow"
37
+ ],
38
+ "skills": [],
39
+ "externalPackage": "osint-agent-package",
40
+ "packDir": "pack-osint",
41
+ "packSrcDir": "packs",
42
+ "desc": "OSINT & investigation"
43
+ },
44
+ "maker": {
45
+ "name": "Maker",
46
+ "icon": "f",
47
+ "agents": [
48
+ "agent-maker"
49
+ ],
50
+ "skills": [],
51
+ "data": [],
52
+ "packDir": "pack-maker",
53
+ "packSrcDir": "packs",
54
+ "desc": "Agent creation toolkit"
55
+ },
56
+ "shield": {
57
+ "name": "Shield",
58
+ "icon": "m",
59
+ "agents": [
60
+ "shield-orchestrator"
61
+ ],
62
+ "skills": [],
63
+ "packDir": "pack-shield",
64
+ "packSrcDir": "packs",
65
+ "desc": "GRC compliance (25+ frameworks)"
66
+ },
67
+ "seo": {
68
+ "name": "SEO",
69
+ "icon": "k",
70
+ "agents": [
71
+ "seo-scout",
72
+ "seo-chief",
73
+ "seo-judge"
74
+ ],
75
+ "skills": [],
76
+ "packDir": "pack-seo",
77
+ "packSrcDir": "packs",
78
+ "desc": "SEO audit & optimization"
79
+ },
80
+ "memory": {
81
+ "name": "Memory",
82
+ "icon": "x",
83
+ "agents": [
84
+ "zecher"
85
+ ],
86
+ "skills": [],
87
+ "packDir": "pack-memory",
88
+ "packSrcDir": "packs",
89
+ "desc": "Persistent cross-session memory"
90
+ },
91
+ "dev-studio": {
92
+ "name": "Dev Studio",
93
+ "icon": "v",
94
+ "agents": [
95
+ "dev-studio-orchestrator"
96
+ ],
97
+ "skills": [
98
+ "dev-studio"
99
+ ],
100
+ "packDir": "pack-dev-studio",
101
+ "packSrcDir": "packs",
102
+ "desc": "SDLC automation (6 agents, 56+ skills)"
103
+ },
104
+ "backup": {
105
+ "name": "Backup",
106
+ "icon": "y",
107
+ "agents": [
108
+ "backup-agent"
109
+ ],
110
+ "skills": [],
111
+ "packDir": "pack-backup",
112
+ "packSrcDir": "packs",
113
+ "desc": "Backup & restore"
114
+ },
115
+ "animated": {
116
+ "name": "Animated",
117
+ "icon": "z",
118
+ "agents": [
119
+ "animated-website-agent"
120
+ ],
121
+ "skills": [],
122
+ "packDir": "pack-animated",
123
+ "packSrcDir": "packs",
124
+ "desc": "Animated website agents"
125
+ }
126
+ };
127
+
128
+ const PACK_ORDER = [
129
+ "core",
130
+ "osint",
131
+ "maker",
132
+ "shield",
133
+ "seo",
134
+ "memory",
135
+ "dev-studio",
136
+ "backup",
137
+ "animated"
138
+ ];
139
+
140
+ const EXPECTED_AGENTS = {
141
+ "core": {
142
+ "agents": [
143
+ "agent-strategist",
144
+ "agent-architect-dev",
145
+ "agent-quality",
146
+ "agent-orchestrator"
147
+ ],
148
+ "packDir": null
149
+ },
150
+ "osint": {
151
+ "agents": [
152
+ "agent-shadow"
153
+ ],
154
+ "packDir": null
155
+ },
156
+ "maker": {
157
+ "agents": [
158
+ "agent-maker"
159
+ ],
160
+ "packDir": null
161
+ },
162
+ "shield": {
163
+ "agents": [],
164
+ "packDir": "pack-shield",
165
+ "packAgents": [
166
+ "shield-orchestrator.md"
167
+ ]
168
+ },
169
+ "seo": {
170
+ "agents": [],
171
+ "packDir": "pack-seo",
172
+ "packAgents": [
173
+ "seo-scout.md",
174
+ "seo-chief.md",
175
+ "seo-judge.md"
176
+ ]
177
+ },
178
+ "memory": {
179
+ "agents": [],
180
+ "packDir": "pack-memory",
181
+ "packAgents": [
182
+ "zecher-agent.md",
183
+ "memory-orchestrator.md"
184
+ ]
185
+ },
186
+ "dev-studio": {
187
+ "agents": [],
188
+ "packDir": "pack-dev-studio",
189
+ "packAgents": [
190
+ "dev-studio-orchestrator.md"
191
+ ]
192
+ },
193
+ "backup": {
194
+ "agents": [],
195
+ "packDir": "pack-backup",
196
+ "packAgents": [
197
+ "backup-agent.md"
198
+ ]
199
+ },
200
+ "animated": {
201
+ "agents": [],
202
+ "packDir": "pack-animated",
203
+ "packAgents": [
204
+ "animated-website-agent.md"
205
+ ]
206
+ }
207
+ };
208
+
209
+ module.exports = { PACKS, PACK_ORDER, EXPECTED_AGENTS };
@@ -0,0 +1,39 @@
1
+ /**
2
+ * BMAD+ Path Hashing — shared project-identity hashing for the global brain index.
3
+ *
4
+ * Single source of truth: memory-init.js and scan.js MUST produce identical
5
+ * hashes for the same project, or the brain index double-counts it (one entry
6
+ * per drive-letter casing on Windows).
7
+ *
8
+ * Author: Laurent Rochetta
9
+ */
10
+
11
+ const path = require('node:path');
12
+ const crypto = require('node:crypto');
13
+
14
+ /**
15
+ * Normalize a filesystem path for stable hashing.
16
+ * On Windows the same project can be referenced as `D:\proj` or `d:\proj`
17
+ * (case-insensitive drive) with mixed separators. Resolving + lowercasing the
18
+ * drive letter ensures the same project produces the same index key and is not
19
+ * double-indexed.
20
+ * @param {string} p - Raw filesystem path
21
+ * @returns {string} Normalized path suitable for hashing
22
+ */
23
+ function normalizePathForHash(p) {
24
+ let resolved = path.resolve(p);
25
+ // Lowercase a leading Windows drive letter (e.g. "D:" → "d:").
26
+ resolved = resolved.replace(/^([A-Za-z]):/, (_m, drive) => drive.toLowerCase() + ':');
27
+ return resolved;
28
+ }
29
+
30
+ /**
31
+ * Stable 8-hex-char identity hash for a project directory.
32
+ * @param {string} projectDir - Raw project path (normalized internally)
33
+ * @returns {string} 8-character hex hash
34
+ */
35
+ function projectHash(projectDir) {
36
+ return crypto.createHash('sha256').update(normalizePathForHash(projectDir)).digest('hex').slice(0, 8);
37
+ }
38
+
39
+ module.exports = { normalizePathForHash, projectHash };