aiwcli 0.9.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 (204) hide show
  1. package/README.md +1248 -0
  2. package/bin/dev.cmd +3 -0
  3. package/bin/dev.js +16 -0
  4. package/bin/run.cmd +3 -0
  5. package/bin/run.js +19 -0
  6. package/dist/commands/branch.d.ts +45 -0
  7. package/dist/commands/branch.js +488 -0
  8. package/dist/commands/clean.d.ts +34 -0
  9. package/dist/commands/clean.js +186 -0
  10. package/dist/commands/clear.d.ts +51 -0
  11. package/dist/commands/clear.js +835 -0
  12. package/dist/commands/init/index.d.ts +107 -0
  13. package/dist/commands/init/index.js +565 -0
  14. package/dist/commands/launch.d.ts +21 -0
  15. package/dist/commands/launch.js +108 -0
  16. package/dist/index.d.ts +1 -0
  17. package/dist/index.js +1 -0
  18. package/dist/lib/base-command.d.ts +114 -0
  19. package/dist/lib/base-command.js +153 -0
  20. package/dist/lib/bmad-installer.d.ts +38 -0
  21. package/dist/lib/bmad-installer.js +145 -0
  22. package/dist/lib/claude-settings-types.d.ts +102 -0
  23. package/dist/lib/claude-settings-types.js +5 -0
  24. package/dist/lib/config.d.ts +25 -0
  25. package/dist/lib/config.js +46 -0
  26. package/dist/lib/debug.d.ts +39 -0
  27. package/dist/lib/debug.js +74 -0
  28. package/dist/lib/env-compat.d.ts +26 -0
  29. package/dist/lib/env-compat.js +35 -0
  30. package/dist/lib/errors.d.ts +126 -0
  31. package/dist/lib/errors.js +145 -0
  32. package/dist/lib/generic-merge.d.ts +74 -0
  33. package/dist/lib/generic-merge.js +105 -0
  34. package/dist/lib/git/branch.d.ts +67 -0
  35. package/dist/lib/git/branch.js +155 -0
  36. package/dist/lib/git/index.d.ts +11 -0
  37. package/dist/lib/git/index.js +13 -0
  38. package/dist/lib/git/safety-checks.d.ts +44 -0
  39. package/dist/lib/git/safety-checks.js +102 -0
  40. package/dist/lib/git/types.d.ts +31 -0
  41. package/dist/lib/git/types.js +6 -0
  42. package/dist/lib/git/worktree.d.ts +67 -0
  43. package/dist/lib/git/worktree.js +220 -0
  44. package/dist/lib/gitignore-manager.d.ts +10 -0
  45. package/dist/lib/gitignore-manager.js +60 -0
  46. package/dist/lib/hooks-merger.d.ts +28 -0
  47. package/dist/lib/hooks-merger.js +94 -0
  48. package/dist/lib/ide-path-resolver.d.ts +102 -0
  49. package/dist/lib/ide-path-resolver.js +129 -0
  50. package/dist/lib/index.d.ts +13 -0
  51. package/dist/lib/index.js +22 -0
  52. package/dist/lib/output.d.ts +51 -0
  53. package/dist/lib/output.js +76 -0
  54. package/dist/lib/paths.d.ts +66 -0
  55. package/dist/lib/paths.js +136 -0
  56. package/dist/lib/quiet.d.ts +12 -0
  57. package/dist/lib/quiet.js +17 -0
  58. package/dist/lib/settings-hierarchy.d.ts +42 -0
  59. package/dist/lib/settings-hierarchy.js +105 -0
  60. package/dist/lib/spawn.d.ts +105 -0
  61. package/dist/lib/spawn.js +157 -0
  62. package/dist/lib/spinner.d.ts +19 -0
  63. package/dist/lib/spinner.js +34 -0
  64. package/dist/lib/stdin.d.ts +48 -0
  65. package/dist/lib/stdin.js +60 -0
  66. package/dist/lib/template-installer.d.ts +92 -0
  67. package/dist/lib/template-installer.js +375 -0
  68. package/dist/lib/template-linter.d.ts +49 -0
  69. package/dist/lib/template-linter.js +173 -0
  70. package/dist/lib/template-merger.d.ts +47 -0
  71. package/dist/lib/template-merger.js +173 -0
  72. package/dist/lib/template-resolver.d.ts +20 -0
  73. package/dist/lib/template-resolver.js +60 -0
  74. package/dist/lib/terminal.d.ts +102 -0
  75. package/dist/lib/terminal.js +245 -0
  76. package/dist/lib/tty-detection.d.ts +62 -0
  77. package/dist/lib/tty-detection.js +83 -0
  78. package/dist/lib/user-utils.d.ts +5 -0
  79. package/dist/lib/user-utils.js +23 -0
  80. package/dist/lib/version.d.ts +99 -0
  81. package/dist/lib/version.js +144 -0
  82. package/dist/lib/watch-templates.d.ts +6 -0
  83. package/dist/lib/watch-templates.js +73 -0
  84. package/dist/lib/windsurf-hooks-hierarchy.d.ts +30 -0
  85. package/dist/lib/windsurf-hooks-hierarchy.js +66 -0
  86. package/dist/lib/windsurf-hooks-merger.d.ts +26 -0
  87. package/dist/lib/windsurf-hooks-merger.js +53 -0
  88. package/dist/lib/windsurf-hooks-types.d.ts +33 -0
  89. package/dist/lib/windsurf-hooks-types.js +5 -0
  90. package/dist/templates/CLAUDE.md +174 -0
  91. package/dist/templates/_shared/.claude/commands/handoff.md +14 -0
  92. package/dist/templates/_shared/.claude/settings.json +61 -0
  93. package/dist/templates/_shared/.codex/workflows/handoff.md +14 -0
  94. package/dist/templates/_shared/.windsurf/workflows/handoff.md +14 -0
  95. package/dist/templates/_shared/hooks/__init__.py +16 -0
  96. package/dist/templates/_shared/hooks/archive_plan.py +270 -0
  97. package/dist/templates/_shared/hooks/context_enforcer.py +621 -0
  98. package/dist/templates/_shared/hooks/context_monitor.py +322 -0
  99. package/dist/templates/_shared/hooks/file-suggestion.py +188 -0
  100. package/dist/templates/_shared/hooks/task_create_capture.py +194 -0
  101. package/dist/templates/_shared/hooks/task_update_capture.py +254 -0
  102. package/dist/templates/_shared/hooks/user_prompt_submit.py +157 -0
  103. package/dist/templates/_shared/lib/__init__.py +1 -0
  104. package/dist/templates/_shared/lib/base/__init__.py +49 -0
  105. package/dist/templates/_shared/lib/base/__pycache__/constants.cpython-313.pyc +0 -0
  106. package/dist/templates/_shared/lib/base/atomic_write.py +180 -0
  107. package/dist/templates/_shared/lib/base/constants.py +299 -0
  108. package/dist/templates/_shared/lib/base/inference.py +189 -0
  109. package/dist/templates/_shared/lib/base/utils.py +216 -0
  110. package/dist/templates/_shared/lib/context/__init__.py +119 -0
  111. package/dist/templates/_shared/lib/context/__pycache__/__init__.cpython-313.pyc +0 -0
  112. package/dist/templates/_shared/lib/context/__pycache__/cache.cpython-313.pyc +0 -0
  113. package/dist/templates/_shared/lib/context/__pycache__/context_manager.cpython-313.pyc +0 -0
  114. package/dist/templates/_shared/lib/context/__pycache__/event_log.cpython-313.pyc +0 -0
  115. package/dist/templates/_shared/lib/context/cache.py +446 -0
  116. package/dist/templates/_shared/lib/context/context_manager.py +1171 -0
  117. package/dist/templates/_shared/lib/context/discovery.py +486 -0
  118. package/dist/templates/_shared/lib/context/event_log.py +308 -0
  119. package/dist/templates/_shared/lib/context/plan_archive.py +247 -0
  120. package/dist/templates/_shared/lib/context/task_sync.py +367 -0
  121. package/dist/templates/_shared/lib/handoff/__init__.py +22 -0
  122. package/dist/templates/_shared/lib/handoff/document_generator.py +307 -0
  123. package/dist/templates/_shared/lib/templates/README.md +215 -0
  124. package/dist/templates/_shared/lib/templates/__init__.py +40 -0
  125. package/dist/templates/_shared/lib/templates/formatters.py +147 -0
  126. package/dist/templates/_shared/lib/templates/plan_context.py +119 -0
  127. package/dist/templates/_shared/scripts/save_handoff.py +99 -0
  128. package/dist/templates/_shared/workflows/handoff.md +212 -0
  129. package/dist/templates/cc-native/.claude/agents/cc-native/ACCESSIBILITY-TESTER.md +80 -0
  130. package/dist/templates/cc-native/.claude/agents/cc-native/ARCHITECT-REVIEWER.md +75 -0
  131. package/dist/templates/cc-native/.claude/agents/cc-native/ASSUMPTION-CHAIN-TRACER.md +239 -0
  132. package/dist/templates/cc-native/.claude/agents/cc-native/CLARITY-AUDITOR.md +109 -0
  133. package/dist/templates/cc-native/.claude/agents/cc-native/CODE-REVIEWER.md +71 -0
  134. package/dist/templates/cc-native/.claude/agents/cc-native/COMPLETENESS-CHECKER.md +104 -0
  135. package/dist/templates/cc-native/.claude/agents/cc-native/CONTEXT-EXTRACTOR.md +93 -0
  136. package/dist/templates/cc-native/.claude/agents/cc-native/DEVILS-ADVOCATE.md +223 -0
  137. package/dist/templates/cc-native/.claude/agents/cc-native/DOCUMENTATION-REVIEWER.md +73 -0
  138. package/dist/templates/cc-native/.claude/agents/cc-native/FEASIBILITY-ANALYST.md +93 -0
  139. package/dist/templates/cc-native/.claude/agents/cc-native/FRESH-PERSPECTIVE.md +103 -0
  140. package/dist/templates/cc-native/.claude/agents/cc-native/HANDOFF-READINESS.md +145 -0
  141. package/dist/templates/cc-native/.claude/agents/cc-native/HIDDEN-COMPLEXITY-DETECTOR.md +248 -0
  142. package/dist/templates/cc-native/.claude/agents/cc-native/INCENTIVE-MAPPER.md +235 -0
  143. package/dist/templates/cc-native/.claude/agents/cc-native/PENETRATION-TESTER.md +80 -0
  144. package/dist/templates/cc-native/.claude/agents/cc-native/PERFORMANCE-ENGINEER.md +76 -0
  145. package/dist/templates/cc-native/.claude/agents/cc-native/PLAN-ORCHESTRATOR.md +141 -0
  146. package/dist/templates/cc-native/.claude/agents/cc-native/PRECEDENT-FINDER.md +240 -0
  147. package/dist/templates/cc-native/.claude/agents/cc-native/REVERSIBILITY-ANALYST.md +211 -0
  148. package/dist/templates/cc-native/.claude/agents/cc-native/RISK-ASSESSOR.md +101 -0
  149. package/dist/templates/cc-native/.claude/agents/cc-native/SECOND-ORDER-ANALYST.md +197 -0
  150. package/dist/templates/cc-native/.claude/agents/cc-native/SIMPLICITY-GUARDIAN.md +97 -0
  151. package/dist/templates/cc-native/.claude/agents/cc-native/SKEPTIC.md +349 -0
  152. package/dist/templates/cc-native/.claude/agents/cc-native/STAKEHOLDER-ADVOCATE.md +106 -0
  153. package/dist/templates/cc-native/.claude/agents/cc-native/TRADE-OFF-ILLUMINATOR.md +205 -0
  154. package/dist/templates/cc-native/.claude/commands/cc-native/fresh-perspective.md +8 -0
  155. package/dist/templates/cc-native/.claude/commands/cc-native/specdev.md +10 -0
  156. package/dist/templates/cc-native/.claude/settings.json +119 -0
  157. package/dist/templates/cc-native/.windsurf/workflows/cc-native/fix.md +8 -0
  158. package/dist/templates/cc-native/.windsurf/workflows/cc-native/fresh-perspective.md +8 -0
  159. package/dist/templates/cc-native/.windsurf/workflows/cc-native/implement.md +8 -0
  160. package/dist/templates/cc-native/.windsurf/workflows/cc-native/research.md +8 -0
  161. package/dist/templates/cc-native/CC-NATIVE-README.md +192 -0
  162. package/dist/templates/cc-native/MIGRATION.md +86 -0
  163. package/dist/templates/cc-native/TEMPLATE-SCHEMA.md +331 -0
  164. package/dist/templates/cc-native/_cc-native/docs/PERMISSION_REQUEST_VERIFICATION.md +147 -0
  165. package/dist/templates/cc-native/_cc-native/hooks/__pycache__/add_plan_context.cpython-313.pyc +0 -0
  166. package/dist/templates/cc-native/_cc-native/hooks/__pycache__/archive_plan.cpython-313.pyc +0 -0
  167. package/dist/templates/cc-native/_cc-native/hooks/__pycache__/cc-native-agent-review.cpython-313.pyc +0 -0
  168. package/dist/templates/cc-native/_cc-native/hooks/__pycache__/cc-native-plan-review.cpython-313.pyc +0 -0
  169. package/dist/templates/cc-native/_cc-native/hooks/__pycache__/test_permission_request.cpython-313.pyc +0 -0
  170. package/dist/templates/cc-native/_cc-native/hooks/add_plan_context.py +150 -0
  171. package/dist/templates/cc-native/_cc-native/hooks/cc-native-plan-review.py +746 -0
  172. package/dist/templates/cc-native/_cc-native/hooks/suggest-fresh-perspective.py +339 -0
  173. package/dist/templates/cc-native/_cc-native/lib/__init__.py +57 -0
  174. package/dist/templates/cc-native/_cc-native/lib/__pycache__/__init__.cpython-313.pyc +0 -0
  175. package/dist/templates/cc-native/_cc-native/lib/__pycache__/orchestrator.cpython-313.pyc +0 -0
  176. package/dist/templates/cc-native/_cc-native/lib/__pycache__/state.cpython-313.pyc +0 -0
  177. package/dist/templates/cc-native/_cc-native/lib/__pycache__/utils.cpython-313.pyc +0 -0
  178. package/dist/templates/cc-native/_cc-native/lib/async_archive.py +68 -0
  179. package/dist/templates/cc-native/_cc-native/lib/atomic_write.py +98 -0
  180. package/dist/templates/cc-native/_cc-native/lib/constants.py +45 -0
  181. package/dist/templates/cc-native/_cc-native/lib/orchestrator.py +273 -0
  182. package/dist/templates/cc-native/_cc-native/lib/reviewers/__init__.py +28 -0
  183. package/dist/templates/cc-native/_cc-native/lib/reviewers/__pycache__/__init__.cpython-313.pyc +0 -0
  184. package/dist/templates/cc-native/_cc-native/lib/reviewers/__pycache__/agent.cpython-313.pyc +0 -0
  185. package/dist/templates/cc-native/_cc-native/lib/reviewers/__pycache__/base.cpython-313.pyc +0 -0
  186. package/dist/templates/cc-native/_cc-native/lib/reviewers/__pycache__/codex.cpython-313.pyc +0 -0
  187. package/dist/templates/cc-native/_cc-native/lib/reviewers/__pycache__/gemini.cpython-313.pyc +0 -0
  188. package/dist/templates/cc-native/_cc-native/lib/reviewers/agent.py +164 -0
  189. package/dist/templates/cc-native/_cc-native/lib/reviewers/base.py +89 -0
  190. package/dist/templates/cc-native/_cc-native/lib/reviewers/codex.py +119 -0
  191. package/dist/templates/cc-native/_cc-native/lib/reviewers/gemini.py +103 -0
  192. package/dist/templates/cc-native/_cc-native/lib/state.py +251 -0
  193. package/dist/templates/cc-native/_cc-native/lib/utils.py +830 -0
  194. package/dist/templates/cc-native/_cc-native/plan-review.config.json +76 -0
  195. package/dist/templates/cc-native/_cc-native/scripts/__pycache__/aggregate_agents.cpython-313.pyc +0 -0
  196. package/dist/templates/cc-native/_cc-native/scripts/aggregate_agents.py +151 -0
  197. package/dist/templates/cc-native/_cc-native/workflows/fresh-perspective.md +134 -0
  198. package/dist/templates/cc-native/_cc-native/workflows/specdev.md +9 -0
  199. package/dist/types/exit-codes.d.ts +11 -0
  200. package/dist/types/exit-codes.js +10 -0
  201. package/dist/types/index.d.ts +5 -0
  202. package/dist/types/index.js +7 -0
  203. package/oclif.manifest.json +405 -0
  204. package/package.json +109 -0
