@mytechtoday/augment-sdd 1.0.0 → 1.1.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 (58) hide show
  1. package/out/beads/BeadsAdapter.js +30 -0
  2. package/out/beads/BeadsAdapter.js.map +1 -0
  3. package/out/beads/ClassicBeadsAdapter.js +84 -0
  4. package/out/beads/ClassicBeadsAdapter.js.map +1 -0
  5. package/out/beads/PowerShellBeadsAdapter.js +118 -0
  6. package/out/beads/PowerShellBeadsAdapter.js.map +1 -0
  7. package/out/beads/getBeadsAdapter.js +94 -0
  8. package/out/beads/getBeadsAdapter.js.map +1 -0
  9. package/out/commands/executeBeadsBatch.js +29 -15
  10. package/out/commands/executeBeadsBatch.js.map +1 -1
  11. package/out/commands/generateBeads.js +25 -22
  12. package/out/commands/generateBeads.js.map +1 -1
  13. package/out/commands/initWizard.js +184 -0
  14. package/out/commands/initWizard.js.map +1 -0
  15. package/out/extension.js +10 -0
  16. package/out/extension.js.map +1 -1
  17. package/out/test/integration/executeBeadsBatch.test.js +83 -57
  18. package/out/test/integration/executeBeadsBatch.test.js.map +1 -1
  19. package/out/test/integration/generateBeads.test.js +156 -0
  20. package/out/test/integration/generateBeads.test.js.map +1 -0
  21. package/out/test/integration/generateOpenSpec.test.js +16 -39
  22. package/out/test/integration/generateOpenSpec.test.js.map +1 -1
  23. package/out/test/unit/ClassicBeadsAdapter.test.js +121 -0
  24. package/out/test/unit/ClassicBeadsAdapter.test.js.map +1 -0
  25. package/out/test/unit/PowerShellBeadsAdapter.test.js +120 -0
  26. package/out/test/unit/PowerShellBeadsAdapter.test.js.map +1 -0
  27. package/out/test/unit/getBeadsAdapter.test.js +97 -0
  28. package/out/test/unit/getBeadsAdapter.test.js.map +1 -0
  29. package/out/test/unit/initWizard.test.js +170 -0
  30. package/out/test/unit/initWizard.test.js.map +1 -0
  31. package/out/test/unit/runCli.test.js +11 -24
  32. package/out/test/unit/runCli.test.js.map +1 -1
  33. package/out/utils/detectCli.js +47 -1
  34. package/out/utils/detectCli.js.map +1 -1
  35. package/out/utils/runCli.js +9 -3
  36. package/out/utils/runCli.js.map +1 -1
  37. package/package.json +22 -1
  38. package/.eslintrc.json +0 -20
  39. package/src/commands/executeBeadsBatch.ts +0 -153
  40. package/src/commands/fullPipeline.ts +0 -120
  41. package/src/commands/generateBeads.ts +0 -127
  42. package/src/commands/generateOpenSpec.ts +0 -227
  43. package/src/dashboard/DashboardPanel.ts +0 -168
  44. package/src/extension.ts +0 -77
  45. package/src/parsers/parseBeadUpdates.ts +0 -26
  46. package/src/parsers/parseTasksMarkdown.ts +0 -61
  47. package/src/test/integration/executeBeadsBatch.test.ts +0 -129
  48. package/src/test/integration/generateOpenSpec.test.ts +0 -129
  49. package/src/test/runTest.ts +0 -15
  50. package/src/test/suite/index.ts +0 -37
  51. package/src/test/unit/parseBeadUpdates.test.ts +0 -48
  52. package/src/test/unit/parseTasksMarkdown.test.ts +0 -41
  53. package/src/test/unit/runCli.test.ts +0 -109
  54. package/src/utils/detectCli.ts +0 -28
  55. package/src/utils/getConfig.ts +0 -25
  56. package/src/utils/logger.ts +0 -42
  57. package/src/utils/runCli.ts +0 -102
  58. package/tsconfig.json +0 -18
