agileflow 2.95.2 → 2.96.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 (81) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/README.md +6 -6
  3. package/lib/api-routes.js +605 -0
  4. package/lib/api-server.js +260 -0
  5. package/lib/claude-cli-bridge.js +221 -0
  6. package/lib/dashboard-protocol.js +541 -0
  7. package/lib/dashboard-server.js +1601 -0
  8. package/lib/drivers/claude-driver.ts +310 -0
  9. package/lib/drivers/codex-driver.ts +454 -0
  10. package/lib/drivers/driver-manager.ts +158 -0
  11. package/lib/drivers/gemini-driver.ts +485 -0
  12. package/lib/drivers/index.ts +17 -0
  13. package/lib/flag-detection.js +350 -0
  14. package/lib/git-operations.js +267 -0
  15. package/lib/lock-file.js +144 -0
  16. package/lib/merge-operations.js +959 -0
  17. package/lib/protocol/driver.ts +360 -0
  18. package/lib/protocol/index.ts +12 -0
  19. package/lib/protocol/ir.ts +271 -0
  20. package/lib/session-display.js +330 -0
  21. package/lib/worktree-operations.js +221 -0
  22. package/package.json +2 -2
  23. package/scripts/agileflow-welcome.js +272 -24
  24. package/scripts/api-server-runner.js +177 -0
  25. package/scripts/archive-completed-stories.sh +22 -0
  26. package/scripts/automation-run-due.js +126 -0
  27. package/scripts/backfill-ideation-status.js +124 -0
  28. package/scripts/claude-tmux.sh +62 -1
  29. package/scripts/context-loader.js +292 -0
  30. package/scripts/dashboard-serve.js +323 -0
  31. package/scripts/lib/automation-registry.js +544 -0
  32. package/scripts/lib/automation-runner.js +476 -0
  33. package/scripts/lib/concurrency-limiter.js +513 -0
  34. package/scripts/lib/configure-features.js +46 -0
  35. package/scripts/lib/context-formatter.js +61 -0
  36. package/scripts/lib/damage-control-utils.js +29 -4
  37. package/scripts/lib/hook-metrics.js +324 -0
  38. package/scripts/lib/ideation-index.js +1196 -0
  39. package/scripts/lib/process-cleanup.js +359 -0
  40. package/scripts/lib/quality-gates.js +574 -0
  41. package/scripts/lib/status-task-bridge.js +522 -0
  42. package/scripts/lib/sync-ideation-status.js +292 -0
  43. package/scripts/lib/task-registry-cache.js +490 -0
  44. package/scripts/lib/task-registry.js +1181 -0
  45. package/scripts/migrate-ideation-index.js +515 -0
  46. package/scripts/precompact-context.sh +104 -0
  47. package/scripts/ralph-loop.js +2 -2
  48. package/scripts/session-manager.js +363 -2770
  49. package/scripts/spawn-parallel.js +45 -9
  50. package/src/core/agents/api-validator.md +180 -0
  51. package/src/core/agents/api.md +2 -0
  52. package/src/core/agents/code-reviewer.md +289 -0
  53. package/src/core/agents/configuration/damage-control.md +17 -0
  54. package/src/core/agents/database.md +2 -0
  55. package/src/core/agents/error-analyzer.md +203 -0
  56. package/src/core/agents/logic-analyzer-edge.md +171 -0
  57. package/src/core/agents/logic-analyzer-flow.md +254 -0
  58. package/src/core/agents/logic-analyzer-invariant.md +207 -0
  59. package/src/core/agents/logic-analyzer-race.md +267 -0
  60. package/src/core/agents/logic-analyzer-type.md +218 -0
  61. package/src/core/agents/logic-consensus.md +256 -0
  62. package/src/core/agents/orchestrator.md +89 -1
  63. package/src/core/agents/schema-validator.md +451 -0
  64. package/src/core/agents/team-coordinator.md +328 -0
  65. package/src/core/agents/ui-validator.md +328 -0
  66. package/src/core/agents/ui.md +2 -0
  67. package/src/core/commands/api.md +267 -0
  68. package/src/core/commands/automate.md +415 -0
  69. package/src/core/commands/babysit.md +290 -9
  70. package/src/core/commands/ideate/history.md +403 -0
  71. package/src/core/commands/{ideate.md → ideate/new.md} +244 -34
  72. package/src/core/commands/logic/audit.md +368 -0
  73. package/src/core/commands/roadmap/analyze.md +1 -1
  74. package/src/core/experts/documentation/expertise.yaml +29 -2
  75. package/src/core/templates/CONTEXT.md.example +49 -0
  76. package/src/core/templates/claude-settings.advanced.example.json +4 -0
  77. package/tools/cli/commands/serve.js +456 -0
  78. package/tools/cli/installers/core/installer.js +7 -2
  79. package/tools/cli/installers/ide/claude-code.js +85 -0
  80. package/tools/cli/lib/content-injector.js +27 -1
  81. package/tools/cli/lib/ui.js +26 -57
