Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
62 commits
Select commit Hold shift + click to select a range
01285fd
chore: sync all local work to backup β€” squads, agents, skills, configs
Mar 9, 2026
5997127
backup: 2026-03-09 13:30
Mar 9, 2026
df214c4
fix: remove .venv from tracking, add to .gitignore
Mar 9, 2026
b873969
backup: 2026-03-09 14:04
Mar 9, 2026
cd1e692
feat(renner-silva): upgrade mind clone v1.1 β†’ v1.2
Mar 9, 2026
7f25b39
chore(squads): kaizen audit β€” optimize italo-marsili, leandro-ladeira…
Mar 9, 2026
41c4e1e
feat: project management system β€” INDEX.md, sessions, slash commands
Mar 9, 2026
802e301
feat: enforce project structure β€” rules + validation hook
Mar 9, 2026
fc5e6de
feat: add project-specific resume shortcut to checkpoint/resume flow
Mar 9, 2026
de00e05
backup: 2026-03-09 16:04
Mar 9, 2026
c8c9eb8
chore: checkpoint session β€” ensinio outreach 77/77 + CLAUDE.md v4.1
Mar 10, 2026
223bb36
feat(prospector): dual scoring v3.0 β€” matriz cliente x parceiro + mod…
Mar 10, 2026
84ad141
config: update gemini settings and behavioral rules (NEVER/ALWAYS)
Mar 10, 2026
93e9e56
chore: checkpoint session β€” phone resolution 77/77 + Google Sheets sc…
Mar 10, 2026
a2ffee8
feat(ensinio): phone resolution 77/77 + Google Sheets pipeline + OAut…
Mar 10, 2026
cde7619
chore: checkpoint session β€” ensinio phone resolution + sheets + MCP O…
Mar 10, 2026
06edcff
chore: checkpoint session β€” naval mind clone Elite 95% + framework cl…
Mar 11, 2026
a1cd005
chore: checkpoint β€” naval-ravikant-mind project + session file
Mar 11, 2026
3b39cb0
chore: checkpoint session β€” BRE squad v1.2 quality upgrade
Mar 11, 2026
175ac89
chore: checkpoint β€” BRE project index + session files
Mar 11, 2026
42c02f4
docs: update ACTIVE.md + ensinio-prospector INDEX
Mar 11, 2026
a7500c2
chore: checkpoint session β€” ensinio-prospector-app M1+M2 done + VK Ta…
Mar 11, 2026
9b2eb83
feat(mind-cloning): squad v1.2.0 β€” 10 gaps resolvidos da avaliaΓ§Γ£o tr…
Mar 11, 2026
bc1d7e0
chore: checkpoint session β€” meta-ads-prospector v2.0 pipeline
Mar 11, 2026
7e82fc1
chore: checkpoint session β€” meta-ads-prospector v2.0 Apify pipeline
Mar 11, 2026
0f45113
feat(bre): DNA extraction v2.0 β€” 4 experts from source books
Mar 11, 2026
74292e8
chore: checkpoint β€” BRE v2.0 DNA extraction from source books
Mar 11, 2026
abd730b
feat(bre): v2.1 β€” checklist enforcement, quick-extract workflow, DMN …
Mar 11, 2026
8b58792
chore: checkpoint β€” BRE v2.1 audit results + quick wins applied
Mar 11, 2026
927b323
chore: checkpoint session β€” designcode-ui figma MCP auth
Mar 11, 2026
ca2106c
chore: checkpoint session β€” designcode-ui audit + 10 componentes falt…
Mar 11, 2026
662b811
chore: checkpoint session β€” designcode-ui 100% components + storybook
Mar 11, 2026
e62eacc
backup: 2026-03-11 16:57
Mar 11, 2026
59748b2
chore: complete DevOps audit improvements (10/10 maturity) [Story 5.10]
Mar 11, 2026
343a1dc
fix: harden project lifecycle skills (new-project, checkpoint, resume)
Mar 11, 2026
0cdf9ed
feat: add smart next-step suggestions + /new-project-full pipeline
Mar 11, 2026
14ac7c9
refactor: absorb Navigator best practices + delete legacy nav-create-…
Mar 11, 2026
00e29ec
chore: checkpoint session β€” GHL integration + squad v4.0
Mar 12, 2026
a7c14e3
docs: checkpoint session 2026-03-12 β€” GHL integration
Mar 12, 2026
e84efd0
chore: create epic governance structure + squad-ecosystem-quality epic
Mar 12, 2026
04c49fc
chore: add squad-ecosystem-quality epic to ACTIVE.md + create handoff…
Mar 12, 2026
9cee14d
feat: complete GHL sync v3 for 77 mentoria prospects [Story M0.0]
Mar 12, 2026
4cf5496
fix: remove unauthorized automatic message sending from sync script
Mar 12, 2026
74ada1c
feat: create @ensinio/whatsapp-parser module structure [Story M0.1]
Mar 12, 2026
9e39be8
feat: implement WhatsApp parser with intelligent name extraction [Sto…
Mar 12, 2026
3cf64ce
feat: implement phone number normalizer [Story M0.1]
Mar 12, 2026
f79d9eb
feat: implement data validator with 6 blocking + 5 warning checks [St…
Mar 12, 2026
e25c7ac
docs: create handoff for M0.1 AC-4 tests
Mar 12, 2026
d644933
test: implement unit tests with 80%+ coverage [Story M0.1 AC-4]
Mar 12, 2026
c6bee77
chore: sync slash commands for all models (claude, gemini, codex)
Mar 12, 2026
cf37db1
docs: enrich ensinio-mind with YouTube video source (v2.1.0)
Mar 12, 2026
6edba68
docs: document complete Ensinio WhatsApp Prospector pipeline flow [Se…
Mar 12, 2026
84f9d4b
docs: update google sheets with personalized messages and tracking
Mar 12, 2026
0be3852
docs: refactor Ensinio Prospector v5.0 (Sheets-First Architecture)
Mar 12, 2026
fa16e17
feat: create Phase 8 (populate-sheet-v5.md) and Phase 9 (sync-to-ghl-…
Mar 12, 2026
5a5cf66
docs: add handoff for Ensinio Prospector v5.0
Mar 12, 2026
a0cd37a
feat: implement parser module integration (M0.1-AC5)
Mar 12, 2026
be15958
docs: complete M0.1-AC5 story (Ready for Review)
Mar 12, 2026
7f82131
docs: add KAIZEN-recommended behavioral rules (read-first, test-enfor…
Mar 12, 2026
e0d53d3
chore: update project index with garimpoai
Mar 12, 2026
63df3b7
feat: add Evolution WhatsApp API tool (zero deps)
Mar 12, 2026
641eb31
feat: add emoji-only name resolution from chat context
Mar 12, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
607 changes: 607 additions & 0 deletions .aios-core/cli/commands/config/index.js

Large diffs are not rendered by default.

86 changes: 86 additions & 0 deletions .aios-core/cli/commands/context/auto.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
/**
* Context Auto Command
* Auto-detect session context from project
*
* Usage: aios context auto [--dry-run]
*
* @module cli/commands/context/auto
*/

const SessionStateManager = require('../../../core/session/state-manager');
const ContextTracker = require('../../../core/session/context-tracker');
const readline = require('readline');

async function execute(args) {
const isDryRun = args.includes('--dry-run');

try {
// Create tracker and detect context
const tracker = new ContextTracker();
const detected = await tracker.detectContext();

// Display detected values
console.log('Auto-detected context:\n');

console.log(' Project:');
console.log(` Type: ${detected.project.type} (confidence: ${Math.round(detected.confidence.projectType * 100)}%)`);
console.log(` Name: ${detected.project.name}`);
console.log(` Emoji: ${detected.project.emoji}`);

if (detected.git.branch) {
console.log('\n Git Status:');
console.log(` Branch: ${detected.git.branch}`);
console.log(` Uncommitted Changes: ${detected.git.hasChanges ? 'yes' : 'no'} ${detected.git.emoji}`);
}

if (detected.status.phase) {
console.log('\n Status:');
console.log(` Phase: ${detected.status.phase} (confidence: ${Math.round(detected.confidence.phase * 100)}%)`);
if (detected.status.progress) {
const [current, total] = detected.status.progress.split('/').map(Number);
const percentage = Math.round((current / total) * 100);
console.log(` Progress: ${detected.status.progress} (${percentage}%)`);
}
}

// Dry run - stop here
if (isDryRun) {
console.log('\nπŸ” Dry run - no changes made.');
return;
}

// Ask for confirmation
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});

const answer = await new Promise(resolve => {
rl.question('\nApply this context? [Y/n]: ', resolve);
});
rl.close();

if (answer.toLowerCase() === 'n' || answer.toLowerCase() === 'no') {
console.log('❌ Cancelled.');
process.exit(0);
}

// Apply detected context
const manager = SessionStateManager;
await manager.update({
project: detected.project,
status: {
phase: detected.status.phase,
progress: detected.status.progress,
emoji: detected.status.emoji || (detected.git.hasChanges ? '🟑' : '🟒')
}
});

console.log('\nβœ“ Context updated');
} catch (error) {
console.error(`Error detecting context: ${error.message}`);
process.exit(1);
}
}

module.exports = { execute };
41 changes: 41 additions & 0 deletions .aios-core/cli/commands/context/clear.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
/**
* Context Clear Command
* Reset session context to defaults
*
* Usage: aios context clear [--archive]
*
* @module cli/commands/context/clear
*/

const SessionStateManager = require('../../../core/session/state-manager');
const path = require('path');

async function execute(args) {
const shouldArchive = args.includes('--archive');

try {
const manager = SessionStateManager;

// Get current session for archive filename
const currentSession = await manager.read();

// Clear (which archives automatically if session has data)
await manager.clear();


// Show confirmation
console.log('βœ“ Context cleared');

// If session was archived, show path
if (shouldArchive && currentSession.project.name) {
const timestamp = new Date().toISOString().replace(/[:.]/g, '-');
const archivePath = path.join('.aios', 'sessions', 'history', `session-${timestamp}.json`);
console.log(` Session archived to: ${archivePath}`);
}
} catch (error) {
console.error(`Error clearing context: ${error.message}`);
process.exit(1);
}
}

module.exports = { execute };
101 changes: 101 additions & 0 deletions .aios-core/cli/commands/context/index.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
/**
* Context Command Router
* Routes aios context subcommands to appropriate handlers
*
* @module cli/commands/context
*/

const set = require('./set');
const show = require('./show');
const clear = require('./clear');
const auto = require('./auto');
const setEpic = require('./set-epic');
const setStory = require('./set-story');
const setTask = require('./set-task');

async function run(args) {
const subcommand = args[3] || 'show'; // Default to 'show'

switch (subcommand) {
case 'set':
await set.execute(args.slice(4));
break;
case 'set-epic':
await setEpic.execute(args.slice(4));
break;
case 'set-story':
await setStory.execute(args.slice(4));
break;
case 'set-task':
await setTask.execute(args.slice(4));
break;
case 'show':
await show.execute(args.slice(4));
break;
case 'clear':
await clear.execute(args.slice(4));
break;
case 'auto':
await auto.execute(args.slice(4));
break;
case 'help':
case '--help':
case '-h':
showHelp();
break;
default:
console.error(`Unknown subcommand: ${subcommand}`);
console.log('Run "aios context help" for usage');
process.exit(1);
}
}

function showHelp() {
console.log(`
Usage: aios context <command> [options]

Commands:
set <name> Set context manually
set-epic <epic> Set epic (main context - always visible)
set-story <story> Set story (mid-level context)
set-task <task> Set task (momentary context)
show Display current context (default)
clear Reset context
auto Auto-detect context from project

Options for 'set':
--emoji <emoji> Project emoji
--type <type> Project type (framework/squad/app/tool/design-system)
--status <emoji> Status emoji
--phase <phase> Work phase
--progress <n/m> Progress (e.g., "2/5")
--agent <agent> Active agent
--story <story> Story ID

Options for 'set-epic', 'set-story', 'set-task':
--clear Clear the epic/story/task

Options for 'show':
--json Output as JSON

Options for 'clear':
--archive Archive session before clearing

Options for 'auto':
--dry-run Show detection without applying

Examples:
aios context set "aios-core" --emoji πŸ—οΈ --progress 2/5
aios context set-epic "Baixar vΓ­deos YouTube"
aios context set-story "Implementar playlist"
aios context set-task "Commit GitHub"
aios context set-task --clear
aios context show
aios context show --json
aios context clear --archive
aios context auto
aios context auto --dry-run
`);
}

module.exports = { run };
129 changes: 129 additions & 0 deletions .aios-core/cli/commands/context/set-context.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,129 @@
#!/usr/bin/env node
/**
* AIOS Context Setter
* Updates session context to display in terminal tab title and status bar
*
* Usage:
* aios context set <text>
* aios context set epic "Epic name"
* aios context set story "Story name"
* aios context set task "Task name"
* aios context clear
*/

const fs = require('fs').promises;
const path = require('path');
const { execSync } = require('child_process');

const SESSION_FILE = '.aios/session.json';

async function setContext(args) {
const projectRoot = process.cwd();
const sessionPath = path.join(projectRoot, SESSION_FILE);

try {
// Read current session
let session = {};
try {
session = JSON.parse(await fs.readFile(sessionPath, 'utf-8'));
} catch (error) {
if (error.code !== 'ENOENT') throw error;
// Create default session if doesn't exist
session = {
version: '1.0.0',
pid: process.pid,
sessionId: `session-${Date.now()}`,
project: {
type: 'unknown',
name: path.basename(projectRoot),
emoji: 'πŸ“¦',
},
status: {
phase: 'active',
progress: '',
currentTask: '',
emoji: '',
},
context: {},
metadata: {
startedAt: new Date().toISOString(),
lastUpdatedAt: new Date().toISOString(),
},
};
}

// Parse arguments
const [type, ...valueParts] = args;
const value = valueParts.join(' ');

if (!session.context) {
session.context = {};
}

// Handle different commands
if (type === 'clear') {
session.context = {};
console.log('βœ… Context cleared');
} else if (type === 'epic' || type === 'story' || type === 'task') {
if (!value) {
console.error(`❌ Error: Please provide a ${type} name`);
process.exit(1);
}
session.context[type] = value;
console.log(`βœ… ${type} set: ${value}`);
} else {
// Default: set as current task
const contextText = [type, ...valueParts].join(' ');
session.context.task = contextText;
console.log(`βœ… Context set: ${contextText}`);
}

// Update timestamp
session.metadata = session.metadata || {};
session.metadata.lastUpdatedAt = new Date().toISOString();

// Write back
await fs.writeFile(sessionPath, JSON.stringify(session, null, 2), 'utf-8');

// Show current context
const contextParts = [
session.context.epic,
session.context.story,
session.context.task,
].filter(Boolean);

if (contextParts.length > 0) {
console.log(`πŸ“ Current context: ${contextParts.join(' β†’ ')}`);
}

} catch (error) {
console.error('❌ Error setting context:', error.message);
process.exit(1);
}
}

// Get arguments (skip node and script name)
const args = process.argv.slice(2);

if (args.length === 0) {
console.log(`
AIOS Context Setter

Usage:
aios context set <text> Set context as current task
aios context set epic "Epic name" Set epic level context
aios context set story "Story name" Set story level context
aios context set task "Task name" Set task level context
aios context clear Clear all context

Examples:
aios context set "Landing Page Help"
aios context set epic "Q1 2026 Features"
aios context set story "User Authentication"
aios context set task "Implement login form"
aios context clear
`);
process.exit(0);
}

setContext(args);
Loading
Loading