@@ -0,0 +1,184 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.initWizard = initWizard;
37
+ /**
38
+ * initWizard — interactive Beads backend setup wizard.
39
+ *
40
+ * Triggered by the `augmentSdd.init` command. Probes available backends,
41
+ * presents a QuickPick, copies bundled scripts when needed, and writes the
42
+ * `augmentSdd.beadsBackend` workspace setting.
43
+ */
44
+ const vscode = __importStar(require("vscode"));
45
+ const path = __importStar(require("path"));
46
+ const fs = __importStar(require("fs"));
47
+ const detectCli_1 = require("../utils/detectCli");
48
+ const runCli_1 = require("../utils/runCli");
49
+ const logger_1 = require("../utils/logger");
50
+ /**
51
+ * Copy a single bundled script from the extension install dir to the
52
+ * workspace `scripts/` folder. Prompts before overwriting existing files.
53
+ * Throws if the source file is missing (extension needs reinstall).
54
+ */
55
+ async function copyBundledScript(extensionPath, destDir, filename) {
56
+ const src = path.join(extensionPath, 'scripts', filename);
57
+ // Runtime guard: bundled script must exist inside the extension package.
58
+ if (!fs.existsSync(src)) {
59
+ throw new Error(`Bundled script not found: scripts/${filename}. ` +
60
+ 'Reinstall the Augment SDD extension to restore bundled scripts.');
61
+ }
62
+ const dest = path.join(destDir, filename);
63
+ if (fs.existsSync(dest)) {
64
+ const choice = await vscode.window.showWarningMessage(`scripts/${filename} already exists in this workspace. Overwrite?`, 'Overwrite', 'Skip');
65
+ if (choice !== 'Overwrite') {
66
+ return;
67
+ }
68
+ }
69
+ await fs.promises.copyFile(src, dest);
70
+ }
71
+ /**
72
+ * Main entry point for the init wizard command.
73
+ *
74
+ * @param context VS Code extension context (provides extensionPath).
75
+ * @param workspaceRoot Absolute path to the open workspace folder.
76
+ */
77
+ async function initWizard(context, workspaceRoot) {
78
+ // ── Step 1: Detect available backends ──────────────────────────────────────
79
+ (0, logger_1.log)('Init wizard: probing backends…');
80
+ const backends = await (0, detectCli_1.detectBackends)();
81
+ (0, logger_1.log)((0, detectCli_1.formatDetectionSummary)(backends));
82
+ const bdAvailable = backends.bd.version !== null;
83
+ const pwshAvailable = backends.pwsh.version !== null || backends.powershell.version !== null;
84
+ const doltAvailable = backends.dolt.version !== null;
85
+ // Idempotency: if a non-auto backend is already set, offer to keep it.
86
+ const config = vscode.workspace.getConfiguration('augmentSdd');
87
+ const current = config.get('beadsBackend', 'auto');
88
+ if (current !== 'auto') {
89
+ const choice = await vscode.window.showInformationMessage(`Augment SDD: Backend already configured as "${current}". Change it?`, 'Change', 'Keep');
90
+ if (choice !== 'Change') {
91
+ (0, logger_1.log)('Init wizard: user kept existing backend configuration.');
92
+ return;
93
+ }
94
+ }
95
+ // ── Step 2: Backend selection QuickPick ────────────────────────────────────
96
+ const items = [
97
+ {
98
+ label: `$(beaker) Classic Beads (bd)${bdAvailable ? '' : ' ⚠ bd not found'}`,
99
+ description: bdAvailable
100
+ ? `bd ${backends.bd.version ?? ''}${doltAvailable ? '' : ' — ⚠ dolt not found'}`
101
+ : 'Requires bd + dolt on PATH',
102
+ detail: 'Uses bd.exe + dolt database. Full-featured but requires external binaries.',
103
+ picked: bdAvailable && doltAvailable,
104
+ backendId: 'bd',
105
+ },
106
+ {
107
+ label: `$(terminal-powershell) PowerShell Beads (beads-ps1)${pwshAvailable ? '' : ' ⚠ pwsh not found'}`,
108
+ description: 'Recommended — no external dependencies',
109
+ detail: 'Uses beads-helpers.ps1 + beads-query.ps1 in scripts/. Data in .beads/issues.jsonl.',
110
+ picked: !bdAvailable,
111
+ backendId: 'beads-ps1',
112
+ },
113
+ {
114
+ label: '$(snake) Python Beads (beads-py) (coming soon)',
115
+ description: 'Pure Python 3 — not yet available',
116
+ detail: 'Requires python3 on PATH. Planned for a future release.',
117
+ backendId: null,
118
+ },
119
+ {
120
+ label: '$(node) Node.js Beads (beads-js) (coming soon)',
121
+ description: 'Pure Node.js — not yet available',
122
+ detail: 'Requires node on PATH. Planned for a future release.',
123
+ backendId: null,
124
+ },
125
+ ];
126
+ const picked = await vscode.window.showQuickPick(items, {
127
+ title: 'Augment SDD: Select Beads Backend',
128
+ placeHolder: 'Choose the backend for Beads issue tracking',
129
+ });
130
+ if (!picked) {
131
+ (0, logger_1.log)('Init wizard cancelled by user.');
132
+ return;
133
+ }
134
+ if (picked.backendId === null) {
135
+ vscode.window.showInformationMessage('That backend is not yet available. Check back in a future release!');
136
+ return;
137
+ }
138
+ // ── Step 3: Backend-specific setup ─────────────────────────────────────────
139
+ if (picked.backendId === 'beads-ps1') {
140
+ const destDir = path.join(workspaceRoot, 'scripts');
141
+ await fs.promises.mkdir(destDir, { recursive: true });
142
+ for (const file of ['beads-helpers.ps1', 'beads-query.ps1']) {
143
+ await copyBundledScript(context.extensionPath, destDir, file);
144
+ (0, logger_1.log)(`Copied scripts/${file} → workspace.`);
145
+ }
146
+ const beadsDir = path.join(workspaceRoot, '.beads');
147
+ await fs.promises.mkdir(beadsDir, { recursive: true });
148
+ const issuesFile = path.join(beadsDir, 'issues.jsonl');
149
+ if (!fs.existsSync(issuesFile)) {
150
+ await fs.promises.writeFile(issuesFile, '', 'utf8');
151
+ (0, logger_1.log)('Created .beads/issues.jsonl');
152
+ }
153
+ }
154
+ else if (picked.backendId === 'bd') {
155
+ if (!doltAvailable) {
156
+ const action = await vscode.window.showErrorMessage('Classic Beads requires dolt. Install: https://docs.dolthub.com/introduction/installation', 'Open Docs');
157
+ if (action === 'Open Docs') {
158
+ vscode.env.openExternal(vscode.Uri.parse('https://docs.dolthub.com/introduction/installation'));
159
+ }
160
+ (0, logger_1.log)('Init wizard: dolt not found — Classic Beads setup aborted.');
161
+ return;
162
+ }
163
+ try {
164
+ const out = await (0, runCli_1.runCli)('bd', ['init'], workspaceRoot);
165
+ (0, logger_1.log)(`bd init: ${out}`);
166
+ }
167
+ catch (err) {
168
+ (0, logger_1.log)(`bd init failed: ${String(err)}`);
169
+ vscode.window.showErrorMessage('Augment SDD: bd init failed. See Output Channel for details.');
170
+ return;
171
+ }
172
+ }
173
+ // ── Write config & report ───────────────────────────────────────────────────
174
+ await config.update('beadsBackend', picked.backendId, vscode.ConfigurationTarget.Workspace);
175
+ (0, logger_1.log)(`Init wizard: augmentSdd.beadsBackend set to "${picked.backendId}".`);
176
+ const activationHint = picked.backendId === 'beads-ps1'
177
+ ? '\n\nTo activate, run in your repo root:\n . .\\scripts\\beads-helpers.ps1\n bd-help'
178
+ : '';
179
+ const action = await vscode.window.showInformationMessage(`Augment SDD: "${picked.backendId}" backend configured.${activationHint}`, 'View Logs');
180
+ if (action === 'View Logs') {
181
+ (0, logger_1.revealOutputChannel)();
182
+ }
183
+ }
184
+ //# sourceMappingURL=initWizard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"initWizard.js","sourceRoot":"","sources":["../../src/commands/initWizard.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqDA,gCA4HC;AAjLD;;;;;;GAMG;AACH,+CAAiC;AACjC,2CAA6B;AAC7B,uCAAyB;AACzB,kDAA6F;AAC7F,4CAAyC;AACzC,4CAA2D;AAM3D;;;;GAIG;AACH,KAAK,UAAU,iBAAiB,CAC9B,aAAqB,EACrB,OAAe,EACf,QAAgB;IAEhB,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC1D,yEAAyE;IACzE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,IAAI,KAAK,CACb,qCAAqC,QAAQ,IAAI;YACjD,iEAAiE,CAClE,CAAC;IACJ,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC1C,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,kBAAkB,CACnD,WAAW,QAAQ,+CAA+C,EAClE,WAAW,EAAE,MAAM,CACpB,CAAC;QACF,IAAI,MAAM,KAAK,WAAW,EAAE,CAAC;YAAC,OAAO;QAAC,CAAC;IACzC,CAAC;IACD,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;AACxC,CAAC;AAED;;;;;GAKG;AACI,KAAK,UAAU,UAAU,CAC9B,OAAgC,EAChC,aAAqB;IAErB,8EAA8E;IAC9E,IAAA,YAAG,EAAC,gCAAgC,CAAC,CAAC;IACtC,MAAM,QAAQ,GAAoB,MAAM,IAAA,0BAAc,GAAE,CAAC;IACzD,IAAA,YAAG,EAAC,IAAA,kCAAsB,EAAC,QAAQ,CAAC,CAAC,CAAC;IAEtC,MAAM,WAAW,GAAK,QAAQ,CAAC,EAAE,CAAC,OAAO,KAAK,IAAI,CAAC;IACnD,MAAM,aAAa,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,KAAK,IAAI,IAAI,QAAQ,CAAC,UAAU,CAAC,OAAO,KAAK,IAAI,CAAC;IAC7F,MAAM,aAAa,GAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC;IAErD,uEAAuE;IACvE,MAAM,MAAM,GAAI,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;IAChE,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAS,cAAc,EAAE,MAAM,CAAC,CAAC;IAC3D,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QACvB,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,sBAAsB,CACvD,+CAA+C,OAAO,eAAe,EACrE,QAAQ,EAAE,MAAM,CACjB,CAAC;QACF,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;YACxB,IAAA,YAAG,EAAC,wDAAwD,CAAC,CAAC;YAC9D,OAAO;QACT,CAAC;IACH,CAAC;IAED,8EAA8E;IAC9E,MAAM,KAAK,GAA2B;QACpC;YACE,KAAK,EAAE,+BAA+B,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,kBAAkB,EAAE;YAC7E,WAAW,EAAE,WAAW;gBACtB,CAAC,CAAC,MAAM,QAAQ,CAAC,EAAE,CAAC,OAAO,IAAI,EAAE,GAAG,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,qBAAqB,EAAE;gBAChF,CAAC,CAAC,4BAA4B;YAChC,MAAM,EAAE,4EAA4E;YACpF,MAAM,EAAE,WAAW,IAAI,aAAa;YACpC,SAAS,EAAE,IAAI;SAChB;QACD;YACE,KAAK,EAAE,sDAAsD,aAAa,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,oBAAoB,EAAE;YACxG,WAAW,EAAE,wCAAwC;YACrD,MAAM,EAAE,oFAAoF;YAC5F,MAAM,EAAE,CAAC,WAAW;YACpB,SAAS,EAAE,WAAW;SACvB;QACD;YACE,KAAK,EAAE,iDAAiD;YACxD,WAAW,EAAE,mCAAmC;YAChD,MAAM,EAAE,yDAAyD;YACjE,SAAS,EAAE,IAAI;SAChB;QACD;YACE,KAAK,EAAE,iDAAiD;YACxD,WAAW,EAAE,kCAAkC;YAC/C,MAAM,EAAE,sDAAsD;YAC9D,SAAS,EAAE,IAAI;SAChB;KACF,CAAC;IAEF,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE;QACtD,KAAK,EAAE,mCAAmC;QAC1C,WAAW,EAAE,6CAA6C;KAC3D,CAAC,CAAC;IAEH,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,IAAA,YAAG,EAAC,gCAAgC,CAAC,CAAC;QACtC,OAAO;IACT,CAAC;IACD,IAAI,MAAM,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC;QAC9B,MAAM,CAAC,MAAM,CAAC,sBAAsB,CAClC,oEAAoE,CACrE,CAAC;QACF,OAAO;IACT,CAAC;IAED,8EAA8E;IAC9E,IAAI,MAAM,CAAC,SAAS,KAAK,WAAW,EAAE,CAAC;QACrC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;QACpD,MAAM,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACtD,KAAK,MAAM,IAAI,IAAI,CAAC,mBAAmB,EAAE,iBAAiB,CAAC,EAAE,CAAC;YAC5D,MAAM,iBAAiB,CAAC,OAAO,CAAC,aAAa,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;YAC9D,IAAA,YAAG,EAAC,kBAAkB,IAAI,eAAe,CAAC,CAAC;QAC7C,CAAC;QACD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;QACpD,MAAM,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACvD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;QACvD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC/B,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;YACpD,IAAA,YAAG,EAAC,6BAA6B,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;SAAM,IAAI,MAAM,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC;QACrC,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,gBAAgB,CACjD,0FAA0F,EAC1F,WAAW,CACZ,CAAC;YACF,IAAI,MAAM,KAAK,WAAW,EAAE,CAAC;gBAC3B,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,oDAAoD,CAAC,CAAC,CAAC;YAClG,CAAC;YACD,IAAA,YAAG,EAAC,4DAA4D,CAAC,CAAC;YAClE,OAAO;QACT,CAAC;QACD,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,IAAA,eAAM,EAAC,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC,CAAC;YACxD,IAAA,YAAG,EAAC,YAAY,GAAG,EAAE,CAAC,CAAC;QACzB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAA,YAAG,EAAC,mBAAmB,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACtC,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,8DAA8D,CAAC,CAAC;YAC/F,OAAO;QACT,CAAC;IACH,CAAC;IAED,+EAA+E;IAC/E,MAAM,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;IAC5F,IAAA,YAAG,EAAC,gDAAgD,MAAM,CAAC,SAAS,IAAI,CAAC,CAAC;IAE1E,MAAM,cAAc,GAAG,MAAM,CAAC,SAAS,KAAK,WAAW;QACrD,CAAC,CAAC,uFAAuF;QACzF,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,sBAAsB,CACvD,iBAAiB,MAAM,CAAC,SAAS,wBAAwB,cAAc,EAAE,EACzE,WAAW,CACZ,CAAC;IACF,IAAI,MAAM,KAAK,WAAW,EAAE,CAAC;QAAC,IAAA,4BAAmB,GAAE,CAAC;IAAC,CAAC;AACxD,CAAC"}
package/out/extension.js CHANGED
@@ -42,6 +42,7 @@ const generateOpenSpec_1 = require("./commands/generateOpenSpec");
42
42
  const generateBeads_1 = require("./commands/generateBeads");
