@applica-software-guru/sdd-core 1.8.1 → 1.8.2

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 (57) hide show
  1. package/dist/index.d.ts +1 -1
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +3 -3
  4. package/dist/index.js.map +1 -1
  5. package/dist/parser/bug-parser.d.ts.map +1 -1
  6. package/dist/parser/bug-parser.js +2 -1
  7. package/dist/parser/bug-parser.js.map +1 -1
  8. package/dist/parser/cr-parser.d.ts.map +1 -1
  9. package/dist/parser/cr-parser.js +2 -1
  10. package/dist/parser/cr-parser.js.map +1 -1
  11. package/dist/prompt/draft-prompt-generator.d.ts +1 -1
  12. package/dist/prompt/draft-prompt-generator.d.ts.map +1 -1
  13. package/dist/prompt/draft-prompt-generator.js +19 -35
  14. package/dist/prompt/draft-prompt-generator.js.map +1 -1
  15. package/dist/remote/api-client.d.ts +2 -2
  16. package/dist/remote/api-client.d.ts.map +1 -1
  17. package/dist/remote/api-client.js +4 -4
  18. package/dist/remote/api-client.js.map +1 -1
  19. package/dist/remote/sync-engine.js +12 -8
  20. package/dist/remote/sync-engine.js.map +1 -1
  21. package/dist/scaffold/skill-adapters.d.ts +0 -9
  22. package/dist/scaffold/skill-adapters.d.ts.map +1 -1
  23. package/dist/scaffold/skill-adapters.js +17 -0
  24. package/dist/scaffold/skill-adapters.js.map +1 -1
  25. package/dist/scaffold/templates.d.ts +1 -5
  26. package/dist/scaffold/templates.d.ts.map +1 -1
  27. package/dist/scaffold/templates.generated.d.ts +7 -0
  28. package/dist/scaffold/templates.generated.d.ts.map +1 -0
  29. package/dist/scaffold/templates.generated.js +464 -0
  30. package/dist/scaffold/templates.generated.js.map +1 -0
  31. package/dist/scaffold/templates.js +8 -338
  32. package/dist/scaffold/templates.js.map +1 -1
  33. package/dist/sdd.d.ts +0 -1
  34. package/dist/sdd.d.ts.map +1 -1
  35. package/dist/sdd.js +1 -18
  36. package/dist/sdd.js.map +1 -1
  37. package/package.json +2 -1
  38. package/scripts/generate-templates.mjs +38 -0
  39. package/src/index.ts +1 -1
  40. package/src/parser/bug-parser.ts +5 -3
  41. package/src/parser/cr-parser.ts +5 -3
  42. package/src/prompt/draft-prompt-generator.ts +18 -38
  43. package/src/remote/api-client.ts +2 -2
  44. package/src/remote/sync-engine.ts +15 -15
  45. package/src/scaffold/skill-adapters.ts +18 -11
  46. package/src/scaffold/templates.generated.ts +466 -0
  47. package/src/scaffold/templates.ts +9 -342
  48. package/src/sdd.ts +1 -19
  49. package/tests/agent-defaults.test.ts +24 -0
  50. package/tests/api-client.test.ts +6 -6
  51. package/tests/draft-prompt.test.ts +78 -0
  52. package/dist/prompt/apply-prompt-generator.d.ts +0 -4
  53. package/dist/prompt/apply-prompt-generator.d.ts.map +0 -1
  54. package/dist/prompt/apply-prompt-generator.js +0 -97
  55. package/dist/prompt/apply-prompt-generator.js.map +0 -1
  56. package/src/prompt/apply-prompt-generator.ts +0 -117
  57. package/tests/apply.test.ts +0 -117
@@ -1,6 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.EMPTY_LOCK_TEMPLATE = exports.BUGS_REFERENCE = exports.CHANGE_REQUESTS_REFERENCE = exports.FILE_FORMAT_REFERENCE = exports.SKILL_UI_MD_TEMPLATE = exports.SKILL_MD_TEMPLATE = void 0;
3
+ exports.EMPTY_LOCK_TEMPLATE = exports.BUGS_REFERENCE = exports.CHANGE_REQUESTS_REFERENCE = exports.FILE_FORMAT_REFERENCE = exports.SKILL_REMOTE_MD_TEMPLATE = exports.SKILL_UI_MD_TEMPLATE = exports.SKILL_MD_TEMPLATE = void 0;
4
+ var templates_generated_js_1 = require("./templates.generated.js");
5
+ Object.defineProperty(exports, "SKILL_MD_TEMPLATE", { enumerable: true, get: function () { return templates_generated_js_1.SKILL_MD_TEMPLATE; } });
6
+ Object.defineProperty(exports, "SKILL_UI_MD_TEMPLATE", { enumerable: true, get: function () { return templates_generated_js_1.SKILL_UI_MD_TEMPLATE; } });
7
+ Object.defineProperty(exports, "SKILL_REMOTE_MD_TEMPLATE", { enumerable: true, get: function () { return templates_generated_js_1.SKILL_REMOTE_MD_TEMPLATE; } });
8
+ Object.defineProperty(exports, "FILE_FORMAT_REFERENCE", { enumerable: true, get: function () { return templates_generated_js_1.FILE_FORMAT_REFERENCE; } });
9
+ Object.defineProperty(exports, "CHANGE_REQUESTS_REFERENCE", { enumerable: true, get: function () { return templates_generated_js_1.CHANGE_REQUESTS_REFERENCE; } });
10
+ Object.defineProperty(exports, "BUGS_REFERENCE", { enumerable: true, get: function () { return templates_generated_js_1.BUGS_REFERENCE; } });
4
11
  const now = () => new Date().toISOString();