@@ -0,0 +1,186 @@
1
+ import { promises as fs } from 'node:fs';
2
+ import { join } from 'node:path';
3
+ import { confirm } from '@inquirer/prompts';
4
+ import { Flags } from '@oclif/core';
5
+ import BaseCommand from '../lib/base-command.js';
6
+ import { EXIT_CODES } from '../types/exit-codes.js';
7
+ /**
8
+ * Clean output folder(s) for methods.
9
+ * Removes all files and subdirectories from the method's output folder.
10
+ */
11
+ export default class CleanCommand extends BaseCommand {
12
+ static description = 'Clean output folder(s) for a specific method or all methods';
13
+ static examples = [
14
+ '<%= config.bin %> <%= command.id %> --method cc-native',
15
+ '<%= config.bin %> <%= command.id %> -m cc-native',
16
+ '<%= config.bin %> <%= command.id %> --all',
17
+ '<%= config.bin %> <%= command.id %> -a --dry-run',
18
+ '<%= config.bin %> <%= command.id %> --method cc-native --dry-run',
19
+ '<%= config.bin %> <%= command.id %> -m cc-native --force',
20
+ ];
21
+ static flags = {
22
+ ...BaseCommand.baseFlags,
23
+ all: Flags.boolean({
24
+ char: 'a',
25
+ description: 'Clean all output folders',
26
+ default: false,
27
+ exclusive: ['method'],
28
+ }),
29
+ 'dry-run': Flags.boolean({
30
+ char: 'n',
31
+ description: 'Show what would be deleted without actually deleting',
32
+ default: false,
33
+ }),
34
+ force: Flags.boolean({
35
+ char: 'f',
36
+ description: 'Skip confirmation prompt',
37
+ default: false,
38
+ }),
39
+ method: Flags.string({
40
+ char: 'm',
41
+ description: 'Method name whose output folder to clean (e.g., cc-native)',
42
+ exclusive: ['all'],
43
+ }),
44
+ };
45
+ async run() {
46
+ const { flags } = await this.parse(CleanCommand);
47
+ const targetDir = process.cwd();
48
+ // Validate: require either --method or --all
49
+ if (!flags.method && !flags.all) {
50
+ this.error('Either --method or --all is required.', {
51
+ exit: EXIT_CODES.GENERAL_ERROR,
52
+ });
53
+ }
54
+ try {
55
+ // Find output folders to clean
56
+ const outputFolders = flags.all
57
+ ? await this.findAllOutputFolders(targetDir)
58
+ : [`_${flags.method}-output`];
59
+ if (outputFolders.length === 0) {
60
+ this.logInfo('No output folders found.');
61
+ return;
62
+ }
63
+ // Collect contents from all folders (parallel stat and content retrieval)
64
+ const folderResults = await Promise.all(outputFolders.map(async (folder) => {
65
+ const folderPath = join(targetDir, folder);
66
+ const stat = await fs.stat(folderPath).catch(() => null);
67
+ if (!stat?.isDirectory()) {
68
+ return { folder, items: [], exists: false };
69
+ }
70
+ const items = await this.getContents(folderPath);
71
+ return { folder, items, exists: true };
72
+ }));
73
+ // Check for non-existent folder in single method mode
74
+ if (!flags.all) {
75
+ const result = folderResults[0];
76
+ if (result && !result.exists) {
77
+ this.logInfo(`Output folder '${result.folder}' does not exist.`);
78
+ return;
79
+ }
80
+ }
81
+ // Filter to folders with content
82
+ const allContents = folderResults.filter((r) => r.exists && r.items.length > 0);
83
+ const totalItems = allContents.reduce((sum, c) => sum + c.items.length, 0);
84
+ if (totalItems === 0) {
85
+ const msg = flags.all ? 'All output folders are empty.' : `Output folder '${outputFolders[0]}' is already empty.`;
86
+ this.logInfo(msg);
87
+ return;
88
+ }
89
+ // Show what will be deleted
90
+ this.log('');
91
+ this.logInfo(`Found ${totalItems} item(s) in ${allContents.length} output folder(s):`);
92
+ this.log('');
93
+ for (const { items } of allContents) {
94
+ for (const item of items) {
95
+ const relativePath = item.path.replace(targetDir + '\\', '').replace(targetDir + '/', '');
96
+ const suffix = item.isDirectory ? '/' : '';
97
+ this.log(` ${relativePath}${suffix}`);
98
+ }
99
+ }
100
+ this.log('');
101
+ // Dry run - just show files without deleting
102
+ if (flags['dry-run']) {
103
+ this.logInfo('Dry run complete. No files were deleted.');
104
+ return;
105
+ }
106
+ // Confirm deletion
107
+ if (!flags.force) {
108
+ const folderNames = allContents.map((c) => c.folder).join(', ');
109
+ const shouldDelete = await confirm({
110
+ message: `Delete all contents of ${allContents.length > 1 ? 'folders: ' : ''}${folderNames}?`,
111
+ default: false,
112
+ });
113
+ if (!shouldDelete) {
114
+ this.log('Operation cancelled.');
115
+ return;
116
+ }
117
+ }
118
+ // Delete all contents (parallel deletion with error tracking)
119
+ const allItems = allContents.flatMap((c) => c.items);
120
+ const deleteResults = await Promise.all(allItems.map(async (item) => {
121
+ try {
122
+ await fs.rm(item.path, { recursive: true, force: true });
123
+ this.logDebug(`Deleted: ${item.path}`);
124
+ return { success: true, path: item.path };
125
+ }
126
+ catch (error) {
127
+ const err = error;
128
+ this.logWarning(`Failed to delete ${item.path}: ${err.message}`);
129
+ return { success: false, path: item.path };
130
+ }
131
+ }));
132
+ const deletedCount = deleteResults.filter((r) => r.success).length;
133
+ this.log('');
134
+ const firstFolder = allContents[0];
135
+ const folderSummary = allContents.length === 1 && firstFolder ? `'${firstFolder.folder}'` : `${allContents.length} folders`;
136
+ this.logSuccess(`Cleaned ${folderSummary}: ${deletedCount} item(s) deleted.`);
137
+ }
138
+ catch (error) {
139
+ const err = error;
140
+ if (err.code === 'EACCES' || err.code === 'EPERM') {
141
+ this.error(`Permission denied. ${err.message}`, {
142
+ exit: EXIT_CODES.ENVIRONMENT_ERROR,
143
+ });
144
+ }
145
+ this.error(`Clean failed: ${err.message}`, {
146
+ exit: EXIT_CODES.GENERAL_ERROR,
147
+ });
148
+ }
149
+ }
150
+ /**
151
+ * Find all output folders in the target directory.
152
+ * Matches folders with pattern _*-output (e.g., _bmad-output, _gsd-output).
153
+ *
154
+ * @param targetDir - Directory to search in
155
+ * @returns Array of output folder names
156
+ */
157
+ async findAllOutputFolders(targetDir) {
158
+ try {
159
+ const entries = await fs.readdir(targetDir, { withFileTypes: true });
160
+ return entries
161
+ .filter((entry) => entry.isDirectory() && entry.name.startsWith('_') && entry.name.endsWith('-output'))
162
+ .map((entry) => entry.name);
163
+ }
164
+ catch {
165
+ return [];
166
+ }
167
+ }
168
+ /**
169
+ * Get all top-level contents of a directory.
170
+ *
171
+ * @param dirPath - Directory to list contents of
172
+ * @returns Array of content items with path and type info
173
+ */
174
+ async getContents(dirPath) {
175
+ try {
176
+ const entries = await fs.readdir(dirPath, { withFileTypes: true });
177
+ return entries.map((entry) => ({
178
+ isDirectory: entry.isDirectory(),
179
+ path: join(dirPath, entry.name),
180
+ }));
181
+ }
182
+ catch {
183
+ return [];
184
+ }
185
+ }
186
+ }
@@ -0,0 +1,51 @@
1
+ import BaseCommand from '../lib/base-command.js';
2
+ /**
3
+ * Clear workflow folders, output folders, IDE method folders, and update configurations.
4
+ */
5
+ export default class ClearCommand extends BaseCommand {
6
+ static description: string;
7
+ static examples: string[];
8
+ static flags: {
9
+ 'dry-run': import("@oclif/core/interfaces").BooleanFlag<boolean>;
10
+ force: import("@oclif/core/interfaces").BooleanFlag<boolean>;
11
+ template: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
12
+ debug: import("@oclif/core/interfaces").BooleanFlag<boolean>;
13
+ help: import("@oclif/core/interfaces").BooleanFlag<void>;
14
+ quiet: import("@oclif/core/interfaces").BooleanFlag<boolean>;
15
+ };
16
+ run(): Promise<void>;
17
+ /**
18
+ * Extract method names from workflow folder names (e.g., _gsd -> gsd).
19
+ *
20
+ * @param workflowFolders - Array of workflow folder paths
21
+ * @returns Array of method names
22
+ */
23
+ private extractMethodNames;
24
+ /**
25
+ * Find all IDE method folders (e.g., .claude/commands/{method}/, .claude/skills/{method}/).
26
+ * Searches within IDE configuration folders for method-specific subfolders.
27
+ *
28
+ * @param targetDir - Directory to search in
29
+ * @param template - Optional template/method name to filter by
30
+ * @returns Array of IDE method folder paths
31
+ */
32
+ private findIdeMethodFolders;
33
+ /**
34
+ * Find all output folders in the target directory.
35
+ * Looks for .aiwcli/_output/{method}/ structure.
36
+ *
37
+ * @param targetDir - Directory to search in
38
+ * @param template - Optional template/method name to filter by (e.g., 'bmad', 'gsd')
39
+ * @returns Array of output folder paths
40
+ */
41
+ private findOutputFolders;
42
+ /**
43
+ * Find all workflow folders in the target directory.
44
+ * Looks for .aiwcli/_{method}/ structure (e.g., .aiwcli/_gsd/, .aiwcli/_bmad/).
45
+ *
46
+ * @param targetDir - Directory to search in
47
+ * @param template - Optional template/method name to filter by (e.g., 'bmad', 'gsd')
48
+ * @returns Array of workflow folder paths
49
+ */
50
+ private findWorkflowFolders;
51
+ }