fix: prevent modules from showing as obsolete during reinstall

- Skip module selection prompt during update/reinstall
- Keep all existing installed modules by default
- This prevents inquirer from showing modules as 'obsolete items' with confusing delete options
- Modules are now preserved during update/reinstall operations
This commit is contained in:
Brian Madison 2025-12-06 16:56:09 -06:00
parent 74d071708d
commit 8d044f8c3e
9 changed files with 63 additions and 53 deletions

View File

@ -415,9 +415,9 @@ menu:
```yaml ```yaml
critical_actions: critical_actions:
- 'Load {agent-folder}/memories.md' - 'Load ./memories.md'
- 'Follow {agent-folder}/instructions.md' - 'Follow ./instructions.md'
- 'ONLY access {agent-folder}/' - 'ONLY access ./'
prompts: prompts:
- id: reflect - id: reflect
@ -431,7 +431,7 @@ menu:
description: 'Write journal entry' description: 'Write journal entry'
- trigger: save - trigger: save
action: 'Update {agent-folder}/memories.md with session insights' action: 'Update ./memories.md with session insights'
description: "Save today's session" description: "Save today's session"
- trigger: patterns - trigger: patterns

View File

@ -57,9 +57,9 @@ agent:
- My approach to memory and learning - My approach to memory and learning
critical_actions: critical_actions:
- 'Load COMPLETE file {agent-folder}/{agent-name}-sidecar/memories.md and remember all past insights' - 'Load COMPLETE file ./{agent-name}-sidecar/memories.md and remember all past insights'
- 'Load COMPLETE file {agent-folder}/{agent-name}-sidecar/instructions.md and follow ALL protocols' - 'Load COMPLETE file ./{agent-name}-sidecar/instructions.md and follow ALL protocols'
- 'ONLY read/write files in {agent-folder}/{agent-name}-sidecar/ - this is our private space' - 'ONLY read/write files in ./{agent-name}-sidecar/ - this is our private space'
- 'Address user as {{greeting_name}}' - 'Address user as {{greeting_name}}'
- 'Track patterns, themes, and important moments' - 'Track patterns, themes, and important moments'
- 'Reference past interactions naturally to show continuity' - 'Reference past interactions naturally to show continuity'
@ -94,7 +94,7 @@ agent:
description: 'Primary agent function' description: 'Primary agent function'
- trigger: remember - trigger: remember
action: 'Update {agent-folder}/{agent-name}-sidecar/memories.md with session insights' action: 'Update ./{agent-name}-sidecar/memories.md with session insights'
description: 'Save what we discussed today' description: 'Save what we discussed today'
- trigger: patterns - trigger: patterns
@ -102,7 +102,7 @@ agent:
description: 'Recall patterns from past interactions' description: 'Recall patterns from past interactions'
- trigger: insight - trigger: insight
action: 'Document breakthrough in {agent-folder}/{agent-name}-sidecar/breakthroughs.md' action: 'Document breakthrough in ./{agent-name}-sidecar/breakthroughs.md'
description: 'Record a significant insight' description: 'Record a significant insight'
install_config: install_config:
@ -184,9 +184,9 @@ Add domain-specific documentation here.
```yaml ```yaml
critical_actions: critical_actions:
- 'Load COMPLETE file {agent-folder}/{sidecar}/memories.md and remember all past insights' - 'Load COMPLETE file ./{sidecar}/memories.md and remember all past insights'
- 'Load COMPLETE file {agent-folder}/{sidecar}/instructions.md and follow ALL protocols' - 'Load COMPLETE file ./{sidecar}/instructions.md and follow ALL protocols'
- 'ONLY read/write files in {agent-folder}/{sidecar}/ - this is our private space' - 'ONLY read/write files in ./{sidecar}/ - this is our private space'
``` ```
**Key patterns:** **Key patterns:**
@ -211,9 +211,9 @@ Same as simple agents, PLUS:
1. **Critical actions become numbered activation steps** 1. **Critical actions become numbered activation steps**
```xml ```xml
<step n="4">Load COMPLETE file {agent-folder}/memories.md...</step> <step n="4">Load COMPLETE file ./memories.md...</step>
<step n="5">Load COMPLETE file {agent-folder}/instructions.md...</step> <step n="5">Load COMPLETE file ./instructions.md...</step>
<step n="6">ONLY read/write files in {agent-folder}/...</step> <step n="6">ONLY read/write files in ./...</step>
``` ```
2. **Sidecar files copied during installation** 2. **Sidecar files copied during installation**
@ -260,7 +260,7 @@ The installer:
```yaml ```yaml
menu: menu:
- trigger: save - trigger: save
action: "Update {agent-folder}/sidecar/memories.md with today's session insights" action: "Update ./sidecar/memories.md with today's session insights"
description: 'Save session to memory' description: 'Save session to memory'
``` ```
@ -281,7 +281,7 @@ prompts:
```yaml ```yaml
menu: menu:
- trigger: insight - trigger: insight
action: 'Document in {agent-folder}/sidecar/breakthroughs.md with date, context, significance' action: 'Document in ./sidecar/breakthroughs.md with date, context, significance'
description: 'Record meaningful insight' description: 'Record meaningful insight'
``` ```
@ -291,7 +291,7 @@ menu:
```yaml ```yaml
critical_actions: critical_actions:
- 'ONLY read/write files in {agent-folder}/sidecar/ - NO OTHER FOLDERS' - 'ONLY read/write files in ./sidecar/ - NO OTHER FOLDERS'
``` ```
### User Space Access ### User Space Access
@ -305,8 +305,8 @@ critical_actions:
```yaml ```yaml
critical_actions: critical_actions:
- 'Load knowledge from {agent-folder}/knowledge/ but NEVER modify' - 'Load knowledge from ./knowledge/ but NEVER modify'
- 'Write ONLY to {agent-folder}/sessions/' - 'Write ONLY to ./sessions/'
``` ```
## Best Practices ## Best Practices