5
12
  function mdTemplate(title, content) {
6
13
  return `---
@@ -14,343 +21,6 @@ version: "1.0"
14
21
  ${content}
15
22
  `;
16
23
  }
17
- exports.SKILL_MD_TEMPLATE = `---
18
- name: sdd
19
- description: >
20
- Story Driven Development workflow. Use when working in a project
21
- with .sdd/config.yaml, or when the user mentions SDD, sdd sync,
22
- story driven development, or spec-driven development.
23
- license: MIT
24
- compatibility: Requires sdd CLI (npm i -g @applica-software-guru/sdd)
25
- allowed-tools: Bash(sdd:*) Read Glob Grep
26
- metadata:
27
- author: applica-software-guru
28
- version: "1.0"
29
- ---
30
-
31
- # SDD — Story Driven Development
32
-
33
- ## Detection
34
-
35
- This project uses SDD if \`.sdd/config.yaml\` exists in the project root.
36
-
37
- ## Workflow
38
-
39
- Follow this loop every time you work on an SDD project:
40
-
41
- 1. Run \`sdd bug open\` — check if there are open bugs to fix first
42
- 2. If there are open bugs, fix the code/docs, then run \`sdd mark-bug-resolved\`
43
- 3. Run \`sdd cr pending\` — check if there are change requests to process
44
- 4. If there are pending CRs, apply them to the docs, then run \`sdd mark-cr-applied\`
45
- 5. Run \`sdd sync\` to see what needs to be implemented
46
- 6. Read the documentation files listed in the sync output
47
- 7. Implement what each file describes, writing code inside \`code/\`
48
- 8. After implementing, mark files as synced:
49
-
50
- \`\`\`
51
- sdd mark-synced product/features/auth.md
52
- \`\`\`
53
-
54
- Or mark all pending files at once:
55
-
56
- \`\`\`
57
- sdd mark-synced
58
- \`\`\`
59
-
60
- 9. **Commit immediately after mark-synced** — this is mandatory:
61
-
62
- \`\`\`
63
- git add -A && git commit -m "sdd sync: <brief description of what was implemented>"
64
- \`\`\`
65
-
66
- Do NOT skip this step. Every mark-synced must be followed by a git commit.
67
-
68
- ### Removing a feature
69
-
70
- If a documentation file has \`status: deleted\`, it means that feature should be removed.
71
- Delete the related code in \`code/\`, then run \`sdd mark-synced <file>\` (the doc file will be removed automatically), then commit.
72
-
73
- ## Available commands
74
-
75
- - \`sdd status\` — See all documentation files and their state (new/changed/deleted/synced)
76
- - \`sdd diff\` — See what changed since last sync
77
- - \`sdd sync\` — Get the sync prompt for pending files (includes git diff for changed files)
78
- - \`sdd validate\` — Check for broken references and issues
79
- - \`sdd mark-synced [files...]\` — Mark specific files (or all) as synced
80
- - \`sdd cr list\` — List all change requests with their status
81
- - \`sdd cr pending\` — Show draft change requests to process
82
- - \`sdd mark-cr-applied [files...]\` — Mark change requests as applied
83
- - \`sdd bug list\` — List all bugs with their status
84
- - \`sdd bug open\` — Show open bugs to fix
85
- - \`sdd mark-bug-resolved [files...]\` — Mark bugs as resolved
86
-
87
- ## Rules
88
-
89
- 1. **Always commit after mark-synced** — run \`git add -A && git commit -m "sdd sync: ..."\` immediately after \`sdd mark-synced\`. Never leave synced files uncommitted.
90
- 2. Before running \`sdd sync\`, check for open bugs with \`sdd bug open\` and pending change requests with \`sdd cr pending\`
91
- 3. If there are pending CRs, apply them to the docs first, then mark them with \`sdd mark-cr-applied\`
92
- 4. Only implement what the sync prompt asks for
93
- 5. All generated code goes inside \`code/\`
94
- 6. Respect all constraints in \`## Agent Notes\` sections (if present)
95
- 7. Do not edit files inside \`.sdd/\` manually
96
-
97
- ## Project structure
98
-
99
- - \`product/\` — What to build (vision, users, features)
100
- - \`system/\` — How to build it (entities, architecture, tech stack, interfaces)
101
- - \`code/\` — All generated source code goes here
102
- - \`change-requests/\` — Change requests to the documentation
103
- - \`bugs/\` — Bug reports
104
- - \`.sdd/\` — Project config and sync state (do not edit)
105
-
106
- ## References
107
-
108
- For detailed information on specific topics, see:
109
-
110
- - [File format and status lifecycle](references/file-format.md)
111
- - [Change Requests workflow](references/change-requests.md)
112
- - [Bug workflow](references/bugs.md)
113
- `;
114
- exports.SKILL_UI_MD_TEMPLATE = `---
115
- name: sdd-ui
116
- description: >
117
- UI Component Editor workflow. Use when the user wants to implement a React component
118
- from a screenshot in an SDD project, iterating visually with live preview.
119
- license: MIT
120
- compatibility: >
121
- Requires sdd CLI (npm i -g @applica-software-guru/sdd).
122
- Requires Playwright MCP configured in Claude Code
123
- (e.g. @playwright/mcp or @executeautomation/playwright-mcp).
124
- allowed-tools: Bash(sdd:*) Read Glob Grep Edit Write mcp__playwright__screenshot mcp__playwright__navigate mcp__playwright__click
125
- metadata:
126
- author: applica-software-guru
127
- version: "1.1"
128
- ---
129
-
130
- # SDD UI — Visual Component Editor
131
-
132
- ## Purpose
133
-
134
- Use this workflow when implementing a React component from a screenshot reference in an SDD project.
135
- The split-panel editor shows the spec screenshot on the left and the live component on the right,
136
- so you can iterate visually until they match.
137
-
138
- ## Prerequisites
139
-
140
- - \`sdd\` CLI installed globally
141
- - Playwright MCP configured in Claude Code settings
142
- - e.g. \`@playwright/mcp\` or \`@executeautomation/playwright-mcp\`
143
- - If not configured, inform the user and stop — visual feedback won't work without it
144
-
145
- ## Workflow
146
-
147
- ### Step 1 — Read the spec
148
-
149
- Read the SDD feature file to understand what the component should look like and do.
150
- Look for any screenshot paths referenced in the feature doc.
151
-
152
- ### Step 2 — Launch the editor
153
-
154
- \`\`\`bash
155
- # Single screenshot — detached (recommended when run by an agent)
156
- sdd ui launch-editor LoginForm \\
157
- --screenshot product/features/auth/login.png \\
158
- --detach
159
-
160
- # Multiple screenshots (e.g. desktop + mobile)
161
- sdd ui launch-editor LoginForm \\
162
- --screenshot product/features/auth/login-desktop.png \\
163
- --screenshot product/features/auth/login-mobile.png \\
164
- --detach
165
- \`\`\`
166
-
167
- The command will:
168
- - Scaffold \`code/components/LoginForm.tsx\` if it doesn't exist
169
- - Print the exact component file path to edit
170
- - Start the editor at \`http://localhost:5174\`
171
-
172
- With \`--detach\` the process runs in background and the terminal is immediately free.
173
- Without \`--detach\` it runs in foreground (use Ctrl+C to stop).
174
-
175
- With multiple screenshots, the left panel shows a tab per screenshot.
176
- With a single screenshot, no tab bar is shown.
177
-
178
- ### Step 3 — Implement the component
179
-
180
- Edit the file printed by \`sdd ui launch-editor\` (e.g. \`code/components/LoginForm.tsx\`).
181
-
182
- Write a React component that matches the screenshot. Use standard HTML/CSS or inline styles —
183
- no external UI library unless the project already uses one.
184
-
185
- Vite HMR will update the right panel automatically on every save.
186
-
187
- ### Step 4 — Visual check with Playwright
188
-
189
- After each save, screenshot the live preview and compare it with the spec:
190
-
191
- \`\`\`
192
- mcp__playwright__navigate http://localhost:5174
193
- mcp__playwright__screenshot
194
- \`\`\`
195
-
196
- The left panel already shows the spec screenshot for direct comparison.
197
- Note differences in layout, spacing, typography, colors, and component structure.
198
-
199
- ### Step 5 — Iterate
200
-
201
- Edit component → Playwright screenshot → compare → repeat until the preview matches the spec.
202
-
203
- ### Step 6 — Finalize
204
-
205
- \`\`\`bash
206
- sdd ui stop
207
- sdd mark-synced product/features/auth/login.md
208
- git add -A && git commit -m "sdd sync: implement LoginForm component"
209
- \`\`\`
210
-
211
- ## Notes
212
-
213
- - The component file is permanent — it lives in \`code/components/\` and is part of your project
214
- - Port \`5174\` by default (not \`5173\`) to avoid conflicts with the user's app dev server
215
- - If the component needs props, scaffold it with hardcoded sample data for the preview
216
-
217
- ## Troubleshooting
218
-
219
- **Playwright MCP not configured:**
220
- Stop and ask the user to add it to their Claude Code MCP settings before continuing.
221
-
222
- **Component import fails in preview:**
223
- Check that the component file has a valid default export and no TypeScript errors.
224
-
225
- **Port already in use:**
226
- \`sdd ui launch-editor LoginForm --screenshot login.png --port 5175\`
227
- `;
228
- exports.FILE_FORMAT_REFERENCE = `# File Format and Status Lifecycle
229
-
230
- ## YAML Frontmatter
231
-
232
- Every \`.md\` file in \`product/\` and \`system/\` must start with this YAML frontmatter:
233
-
234
- \`\`\`yaml
235
- ---
236
- title: "File title"
237
- status: new
238
- author: ""
239
- last-modified: "2025-01-01T00:00:00.000Z"
240
- version: "1.0"
241
- ---
242
- \`\`\`
243
-
244
- ## Status values
245
-
246
- - **\`new\`** — new file, needs to be implemented
247
- - **\`changed\`** — modified since last sync, code needs updating
248
- - **\`deleted\`** — feature to be removed, agent should delete related code
249
- - **\`synced\`** — already implemented, up to date
250
-
251
- ## Version
252
-
253
- Patch-bump on each edit: 1.0 → 1.1 → 1.2
254
-
255
- ## Last-modified
256
-
257
- ISO 8601 datetime, updated on each edit.
258
-
259
- ## How sync works
260
-
261
- \`sdd sync\` generates a structured prompt for the agent based on pending files:
262
-
263
- - **\`new\` files**: the agent reads the full documentation and implements it from scratch
264
- - **\`changed\` files**: SDD uses \`git diff\` to compute what changed in the documentation since the last commit, and includes the diff in the sync prompt — this way the agent sees exactly what was modified and can update only the affected code
265
- - **\`deleted\` files**: the agent removes the related code
266
-
267
- This is why **committing after every mark-synced is mandatory** — the git history is what SDD uses to detect changes.
268
-
269
- ## UX and screenshots
270
-
271
- When a feature has UX mockups or screenshots, place them next to the feature doc:
272
-
273
- - **Simple feature** (no screenshots): \`product/features/auth.md\`
274
- - **Feature with screenshots**: use a folder with \`index.md\`:
275
-
276
- \`\`\`
277
- product/features/auth/
278
- index.md ← feature doc
279
- login.png ← screenshot
280
- register.png ← screenshot
281
- \`\`\`
282
-
283
- Reference images in the markdown with relative paths:
284
-
285
- \`\`\`markdown
286
- ## UX
287
-
288
- ![Login screen](login.png)
289
- ![Register screen](register.png)
290
- \`\`\`
291
-
292
- Both formats work — use a folder only when you have screenshots or multiple files for a feature.
293
- `;
294
- exports.CHANGE_REQUESTS_REFERENCE = `# Change Requests
295
-
296
- Change Requests (CRs) are markdown files in \`change-requests/\` that describe modifications to the documentation.
297
-
298
- ## CR format
299
-
300
- \`\`\`yaml
301
- ---
302
- title: "Add authentication feature"
303
- status: draft
304
- author: "user"
305
- created-at: "2025-01-01T00:00:00.000Z"
306
- ---
307
- \`\`\`
308
-
309
- - **status**: \`draft\` (pending) or \`applied\` (already processed)
310
-
311
- ## CR workflow
312
-
313
- 1. Check for pending CRs: \`sdd cr pending\`
314
- 2. Read each pending CR and apply the described changes to the documentation files (marking them as \`new\`, \`changed\`, or \`deleted\`)
315
- 3. After applying a CR to the docs, mark it: \`sdd mark-cr-applied change-requests/CR-001.md\`
316
- 4. Then run \`sdd sync\` to implement the code changes
317
-
318
- ## CR commands
319
-
320
- - \`sdd cr list\` — See all change requests and their status
321
- - \`sdd cr pending\` — Show only draft CRs to process
322
- - \`sdd mark-cr-applied [files...]\` — Mark CRs as applied after updating the docs
323
- `;
324
- exports.BUGS_REFERENCE = `# Bugs
325
-
326
- Bugs are markdown files in \`bugs/\` that describe problems found in the codebase.
327
-
328
- ## Bug format
329
-
330
- \`\`\`yaml
331
- ---
332
- title: "Login fails with empty password"
333
- status: open
334
- author: "user"
335
- created-at: "2025-01-01T00:00:00.000Z"
336
- ---
337
- \`\`\`
338
-
339
- - **status**: \`open\` (needs fixing) or \`resolved\` (already fixed)
340
-
341
- ## Bug workflow
342
-
343
- 1. Check for open bugs: \`sdd bug open\`
344
- 2. Read each open bug and fix the code and/or documentation
345
- 3. After fixing a bug, mark it: \`sdd mark-bug-resolved bugs/BUG-001.md\`
346
- 4. Commit the fix
347
-
348
- ## Bug commands
349
-
350
- - \`sdd bug list\` — See all bugs and their status
351
- - \`sdd bug open\` — Show only open bugs to fix
352
- - \`sdd mark-bug-resolved [files...]\` — Mark bugs as resolved after fixing
353
- `;
354
24
  const EMPTY_LOCK_TEMPLATE = () => `synced-at: "${new Date().toISOString()}"
355
25
  files: {}
356
26
  `;