@@ -103,26 +103,21 @@ const IDE_CHOICES = IdeRegistry.getChoices();
103
103
 
104
104
  /**
105
105
  * Prompt for installation configuration
106
+ * Streamlined to ask only essential questions - uses smart defaults for the rest.
106
107
  * @returns {Promise<Object>} Installation configuration
107
108
  */
108
109
  async function promptInstall() {
109
110
  displayLogo();
110
111
 
111
- const answers = await inquirer.prompt([
112
- {
113
- type: 'input',
114
- name: 'directory',
115
- message: 'Where would you like to install AgileFlow?',
116
- default: '.',
117
- validate: input => {
118
- const resolved = path.resolve(input);
119
- const parent = path.dirname(resolved);
120
- if (!fs.existsSync(parent)) {
121
- return `Parent directory does not exist: ${parent}`;
122
- }
123
- return true;
124
- },
125
- },
112
+ // Always install to current directory
113
+ const directory = path.resolve('.');
114
+
115
+ // Check if docs/ folder already exists (conflict detection)
116
+ const defaultDocsFolder = 'docs';
117
+ const docsExists = fs.existsSync(path.join(directory, defaultDocsFolder));
118
+
119
+ // Build questions dynamically - only ask what's necessary
120
+ const questions = [
126
121
  {
127
122
  type: 'checkbox',
128
123
  name: 'ides',
@@ -135,59 +130,33 @@ async function promptInstall() {
135
130
  return true;
136
131
  },
137
132
  },
138
- {
139
- type: 'input',
140
- name: 'userName',
141
- message: 'What should agents call you?',
142
- default: 'Developer',
143
- },
144
- {
145
- type: 'input',
146
- name: 'agileflowFolder',
147
- message: 'AgileFlow installation folder name:',
148
- default: '.agileflow',
149
- validate: input => {
150
- if (!/^[a-zA-Z0-9._-]+$/.test(input)) {
151
- return 'Folder name can only contain letters, numbers, dots, underscores, and hyphens';
152
- }
153
- return true;
154
- },
155
- },
156
- {
133
+ ];
134
+
135
+ // Only ask about docs folder if it already exists (potential conflict)
136
+ if (docsExists) {
137
+ questions.push({
157
138
  type: 'input',
158
139
  name: 'docsFolder',
159
- message: 'Documentation folder name:',
160
- default: 'docs',
140
+ message: `A 'docs/' folder already exists. Use a different name for AgileFlow docs?`,
141
+ default: 'agileflow-docs',
161
142
  validate: input => {
162
143
  if (!/^[a-zA-Z0-9._-]+$/.test(input)) {
163
144
  return 'Folder name can only contain letters, numbers, dots, underscores, and hyphens';
164
145
  }
165
146
  return true;
166
147
  },
167
- },
168
- {
169
- type: 'confirm',
170
- name: 'updateGitignore',
171
- message: 'Create/update .gitignore with recommended entries?',
172
- default: true,
173
- },
174
- {
175
- type: 'confirm',
176
- name: 'claudeMdReinforcement',
177
- message:
178
- 'Add /babysit AskUserQuestion rules to CLAUDE.md? (recommended for context preservation)',
179
- default: true,
180
- },
181
- ]);
148
+ });
149
+ }
150
+
151
+ const answers = await inquirer.prompt(questions);
182
152
 
183
153
  return {
184
- directory: path.resolve(answers.directory),
154
+ directory,
185
155
  ides: answers.ides,
186
- userName: answers.userName,
187
- agileflowFolder: answers.agileflowFolder,
188
- docsFolder: answers.docsFolder,
189
- updateGitignore: answers.updateGitignore,
190
- claudeMdReinforcement: answers.claudeMdReinforcement,
156
+ userName: 'Developer', // Smart default - rarely customized
157
+ agileflowFolder: '.agileflow', // Smart default - never changed
158
+ docsFolder: answers.docsFolder || defaultDocsFolder,
159
+ updateGitignore: true, // Smart default - always want this
191
160
  };
192
161
  }
193
162