@lbruton/specflow 3.5.2 → 3.5.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/core/migration.d.ts.map +1 -1
- package/dist/core/migration.js +29 -1
- package/dist/core/migration.js.map +1 -1
- package/dist/core/workspace-initializer.d.ts.map +1 -1
- package/dist/core/workspace-initializer.js +4 -1
- package/dist/core/workspace-initializer.js.map +1 -1
- package/dist/prompts/create-spec.d.ts.map +1 -1
- package/dist/prompts/create-spec.js +9 -4
- package/dist/prompts/create-spec.js.map +1 -1
- package/dist/prompts/create-steering-doc.d.ts.map +1 -1
- package/dist/prompts/create-steering-doc.js +10 -5
- package/dist/prompts/create-steering-doc.js.map +1 -1
- package/dist/prompts/implement-task.d.ts.map +1 -1
- package/dist/prompts/implement-task.js +18 -11
- package/dist/prompts/implement-task.js.map +1 -1
- package/dist/prompts/inject-steering-guide.js +2 -2
- package/dist/prompts/spec-status.d.ts.map +1 -1
- package/dist/prompts/spec-status.js +4 -2
- package/dist/prompts/spec-status.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migration.d.ts","sourceRoot":"","sources":["../../src/core/migration.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGzD,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAgBD;;;GAGG;AACH,wBAAsB,cAAc,CAClC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"migration.d.ts","sourceRoot":"","sources":["../../src/core/migration.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAGzD,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAgBD;;;GAGG;AACH,wBAAsB,cAAc,CAClC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,OAAO,CAAC,CAsBlB;AAED;;;;;;;;;GASG;AACH,wBAAsB,iBAAiB,CACrC,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,cAAc,GACrB,OAAO,CAAC,eAAe,CAAC,CA4D1B"}
|
package/dist/core/migration.js
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* folder to the corresponding DocVault location defined in ResolvedConfig.
|
|
6
6
|
* Skips destinations that already contain files to prevent data loss.
|
|
7
7
|
*/
|
|
8
|
-
import { readdir, cp, access } from 'fs/promises';
|
|
8
|
+
import { readdir, cp, access, rm } from 'fs/promises';
|
|
9
9
|
import { join } from 'path';
|
|
10
10
|
import { constants } from 'fs';
|
|
11
11
|
import { ensureDirectoryExists } from './path-utils.js';
|
|
@@ -34,6 +34,17 @@ export async function needsMigration(projectPath, _config) {
|
|
|
34
34
|
return true;
|
|
35
35
|
}
|
|
36
36
|
}
|
|
37
|
+
// Also check for legacy dirs that need cleanup (e.g., templates/)
|
|
38
|
+
const legacyDirs = ['templates'];
|
|
39
|
+
for (const dir of legacyDirs) {
|
|
40
|
+
try {
|
|
41
|
+
await access(join(localRoot, dir), constants.F_OK);
|
|
42
|
+
return true; // Legacy dir exists and needs cleanup
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
// Doesn't exist
|
|
46
|
+
}
|
|
47
|
+
}
|
|
37
48
|
return false;
|
|
38
49
|
}
|
|
39
50
|
/**
|
|
@@ -74,6 +85,9 @@ export async function migrateToDocVault(projectPath, config) {
|
|
|
74
85
|
await cp(srcPath, destPath, { recursive: true });
|
|
75
86
|
console.error(`[migration] Copied ${srcDir}/ → ${destPath}`);
|
|
76
87
|
result.migratedDirs.push(srcDir);
|
|
88
|
+
// Clean up local source after successful copy
|
|
89
|
+
await rm(srcPath, { recursive: true });
|
|
90
|
+
console.error(`[migration] Cleaned up local ${srcDir}/`);
|
|
77
91
|
}
|
|
78
92
|
catch (err) {
|
|
79
93
|
const msg = err instanceof Error ? err.message : String(err);
|
|
@@ -81,6 +95,20 @@ export async function migrateToDocVault(projectPath, config) {
|
|
|
81
95
|
result.errors.push(`${srcDir}: ${msg}`);
|
|
82
96
|
}
|
|
83
97
|
}
|
|
98
|
+
// Clean up legacy local directories that are no longer needed
|
|
99
|
+
// These were auto-created by old WorkspaceInitializer but are now in DocVault
|
|
100
|
+
const legacyCleanup = ['templates'];
|
|
101
|
+
for (const dir of legacyCleanup) {
|
|
102
|
+
const dirPath = join(localRoot, dir);
|
|
103
|
+
try {
|
|
104
|
+
await access(dirPath, constants.F_OK);
|
|
105
|
+
await rm(dirPath, { recursive: true });
|
|
106
|
+
console.error(`[migration] Cleaned up legacy local ${dir}/`);
|
|
107
|
+
}
|
|
108
|
+
catch {
|
|
109
|
+
// Doesn't exist, nothing to clean
|
|
110
|
+
}
|
|
111
|
+
}
|
|
84
112
|
return result;
|
|
85
113
|
}
|
|
86
114
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migration.js","sourceRoot":"","sources":["../../src/core/migration.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"migration.js","sourceRoot":"","sources":["../../src/core/migration.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace-initializer.d.ts","sourceRoot":"","sources":["../../src/core/workspace-initializer.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAKzD,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAC,CAAiB;gBAEpB,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,cAAc;IAMnE,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"workspace-initializer.d.ts","sourceRoot":"","sources":["../../src/core/workspace-initializer.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAKzD,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,MAAM,CAAC,CAAiB;gBAEpB,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,cAAc;IAMnE,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;YAyB5B,qBAAqB;YAkBrB,mBAAmB;YAsBnB,6BAA6B;YAqB7B,yBAAyB;YAoBzB,oBAAoB;YAWpB,YAAY;YAkBZ,yBAAyB;IA8EvC;;;OAGG;YACW,yBAAyB;CAgBxC"}
|
|
@@ -23,7 +23,10 @@ export class WorkspaceInitializer {
|
|
|
23
23
|
await fs.mkdir(localRoot, { recursive: true });
|
|
24
24
|
await this.initializeDocVaultDirectories();
|
|
25
25
|
await this.initializeGlobalTemplates();
|
|
26
|
-
|
|
26
|
+
// NOTE: Do NOT call initializeTemplates() here — global templates
|
|
27
|
+
// are in DocVault/specflow/templates/ and project overrides come
|
|
28
|
+
// from migration (user-templates/ → templates/). We don't duplicate
|
|
29
|
+
// globals into the project folder.
|
|
27
30
|
await this.initializeIndexFiles();
|
|
28
31
|
}
|
|
29
32
|
else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspace-initializer.js","sourceRoot":"","sources":["../../src/core/workspace-initializer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEvD,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAE1D,MAAM,OAAO,oBAAoB;IACvB,WAAW,CAAS;IACpB,OAAO,CAAS;IAChB,MAAM,CAAkB;IAEhC,YAAY,WAAmB,EAAE,OAAe,EAAE,MAAuB;QACvE,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,mBAAmB;QACvB,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,sEAAsE;YACtE,uDAAuD;YACvD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;YACtD,MAAM,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAE/C,MAAM,IAAI,CAAC,6BAA6B,EAAE,CAAC;YAC3C,MAAM,IAAI,CAAC,yBAAyB,EAAE,CAAC;YACvC,
|
|
1
|
+
{"version":3,"file":"workspace-initializer.js","sourceRoot":"","sources":["../../src/core/workspace-initializer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,yBAAyB,EAAE,MAAM,kCAAkC,CAAC;AAC7E,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAEvD,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAE1D,MAAM,OAAO,oBAAoB;IACvB,WAAW,CAAS;IACpB,OAAO,CAAS;IAChB,MAAM,CAAkB;IAEhC,YAAY,WAAmB,EAAE,OAAe,EAAE,MAAuB;QACvE,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,mBAAmB;QACvB,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,sEAAsE;YACtE,uDAAuD;YACvD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;YACtD,MAAM,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAE/C,MAAM,IAAI,CAAC,6BAA6B,EAAE,CAAC;YAC3C,MAAM,IAAI,CAAC,yBAAyB,EAAE,CAAC;YACvC,kEAAkE;YAClE,iEAAiE;YACjE,oEAAoE;YACpE,mCAAmC;YACnC,MAAM,IAAI,CAAC,oBAAoB,EAAE,CAAC;QACpC,CAAC;aAAM,CAAC;YACN,kDAAkD;YAClD,MAAM,IAAI,CAAC,qBAAqB,EAAE,CAAC;YACnC,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACjC,MAAM,IAAI,CAAC,yBAAyB,EAAE,CAAC;QACzC,CAAC;QAED,2DAA2D;QAC3D,MAAM,IAAI,CAAC,yBAAyB,EAAE,CAAC;IACzC,CAAC;IAEO,KAAK,CAAC,qBAAqB;QACjC,MAAM,YAAY,GAAG,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAEjE,MAAM,WAAW,GAAG;YAClB,WAAW;YACX,SAAS;YACT,OAAO;YACP,UAAU;YACV,WAAW;YACX,gBAAgB;SACjB,CAAC;QAEF,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;YAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;YACxC,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,mBAAmB;QAC/B,MAAM,YAAY,GAAG,IAAI,CAAC,MAAM;YAC9B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,WAAW,CAAC;YAC7C,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC,CAAC;QAEnE,MAAM,SAAS,GAAG;YAChB,uBAAuB;YACvB,iBAAiB;YACjB,gBAAgB;YAChB,kBAAkB;YAClB,eAAe;YACf,oBAAoB;YACpB,wBAAwB;YACxB,gCAAgC;YAChC,6BAA6B;SAC9B,CAAC;QAEF,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QAClD,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,6BAA6B;QACzC,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAO;QAEzB,MAAM,WAAW,GAAG;YAClB,UAAU;YACV,OAAO;YACP,WAAW;YACX,WAAW;YACX,SAAS;YACT,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC;SACzB,CAAC;QAEF,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;YAC9B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;YACpD,MAAM,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/C,CAAC;QAED,6CAA6C;QAC7C,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACvE,CAAC;IAEO,KAAK,CAAC,yBAAyB;QACrC,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAO;QAEzB,MAAM,SAAS,GAAG;YAChB,uBAAuB;YACvB,iBAAiB;YACjB,gBAAgB;YAChB,kBAAkB;YAClB,eAAe;YACf,oBAAoB;YACpB,wBAAwB;YACxB,gCAAgC;YAChC,6BAA6B;SAC9B,CAAC;QAEF,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;QACrE,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,oBAAoB;QAChC,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAO;QAEzB,MAAM,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAEvD,MAAM,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;QAC/D,MAAM,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,UAAU,CAAC,EAAE,UAAU,CAAC,CAAC;QAChF,MAAM,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;QAC1E,MAAM,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,WAAW,CAAC,EAAE,WAAW,CAAC,CAAC;IACpF,CAAC;IAEO,KAAK,CAAC,YAAY,CAAC,YAAoB,EAAE,SAAiB;QAChE,sCAAsC;QACtC,MAAM,cAAc,GAAG,GAAG,YAAY,KAAK,CAAC;QAC5C,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;QAEnD,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC;QAExF,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YAEvD,6DAA6D;YAC7D,MAAM,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QACnD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC5E,OAAO,CAAC,KAAK,CAAC,2BAA2B,YAAY,KAAK,YAAY,EAAE,CAAC,CAAC;QAC5E,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,yBAAyB;QACrC,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,gBAAgB,EAAE,WAAW,CAAC,CAAC;QAEpG,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgEzB,CAAC;QAEE,IAAI,CAAC;YACH,qEAAqE;YACrE,MAAM,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAC9B,CAAC;QAAC,MAAM,CAAC;YACP,gCAAgC;YAChC,MAAM,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,yBAAyB;QACrC,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,YAAY,EAAE,CAAC;YACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC,CAAC;YAE5E,iDAAiD;YACjD,MAAM,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAEjD,MAAM,QAAQ,GAAG,IAAI,yBAAyB,CAAC,WAAW,CAAC,CAAC;YAC5D,MAAM,QAAQ,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QAC3C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC5E,OAAO,CAAC,KAAK,CAAC,wCAAwC,YAAY,EAAE,CAAC,CAAC;YACtE,iEAAiE;QACnE,CAAC;IACH,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-spec.d.ts","sourceRoot":"","sources":["../../src/prompts/create-spec.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"create-spec.d.ts","sourceRoot":"","sources":["../../src/prompts/create-spec.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAuG9C,eAAO,MAAM,gBAAgB,EAAE,gBAG9B,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { PathUtils } from '../core/path-utils.js';
|
|
1
2
|
const prompt = {
|
|
2
3
|
name: 'create-spec',
|
|
3
4
|
title: 'Create Specification Document',
|
|
@@ -29,6 +30,10 @@ async function handler(args, context) {
|
|
|
29
30
|
if (!validDocTypes.includes(documentType)) {
|
|
30
31
|
throw new Error(`documentType must be one of: ${validDocTypes.join(', ')}`);
|
|
31
32
|
}
|
|
33
|
+
// Resolve paths through PathUtils (DocVault-aware)
|
|
34
|
+
const workflowRoot = PathUtils.getWorkflowRoot(context.projectPath);
|
|
35
|
+
const templatesDir = `${workflowRoot}/templates`;
|
|
36
|
+
const specDir = `${workflowRoot}/specs/${specName}`;
|
|
32
37
|
// Build context-aware messages
|
|
33
38
|
const messages = [
|
|
34
39
|
{
|
|
@@ -45,17 +50,17 @@ ${description ? `- Description: ${description}` : ''}
|
|
|
45
50
|
${context.dashboardUrl ? `- Dashboard: ${context.dashboardUrl}` : ''}
|
|
46
51
|
|
|
47
52
|
**Instructions:**
|
|
48
|
-
1. First, read the template at:
|
|
53
|
+
1. First, read the template at: ${templatesDir}/${documentType}-template.md
|
|
49
54
|
2. Follow the template structure exactly - this ensures consistency across the project
|
|
50
55
|
3. Create comprehensive content that follows spec-driven development best practices
|
|
51
56
|
4. Include all required sections from the template
|
|
52
57
|
5. Use clear, actionable language
|
|
53
|
-
6. Create the document at:
|
|
58
|
+
6. Create the document at: ${specDir}/${documentType}.md
|
|
54
59
|
7. After creating, use approvals tool with action:'request' to get user approval
|
|
55
60
|
|
|
56
61
|
**File Paths:**
|
|
57
|
-
- Template location:
|
|
58
|
-
- Document destination:
|
|
62
|
+
- Template location: ${templatesDir}/${documentType}-template.md
|
|
63
|
+
- Document destination: ${specDir}/${documentType}.md
|
|
59
64
|
|
|
60
65
|
**Workflow Guidelines:**
|
|
61
66
|
- Requirements documents define WHAT needs to be built
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-spec.js","sourceRoot":"","sources":["../../src/prompts/create-spec.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"create-spec.js","sourceRoot":"","sources":["../../src/prompts/create-spec.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD,MAAM,MAAM,GAAW;IACrB,IAAI,EAAE,aAAa;IACnB,KAAK,EAAE,+BAA+B;IACtC,WAAW,EAAE,qKAAqK;IAClL,SAAS,EAAE;QACT;YACE,IAAI,EAAE,UAAU;YAChB,WAAW,EAAE,iJAAiJ;YAC9J,QAAQ,EAAE,IAAI;SACf;QACD;YACE,IAAI,EAAE,cAAc;YACpB,WAAW,EAAE,4DAA4D;YACzE,QAAQ,EAAE,IAAI;SACf;QACD;YACE,IAAI,EAAE,aAAa;YACnB,WAAW,EAAE,uDAAuD;YACpE,QAAQ,EAAE,KAAK;SAChB;KACF;CACF,CAAC;AAEF,KAAK,UAAU,OAAO,CAAC,IAAyB,EAAE,OAAoB;IACpE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC;IAErD,IAAI,CAAC,QAAQ,IAAI,CAAC,YAAY,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IACtE,CAAC;IAED,MAAM,aAAa,GAAG,CAAC,cAAc,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC1D,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CAAC,gCAAgC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC9E,CAAC;IAED,mDAAmD;IACnD,MAAM,YAAY,GAAG,SAAS,CAAC,eAAe,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IACpE,MAAM,YAAY,GAAG,GAAG,YAAY,YAAY,CAAC;IACjD,MAAM,OAAO,GAAG,GAAG,YAAY,UAAU,QAAQ,EAAE,CAAC;IAEpD,+BAA+B;IAC/B,MAAM,QAAQ,GAAoB;QAChC;YACE,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE;gBACP,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,YAAY,YAAY,sBAAsB,QAAQ;;;aAGvD,OAAO,CAAC,WAAW;aACnB,QAAQ;mBACF,YAAY;EAC7B,WAAW,CAAC,CAAC,CAAC,kBAAkB,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE;EAClD,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,gBAAgB,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE;;;kCAGlC,YAAY,IAAI,YAAY;;;;;6BAKjC,OAAO,IAAI,YAAY;;;;uBAI7B,YAAY,IAAI,YAAY;0BACzB,OAAO,IAAI,YAAY;;;;;;;;;EAS/C,YAAY,KAAK,OAAO,CAAC,CAAC,CAAC;;;;;;;;;;;;;;CAc5B,CAAC,CAAC,CAAC,EAAE;;kBAEY,YAAY,wEAAwE;aAC/F;SACF;KACF,CAAC;IAEF,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAqB;IAChD,MAAM;IACN,OAAO;CACR,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-steering-doc.d.ts","sourceRoot":"","sources":["../../src/prompts/create-steering-doc.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"create-steering-doc.d.ts","sourceRoot":"","sources":["../../src/prompts/create-steering-doc.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAmF9C,eAAO,MAAM,uBAAuB,EAAE,gBAGrC,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { PathUtils } from '../core/path-utils.js';
|
|
1
2
|
const prompt = {
|
|
2
3
|
name: 'create-steering-doc',
|
|
3
4
|
title: 'Create Steering Document',
|
|
@@ -24,6 +25,10 @@ async function handler(args, context) {
|
|
|
24
25
|
if (!validDocTypes.includes(docType)) {
|
|
25
26
|
throw new Error(`docType must be one of: ${validDocTypes.join(', ')}`);
|
|
26
27
|
}
|
|
28
|
+
// Resolve paths through PathUtils (DocVault-aware)
|
|
29
|
+
const workflowRoot = PathUtils.getWorkflowRoot(context.projectPath);
|
|
30
|
+
const templatesDir = `${workflowRoot}/templates`;
|
|
31
|
+
const steeringDir = `${workflowRoot}/steering`;
|
|
27
32
|
const messages = [
|
|
28
33
|
{
|
|
29
34
|
role: 'user',
|
|
@@ -38,15 +43,15 @@ ${scope ? `- Scope: ${scope}` : ''}
|
|
|
38
43
|
${context.dashboardUrl ? `- Dashboard: ${context.dashboardUrl}` : ''}
|
|
39
44
|
|
|
40
45
|
**Instructions:**
|
|
41
|
-
1. First, read the template at:
|
|
42
|
-
2. Check if steering docs exist at:
|
|
46
|
+
1. First, read the template at: ${templatesDir}/${docType}-template.md
|
|
47
|
+
2. Check if steering docs exist at: ${steeringDir}/
|
|
43
48
|
3. Create comprehensive content following the template structure
|
|
44
|
-
4. Create the document at:
|
|
49
|
+
4. Create the document at: ${steeringDir}/${docType}.md
|
|
45
50
|
5. After creating, use approvals tool with action:'request' to get user approval
|
|
46
51
|
|
|
47
52
|
**File Paths:**
|
|
48
|
-
- Template location:
|
|
49
|
-
- Document destination:
|
|
53
|
+
- Template location: ${templatesDir}/${docType}-template.md
|
|
54
|
+
- Document destination: ${steeringDir}/${docType}.md
|
|
50
55
|
|
|
51
56
|
**Steering Document Types:**
|
|
52
57
|
- **product**: Defines project vision, goals, and user outcomes
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-steering-doc.js","sourceRoot":"","sources":["../../src/prompts/create-steering-doc.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"create-steering-doc.js","sourceRoot":"","sources":["../../src/prompts/create-steering-doc.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD,MAAM,MAAM,GAAW;IACrB,IAAI,EAAE,qBAAqB;IAC3B,KAAK,EAAE,0BAA0B;IACjC,WAAW,EAAE,kJAAkJ;IAC/J,SAAS,EAAE;QACT;YACE,IAAI,EAAE,SAAS;YACf,WAAW,EAAE,wDAAwD;YACrE,QAAQ,EAAE,IAAI;SACf;QACD;YACE,IAAI,EAAE,OAAO;YACb,WAAW,EAAE,sEAAsE;YACnF,QAAQ,EAAE,KAAK;SAChB;KACF;CACF,CAAC;AAEF,KAAK,UAAU,OAAO,CAAC,IAAyB,EAAE,OAAoB;IACpE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;IAEhC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,aAAa,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IACvD,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACrC,MAAM,IAAI,KAAK,CAAC,2BAA2B,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACzE,CAAC;IAED,mDAAmD;IACnD,MAAM,YAAY,GAAG,SAAS,CAAC,eAAe,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IACpE,MAAM,YAAY,GAAG,GAAG,YAAY,YAAY,CAAC;IACjD,MAAM,WAAW,GAAG,GAAG,YAAY,WAAW,CAAC;IAE/C,MAAM,QAAQ,GAAoB;QAChC;YACE,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE;gBACP,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,YAAY,OAAO;;;aAGpB,OAAO,CAAC,WAAW;4BACJ,OAAO;EACjC,KAAK,CAAC,CAAC,CAAC,YAAY,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE;EAChC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,gBAAgB,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE;;;kCAGlC,YAAY,IAAI,OAAO;sCACnB,WAAW;;6BAEpB,WAAW,IAAI,OAAO;;;;uBAI5B,YAAY,IAAI,OAAO;0BACpB,WAAW,IAAI,OAAO;;;;;;;;;;;;;;kBAc9B,OAAO,+EAA+E;aACjG;SACF;KACF,CAAC;IAEF,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,MAAM,uBAAuB,GAAqB;IACvD,MAAM;IACN,OAAO;CACR,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"implement-task.d.ts","sourceRoot":"","sources":["../../src/prompts/implement-task.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"implement-task.d.ts","sourceRoot":"","sources":["../../src/prompts/implement-task.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAwM9C,eAAO,MAAM,mBAAmB,EAAE,gBAGjC,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { PathUtils } from '../core/path-utils.js';
|
|
1
2
|
const prompt = {
|
|
2
3
|
name: 'implement-task',
|
|
3
4
|
title: 'Implement Specification Task',
|
|
@@ -20,6 +21,12 @@ async function handler(args, context) {
|
|
|
20
21
|
if (!specName) {
|
|
21
22
|
throw new Error('specName is a required argument');
|
|
22
23
|
}
|
|
24
|
+
// Resolve paths through PathUtils (DocVault-aware)
|
|
25
|
+
const workflowRoot = PathUtils.getWorkflowRoot(context.projectPath);
|
|
26
|
+
const specDir = `${workflowRoot}/specs/${specName}`;
|
|
27
|
+
const templatesDir = `${workflowRoot}/templates`;
|
|
28
|
+
const tasksFile = `${specDir}/tasks.md`;
|
|
29
|
+
const logsDir = `${specDir}/Implementation Logs`;
|
|
23
30
|
const messages = [
|
|
24
31
|
{
|
|
25
32
|
role: 'user',
|
|
@@ -37,11 +44,11 @@ ${context.dashboardUrl ? `- Dashboard: ${context.dashboardUrl}` : ''}
|
|
|
37
44
|
|
|
38
45
|
1. **Check Current Status:**
|
|
39
46
|
- Use the spec-status tool with specName "${specName}" to see overall progress
|
|
40
|
-
- Read
|
|
47
|
+
- Read ${tasksFile} to see all tasks
|
|
41
48
|
- Identify ${taskId ? `task ${taskId}` : 'the next pending task marked with [ ]'}
|
|
42
49
|
|
|
43
50
|
2. **Start the Task:**
|
|
44
|
-
- Edit
|
|
51
|
+
- Edit ${tasksFile} directly
|
|
45
52
|
- Change the task marker from [ ] to [-] for the task you're starting
|
|
46
53
|
- Only one task should be in-progress at a time
|
|
47
54
|
|
|
@@ -56,18 +63,18 @@ ${context.dashboardUrl ? `- Dashboard: ${context.dashboardUrl}` : ''}
|
|
|
56
63
|
|
|
57
64
|
4. **Discover Existing Implementations (CRITICAL):**
|
|
58
65
|
- BEFORE writing any code, search implementation logs to understand existing artifacts
|
|
59
|
-
- Implementation logs are stored as markdown files in:
|
|
66
|
+
- Implementation logs are stored as markdown files in: ${logsDir}/
|
|
60
67
|
|
|
61
68
|
**Option 1: Use grep/ripgrep for fast searches**
|
|
62
69
|
\`\`\`bash
|
|
63
70
|
# Search for API endpoints
|
|
64
|
-
grep -r "GET\|POST\|PUT\|DELETE" "
|
|
71
|
+
grep -r "GET\|POST\|PUT\|DELETE" "${logsDir}/"
|
|
65
72
|
|
|
66
73
|
# Search for specific components
|
|
67
|
-
grep -r "ComponentName" "
|
|
74
|
+
grep -r "ComponentName" "${logsDir}/"
|
|
68
75
|
|
|
69
76
|
# Search for integration patterns
|
|
70
|
-
grep -r "integration\|dataFlow" "
|
|
77
|
+
grep -r "integration\|dataFlow" "${logsDir}/"
|
|
71
78
|
\`\`\`
|
|
72
79
|
|
|
73
80
|
**Option 2: Read markdown files directly**
|
|
@@ -91,21 +98,21 @@ ${context.dashboardUrl ? `- Dashboard: ${context.dashboardUrl}` : ''}
|
|
|
91
98
|
|
|
92
99
|
5. **Implement the Task (dispatch subagent):**
|
|
93
100
|
- Dispatch a fresh subagent (Agent tool) with the full task text, _Prompt guidance, and _Leverage file paths
|
|
94
|
-
- Template:
|
|
101
|
+
- Template: ${templatesDir}/implementer-prompt-template.md
|
|
95
102
|
- The subagent implements, tests, commits, and self-reviews
|
|
96
103
|
- Main context stays clean for orchestration — never write implementation code here
|
|
97
104
|
|
|
98
105
|
5.5. **Spec Compliance Review (dispatch reviewer subagent):**
|
|
99
106
|
- After the implementer reports back, dispatch a reviewer subagent
|
|
100
107
|
- Reviewer reads actual code and compares to task requirements line by line
|
|
101
|
-
- Template:
|
|
108
|
+
- Template: ${templatesDir}/spec-reviewer-template.md
|
|
102
109
|
- If issues found: implementer fixes them, then dispatch reviewer again
|
|
103
110
|
- Do NOT proceed to step 5.6 until spec review passes ✅
|
|
104
111
|
|
|
105
112
|
5.6. **Code Quality Review (dispatch reviewer subagent):**
|
|
106
113
|
- Only dispatch AFTER spec compliance passes in step 5.5
|
|
107
114
|
- Reviewer checks: architecture, error handling, testing, production readiness
|
|
108
|
-
- Template:
|
|
115
|
+
- Template: ${templatesDir}/code-quality-reviewer-template.md
|
|
109
116
|
- Issues categorized: Critical (must fix) / Important (should fix) / Minor
|
|
110
117
|
- Fix Critical and Important issues, re-review until approved ✅
|
|
111
118
|
|
|
@@ -144,7 +151,7 @@ ${context.dashboardUrl ? `- Dashboard: ${context.dashboardUrl}` : ''}
|
|
|
144
151
|
- Confirm that log-implementation returned success in step 6
|
|
145
152
|
- Verify all success criteria from the _Prompt are met
|
|
146
153
|
- Run any relevant tests to ensure nothing is broken
|
|
147
|
-
- Edit
|
|
154
|
+
- Edit ${tasksFile} directly
|
|
148
155
|
- Change the task marker from [-] to [x] for the completed task
|
|
149
156
|
- ⚠️ If you skipped step 6, go back now — a task marked [x] without a log is incomplete
|
|
150
157
|
|
|
@@ -170,7 +177,7 @@ ${context.dashboardUrl ? `- Dashboard: ${context.dashboardUrl}` : ''}
|
|
|
170
177
|
- All logged implementations appear in the "Logs" tab of the dashboard
|
|
171
178
|
- Filter by spec, task ID, or search by summary
|
|
172
179
|
- View detailed statistics including files changed and lines modified
|
|
173
|
-
- Or search directly using grep on markdown files in
|
|
180
|
+
- Or search directly using grep on markdown files in {workflowRoot}/specs/{specName}/Implementation Logs/
|
|
174
181
|
|
|
175
182
|
**Context Budget:** This session supports ~80-100 task dispatches with reviews (~800k tokens on 1M context models).
|
|
176
183
|
After completing 60+ tasks, consider using a handoff to relay to a fresh session.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"implement-task.js","sourceRoot":"","sources":["../../src/prompts/implement-task.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"implement-task.js","sourceRoot":"","sources":["../../src/prompts/implement-task.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD,MAAM,MAAM,GAAW;IACrB,IAAI,EAAE,gBAAgB;IACtB,KAAK,EAAE,8BAA8B;IACrC,WAAW,EAAE,2PAA2P;IACxQ,SAAS,EAAE;QACT;YACE,IAAI,EAAE,UAAU;YAChB,WAAW,EAAE,sDAAsD;YACnE,QAAQ,EAAE,IAAI;SACf;QACD;YACE,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,uDAAuD;YACpE,QAAQ,EAAE,KAAK;SAChB;KACF;CACF,CAAC;AAEF,KAAK,UAAU,OAAO,CAAC,IAAyB,EAAE,OAAoB;IACpE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAElC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACrD,CAAC;IAED,mDAAmD;IACnD,MAAM,YAAY,GAAG,SAAS,CAAC,eAAe,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IACpE,MAAM,OAAO,GAAG,GAAG,YAAY,UAAU,QAAQ,EAAE,CAAC;IACpD,MAAM,YAAY,GAAG,GAAG,YAAY,YAAY,CAAC;IACjD,MAAM,SAAS,GAAG,GAAG,OAAO,WAAW,CAAC;IACxC,MAAM,OAAO,GAAG,GAAG,OAAO,sBAAsB,CAAC;IAEjD,MAAM,QAAQ,GAAoB;QAChC;YACE,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE;gBACP,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,aAAa,MAAM,CAAC,CAAC,CAAC,QAAQ,MAAM,EAAE,CAAC,CAAC,CAAC,uBAAuB,aAAa,QAAQ;;;aAGtF,OAAO,CAAC,WAAW;aACnB,QAAQ;EACnB,MAAM,CAAC,CAAC,CAAC,cAAc,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE;EACpC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,gBAAgB,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE;;;;;+CAKrB,QAAQ;YAC3C,SAAS;gBACL,MAAM,CAAC,CAAC,CAAC,QAAQ,MAAM,EAAE,CAAC,CAAC,CAAC,uCAAuC;;;YAGvE,SAAS;;;;;;;;;;;;;;;4DAeuC,OAAO;;;;;uCAK5B,OAAO;;;8BAGhB,OAAO;;;sCAGC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;iBAwB5B,YAAY;;;;;;;iBAOZ,YAAY;;;;;;;iBAOZ,YAAY;;;;;;;;oBAQT,QAAQ;iBACX,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,GAAG,CAAC,CAAC,CAAC,gCAAgC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YA8B9D,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mCAgCc,MAAM,CAAC,CAAC,CAAC,QAAQ,MAAM,EAAE,CAAC,CAAC,CAAC,eAAe,2BAA2B;aAClG;SACF;KACF,CAAC;IAEF,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAqB;IACnD,MAAM;IACN,OAAO;CACR,CAAC"}
|
|
@@ -31,8 +31,8 @@ ${nextSteps.map(step => `- ${step}`).join('\n')}
|
|
|
31
31
|
1. This guide has been injected into your context for creating steering documents
|
|
32
32
|
2. Only proceed if the user explicitly requested steering document creation
|
|
33
33
|
3. Follow the sequence exactly: product.md → tech.md → structure.md
|
|
34
|
-
4. Read templates from
|
|
35
|
-
5. Create documents in
|
|
34
|
+
4. Read templates from the project's templates directory (resolved by PathUtils through DocVault)
|
|
35
|
+
5. Create documents in the project's steering directory (resolved by PathUtils through DocVault)
|
|
36
36
|
6. Request approval after each document using the approvals tool
|
|
37
37
|
7. Never proceed to the next document without successful approval cleanup
|
|
38
38
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spec-status.d.ts","sourceRoot":"","sources":["../../src/prompts/spec-status.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"spec-status.d.ts","sourceRoot":"","sources":["../../src/prompts/spec-status.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAgF9C,eAAO,MAAM,gBAAgB,EAAE,gBAG9B,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { PathUtils } from '../core/path-utils.js';
|
|
1
2
|
const prompt = {
|
|
2
3
|
name: 'spec-status',
|
|
3
4
|
title: 'Specification Status Overview',
|
|
@@ -19,6 +20,7 @@ async function handler(args, context) {
|
|
|
19
20
|
const { specName, detailed } = args;
|
|
20
21
|
const scope = specName ? `the "${specName}" feature` : 'all specifications in the project';
|
|
21
22
|
const detailLevel = detailed ? 'detailed' : 'summary';
|
|
23
|
+
const workflowRoot = PathUtils.getWorkflowRoot(context.projectPath);
|
|
22
24
|
const messages = [
|
|
23
25
|
{
|
|
24
26
|
role: 'user',
|
|
@@ -35,9 +37,9 @@ ${context.dashboardUrl ? `- Dashboard: ${context.dashboardUrl}` : ''}
|
|
|
35
37
|
**Instructions:**
|
|
36
38
|
${specName ?
|
|
37
39
|
`1. Use the spec-status tool with specName "${specName}" to get status information
|
|
38
|
-
2. If you need detailed task information, read the tasks.md file directly at
|
|
40
|
+
2. If you need detailed task information, read the tasks.md file directly at ${workflowRoot}/specs/${specName}/tasks.md
|
|
39
41
|
3. Check for any pending approvals using approvals tool with action:'status'` :
|
|
40
|
-
`1. List directory
|
|
42
|
+
`1. List directory ${workflowRoot}/specs/ to see all specifications
|
|
41
43
|
2. Use the spec-status tool to get status for each specification
|
|
42
44
|
3. Provide a consolidated overview of project progress`}
|
|
43
45
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spec-status.js","sourceRoot":"","sources":["../../src/prompts/spec-status.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"spec-status.js","sourceRoot":"","sources":["../../src/prompts/spec-status.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD,MAAM,MAAM,GAAW;IACrB,IAAI,EAAE,aAAa;IACnB,KAAK,EAAE,+BAA+B;IACtC,WAAW,EAAE,kJAAkJ;IAC/J,SAAS,EAAE;QACT;YACE,IAAI,EAAE,UAAU;YAChB,WAAW,EAAE,4FAA4F;YACzG,QAAQ,EAAE,KAAK;SAChB;QACD;YACE,IAAI,EAAE,UAAU;YAChB,WAAW,EAAE,oEAAoE;YACjF,QAAQ,EAAE,KAAK;SAChB;KACF;CACF,CAAC;AAEF,KAAK,UAAU,OAAO,CAAC,IAAyB,EAAE,OAAoB;IACpE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;IAEpC,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,QAAQ,WAAW,CAAC,CAAC,CAAC,mCAAmC,CAAC;IAC3F,MAAM,WAAW,GAAG,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;IACtD,MAAM,YAAY,GAAG,SAAS,CAAC,eAAe,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAEpE,MAAM,QAAQ,GAAoB;QAChC;YACE,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE;gBACP,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,OAAO,WAAW,wBAAwB,KAAK;;;aAGhD,OAAO,CAAC,WAAW;EAC9B,QAAQ,CAAC,CAAC,CAAC,cAAc,QAAQ,EAAE,CAAC,CAAC,CAAC,6BAA6B;kBACnD,WAAW;EAC3B,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,gBAAgB,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE;;;EAGlE,QAAQ,CAAC,CAAC;oBACV,8CAA8C,QAAQ;+EACuB,YAAY,UAAU,QAAQ;6EAChC,CAAC,CAAC;oBAC7E,qBAAqB,YAAY;;uDAEoB;;;;;;;;;;;;;;;;EAgBrD,QAAQ,CAAC,CAAC,CAAC;;;;;oCAKuB,CAAC,CAAC,CAAC,EAAE;;qGAE4D;aAC9F;SACF;KACF,CAAC;IAEF,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAqB;IAChD,MAAM;IACN,OAAO;CACR,CAAC"}
|