@@ -1 +1 @@
1
- {"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/scaffold/templates.ts"],"names":[],"mappings":";;;AAAA,MAAM,GAAG,GAAG,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AAE3C,SAAS,UAAU,CAAC,KAAa,EAAE,OAAe;IAChD,OAAO;UACC,KAAK;;;kBAGG,GAAG,EAAE;;;;EAIrB,OAAO;CACR,CAAC;AACF,CAAC;AAMY,QAAA,iBAAiB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgGhC,CAAC;AAEW,QAAA,oBAAoB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiHnC,CAAC;AAEW,QAAA,qBAAqB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiEpC,CAAC;AAEW,QAAA,yBAAyB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6BxC,CAAC;AAEW,QAAA,cAAc,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6B7B,CAAC;AAEK,MAAM,mBAAmB,GAC9B,GAAG,EAAE,CAAC,eAAe,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;;CAE9C,CAAC;AAHW,QAAA,mBAAmB,uBAG9B"}
1
+ {"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/scaffold/templates.ts"],"names":[],"mappings":";;;AAAA,mEAOkC;AANhC,2HAAA,iBAAiB,OAAA;AACjB,8HAAA,oBAAoB,OAAA;AACpB,kIAAA,wBAAwB,OAAA;AACxB,+HAAA,qBAAqB,OAAA;AACrB,mIAAA,yBAAyB,OAAA;AACzB,wHAAA,cAAc,OAAA;AAGhB,MAAM,GAAG,GAAG,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AAE3C,SAAS,UAAU,CAAC,KAAa,EAAE,OAAe;IAChD,OAAO;UACC,KAAK;;;kBAGG,GAAG,EAAE;;;;EAIrB,OAAO;CACR,CAAC;AACF,CAAC;AAMM,MAAM,mBAAmB,GAC9B,GAAG,EAAE,CAAC,eAAe,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;;CAE9C,CAAC;AAHW,QAAA,mBAAmB,uBAG9B"}
package/dist/sdd.d.ts CHANGED
@@ -14,7 +14,6 @@ export declare class SDD {
14
14
  status(): Promise<StoryStatus>;
15
15
  pending(): Promise<import("./types.js").StoryFile[]>;
16
16
  sync(): Promise<string>;
17
- applyPrompt(): Promise<string | null>;
18
17
  validate(): Promise<ValidationResult>;
19
18
  markSynced(paths?: string[]): Promise<string[]>;
20
19
  changeRequests(): Promise<ChangeRequest[]>;
package/dist/sdd.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"sdd.d.ts","sourceRoot":"","sources":["../src/sdd.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,SAAS,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AAW/F,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAGL,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACxB,MAAM,8BAA8B,CAAC;AAStC,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAE3H,qBAAa,GAAG;IACd,OAAO,CAAC,IAAI,CAAS;gBAET,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE;IAI/B,IAAI,CAAC,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAI3C,YAAY,CAAC,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAK9E,iBAAiB,IAAI,MAAM,EAAE;IAIvB,MAAM,IAAI,OAAO,CAAC,SAAS,CAAC;IAK5B,MAAM,IAAI,OAAO,CAAC,WAAW,CAAC;IAc9B,OAAO,IAAI,OAAO,CAAC,OAAO,YAAY,EAAE,SAAS,EAAE,CAAC;IAMpD,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC;IAKvB,WAAW,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAcrC,QAAQ,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAMrC,UAAU,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IA6B/C,cAAc,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;IAK1C,qBAAqB,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;IAKjD,aAAa,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAmBlD,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAKtB,QAAQ,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAK1B,eAAe,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAqBpD,MAAM,IAAI,OAAO,CAAC;QAAE,IAAI,EAAE,OAAO,YAAY,EAAE,SAAS,EAAE,CAAC;QAAC,GAAG,EAAE,aAAa,EAAE,CAAC;QAAC,IAAI,EAAE,GAAG,EAAE,CAAA;KAAE,CAAC;IAchG,qBAAqB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAS/C,kBAAkB,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IA6CvD,YAAY,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAK3D,IAAI,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,UAAU,CAAC;IAK1F,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAK3C,OAAO,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAKtD,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAKvD,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAKpF,OAAO,CAAC,iBAAiB;CAK1B"}
1
+ {"version":3,"file":"sdd.d.ts","sourceRoot":"","sources":["../src/sdd.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,SAAS,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AAU/F,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAGL,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACxB,MAAM,8BAA8B,CAAC;AAStC,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAE3H,qBAAa,GAAG;IACd,OAAO,CAAC,IAAI,CAAS;gBAET,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE;IAI/B,IAAI,CAAC,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAI3C,YAAY,CAAC,OAAO,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAK9E,iBAAiB,IAAI,MAAM,EAAE;IAIvB,MAAM,IAAI,OAAO,CAAC,SAAS,CAAC;IAK5B,MAAM,IAAI,OAAO,CAAC,WAAW,CAAC;IAc9B,OAAO,IAAI,OAAO,CAAC,OAAO,YAAY,EAAE,SAAS,EAAE,CAAC;IAMpD,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC;IAKvB,QAAQ,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAMrC,UAAU,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IA6B/C,cAAc,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;IAK1C,qBAAqB,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;IAKjD,aAAa,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAmBlD,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAKtB,QAAQ,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAK1B,eAAe,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAqBpD,MAAM,IAAI,OAAO,CAAC;QAAE,IAAI,EAAE,OAAO,YAAY,EAAE,SAAS,EAAE,CAAC;QAAC,GAAG,EAAE,aAAa,EAAE,CAAC;QAAC,IAAI,EAAE,GAAG,EAAE,CAAA;KAAE,CAAC;IAchG,qBAAqB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAM/C,kBAAkB,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IA6CvD,YAAY,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAK3D,IAAI,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE;QAAE,GAAG,CAAC,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,UAAU,CAAC;IAK1F,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAK3C,OAAO,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAKtD,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAKvD,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAKpF,OAAO,CAAC,iBAAiB;CAK1B"}
package/dist/sdd.js CHANGED
@@ -6,7 +6,6 @@ const node_path_1 = require("node:path");
6
6
  const errors_js_1 = require("./errors.js");
7
7
  const story_parser_js_1 = require("./parser/story-parser.js");
8
8
  const prompt_generator_js_1 = require("./prompt/prompt-generator.js");
9
- const apply_prompt_generator_js_1 = require("./prompt/apply-prompt-generator.js");
10
9
  const draft_prompt_generator_js_1 = require("./prompt/draft-prompt-generator.js");
11
10
  const validator_js_1 = require("./validate/validator.js");
12
11
  const init_js_1 = require("./scaffold/init.js");
@@ -55,19 +54,6 @@ class SDD {
55
54
  const pending = await this.pending();
56
55
  return (0, prompt_generator_js_1.generatePrompt)(pending, this.root);
57
56
  }
58
- async applyPrompt() {
59
- this.ensureInitialized();
60
- const [bugs, changeRequests, pendingFiles, drafts, allFiles, config] = await Promise.all([
61
- this.openBugs(),
62
- this.pendingChangeRequests(),
63
- this.pending(),
64
- this.drafts(),
65
- (0, story_parser_js_1.parseAllStoryFiles)(this.root),
66
- (0, config_manager_js_1.readConfig)(this.root),
67
- ]);
68
- const projectContext = allFiles.filter((f) => f.frontmatter.status !== "draft");
69
- return (0, apply_prompt_generator_js_1.generateApplyPrompt)(bugs, changeRequests, pendingFiles, this.root, drafts, projectContext, config.description);
70
- }
71
57
  async validate() {
72
58
  this.ensureInitialized();
73
59
  const files = await (0, story_parser_js_1.parseAllStoryFiles)(this.root);
@@ -167,10 +153,7 @@ class SDD {
167
153
  async draftEnrichmentPrompt() {
168
154
  this.ensureInitialized();
169
155
  const drafts = await this.drafts();
170
- const allFiles = await (0, story_parser_js_1.parseAllStoryFiles)(this.root);
171
- const projectContext = allFiles.filter((f) => f.frontmatter.status !== "draft");
172
- const config = await (0, config_manager_js_1.readConfig)(this.root);
173
- return (0, draft_prompt_generator_js_1.generateDraftEnrichmentPrompt)(drafts, projectContext, config.description);
156
+ return (0, draft_prompt_generator_js_1.generateDraftEnrichmentPrompt)(drafts);
174
157
  }
175
158
  async markDraftsEnriched(paths) {
176
159
  this.ensureInitialized();
package/dist/sdd.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"sdd.js","sourceRoot":"","sources":["../src/sdd.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sdd.js","sourceRoot":"","sources":["../src/sdd.ts"],"names":[],"mappings":";;;AAAA,+CAAuD;AACvD,yCAAoC;AAEpC,2CAAyD;AACzD,8DAA8D;AAC9D,sEAA8D;AAC9D,kFAAmF;AACnF,0DAAmD;AACnD,gDAAiD;AACjD,kEAAmF;AACnF,wDAAwD;AACxD,0DAA0D;AAE1D,oEAKsC;AACtC,4DAOiC;AAGjC,MAAa,GAAG;IACN,IAAI,CAAS;IAErB,YAAY,OAAyB;QACnC,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,IAAkB;QAC3B,OAAO,IAAA,qBAAW,EAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,OAA6B;QAC9C,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,OAAO,IAAA,qCAAiB,EAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC/C,CAAC;IAED,iBAAiB;QACf,OAAO,IAAA,yCAAqB,GAAE,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,MAAM;QACV,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,OAAO,IAAA,8BAAU,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,MAAM;QACV,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,MAAM,IAAA,oCAAkB,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAElD,OAAO;YACL,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACvB,YAAY,EAAE,CAAC,CAAC,YAAY;gBAC5B,MAAM,EAAE,CAAC,CAAC,WAAW,CAAC,MAAM;gBAC5B,OAAO,EAAE,CAAC,CAAC,WAAW,CAAC,OAAO;gBAC9B,YAAY,EAAE,CAAC,CAAC,WAAW,CAAC,eAAe,CAAC;aAC7C,CAAC,CAAC;SACJ,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,OAAO;QACX,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,MAAM,IAAA,oCAAkB,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClD,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,KAAK,QAAQ,IAAI,CAAC,CAAC,WAAW,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC;IACpG,CAAC;IAED,KAAK,CAAC,IAAI;QACR,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACrC,OAAO,IAAA,oCAAc,EAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,MAAM,IAAA,oCAAkB,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClD,OAAO,IAAA,uBAAQ,EAAC,KAAK,CAAC,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,KAAgB;QAC/B,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,MAAM,IAAA,oCAAkB,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClD,MAAM,MAAM,GAAa,EAAE,CAAC;QAE5B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC;YACpC,IAAI,MAAM,KAAK,QAAQ;gBAAE,SAAS;YAClC,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC;gBAAE,SAAS;YAE9E,MAAM,OAAO,GAAG,IAAA,mBAAO,EAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;YAEtD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,uCAAuC;gBACvC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;gBACpD,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC;gBACtB,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,YAAY,YAAY,CAAC,CAAC;YAChD,CAAC;iBAAM,CAAC;gBACN,0BAA0B;gBAC1B,MAAM,OAAO,GAAG,MAAM,IAAA,mBAAQ,EAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBACjD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,2BAA2B,EAAE,gBAAgB,CAAC,CAAC;gBAC/E,MAAM,IAAA,oBAAS,EAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;gBAC3C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACjC,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,cAAc;QAClB,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,OAAO,IAAA,8BAAe,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,qBAAqB;QACzB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QACxC,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC;IACjE,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,KAAgB;QAClC,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QACxC,MAAM,MAAM,GAAa,EAAE,CAAC;QAE5B,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;YACrB,IAAI,EAAE,CAAC,WAAW,CAAC,MAAM,KAAK,SAAS;gBAAE,SAAS;YAClD,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,YAAY,CAAC;gBAAE,SAAS;YAE5E,MAAM,OAAO,GAAG,IAAA,mBAAO,EAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC;YACpD,MAAM,OAAO,GAAG,MAAM,IAAA,mBAAQ,EAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACjD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,qBAAqB,EAAE,iBAAiB,CAAC,CAAC;YAC1E,MAAM,IAAA,oBAAS,EAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;YAC3C,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC;QAC/B,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,OAAO,IAAA,gCAAgB,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAC9B,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;IAC5D,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,KAAgB;QACpC,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAa,EAAE,CAAC;QAE5B,KAAK,MAAM,GAAG,IAAI,GAAG,EAAE,CAAC;YACtB,IAAI,GAAG,CAAC,WAAW,CAAC,MAAM,KAAK,MAAM;gBAAE,SAAS;YAChD,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC;gBAAE,SAAS;YAE7E,MAAM,OAAO,GAAG,IAAA,mBAAO,EAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC;YACrD,MAAM,OAAO,GAAG,MAAM,IAAA,mBAAQ,EAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACjD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,CAAC;YACxE,MAAM,IAAA,oBAAS,EAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;YAC3C,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAChC,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,wEAAwE;IAExE,KAAK,CAAC,MAAM;QACV,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,MAAM,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAC3C,IAAA,oCAAkB,EAAC,IAAI,CAAC,IAAI,CAAC;YAC7B,IAAI,CAAC,cAAc,EAAE;YACrB,IAAI,CAAC,IAAI,EAAE;SACZ,CAAC,CAAC;QACH,OAAO;YACL,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,KAAK,OAAO,CAAC;YAC3D,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,WAAW,CAAC,MAAM,KAAK,OAAO,CAAC;YAC1D,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,KAAK,OAAO,CAAC;SAC3D,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,qBAAqB;QACzB,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;QACnC,OAAO,IAAA,yDAA6B,EAAC,MAAM,CAAC,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,KAAgB;QACvC,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,MAAM,MAAM,GAAa,EAAE,CAAC;QAE5B,2BAA2B;QAC3B,MAAM,KAAK,GAAG,MAAM,IAAA,oCAAkB,EAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,KAAK,OAAO;gBAAE,SAAS;YAClD,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC;gBAAE,SAAS;YAC9E,MAAM,OAAO,GAAG,IAAA,mBAAO,EAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;YACtD,MAAM,OAAO,GAAG,MAAM,IAAA,mBAAQ,EAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACjD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,mBAAmB,EAAE,aAAa,CAAC,CAAC;YACpE,MAAM,IAAA,oBAAS,EAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;YAC3C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACjC,CAAC;QAED,uBAAuB;QACvB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;QACxC,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;YACrB,IAAI,EAAE,CAAC,WAAW,CAAC,MAAM,KAAK,OAAO;gBAAE,SAAS;YAChD,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,YAAY,CAAC;gBAAE,SAAS;YAC5E,MAAM,OAAO,GAAG,IAAA,mBAAO,EAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,YAAY,CAAC,CAAC;YACpD,MAAM,OAAO,GAAG,MAAM,IAAA,mBAAQ,EAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACjD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,mBAAmB,EAAE,iBAAiB,CAAC,CAAC;YACxE,MAAM,IAAA,oBAAS,EAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;YAC3C,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC;QAC/B,CAAC;QAED,qBAAqB;QACrB,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAClC,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;YAC1B,IAAI,GAAG,CAAC,WAAW,CAAC,MAAM,KAAK,OAAO;gBAAE,SAAS;YACjD,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC;gBAAE,SAAS;YAC7E,MAAM,OAAO,GAAG,IAAA,mBAAO,EAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,YAAY,CAAC,CAAC;YACrD,MAAM,OAAO,GAAG,MAAM,IAAA,mBAAQ,EAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACjD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,mBAAmB,EAAE,cAAc,CAAC,CAAC;YACrE,MAAM,IAAA,oBAAS,EAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;YAC3C,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QAChC,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,wEAAwE;IAExE,KAAK,CAAC,YAAY,CAAC,OAAgB;QACjC,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,OAAO,IAAA,gCAAe,EAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC7C,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,KAAgB,EAAE,OAA6C;QACxE,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,OAAO,IAAA,6BAAY,EAAC,IAAI,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;IAC1F,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,OAAgB;QACzB,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,OAAO,IAAA,+BAAc,EAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,OAAgB;QAC5B,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,OAAO,IAAA,kCAAiB,EAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC/C,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,OAAgB;QAC7B,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,OAAO,IAAA,mCAAkB,EAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,WAAmB,EAAE,OAAgB;QACrD,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,OAAO,IAAA,mCAAkB,EAAC,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;IAC7D,CAAC;IAEO,iBAAiB;QACvB,IAAI,CAAC,IAAA,gCAAY,EAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7B,MAAM,IAAI,sCAA0B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;CACF;AArPD,kBAqPC"}
package/package.json CHANGED
@@ -1,11 +1,12 @@
1
1
  {
2
2
  "name": "@applica-software-guru/sdd-core",
3
- "version": "1.8.1",
3
+ "version": "1.8.2",
4
4
  "description": "Core library for Story Driven Development",
5
5
  "author": "Bruno Fortunato <bruno.fortunato@applica.guru>",
6
6
  "main": "dist/index.js",
7
7
  "types": "dist/index.d.ts",
8
8
  "scripts": {
9
+ "prebuild": "node scripts/generate-templates.mjs",
9
10
  "build": "tsc"
10
11
  },
11
12
  "dependencies": {
@@ -0,0 +1,38 @@
1
+ #!/usr/bin/env node
2
+ // Reads .md files from packages/skill/ and generates templates.generated.ts
3
+ // so that packages/skill/ remains the single source of truth.
4
+
5
+ import { readFileSync, writeFileSync } from "node:fs";
6
+ import { dirname, resolve } from "node:path";
7
+ import { fileURLToPath } from "node:url";
8
+
9
+ const __dirname = dirname(fileURLToPath(import.meta.url));
10
+ const skillDir = resolve(__dirname, "../../skill");
11
+ const outFile = resolve(__dirname, "../src/scaffold/templates.generated.ts");
12
+
13
+ const SKILL_MAP = [
14
+ { file: "sdd/SKILL.md", exportName: "SKILL_MD_TEMPLATE" },
15
+ { file: "sdd-ui/SKILL.md", exportName: "SKILL_UI_MD_TEMPLATE" },
16
+ { file: "sdd-remote/SKILL.md", exportName: "SKILL_REMOTE_MD_TEMPLATE" },
17
+ { file: "sdd/references/file-format.md", exportName: "FILE_FORMAT_REFERENCE" },
18
+ { file: "sdd/references/change-requests.md", exportName: "CHANGE_REQUESTS_REFERENCE" },
19
+ { file: "sdd/references/bugs.md", exportName: "BUGS_REFERENCE" },
20
+ ];
21
+
22
+ function escapeForTemplateLiteral(str) {
23
+ return str.replace(/\\/g, "\\\\").replace(/`/g, "\\`").replace(/\$\{/g, "\\${");
24
+ }
25
+
26
+ const exports = SKILL_MAP.map(({ file, exportName }) => {
27
+ const content = readFileSync(resolve(skillDir, file), "utf-8");
28
+ const escaped = escapeForTemplateLiteral(content);
29
+ return `export const ${exportName} = \`${escaped}\`;\n`;
30
+ });
31
+
32
+ const output = `// @generated — DO NOT EDIT. Source of truth: packages/skill/
33
+ // Regenerate with: node packages/core/scripts/generate-templates.mjs
34
+
35
+ ${exports.join("\n")}`;
36
+
37
+ writeFileSync(outFile, output, "utf-8");
38
+ console.log(`Generated ${outFile}`);
package/src/index.ts CHANGED
@@ -37,7 +37,7 @@ export type {
37
37
  // Remote sync
38
38
  export { generateDraftEnrichmentPrompt } from "./prompt/draft-prompt-generator.js";
39
39
  export type { DraftElements } from "./prompt/draft-prompt-generator.js";
40
- export { resolveApiKey, buildApiConfig, pullDocs, pushDocs, fetchPendingCRs, fetchOpenBugs, markCRAppliedRemote, markBugResolvedRemote, markDocEnriched, markCREnriched, markBugEnriched, resetProject, DEFAULT_REMOTE_TIMEOUT } from "./remote/api-client.js";
40
+ export { resolveApiKey, buildApiConfig, pullDocs, pushDocs, pullPendingCRs, pullOpenBugs, markCRAppliedRemote, markBugResolvedRemote, markDocEnriched, markCREnriched, markBugEnriched, resetProject, DEFAULT_REMOTE_TIMEOUT } from "./remote/api-client.js";
41
41
  export type { ApiClientConfig } from "./remote/api-client.js";
42
42
  export { readRemoteState, writeRemoteState } from "./remote/state.js";
43
43
  export { pushToRemote, pullFromRemote, pullCRsFromRemote, pullBugsFromRemote, getRemoteStatus, resetRemoteProject } from "./remote/sync-engine.js";
@@ -1,10 +1,12 @@
1
1
  import { readFile } from 'node:fs/promises';
2
- import { resolve, relative } from 'node:path';
2
+ import { relative } from 'node:path';
3
3
  import { glob } from 'glob';
4
4
  import matter from 'gray-matter';
5
- import type { Bug, BugFrontmatter } from '../types.js';
5
+ import type { Bug, BugFrontmatter, BugStatus } from '../types.js';
6
6
  import { ParseError } from '../errors.js';
7
7
 
8
+ const VALID_BUG_STATUSES: Set<string> = new Set(['draft', 'open', 'resolved']);
9
+
8
10
  export async function discoverBugFiles(root: string): Promise<string[]> {
9
11
  const pattern = 'bugs/*.md';
10
12
  const matches = await glob(pattern, { cwd: root, absolute: true });
@@ -16,7 +18,7 @@ export function parseBugFile(filePath: string, content: string): { frontmatter:
16
18
  const { data, content: body } = matter(content);
17
19
  const frontmatter: BugFrontmatter = {
18
20
  title: data.title ?? '',
19
- status: data.status ?? 'open',
21
+ status: (VALID_BUG_STATUSES.has(data.status) ? data.status : 'open') as BugStatus,
20
22
  author: data.author ?? '',
21
23
  'created-at': data['created-at'] ?? '',
22
24
  };
@@ -1,10 +1,12 @@
1
1
  import { readFile } from 'node:fs/promises';
2
- import { resolve, relative } from 'node:path';
2
+ import { relative } from 'node:path';
3
3
  import { glob } from 'glob';
4
4
  import matter from 'gray-matter';
5
- import type { ChangeRequest, ChangeRequestFrontmatter } from '../types.js';
5
+ import type { ChangeRequest, ChangeRequestFrontmatter, ChangeRequestStatus } from '../types.js';
6
6
  import { ParseError } from '../errors.js';
7
7
 
8
+ const VALID_CR_STATUSES: Set<string> = new Set(['draft', 'pending', 'applied']);
9
+
8
10
  export async function discoverCRFiles(root: string): Promise<string[]> {
9
11
  const pattern = 'change-requests/*.md';
10
12
  const matches = await glob(pattern, { cwd: root, absolute: true });
@@ -16,7 +18,7 @@ export function parseCRFile(filePath: string, content: string): { frontmatter: C
16
18
  const { data, content: body } = matter(content);
17
19
  const frontmatter: ChangeRequestFrontmatter = {
18
20
  title: data.title ?? '',
19
- status: data.status ?? 'draft',
21
+ status: (VALID_CR_STATUSES.has(data.status) ? data.status : 'draft') as ChangeRequestStatus,
20
22
  author: data.author ?? '',
21
23
  'created-at': data['created-at'] ?? '',
22
24
  };