43
43
  const executeBeadsBatch_1 = require("./commands/executeBeadsBatch");
44
44
  const fullPipeline_1 = require("./commands/fullPipeline");
45
+ const initWizard_1 = require("./commands/initWizard");
45
46
  /** CLI definitions: name on PATH and the npm package to install if missing. */
46
47
  const REQUIRED_CLIS = [
47
48
  { name: 'auggie', pkg: 'auggie' },
@@ -78,6 +79,8 @@ function activate(context) {
78
79
  checkRequiredClis().catch(err => {
79
80
  (0, logger_1.log)(`CLI detection error: ${String(err)}`);
80
81
  });
82
+ // Log backend detection summary on activation (non-blocking, informational only).
83
+ (0, detectCli_1.detectBackends)().then(result => (0, logger_1.log)((0, detectCli_1.formatDetectionSummary)(result))).catch(() => { });
81
84
  // Register commands (implementations wired in subsequent beads).
82
85
  context.subscriptions.push(vscode.commands.registerCommand('augmentSdd.generateOpenSpec', async () => {
83
86
  await (0, generateOpenSpec_1.generateOpenSpec)();
@@ -87,6 +90,13 @@ function activate(context) {
87
90
  await (0, executeBeadsBatch_1.executeBeadsBatch)();
88
91
  }), vscode.commands.registerCommand('augmentSdd.fullPipeline', async () => {
89
92
  await (0, fullPipeline_1.fullPipeline)();
93
+ }), vscode.commands.registerCommand('augmentSdd.init', async () => {
94
+ const folders = vscode.workspace.workspaceFolders;
95
+ if (!folders || folders.length === 0) {
96
+ vscode.window.showErrorMessage('Augment SDD: No workspace folder is open.');
97
+ return;
98
+ }
99
+ await (0, initWizard_1.initWizard)(context, folders[0].uri.fsPath);
90
100
  }));
91
101
  (0, logger_1.log)('Augment SDD extension activated.');
92
102
  }
@@ -1 +1 @@
1
- {"version":3,"file":"extension.js","sourceRoot":"","sources":["../src/extension.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqCA,4BAkCC;AAED,gCAEC;AA3ED,+CAAiC;AACjC,2CAAsE;AACtE,iDAA8C;AAC9C,kEAA+D;AAC/D,4DAAyD;AACzD,oEAAiE;AACjE,0DAAuD;AAEvD,+EAA+E;AAC/E,MAAM,aAAa,GAAoC;IACrD,EAAE,IAAI,EAAE,QAAQ,EAAI,GAAG,EAAE,QAAQ,EAAE;IACnC,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,UAAU,EAAE;IACrC,EAAE,IAAI,EAAE,IAAI,EAAQ,GAAG,EAAE,YAAY,EAAE;CACxC,CAAC;AAEF;;;GAGG;AACH,KAAK,UAAU,iBAAiB;IAC9B,KAAK,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,aAAa,EAAE,CAAC;QAC1C,MAAM,KAAK,GAAG,MAAM,IAAA,qBAAS,EAAC,IAAI,CAAC,CAAC;QACpC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,IAAA,YAAG,EAAC,0BAA0B,IAAI,kCAAkC,GAAG,GAAG,CAAC,CAAC;YAC5E,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,gBAAgB,CACjD,8BAA8B,IAAI,gDAAgD,GAAG,EAAE,EACvF,WAAW,CACZ,CAAC;YACF,IAAI,MAAM,KAAK,WAAW,EAAE,CAAC;gBAC3B,IAAA,4BAAmB,GAAE,CAAC;YACxB,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAA,YAAG,EAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAgB,QAAQ,CAAC,OAAgC;IACvD,0EAA0E;IAC1E,+EAA+E;IAC/E,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAAC;IACvE,IAAA,mBAAU,EAAC,aAAa,CAAC,CAAC;IAC1B,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAE1C,IAAA,YAAG,EAAC,mCAAmC,CAAC,CAAC;IAEzC,8EAA8E;IAC9E,iBAAiB,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;QAC9B,IAAA,YAAG,EAAC,wBAAwB,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;IAEH,iEAAiE;IACjE,OAAO,CAAC,aAAa,CAAC,IAAI,CACxB,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,6BAA6B,EAAE,KAAK,IAAI,EAAE;QACxE,MAAM,IAAA,mCAAgB,GAAE,CAAC;IAC3B,CAAC,CAAC,EAEF,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,0BAA0B,EAAE,KAAK,IAAI,EAAE;QACrE,MAAM,IAAA,6BAAa,GAAE,CAAC;IACxB,CAAC,CAAC,EAEF,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;QACzE,MAAM,IAAA,qCAAiB,GAAE,CAAC;IAC5B,CAAC,CAAC,EAEF,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAC,yBAAyB,EAAE,KAAK,IAAI,EAAE;QACpE,MAAM,IAAA,2BAAY,GAAE,CAAC;IACvB,CAAC,CAAC,CACH,CAAC;IAEF,IAAA,YAAG,EAAC,kCAAkC,CAAC,CAAC;AAC1C,CAAC;AAED,SAAgB,UAAU;IACxB,iEAAiE;AACnE,CAAC"}
1
+ {"version":3,"file":"extension.js","sourceRoot":"","sources":["../src/extension.ts"],"names":[],"mappings":"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"}
@@ -37,53 +37,31 @@ Object.defineProperty(exports, "__esModule", { value: true });
37
37
  * Integration tests for executeBeadsBatch command.
38
38
  * IT-3: 3 beads ready — all 3 bd update commands executed successfully.
39
39
  * IT-4: Partial failure — second bd update fails; others succeed, warning shown.
40
+ * IT-7 (ps-fix): mock PowerShellBeadsAdapter → adapter.update called per bead.
40
41
  *
41
- * Strategy: stub cp.spawn via sinon so no real CLIs are invoked.
42
+ * Strategy:
43
+ * - IT-3/IT-4: stub getBeadsAdapter to return a mock ClassicBeadsAdapter
44
+ * backed by sinon stubs; also stub cp.spawn for the auggie call.
45
+ * - IT-7: stub getBeadsAdapter to return a mock PowerShellBeadsAdapter.
46
+ * - vscode.workspace.getConfiguration is stubbed so batchSize=3 is returned.
42
47
  */
43
48
  const assert = __importStar(require("assert"));
44
- const cp = __importStar(require("child_process"));
45
49
  const fs = __importStar(require("fs"));
46
50
  const os = __importStar(require("os"));
47
51
  const path = __importStar(require("path"));
48
52
  const sinon = __importStar(require("sinon"));
49
53
  const vscode = __importStar(require("vscode"));
50
- const events_1 = require("events");
51
54
  const executeBeadsBatch_1 = require("../../commands/executeBeadsBatch");
52
- // ---------------------------------------------------------------------------
53
- // Fake process factory
54
- // ---------------------------------------------------------------------------
55
- function fakeProc(opts) {
56
- const stdoutEE = new events_1.EventEmitter();
57
- const stderrEE = new events_1.EventEmitter();
58
- const procEE = new events_1.EventEmitter();
59
- const proc = {
60
- stdout: stdoutEE,
61
- stderr: stderrEE,
62
- kill: () => { },
63
- on: procEE.on.bind(procEE),
64
- once: procEE.once.bind(procEE),
65
- removeListener: procEE.removeListener.bind(procEE),
66
- emit: procEE.emit.bind(procEE),
67
- };
68
- setImmediate(() => {
69
- if (opts.stdout) {
70
- stdoutEE.emit('data', Buffer.from(opts.stdout));
71
- }
72
- if (opts.stderr) {
73
- stderrEE.emit('data', Buffer.from(opts.stderr));
74
- }
75
- procEE.emit('close', opts.code ?? 0);
76
- });
77
- return proc;
78
- }
55
+ const adapterFactory = __importStar(require("../../beads/getBeadsAdapter"));
56
+ const runCliModule = __importStar(require("../../utils/runCli"));
79
57
  // ---------------------------------------------------------------------------
80
58
  // Helpers
81
59
  // ---------------------------------------------------------------------------
82
- const FAKE_BEADS = JSON.stringify([
83
- { id: 'bd-a1', title: 'Bead A1', description: 'Do A1' },
84
- { id: 'bd-b2', title: 'Bead B2', description: 'Do B2' },
85
- { id: 'bd-b3', title: 'Bead B3', description: 'Do B3' },
86
- ]);
60
+ const FAKE_BEADS = [
61
+ { id: 'bd-a1', title: 'Bead A1', description: 'Do A1', status: 'open', priority: 2 },
62
+ { id: 'bd-b2', title: 'Bead B2', description: 'Do B2', status: 'open', priority: 3 },
63
+ { id: 'bd-b3', title: 'Bead B3', description: 'Do B3', status: 'open', priority: 3 },
64
+ ];
87
65
  const AUGGIE_SENTINELS = 'bd update bd-a1 --status done\n' +
88
66
  'bd update bd-b2 --status done\n' +
89
67
  'bd update bd-b3 --status done';
@@ -99,57 +77,105 @@ function stubWorkspace(dir) {
99
77
  }
100
78
  };
101
79
  }
80
+ /** Build a minimal mock adapter with controllable ready/update stubs. */
81
+ function buildMockAdapter(readyResult, updateImpl) {
82
+ const readyStub = sinon.stub().resolves(readyResult);
83
+ const updateStub = updateImpl
84
+ ? sinon.stub().callsFake(async (id) => updateImpl(id))
85
+ : sinon.stub().resolves();
86
+ const adapter = {
87
+ ready: readyStub,
88
+ update: updateStub,
89
+ create: sinon.stub().resolves('bd-new'),
90
+ close: sinon.stub().resolves(),
91
+ search: sinon.stub().resolves([]),
92
+ };
93
+ return { adapter, readyStub, updateStub };
94
+ }
95
+ /** Stub VS Code config to return sensible defaults for batchSize / flags. */
96
+ function stubConfig() {
97
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
98
+ sinon.stub(vscode.workspace, 'getConfiguration').returns({
99
+ get: (key, def) => {
100
+ if (key === 'batchSize') {
101
+ return 3;
102
+ }
103
+ if (key === 'auggieExtraFlags') {
104
+ return '';
105
+ }
106
+ return def;
107
+ },
108
+ });
109
+ }
102
110
  // ---------------------------------------------------------------------------
103
111
  // Tests
104
112
  // ---------------------------------------------------------------------------
105
113
  suite('executeBeadsBatch — integration tests', () => {
106
114
  let tmpDir;
107
115
  let restoreWF;
108
- let spawnStub;
116
+ let runCliStub;
109
117
  let infoStub;
110
118
  let warnStub;
111
119
  let errStub;
112
120
  setup(() => {
113
121
  tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'augsdd-batch-'));
114
122
  restoreWF = stubWorkspace(tmpDir);
115
- spawnStub = sinon.stub(cp, 'spawn');
123
+ // Stub runCli for the auggie call (adapter calls are pure JS stubs).
124
+ runCliStub = sinon.stub(runCliModule, 'runCli');
116
125
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
117
126
  infoStub = sinon.stub(vscode.window, 'showInformationMessage').resolves(undefined);
118
127
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
119
128
  warnStub = sinon.stub(vscode.window, 'showWarningMessage').resolves(undefined);
120
129
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
121
130
  errStub = sinon.stub(vscode.window, 'showErrorMessage').resolves(undefined);
131
+ stubConfig();
122
132
  });
123
133
  teardown(() => {
124
134
  sinon.restore();
125
135
  restoreWF();
126
136
  fs.rmSync(tmpDir, { recursive: true, force: true });
127
137
  });
128
- test('IT-3: 3 beads ready — all 3 bd update commands executed', async () => {
129
- // Call order: bd ready, auggie, bd update ×3
130
- spawnStub.onCall(0).returns(fakeProc({ stdout: FAKE_BEADS, code: 0 }));
131
- spawnStub.onCall(1).returns(fakeProc({ stdout: AUGGIE_SENTINELS, code: 0 }));
132
- spawnStub.onCall(2).returns(fakeProc({ stdout: '', code: 0 }));
133
- spawnStub.onCall(3).returns(fakeProc({ stdout: '', code: 0 }));
134
- spawnStub.onCall(4).returns(fakeProc({ stdout: '', code: 0 }));
138
+ // IT-3 -------------------------------------------------------------------
139
+ test('IT-3: 3 beads ready all 3 adapter.update calls executed', async () => {
140
+ const { adapter, updateStub } = buildMockAdapter(FAKE_BEADS);
141
+ sinon.stub(adapterFactory, 'getBeadsAdapter').resolves(adapter);
142
+ // runCli is only called for auggie; adapter.update is a pure JS stub.
143
+ runCliStub.resolves(AUGGIE_SENTINELS);
135
144
  await (0, executeBeadsBatch_1.executeBeadsBatch)();
136
- assert.strictEqual(spawnStub.callCount, 5, 'spawn should be called 5 times total');
145
+ assert.strictEqual(runCliStub.callCount, 1, 'runCli should be called once (auggie)');
146
+ assert.strictEqual(updateStub.callCount, 3, 'adapter.update should be called 3 times');
147
+ assert.ok(updateStub.calledWith('bd-a1', 'done'), 'should update bd-a1');
148
+ assert.ok(updateStub.calledWith('bd-b2', 'done'), 'should update bd-b2');
149
+ assert.ok(updateStub.calledWith('bd-b3', 'done'), 'should update bd-b3');
137
150
  assert.ok(infoStub.called, 'success info message should be shown');
138
- assert.ok(!warnStub.called, 'no warning should be shown on clean success');
139
- assert.ok(!errStub.called, 'no error should be shown on clean success');
151
+ assert.ok(!warnStub.called, 'no warning on clean success');
152
+ assert.ok(!errStub.called, 'no error on clean success');
140
153
  });
141
- test('IT-4: partial failure — second bd update fails, warning shown', async () => {
142
- // bd ready auggie bd-a1 ok bd-b2 FAIL bd-b3 ok
143
- spawnStub.onCall(0).returns(fakeProc({ stdout: FAKE_BEADS, code: 0 }));
144
- spawnStub.onCall(1).returns(fakeProc({ stdout: AUGGIE_SENTINELS, code: 0 }));
145
- spawnStub.onCall(2).returns(fakeProc({ stdout: '', code: 0 }));
146
- spawnStub.onCall(3).returns(fakeProc({ stdout: '', stderr: 'not found', code: 1 }));
147
- spawnStub.onCall(4).returns(fakeProc({ stdout: '', code: 0 }));
154
+ // IT-4 -------------------------------------------------------------------
155
+ test('IT-4: partial failure second update fails, warning shown, others continue', async () => {
156
+ let callCount = 0;
157
+ const { adapter, updateStub } = buildMockAdapter(FAKE_BEADS, async (id) => {
158
+ callCount++;
159
+ if (id === 'bd-b2') {
160
+ throw new Error('simulated failure');
161
+ }
162
+ });
163
+ sinon.stub(adapterFactory, 'getBeadsAdapter').resolves(adapter);
164
+ runCliStub.resolves(AUGGIE_SENTINELS);
148
165
  await (0, executeBeadsBatch_1.executeBeadsBatch)();
166
+ assert.strictEqual(updateStub.callCount, 3, 'all 3 update attempts should be made');
149
167
  assert.ok(warnStub.called, 'warning message should be shown on partial failure');
150
- assert.ok(!errStub.called, 'no hard error should be shown on partial failure');
151
- // Verify all 5 spawns happened (pipeline did not abort)
152
- assert.strictEqual(spawnStub.callCount, 5, 'all 3 bd update attempts should be made');
168
+ assert.ok(!errStub.called, 'no hard error on partial failure');
169
+ });
170
+ // IT-7 (ps-fix) -----------------------------------------------------------
171
+ test('IT-7: mock PowerShellBeadsAdapter → adapter.update called per bead in batch', async () => {
172
+ const { adapter, updateStub } = buildMockAdapter(FAKE_BEADS);
173
+ // Simulate PS adapter (duck-typed; type is irrelevant to the command)
174
+ sinon.stub(adapterFactory, 'getBeadsAdapter').resolves(adapter);
175
+ runCliStub.resolves(AUGGIE_SENTINELS);
176
+ await (0, executeBeadsBatch_1.executeBeadsBatch)();
177
+ assert.strictEqual(updateStub.callCount, 3, 'IT-7: adapter.update must be called for each bead in the batch');
178
+ assert.ok(infoStub.called, 'success message should be shown');
153
179
  });
154
180
  });
155
181
  //# sourceMappingURL=executeBeadsBatch.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"executeBeadsBatch.test.js","sourceRoot":"","sources":["../../../src/test/integration/executeBeadsBatch.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"executeBeadsBatch.test.js","sourceRoot":"","sources":["../../../src/test/integration/executeBeadsBatch.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,156 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ /**
37
+ * Integration tests for generateBeads command (IT-6 — ps-fix test-spec.md)
38
+ *
39
+ * IT-6 Regression: refactored generateBeads with mock ClassicBeadsAdapter →
40
+ * - adapter.create() called once per task heading.
41
+ * - adapter.ready() called exactly once after all creates.
42
+ * - No direct runCli('bd',...) calls remain (verified by asserting cp.spawn
43
+ * is never invoked).
44
+ *
45
+ * Strategy:
46
+ * - Stub getBeadsAdapter module export to return a mock adapter.
47
+ * - Write a real tasks.md in a tmpDir; point workspaceFolders there.
48
+ * - Run generateBeads() and assert mock adapter call counts.
49
+ */
50
+ const assert = __importStar(require("assert"));
51
+ const fs = __importStar(require("fs"));
52
+ const path = __importStar(require("path"));
53
+ const os = __importStar(require("os"));
54
+ const sinon = __importStar(require("sinon"));
55
+ const vscode = __importStar(require("vscode"));
56
+ const generateBeads_1 = require("../../commands/generateBeads");
57
+ const adapterFactory = __importStar(require("../../beads/getBeadsAdapter"));
58
+ const runCliModule = __importStar(require("../../utils/runCli"));
59
+ // ---------------------------------------------------------------------------
60
+ // Helpers
61
+ // ---------------------------------------------------------------------------
62
+ function stubWorkspace(dir) {
63
+ const orig = Object.getOwnPropertyDescriptor(vscode.workspace, 'workspaceFolders');
64
+ Object.defineProperty(vscode.workspace, 'workspaceFolders', {
65
+ configurable: true,
66
+ get: () => [{ uri: vscode.Uri.file(dir), name: 'test', index: 0 }],
67
+ });
68
+ return () => {
69
+ if (orig) {
70
+ Object.defineProperty(vscode.workspace, 'workspaceFolders', orig);
71
+ }
72
+ };
73
+ }
74
+ const READY_BEADS = [
75
+ { id: 'bd-r1', title: 'Task One', description: 'D1', status: 'open', priority: 2 },
76
+ { id: 'bd-r2', title: 'Task Two', description: 'D2', status: 'open', priority: 3 },
77
+ ];
78
+ /** Build a mock adapter where create/ready are sinon stubs. */
79
+ function buildMockAdapter() {
80
+ let callIndex = 0;
81
+ const ids = ['bd-new1', 'bd-new2'];
82
+ const createStub = sinon.stub().callsFake(async () => ids[callIndex++] ?? 'bd-fallback');
83
+ const readyStub = sinon.stub().resolves(READY_BEADS);
84
+ const adapter = {
85
+ create: createStub,
86
+ ready: readyStub,
87
+ update: sinon.stub().resolves(),
88
+ close: sinon.stub().resolves(),
89
+ search: sinon.stub().resolves([]),
90
+ };
91
+ return { adapter, createStub, readyStub };
92
+ }
93
+ // ---------------------------------------------------------------------------
94
+ // Tests
95
+ // ---------------------------------------------------------------------------
96
+ suite('generateBeads — integration tests', () => {
97
+ let tmpDir;
98
+ let restoreWF;
99
+ let infoStub;
100
+ let runCliStub;
101
+ setup(() => {
102
+ tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'augsdd-gb-'));
103
+ restoreWF = stubWorkspace(tmpDir);
104
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
105
+ infoStub = sinon.stub(vscode.window, 'showInformationMessage').resolves(undefined);
106
+ sinon.stub(vscode.window, 'showErrorMessage').resolves(undefined); // eslint-disable-line @typescript-eslint/no-explicit-any
107
+ // IT-6 regression guard: runCli should never be called when adapter is mocked.
108
+ runCliStub = sinon.stub(runCliModule, 'runCli');
109
+ });
110
+ teardown(() => {
111
+ sinon.restore();
112
+ restoreWF();
113
+ fs.rmSync(tmpDir, { recursive: true, force: true });
114
+ });
115
+ // Create the tasks.md file structure in tmpDir
116
+ function writeTasksFile(content) {
117
+ const changesDir = path.join(tmpDir, 'openspec', 'changes', 'ch-001');
118
+ fs.mkdirSync(changesDir, { recursive: true });
119
+ fs.writeFileSync(path.join(changesDir, 'tasks.md'), content);
120
+ }
121
+ // IT-6 -------------------------------------------------------------------
122
+ test('IT-6: adapter.create called per task heading; no direct bd spawn', async () => {
123
+ const md = '## Task One\nDo task one\n## Task Two\nDo task two\n';
124
+ writeTasksFile(md);
125
+ const { adapter, createStub, readyStub } = buildMockAdapter();
126
+ sinon.stub(adapterFactory, 'getBeadsAdapter').resolves(adapter);
127
+ await (0, generateBeads_1.generateBeads)();
128
+ assert.strictEqual(createStub.callCount, 2, 'adapter.create should be called once per task heading');
129
+ assert.ok(createStub.calledWith('Task One', 'Do task one'), 'first create call should use the first task');
130
+ assert.ok(createStub.calledWith('Task Two', 'Do task two'), 'second create call should use the second task');
131
+ assert.strictEqual(readyStub.callCount, 1, 'adapter.ready() should be called exactly once after all creates');
132
+ // Regression: no runCli calls when adapter is fully mocked
133
+ assert.strictEqual(runCliStub.callCount, 0, 'IT-6 regression: runCli must NOT be called when adapter is mocked');
134
+ assert.ok(infoStub.called, 'success info message should be shown');
135
+ });
136
+ test('IT-6b: create() failure is non-fatal — remaining tasks still attempted', async () => {
137
+ const md = '## Task A\nBody A\n## Task B\nBody B\n';
138
+ writeTasksFile(md);
139
+ const createStub = sinon.stub();
140
+ createStub.onCall(0).rejects(new Error('network timeout'));
141
+ createStub.onCall(1).resolves('bd-ok');
142
+ const readyStub = sinon.stub().resolves(READY_BEADS);
143
+ const adapter = {
144
+ create: createStub,
145
+ ready: readyStub,
146
+ update: sinon.stub().resolves(),
147
+ close: sinon.stub().resolves(),
148
+ search: sinon.stub().resolves([]),
149
+ };
150
+ sinon.stub(adapterFactory, 'getBeadsAdapter').resolves(adapter);
151
+ await (0, generateBeads_1.generateBeads)();
152
+ assert.strictEqual(createStub.callCount, 2, 'should attempt create for all tasks even after a failure');
153
+ assert.strictEqual(readyStub.callCount, 1, 'ready() should still be called after partial failures');
154
+ });
155
+ });
156
+ //# sourceMappingURL=generateBeads.test.js.map