View File

@ -51,7 +51,7 @@ menu:
# Direct sidecar file action # Direct sidecar file action
- trigger: 'insight' - trigger: 'insight'
action: 'Document this breakthrough in {agent-folder}/journal-keeper-sidecar/breakthroughs.md' action: 'Document this breakthrough in ./journal-keeper-sidecar/breakthroughs.md'
description: 'Record a meaningful insight' description: 'Record a meaningful insight'
``` ```
@ -63,9 +63,9 @@ Expert Agents MUST load sidecar files explicitly:
```yaml ```yaml
critical_actions: critical_actions:
- 'Load COMPLETE file {agent-folder}/journal-keeper-sidecar/memories.md' - 'Load COMPLETE file ./journal-keeper-sidecar/memories.md'
- 'Load COMPLETE file {agent-folder}/journal-keeper-sidecar/instructions.md' - 'Load COMPLETE file ./journal-keeper-sidecar/instructions.md'
- 'ONLY read/write files in {agent-folder}/journal-keeper-sidecar/' - 'ONLY read/write files in ./journal-keeper-sidecar/'
``` ```
**Key points:** **Key points:**

View File

@ -20,9 +20,9 @@ agent:
- Reflection transforms experience into wisdom - Reflection transforms experience into wisdom
critical_actions: critical_actions:
- "Load COMPLETE file {agent-folder}/journal-keeper-sidecar/memories.md and remember all past insights" - "Load COMPLETE file ./journal-keeper-sidecar/memories.md and remember all past insights"
- "Load COMPLETE file {agent-folder}/journal-keeper-sidecar/instructions.md and follow ALL journaling protocols" - "Load COMPLETE file ./journal-keeper-sidecar/instructions.md and follow ALL journaling protocols"
- "ONLY read/write files in {agent-folder}/journal-keeper-sidecar/ - this is our private space" - "ONLY read/write files in ./journal-keeper-sidecar/ - this is our private space"
- "Track mood patterns, recurring themes, and breakthrough moments" - "Track mood patterns, recurring themes, and breakthrough moments"
- "Reference past entries naturally to show continuity" - "Reference past entries naturally to show continuity"
@ -120,7 +120,7 @@ agent:
description: "Write today's journal entry" description: "Write today's journal entry"
- trigger: quick - trigger: quick
action: "Save a quick, unstructured entry to {agent-folder}/journal-keeper-sidecar/entries/entry-{date}.md with timestamp and any patterns noticed" action: "Save a quick, unstructured entry to ./journal-keeper-sidecar/entries/entry-{date}.md with timestamp and any patterns noticed"
description: "Quick capture without prompts" description: "Quick capture without prompts"
- trigger: mood - trigger: mood
@ -140,13 +140,13 @@ agent:
description: "Reflect on the past week" description: "Reflect on the past week"
- trigger: insight - trigger: insight
action: "Document this breakthrough in {agent-folder}/journal-keeper-sidecar/breakthroughs.md with date and significance" action: "Document this breakthrough in ./journal-keeper-sidecar/breakthroughs.md with date and significance"
description: "Record a meaningful insight" description: "Record a meaningful insight"
- trigger: read-back - trigger: read-back
action: "Load and share entries from {agent-folder}/journal-keeper-sidecar/entries/ for requested timeframe, highlighting themes and growth" action: "Load and share entries from ./journal-keeper-sidecar/entries/ for requested timeframe, highlighting themes and growth"
description: "Review past entries" description: "Review past entries"
- trigger: save - trigger: save
action: "Update {agent-folder}/journal-keeper-sidecar/memories.md with today's session insights and emotional markers" action: "Update ./journal-keeper-sidecar/memories.md with today's session insights and emotional markers"
description: "Save what we discussed today" description: "Save what we discussed today"

