agileflow 2.99.0 → 2.99.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +10 -0
- package/README.md +3 -3
- package/lib/dashboard-protocol.js +38 -0
- package/lib/dashboard-server.js +197 -7
- package/lib/feedback.js +36 -9
- package/lib/git-operations.js +4 -1
- package/lib/merge-operations.js +25 -0
- package/lib/progress.js +7 -6
- package/lib/session-operations.js +611 -0
- package/lib/session-switching.js +191 -0
- package/lib/template-loader.js +4 -2
- package/lib/worktree-operations.js +5 -25
- package/package.json +1 -1
- package/scripts/agileflow-configure.js +13 -0
- package/scripts/agileflow-welcome.js +11 -6
- package/scripts/batch-pmap-loop.js +11 -4
- package/scripts/claude-tmux.sh +186 -103
- package/scripts/damage-control-bash.js +33 -3
- package/scripts/damage-control-edit.js +33 -3
- package/scripts/damage-control-write.js +33 -3
- package/scripts/lib/configure-features.js +10 -7
- package/scripts/lib/configure-repair.js +12 -2
- package/scripts/lib/process-cleanup.js +197 -15
- package/scripts/obtain-context.js +5 -0
- package/scripts/session-manager.js +156 -932
- package/scripts/spawn-parallel.js +15 -11
- package/src/core/agents/configuration/archival.md +2 -1
- package/src/core/agents/configuration/attribution.md +2 -1
- package/src/core/agents/configuration/ci.md +2 -1
- package/src/core/agents/configuration/damage-control.md +2 -1
- package/src/core/agents/configuration/git-config.md +2 -1
- package/src/core/agents/configuration/hooks.md +2 -1
- package/src/core/agents/configuration/precompact.md +2 -1
- package/src/core/agents/configuration/status-line.md +2 -1
- package/src/core/agents/configuration/verify.md +2 -1
- package/src/core/commands/adr/list.md +1 -1
- package/src/core/commands/adr/update.md +1 -1
- package/src/core/commands/adr/view.md +1 -1
- package/src/core/commands/adr.md +1 -1
- package/src/core/commands/agent.md +1 -1
- package/src/core/commands/api.md +1 -1
- package/src/core/commands/assign.md +1 -1
- package/src/core/commands/audit.md +1 -1
- package/src/core/commands/auto.md +1 -1
- package/src/core/commands/automate.md +1 -1
- package/src/core/commands/babysit.md +1 -1
- package/src/core/commands/baseline.md +1 -1
- package/src/core/commands/batch.md +1 -1
- package/src/core/commands/blockers.md +1 -1
- package/src/core/commands/board.md +1 -1
- package/src/core/commands/changelog.md +1 -1
- package/src/core/commands/choose.md +1 -1
- package/src/core/commands/ci.md +1 -1
- package/src/core/commands/compress.md +1 -1
- package/src/core/commands/configure.md +56 -1
- package/src/core/commands/context/export.md +1 -1
- package/src/core/commands/context/full.md +1 -1
- package/src/core/commands/context/note.md +1 -1
- package/src/core/commands/council.md +1 -1
- package/src/core/commands/debt.md +1 -1
- package/src/core/commands/deploy.md +1 -1
- package/src/core/commands/deps.md +1 -1
- package/src/core/commands/diagnose.md +1 -1
- package/src/core/commands/docs.md +1 -1
- package/src/core/commands/epic/list.md +1 -1
- package/src/core/commands/epic/view.md +1 -1
- package/src/core/commands/epic.md +1 -1
- package/src/core/commands/feedback.md +1 -1
- package/src/core/commands/handoff.md +1 -1
- package/src/core/commands/help.md +4 -190
- package/src/core/commands/ideate/history.md +1 -1
- package/src/core/commands/ideate/new.md +1 -1
- package/src/core/commands/impact.md +1 -1
- package/src/core/commands/install.md +1 -1
- package/src/core/commands/logic/audit.md +1 -1
- package/src/core/commands/maintain.md +1 -1
- package/src/core/commands/metrics.md +1 -1
- package/src/core/commands/multi-expert.md +1 -1
- package/src/core/commands/packages.md +1 -1
- package/src/core/commands/pr.md +1 -1
- package/src/core/commands/readme-sync.md +1 -1
- package/src/core/commands/research/analyze.md +1 -1
- package/src/core/commands/research/ask.md +1 -1
- package/src/core/commands/research/import.md +1 -1
- package/src/core/commands/research/list.md +1 -1
- package/src/core/commands/research/synthesize.md +1 -1
- package/src/core/commands/research/view.md +1 -1
- package/src/core/commands/retro.md +1 -1
- package/src/core/commands/review.md +1 -1
- package/src/core/commands/rlm.md +1 -1
- package/src/core/commands/roadmap/analyze.md +1 -1
- package/src/core/commands/rpi.md +1 -1
- package/src/core/commands/serve.md +127 -0
- package/src/core/commands/session/cleanup.md +1 -1
- package/src/core/commands/session/end.md +84 -23
- package/src/core/commands/session/history.md +1 -1
- package/src/core/commands/session/init.md +1 -1
- package/src/core/commands/session/new.md +198 -84
- package/src/core/commands/session/resume.md +1 -1
- package/src/core/commands/session/spawn.md +1 -1
- package/src/core/commands/session/status.md +1 -1
- package/src/core/commands/skill/create.md +1 -1
- package/src/core/commands/skill/delete.md +1 -1
- package/src/core/commands/skill/edit.md +1 -1
- package/src/core/commands/skill/list.md +1 -1
- package/src/core/commands/skill/test.md +1 -1
- package/src/core/commands/skill/upgrade.md +1 -1
- package/src/core/commands/sprint.md +1 -1
- package/src/core/commands/status.md +1 -1
- package/src/core/commands/story/list.md +1 -1
- package/src/core/commands/story/view.md +1 -1
- package/src/core/commands/story-validate.md +1 -1
- package/src/core/commands/story.md +1 -1
- package/src/core/commands/team/list.md +1 -1
- package/src/core/commands/team/start.md +1 -1
- package/src/core/commands/team/status.md +1 -1
- package/src/core/commands/team/stop.md +1 -1
- package/src/core/commands/template.md +1 -1
- package/src/core/commands/tests.md +1 -1
- package/src/core/commands/update.md +1 -1
- package/src/core/commands/validate-expertise.md +1 -1
- package/src/core/commands/velocity.md +1 -1
- package/src/core/commands/verify.md +1 -1
- package/src/core/commands/whats-new.md +1 -1
- package/src/core/commands/workflow.md +1 -1
- package/tools/cli/installers/ide/codex.js +12 -4
- package/tools/cli/lib/content-injector.js +23 -4
|
@@ -31,6 +31,7 @@ const { c, success, warning, error, dim, bold } = require('../lib/colors');
|
|
|
31
31
|
const { getProjectRoot, getStatusPath } = require('../lib/paths');
|
|
32
32
|
const { safeReadJSON } = require('../lib/errors');
|
|
33
33
|
const { getInheritedFlags, detectParentSessionFlags } = require('../lib/flag-detection');
|
|
34
|
+
const { feedback } = require('../lib/feedback');
|
|
34
35
|
|
|
35
36
|
// Import session manager functions
|
|
36
37
|
const sessionManager = require('./session-manager');
|
|
@@ -319,15 +320,19 @@ async function spawn(args) {
|
|
|
319
320
|
console.log('');
|
|
320
321
|
}
|
|
321
322
|
|
|
323
|
+
const task = feedback.task('Creating parallel sessions', sessionsToCreate.length);
|
|
322
324
|
const createdSessions = [];
|
|
323
325
|
for (const sessionSpec of sessionsToCreate) {
|
|
326
|
+
const spinner = feedback.spinner(`Creating session: ${sessionSpec.nickname}`);
|
|
327
|
+
spinner.start();
|
|
328
|
+
|
|
324
329
|
const result = await sessionManager.createSession({
|
|
325
330
|
nickname: sessionSpec.nickname,
|
|
326
331
|
branch: sessionSpec.branch,
|
|
327
332
|
});
|
|
328
333
|
|
|
329
334
|
if (!result.success) {
|
|
330
|
-
|
|
335
|
+
spinner.fail(`Failed: ${sessionSpec.nickname} - ${result.error}`);
|
|
331
336
|
continue;
|
|
332
337
|
}
|
|
333
338
|
|
|
@@ -343,8 +348,10 @@ async function spawn(args) {
|
|
|
343
348
|
// Show what was copied
|
|
344
349
|
const copied = [...(result.envFilesCopied || []), ...(result.foldersCopied || [])];
|
|
345
350
|
const copyInfo = copied.length ? dim(` (copied: ${copied.join(', ')})`) : '';
|
|
346
|
-
|
|
351
|
+
spinner.succeed(`Session ${result.sessionId}: ${sessionSpec.nickname}${copyInfo}`);
|
|
352
|
+
task.step(`${sessionSpec.nickname}`);
|
|
347
353
|
}
|
|
354
|
+
task.complete(`Created ${createdSessions.length} sessions`);
|
|
348
355
|
|
|
349
356
|
if (createdSessions.length === 0) {
|
|
350
357
|
console.error(error('\nNo sessions were created.'));
|
|
@@ -520,17 +527,14 @@ async function addWindow(args) {
|
|
|
520
527
|
// Get window number
|
|
521
528
|
let windowIndex;
|
|
522
529
|
try {
|
|
523
|
-
windowIndex =
|
|
524
|
-
'tmux',
|
|
525
|
-
['list-windows', '-t', currentSession, '-F', '#I:#W'],
|
|
526
|
-
{
|
|
530
|
+
windowIndex =
|
|
531
|
+
execFileSync('tmux', ['list-windows', '-t', currentSession, '-F', '#I:#W'], {
|
|
527
532
|
encoding: 'utf8',
|
|
528
533
|
stdio: ['pipe', 'pipe', 'pipe'],
|
|
529
|
-
}
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
?.split(':')[0] || '?';
|
|
534
|
+
})
|
|
535
|
+
.split('\n')
|
|
536
|
+
.find(line => line.endsWith(`:${windowName}`))
|
|
537
|
+
?.split(':')[0] || '?';
|
|
534
538
|
} catch {
|
|
535
539
|
windowIndex = '?';
|
|
536
540
|
}
|
package/src/core/commands/adr.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
description: Create an Architecture Decision Record
|
|
3
|
-
argument-hint: NUMBER=<number> TITLE=<text> CONTEXT=<text> DECISION=<text> CONSEQUENCES=<text> [LINKS=<text>]
|
|
3
|
+
argument-hint: "NUMBER=<number> TITLE=<text> CONTEXT=<text> DECISION=<text> CONSEQUENCES=<text> [LINKS=<text>]"
|
|
4
4
|
compact_context:
|
|
5
5
|
priority: medium
|
|
6
6
|
preserve_rules:
|
package/src/core/commands/api.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
description: Assign or reassign a story to an owner
|
|
3
|
-
argument-hint: STORY=<US-ID> NEW_OWNER=<id> [NEW_STATUS=<status>] [NOTE=<text>]
|
|
3
|
+
argument-hint: "STORY=<US-ID> NEW_OWNER=<id> [NEW_STATUS=<status>] [NOTE=<text>]"
|
|
4
4
|
compact_context:
|
|
5
5
|
priority: high
|
|
6
6
|
preserve_rules:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
description: Auto-generate stories from PRDs, mockups, or specs
|
|
3
|
-
argument-hint: SOURCE=<path|url> [EPIC=<EP-ID>] [OWNER=<id>] [AUTO_CREATE=true|false]
|
|
3
|
+
argument-hint: "SOURCE=<path|url> [EPIC=<EP-ID>] [OWNER=<id>] [AUTO_CREATE=true|false]"
|
|
4
4
|
compact_context:
|
|
5
5
|
priority: high
|
|
6
6
|
preserve_rules:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
description: Manage scheduled automations for recurring tasks
|
|
3
|
-
argument-hint: ACTION=list|add|edit|remove|run|presets [ID=<automation-id>]
|
|
3
|
+
argument-hint: "ACTION=list|add|edit|remove|run|presets [ID=<automation-id>]"
|
|
4
4
|
compact_context:
|
|
5
5
|
priority: medium
|
|
6
6
|
preserve_rules:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
description: Track and resolve blockers with actionable suggestions
|
|
3
|
-
argument-hint: [AGENT=<id>] [SHOW_RESOLVED=true|false] [DETAILED=true|false]
|
|
3
|
+
argument-hint: "[AGENT=<id>] [SHOW_RESOLVED=true|false] [DETAILED=true|false]"
|
|
4
4
|
model: haiku
|
|
5
5
|
compact_context:
|
|
6
6
|
priority: high
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
description: Display visual kanban board with WIP limits
|
|
3
|
-
argument-hint: [EPIC=<EP-ID>] [OWNER=<id>] [FORMAT=ascii|markdown|html] [GROUP_BY=status|owner|epic]
|
|
3
|
+
argument-hint: "[EPIC=<EP-ID>] [OWNER=<id>] [FORMAT=ascii|markdown|html] [GROUP_BY=status|owner|epic]"
|
|
4
4
|
model: haiku
|
|
5
5
|
type: output-only # Board display - read-only visualization, not an ongoing task
|
|
6
6
|
compact_context:
|
package/src/core/commands/ci.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
description: Configure AgileFlow features, hooks, and project infrastructure (Visual E2E, CI, git)
|
|
3
|
-
argument-hint: [--profile=<name>] [--save-profile=<name>] [--list-profiles] [--export-profile=<name>] [--import-profile=<file>] [--enable/--disable=features]
|
|
3
|
+
argument-hint: "[--profile=<name>] [--save-profile=<name>] [--list-profiles] [--export-profile=<name>] [--import-profile=<file>] [--enable/--disable=features]"
|
|
4
4
|
compact_context:
|
|
5
5
|
priority: critical
|
|
6
6
|
preserve_rules:
|
|
@@ -443,6 +443,61 @@ When creating new sessions with /agileflow:session:new, this will be the
|
|
|
443
443
|
recommended option. You can still choose a different mode per-session.
|
|
444
444
|
```
|
|
445
445
|
|
|
446
|
+
**If user selected "Skip permissions" or "Accept edits only"**, offer Claude settings integration:
|
|
447
|
+
|
|
448
|
+
```xml
|
|
449
|
+
<invoke name="AskUserQuestion">
|
|
450
|
+
<parameter name="questions">[{
|
|
451
|
+
"question": "Also configure Claude to default to this mode?",
|
|
452
|
+
"header": "Claude settings",
|
|
453
|
+
"multiSelect": false,
|
|
454
|
+
"options": [
|
|
455
|
+
{"label": "af wrapper only (Recommended)", "description": "The 'af' command already uses this setting. No other changes needed."},
|
|
456
|
+
{"label": "Also add shell alias", "description": "Add alias to your shell profile so 'claude' also uses this mode"},
|
|
457
|
+
{"label": "No thanks", "description": "Keep current setup"}
|
|
458
|
+
]
|
|
459
|
+
}]</parameter>
|
|
460
|
+
</invoke>
|
|
461
|
+
```
|
|
462
|
+
|
|
463
|
+
**If "Also add shell alias" selected:**
|
|
464
|
+
|
|
465
|
+
Determine the flag based on the selected mode:
|
|
466
|
+
- `skip-permissions` → `--dangerously-skip-permissions`
|
|
467
|
+
- `accept-edits` → `--permission-mode acceptEdits`
|
|
468
|
+
|
|
469
|
+
```bash
|
|
470
|
+
# Detect shell config file
|
|
471
|
+
SHELL_RC="$HOME/.bashrc"
|
|
472
|
+
[ -f "$HOME/.zshrc" ] && SHELL_RC="$HOME/.zshrc"
|
|
473
|
+
|
|
474
|
+
# Check if alias already exists
|
|
475
|
+
grep -q 'alias claude=' "$SHELL_RC" 2>/dev/null
|
|
476
|
+
```
|
|
477
|
+
|
|
478
|
+
If alias doesn't exist, add it using the Edit tool on the shell RC file:
|
|
479
|
+
```bash
|
|
480
|
+
# Append alias (idempotent - only if not already present)
|
|
481
|
+
# For skip-permissions:
|
|
482
|
+
echo 'alias claude="claude --dangerously-skip-permissions"' >> "$SHELL_RC"
|
|
483
|
+
# For accept-edits:
|
|
484
|
+
echo 'alias claude="claude --permission-mode acceptEdits"' >> "$SHELL_RC"
|
|
485
|
+
```
|
|
486
|
+
|
|
487
|
+
Display:
|
|
488
|
+
```
|
|
489
|
+
✅ Shell alias added to {SHELL_RC}
|
|
490
|
+
Run `source {SHELL_RC}` or open a new terminal for the alias to take effect.
|
|
491
|
+
|
|
492
|
+
To remove later: edit {SHELL_RC} and remove the 'alias claude=' line.
|
|
493
|
+
```
|
|
494
|
+
|
|
495
|
+
**If "af wrapper only" or "No thanks" selected:**
|
|
496
|
+
```
|
|
497
|
+
The 'af' command already reads the configured startup mode automatically.
|
|
498
|
+
No additional changes needed.
|
|
499
|
+
```
|
|
500
|
+
|
|
446
501
|
---
|
|
447
502
|
|
|
448
503
|
### If "Infrastructure" selected
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
description: Convene AI Council for strategic decisions with three perspectives (Optimist, Advocate, Analyst)
|
|
3
|
-
argument-hint: <question> [--mode parallel|debate] [--rounds N]
|
|
3
|
+
argument-hint: "<question> [--mode parallel|debate] [--rounds N]"
|
|
4
4
|
compact_context:
|
|
5
5
|
priority: high
|
|
6
6
|
preserve_rules:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
description: Visualize dependency graph with critical path detection
|
|
3
|
-
argument-hint: [SCOPE=story|epic|all] [EPIC=<EP-ID>] [STORY=<US-ID>] [FORMAT=ascii|mermaid|graphviz|json] [ANALYSIS=critical-path|circular|blocking|all]
|
|
3
|
+
argument-hint: "[SCOPE=story|epic|all] [EPIC=<EP-ID>] [STORY=<US-ID>] [FORMAT=ascii|mermaid|graphviz|json] [ANALYSIS=critical-path|circular|blocking|all]"
|
|
4
4
|
model: haiku
|
|
5
5
|
compact_context:
|
|
6
6
|
priority: high
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
description: Create a new epic with stories
|
|
3
|
-
argument-hint: EPIC=<EP-ID> TITLE=<text> OWNER=<id> GOAL=<text> [STORIES=<list>] [RESEARCH=<file>]
|
|
3
|
+
argument-hint: "EPIC=<EP-ID> TITLE=<text> OWNER=<id> GOAL=<text> [STORIES=<list>] [RESEARCH=<file>]"
|
|
4
4
|
compact_context:
|
|
5
5
|
priority: high
|
|
6
6
|
preserve_rules:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
description: Document work handoff between agents
|
|
3
|
-
argument-hint: STORY=<US-ID> FROM=<id> TO=<id> [SUMMARY=<text>] [BLOCKERS=<list>]
|
|
3
|
+
argument-hint: "STORY=<US-ID> FROM=<id> TO=<id> [SUMMARY=<text>] [BLOCKERS=<list>]"
|
|
4
4
|
compact_context:
|
|
5
5
|
priority: high
|
|
6
6
|
preserve_rules:
|