View File

@ -51,7 +51,7 @@ menu:
# Direct sidecar file action # Direct sidecar file action
- trigger: 'insight' - trigger: 'insight'
action: 'Document this breakthrough in {agent-folder}/journal-keeper-sidecar/breakthroughs.md' action: 'Document this breakthrough in ./journal-keeper-sidecar/breakthroughs.md'
description: 'Record a meaningful insight' description: 'Record a meaningful insight'
``` ```
@ -63,9 +63,9 @@ Expert Agents MUST load sidecar files explicitly:
```yaml ```yaml
critical_actions: critical_actions:
- 'Load COMPLETE file {agent-folder}/journal-keeper-sidecar/memories.md' - 'Load COMPLETE file ./journal-keeper-sidecar/memories.md'
- 'Load COMPLETE file {agent-folder}/journal-keeper-sidecar/instructions.md' - 'Load COMPLETE file ./journal-keeper-sidecar/instructions.md'
- 'ONLY read/write files in {agent-folder}/journal-keeper-sidecar/' - 'ONLY read/write files in ./journal-keeper-sidecar/'
``` ```
**Key points:** **Key points:**

View File

@ -20,9 +20,9 @@ agent:
- Reflection transforms experience into wisdom - Reflection transforms experience into wisdom
critical_actions: critical_actions:
- "Load COMPLETE file {agent-folder}/journal-keeper-sidecar/memories.md and remember all past insights" - "Load COMPLETE file ./journal-keeper-sidecar/memories.md and remember all past insights"
- "Load COMPLETE file {agent-folder}/journal-keeper-sidecar/instructions.md and follow ALL journaling protocols" - "Load COMPLETE file ./journal-keeper-sidecar/instructions.md and follow ALL journaling protocols"
- "ONLY read/write files in {agent-folder}/journal-keeper-sidecar/ - this is our private space" - "ONLY read/write files in ./journal-keeper-sidecar/ - this is our private space"
- "Track mood patterns, recurring themes, and breakthrough moments" - "Track mood patterns, recurring themes, and breakthrough moments"
- "Reference past entries naturally to show continuity" - "Reference past entries naturally to show continuity"
@ -120,7 +120,7 @@ agent:
description: "Write today's journal entry" description: "Write today's journal entry"
- trigger: quick - trigger: quick
action: "Save a quick, unstructured entry to {agent-folder}/journal-keeper-sidecar/entries/entry-{date}.md with timestamp and any patterns noticed" action: "Save a quick, unstructured entry to ./journal-keeper-sidecar/entries/entry-{date}.md with timestamp and any patterns noticed"
description: "Quick capture without prompts" description: "Quick capture without prompts"
- trigger: mood - trigger: mood
@ -140,13 +140,13 @@ agent:
description: "Reflect on the past week" description: "Reflect on the past week"
- trigger: insight - trigger: insight
action: "Document this breakthrough in {agent-folder}/journal-keeper-sidecar/breakthroughs.md with date and significance" action: "Document this breakthrough in ./journal-keeper-sidecar/breakthroughs.md with date and significance"
description: "Record a meaningful insight" description: "Record a meaningful insight"
- trigger: read-back - trigger: read-back
action: "Load and share entries from {agent-folder}/journal-keeper-sidecar/entries/ for requested timeframe, highlighting themes and growth" action: "Load and share entries from ./journal-keeper-sidecar/entries/ for requested timeframe, highlighting themes and growth"
description: "Review past entries" description: "Review past entries"
- trigger: save - trigger: save
action: "Update {agent-folder}/journal-keeper-sidecar/memories.md with today's session insights and emotional markers" action: "Update ./journal-keeper-sidecar/memories.md with today's session insights and emotional markers"
description: "Save what we discussed today" description: "Save what we discussed today"

View File

@ -164,8 +164,8 @@ agent:
# Only include if agent needs memory/persistence # Only include if agent needs memory/persistence
critical_actions: critical_actions:
- 'Load COMPLETE file {agent-folder}/[agent-name]-sidecar/memories.md and integrate all past interactions' - 'Load COMPLETE file ./[agent-name]-sidecar/memories.md and integrate all past interactions'
- 'ONLY read/write files in {agent-folder}/[agent-name]-sidecar/ - this is our private workspace' - 'ONLY read/write files in ./[agent-name]-sidecar/ - this is our private workspace'
# Only include if agent has embedded prompts # Only include if agent has embedded prompts
prompts: prompts:
@ -209,7 +209,7 @@ agent:
# Quick inline actions # Quick inline actions
- trigger: 'save-item' - trigger: 'save-item'
action: 'Save to {agent-folder}/[agent-name]-sidecar/file.md' action: 'Save to ./[agent-name]-sidecar/file.md'
description: 'Save item 💾' description: 'Save item 💾'
``` ```

View File

@ -27,9 +27,9 @@ agent:
# Optional: Only include if agent needs memory/persistence # Optional: Only include if agent needs memory/persistence
critical_actions: critical_actions:
- 'Load COMPLETE file {agent-folder}/[agent-name]-sidecar/memories.md and integrate all past interactions' - 'Load COMPLETE file ./[agent-name]-sidecar/memories.md and integrate all past interactions'
- 'Load COMPLETE file {agent-folder}/[agent-name]-sidecar/instructions.md and follow ALL protocols' - 'Load COMPLETE file ./[agent-name]-sidecar/instructions.md and follow ALL protocols'
- 'ONLY read/write files in {agent-folder}/[agent-name]-sidecar/ - this is our private workspace' - 'ONLY read/write files in ./[agent-name]-sidecar/ - this is our private workspace'
# Optional: Embedded prompts for common interactions # Optional: Embedded prompts for common interactions
prompts: prompts:
@ -134,7 +134,7 @@ Expert agents support three types of menu actions:
```yaml ```yaml
- trigger: 'save-insight' - trigger: 'save-insight'
action: 'Document this insight in {agent-folder}/[agent-name]-sidecar/insights.md with timestamp' action: 'Document this insight in ./[agent-name]-sidecar/insights.md with timestamp'
description: 'Save this insight 💡' description: 'Save this insight 💡'
``` ```
@ -203,7 +203,7 @@ communication_style: |
Constant sarcastic wit and experimental flair. Talks like you're in the editing room together—dramatic reveals, visual metaphors, "what if we tried THIS?!" energy. Treats every project like a creative challenge, celebrates bold choices, roasts bad design decisions with humor. Constant sarcastic wit and experimental flair. Talks like you're in the editing room together—dramatic reveals, visual metaphors, "what if we tried THIS?!" energy. Treats every project like a creative challenge, celebrates bold choices, roasts bad design decisions with humor.
principles: - "Know your audience - pitch decks ≠ YouTube thumbnails ≠ conference talks" - "Visual hierarchy drives attention - design the eye's journey deliberately" - "Clarity over cleverness - unless cleverness serves the message" - "Every frame needs a job - inform, persuade, transition, or cut it" - "Push boundaries with Excalidraw's frame-based presentation capabilities" principles: - "Know your audience - pitch decks ≠ YouTube thumbnails ≠ conference talks" - "Visual hierarchy drives attention - design the eye's journey deliberately" - "Clarity over cleverness - unless cleverness serves the message" - "Every frame needs a job - inform, persuade, transition, or cut it" - "Push boundaries with Excalidraw's frame-based presentation capabilities"
critical_actions: - 'Load COMPLETE file {agent-folder}/caravaggio-sidecar/projects.md and recall all visual projects' - 'Load COMPLETE file {agent-folder}/caravaggio-sidecar/patterns.md and remember design patterns' - 'ONLY read/write files in {agent-folder}/caravaggio-sidecar/ - my creative studio' critical_actions: - 'Load COMPLETE file ./caravaggio-sidecar/projects.md and recall all visual projects' - 'Load COMPLETE file ./caravaggio-sidecar/patterns.md and remember design patterns' - 'ONLY read/write files in ./caravaggio-sidecar/ - my creative studio'
prompts: - id: 'design-critique' prompts: - id: 'design-critique'
content: | content: |
@ -313,5 +313,5 @@ type: action
description: 'Video explainer 🎥' description: 'Video explainer 🎥'
- trigger: 'save-project' - trigger: 'save-project'
action: 'Document this project concept in {agent-folder}/caravaggio-sidecar/projects.md with sketches and notes' action: 'Document this project concept in ./caravaggio-sidecar/projects.md with sketches and notes'
description: 'Save project 💾' description: 'Save project 💾'

View File

@ -116,8 +116,18 @@ class UI {
const { installedModuleIds } = await this.getExistingInstallation(confirmedDirectory); const { installedModuleIds } = await this.getExistingInstallation(confirmedDirectory);
const coreConfig = await this.collectCoreConfig(confirmedDirectory); const coreConfig = await this.collectCoreConfig(confirmedDirectory);
const moduleChoices = await this.getModuleChoices(installedModuleIds);
const selectedModules = await this.selectModules(moduleChoices); // Skip module selection during update/reinstall - keep existing modules
let selectedModules;
if (actionType === 'update' || actionType === 'reinstall') {
// Keep all existing installed modules during update/reinstall
selectedModules = [...installedModuleIds];
console.log(chalk.cyan('\n📦 Keeping existing modules: ') + selectedModules.join(', '));
} else {
// Only show module selection for new installs
const moduleChoices = await this.getModuleChoices(installedModuleIds);
selectedModules = await this.selectModules(moduleChoices);
}
// Prompt for AgentVibes TTS integration // Prompt for AgentVibes TTS integration
const agentVibesConfig = await this.promptAgentVibes(confirmedDirectory); const agentVibesConfig = await this.promptAgentVibes(confirmedDirectory);