Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
89 commits
Select commit Hold shift + click to select a range
10ca803
chore(code-intel): QA re-review NOG-3 + entity-registry updates [Epic…
Pedrovaleriolopez Feb 21, 2026
8334b4c
feat(code-intel): QA gate enhancement with blast radius + coverage [S…
Pedrovaleriolopez Feb 21, 2026
dcd3e1f
feat(code-intel): planning helper for brownfield & PRD workflows [Sto…
Pedrovaleriolopez Feb 21, 2026
ef40334
feat(code-intel): story creation awareness with duplicate detection […
Pedrovaleriolopez Feb 21, 2026
d216d22
fix(cli): correct aios info paths and YAML parse errors (#173, #104)
Pedrovaleriolopez Feb 21, 2026
f8a4662
feat(code-intel): devops pre-push impact analysis and PR enrichment […
Pedrovaleriolopez Feb 21, 2026
10cb3b3
feat(code-intel): squad creator codebase awareness and integration pa…
Pedrovaleriolopez Feb 21, 2026
356e71a
chore: sync pending changes (synapse, installer, pro-cli, story updat…
Pedrovaleriolopez Feb 21, 2026
82debb2
feat(graph-dashboard): CLI Graph Dashboard MVP — PRD, architecture, s…
Pedrovaleriolopez Feb 21, 2026
62295a3
test(graph-dashboard): QA review pass — resolve coverage observations…
Pedrovaleriolopez Feb 21, 2026
cefdf97
fix(updater): use correct package name aios-core instead of @synkra/a…
Pedrovaleriolopez Feb 21, 2026
0384ddf
feat(graph-dashboard): entity stats and cache metrics ASCII view [Sto…
Pedrovaleriolopez Feb 21, 2026
a979d81
fix: rename @synkra/aios-core to aios-core across entire codebase (#159)
Pedrovaleriolopez Feb 21, 2026
9af3d9e
fix(docs): remove non-existent email references, redirect to GitHub I…
Pedrovaleriolopez Feb 21, 2026
db88179
feat(graph-dashboard): provider status and output formats [Story GD-3]
Pedrovaleriolopez Feb 21, 2026
858d1fd
fix(ide-sync): implement GitHub Copilot custom agents format (#138)
Pedrovaleriolopez Feb 21, 2026
1b73e84
docs(graph-dashboard): research + stories GD-4/5/6 for dynamic visual…
Pedrovaleriolopez Feb 21, 2026
d5c0cf3
feat(devops): add GitHub issues triage and resolve tasks
Pedrovaleriolopez Feb 21, 2026
fd396d9
feat(graph-dashboard): live DOT watch mode with QA pass [Story GD-4]
Pedrovaleriolopez Feb 21, 2026
c11791c
feat(github): implement issue management system [Story GHIM-001]
Pedrovaleriolopez Feb 21, 2026
dece053
feat(code-intel): UAP & SYNAPSE deep research + Wave 6 stories [Story…
Pedrovaleriolopez Feb 21, 2026
7e89ecd
feat(code-intel): add Wave 6 performance journey log system
Pedrovaleriolopez Feb 21, 2026
0266bc5
feat(code-intel): safe quick wins — session wiring, token estimation,…
Pedrovaleriolopez Feb 21, 2026
f0a1f78
feat(graph-dashboard): HTML web viewer with vis-network, QA pass [Sto…
Pedrovaleriolopez Feb 21, 2026
d76b4bb
docs(research): graph taxonomy, filtering & query capabilities
Pedrovaleriolopez Feb 21, 2026
5fdddb5
docs(code-intel): close Story NOG-10 — Phase 0A Safe Quick Wins [Done]
Pedrovaleriolopez Feb 21, 2026
b2f7ebb
docs(code-intel): NOG-11 token usage source discovery — research comp…
Pedrovaleriolopez Feb 21, 2026
3581eaa
feat(graph-dashboard): improve code-intel source, HTML formatter, and…
Pedrovaleriolopez Feb 21, 2026
0f19f77
feat(code-intel): NOG-15 tests + QA PASS, NOG-16A/B/C stories, regist…
Pedrovaleriolopez Feb 21, 2026
184850a
feat(synapse): atomic writes + session cleanup wiring [Story NOG-12]
Pedrovaleriolopez Feb 21, 2026
29f0e64
feat(doctor): git fsmonitor detection + opt-in suggestion [Story NOG-13]
Pedrovaleriolopez Feb 22, 2026
182dc85
chore(registry): regenerate entity-registry after QA concern fixes [S…
Pedrovaleriolopez Feb 22, 2026
73b58c3
feat(code-intel): dependency classification and entity lifecycle [Sto…
Pedrovaleriolopez Feb 22, 2026
b8d64d8
docs(architecture): ADR memory self-editing security model [Story NOG…
Pedrovaleriolopez Feb 22, 2026
9b1d008
feat(code-intel): graph filtering, focus mode, and lifecycle styling …
Pedrovaleriolopez Feb 22, 2026
9c4a460
chore: sync pending changes (synapse, installer, pro-cli, story updat…
Pedrovaleriolopez Feb 22, 2026
5ccf5da
feat(code-intel): E2E pipeline audit with QA pass [Story NOG-17]
Pedrovaleriolopez Feb 22, 2026
692db85
feat(graph-dashboard): tooltip redesign and physics control panel [St…
Pedrovaleriolopez Feb 22, 2026
724a964
chore: sync graph dashboard stories, research, and pending changes
Pedrovaleriolopez Feb 22, 2026
23b18b1
docs(code-intel): NOG-18 story + native-first research [Story NOG-18]
Pedrovaleriolopez Feb 22, 2026
ee678cb
feat(graph-dashboard): multi-level depth expansion with BFS neighborh…
Pedrovaleriolopez Feb 22, 2026
bb24c53
feat(graph-dashboard): node sizing by degree centrality and layout sw…
Pedrovaleriolopez Feb 22, 2026
d4aa0a5
feat(code-intel): SYNAPSE native-first migration — UAP streamlined, L…
Pedrovaleriolopez Feb 22, 2026
540befd
feat(graph-dashboard): export PNG/JSON and minimap navigation overvie…
Pedrovaleriolopez Feb 22, 2026
6d1c16e
feat(graph-dashboard): category clustering and statistics panel [Stor…
Pedrovaleriolopez Feb 22, 2026
ac4b97d
docs(code-intel): pipeline audit validation — benchmarks and QA gate …
Pedrovaleriolopez Feb 22, 2026
b7e4d18
feat(code-intel): agent frontmatter validation — hooks, skills, memor…
Pedrovaleriolopez Feb 22, 2026
54397f7
feat(boundary): permission deny rules and toggleable framework protec…
Pedrovaleriolopez Feb 22, 2026
3d7a8e2
refactor(code-intel): native greeting migration — replace UAP/Greetin…
Pedrovaleriolopez Feb 22, 2026
f0b1662
docs(boundary): close story BM-2 — CLAUDE.md boundary section [Story …
Pedrovaleriolopez Feb 22, 2026
372cbbd
feat(boundary): pre-commit framework guard with dynamic config [Story…
Pedrovaleriolopez Feb 22, 2026
6259058
docs(code-intel): QA review NOG-22 — expand checklist-runner to all 8…
Pedrovaleriolopez Feb 22, 2026
d3e3d35
feat(boundary): config schema enrichment and template customization s…
Pedrovaleriolopez Feb 22, 2026
b1d5651
docs(code-intel): close stories NOG-8, NOG-17→NOG-22 — epic 25/25 com…
Pedrovaleriolopez Feb 22, 2026
8b3daac
docs(code-intel): post-migration validation & benchmark — QA PASS 100…
Pedrovaleriolopez Feb 22, 2026
2dc19be
chore: sync boundary-mapping stories, agent configs, rules and utilities
Pedrovaleriolopez Feb 22, 2026
ee1f2f1
feat(boundary): entity registry layer classification L1-L4 [Story BM-5]
Pedrovaleriolopez Feb 22, 2026
1f02fee
feat(boundary): agent memory lifecycle and CLAUDE.md ownership annota…
Pedrovaleriolopez Feb 23, 2026
31cd46f
chore: force-track gitignored .claude files for worktree compatibility
Pedrovaleriolopez Feb 23, 2026
8ef32fe
feat(token-opt): unified tool registry — 34 tools, 10 profiles, 5 bin…
Pedrovaleriolopez Feb 23, 2026
962199e
docs(token-opt): baseline metrics & full epic token-optimization setu…
Pedrovaleriolopez Feb 23, 2026
337213d
feat(doctor): rewrite aios doctor with 12 modular checks, --fix, --js…
Pedrovaleriolopez Feb 23, 2026
1daf8d8
feat(token-opt): capability-aware deferred loading with 3-level fallb…
Pedrovaleriolopez Feb 23, 2026
4a8d9f9
feat(boundary): deterministic settings.json generator from core-confi…
Pedrovaleriolopez Feb 23, 2026
f41977c
docs(installation-health): close INS-4.2, approve INS-4.3 with valida…
Pedrovaleriolopez Feb 23, 2026
8c92b01
feat(installer): full artifact copy pipeline — skills, commands, hook…
Pedrovaleriolopez Feb 23, 2026
bbf3b23
feat(token-opt): PTC batch templates, execution_mode schema, 21-task …
Pedrovaleriolopez Feb 23, 2026
853b719
feat(installer): CLAUDE.md template v5 — 4 new AIOS-MANAGED sections …
Pedrovaleriolopez Feb 23, 2026
7c5d200
feat(token-opt): agent handoff context compaction — 65% reduction in …
Pedrovaleriolopez Feb 23, 2026
374788f
feat(installer): IDE sync integration via adapter pattern after artif…
Pedrovaleriolopez Feb 23, 2026
3c721d2
feat(token-opt): input examples registry + client-layer injection for…
Pedrovaleriolopez Feb 23, 2026
5513df9
feat(publish): publish safety gate — submodule + file count validatio…
Pedrovaleriolopez Feb 23, 2026
1777ee8
feat(installer): entity registry bootstrap on install [Story INS-4.6]
Pedrovaleriolopez Feb 23, 2026
d02df25
feat(token-opt): tool usage analytics pipeline with promote/demote en…
Pedrovaleriolopez Feb 23, 2026
8af115a
feat(token-opt): dynamic filtering engine with 3 filter types and SYN…
Pedrovaleriolopez Feb 23, 2026
12aa5c7
feat(installer): YAML merger strategy + config smart merge Phase 1 [S…
Pedrovaleriolopez Feb 23, 2026
891b14f
docs(token-opt): close TOK-6 and mark Epic Token Optimization complet…
Pedrovaleriolopez Feb 23, 2026
40e54d5
feat(doctor): unify health-check task + 3 new checks (skills, command…
Pedrovaleriolopez Feb 23, 2026
1152f37
docs(stories): create story CODEINTEL-RP-001 — Code-Intel RegistryPro…
Pedrovaleriolopez Feb 24, 2026
4eac54d
docs(epic): close INS-4.8 and mark Epic INS-4 Installation Health com…
Pedrovaleriolopez Feb 24, 2026
0ecbf5e
fix(doctor): update orchestrator tests from 12 to 15 checks [Story IN…
Pedrovaleriolopez Feb 24, 2026
a220f87
feat(devops): wire *health-check command and task dependency [Story I…
Pedrovaleriolopez Feb 24, 2026
f21dfe2
chore(release): bump version to 4.3.0
Pedrovaleriolopez Feb 24, 2026
1176c89
Merge remote-tracking branch 'origin/main' into feat/epic-nogic-code-…
Pedrovaleriolopez Feb 24, 2026
3b61af1
fix: resolve CI failures — lint errors and test drift from NOG-18 merge
Pedrovaleriolopez Feb 24, 2026
f115d28
chore: regenerate manifest and sync IDE command files for CI
Pedrovaleriolopez Feb 24, 2026
cff9be3
chore: update entity-registry and regenerate manifest for CI parity
Pedrovaleriolopez Feb 24, 2026
c4bece5
chore: sync IDE command files for all IDEs (devops health-check)
Pedrovaleriolopez Feb 24, 2026
1c22492
chore: add review-contributor-pr task, sync github-copilot agent, reg…
Pedrovaleriolopez Feb 24, 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
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion .aios-core/cli/commands/validate/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -189,7 +189,7 @@ async function runValidation(options) {
const possibleSources = [
path.join(__dirname, '../../../../..'), // npm package root
path.join(projectRoot, 'node_modules/aios-core'),
path.join(projectRoot, 'node_modules/@synkra/aios-core'),
path.join(projectRoot, 'node_modules/aios-core'),
];

for (const src of possibleSources) {
Expand Down
35 changes: 34 additions & 1 deletion .aios-core/core-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -162,6 +162,9 @@ projectStatus:
statusFile: .aios/project-status.yaml
maxModifiedFiles: 5
maxRecentCommits: 2
synapse:
session:
staleTTLHours: 168 # 7 days — sessions older than this are cleaned up on first prompt
agentIdentity:
greeting:
preference: auto
Expand Down Expand Up @@ -321,7 +324,7 @@ ideSync:
github-copilot:
enabled: true
path: .github/agents
format: full-markdown-yaml
format: github-copilot
cursor:
enabled: true
path: .cursor/rules/agents
Expand Down Expand Up @@ -352,4 +355,34 @@ autoClaude:
enabled: false
qa:
enabled: false
# Boundary Mapping — Framework-Project Separation (Epic BM)
# Controls deterministic protection of framework core files via Claude Code deny rules.
# When frameworkProtection is true (default), .claude/settings.json includes deny rules
# that block Edit/Write operations on L1/L2 paths listed in 'protected' below.
# Set to false for framework contributors who need to edit core files directly.
# NOTE: This flag is read by the installer during settings.json generation.
# Changing this value alone does NOT add/remove deny rules — re-run the installer.
# SINGLE SOURCE OF TRUTH: Both pre-commit hook (framework-guard.js) and
# the installer read protected/exceptions from here. Do NOT hardcode paths elsewhere.
boundary:
frameworkProtection: false # TEMPORARY: TOK-3 contributor mode — re-enable after story
# L1/L2 paths — blocked from editing in project mode
# Glob syntax: ** matches any depth, * matches single segment
protected:
- .aios-core/core/**
- .aios-core/development/tasks/**
- .aios-core/development/templates/**
- .aios-core/development/checklists/**
- .aios-core/development/workflows/**
- .aios-core/infrastructure/**
- .aios-core/constitution.md
- bin/aios.js
- bin/aios-init.js
# L3 paths — mutable exceptions (allowed even within .aios-core/)
exceptions:
- .aios-core/data/**
- .aios-core/development/agents/*/MEMORY.md
- .aios-core/core/config/schemas/**
- .aios-core/core/config/template-overrides.js

# Memory Intelligence System (Epic MIS) configuration placeholder — MIS-2+
183 changes: 183 additions & 0 deletions .aios-core/core/code-intel/helpers/creation-helper.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,183 @@
'use strict';

const { getEnricher, getClient, isCodeIntelAvailable } = require('../index');

/**
* CreationHelper — Code intelligence helper for squad-creator and artefact creation tasks.
*
* All functions return null gracefully when no provider is available.
* Never throws — safe to call unconditionally in task workflows.
*
* Functions:
* - getCodebaseContext(targetPath) — project structure + conventions for agent creation
* - checkDuplicateArtefact(name, description) — duplicate detection before artefact creation
* - enrichRegistryEntry(entityName, entityPath) — pre-populate usedBy/dependencies for entity registry
*/

/**
* Get codebase context for enriching agent/artefact creation.
* Combines describeProject + getConventions to provide full awareness.
* Used by squad-creator when creating new agents — advisory, never blocks creation.
*
* @param {string} [targetPath='.'] - Path to analyze
* @returns {Promise<{project: Object, conventions: Object}|null>} Codebase context or null
*/
async function getCodebaseContext(targetPath) {
const path = targetPath || '.';
if (!isCodeIntelAvailable()) return null;

try {
const enricher = getEnricher();

// Per-capability try/catch — partial results accepted
let project = null;
let conventions = null;

try {
project = await enricher.describeProject(path);
} catch { /* skip — partial result ok */ }

try {
conventions = await enricher.getConventions(path);
} catch { /* skip — partial result ok */ }

// Return null only if we got nothing at all
if (!project && !conventions) return null;

return {
project,
conventions,
};
} catch {
return null;
}
}

/**
* Check for duplicate artefacts before creating a new one.
* Combines detectDuplicates + findReferences for comprehensive detection.
* Used by task creation workflows — returns advisory warning, never blocks.
*
* @param {string} name - Name of the artefact to create
* @param {string} description - Description of the artefact
* @returns {Promise<{duplicates: Array, references: Array, warning: string}|null>} Duplicate info or null
*/
async function checkDuplicateArtefact(name, description) {
if (!name && !description) return null;
if (!isCodeIntelAvailable()) return null;

try {
const enricher = getEnricher();
const client = getClient();

// Per-capability try/catch — partial results accepted
let dupes = null;
let refs = null;

try {
const searchText = description || name;
dupes = await enricher.detectDuplicates(searchText, { path: '.' });
} catch { /* skip — partial result ok */ }

try {
refs = await client.findReferences(name);
} catch { /* skip — partial result ok */ }

const hasMatches = (dupes && dupes.matches && dupes.matches.length > 0) ||
(refs && refs.length > 0);

if (!hasMatches) return null;

return {
duplicates: dupes ? (dupes.matches || []) : [],
references: refs || [],
warning: _formatDuplicateWarning(name, dupes, refs),
};
} catch {
return null;
}
}

/**
* Enrich an entity registry entry with real dependency data.
* Combines findReferences + analyzeDependencies to pre-populate usedBy/dependencies.
* Used during entity auto-registration — advisory, registry works without it.
*
* @param {string} entityName - Name of the entity being registered
* @param {string} entityPath - File path of the entity
* @returns {Promise<{usedBy: Array, dependencies: Object}|null>} Registry enrichment data or null
*/
async function enrichRegistryEntry(entityName, entityPath) {
if (!entityName && !entityPath) return null;
if (!isCodeIntelAvailable()) return null;

try {
const client = getClient();

// Per-capability try/catch — partial results accepted
let usedBy = null;
let dependencies = null;

try {
const refs = await client.findReferences(entityName);
if (refs && refs.length > 0) {
usedBy = refs.map((ref) => ref.file).filter(Boolean);
// Deduplicate
usedBy = [...new Set(usedBy)];
}
} catch { /* skip — partial result ok */ }

try {
if (entityPath) {
const deps = await client.analyzeDependencies(entityPath);
if (deps) {
dependencies = deps;
}
}
} catch { /* skip — partial result ok */ }

// Return null only if we got nothing at all
if (!usedBy && !dependencies) return null;

return {
usedBy: usedBy || [],
dependencies: dependencies || { nodes: [], edges: [] },
};
} catch {
return null;
}
}

/**
* Format a human-readable duplicate warning message.
* @param {string} name - Artefact name
* @param {Object|null} dupes - Result from detectDuplicates
* @param {Array|null} refs - Result from findReferences
* @returns {string} Formatted warning message
* @private
*/
function _formatDuplicateWarning(name, dupes, refs) {
const parts = [];

if (dupes && dupes.matches && dupes.matches.length > 0) {
const firstMatch = dupes.matches[0];
const location = firstMatch.file || firstMatch.path || 'unknown';
parts.push(`Similar artefact exists: ${location}`);
}

if (refs && refs.length > 0) {
parts.push(`"${name}" already referenced in ${refs.length} location(s)`);
}

parts.push('Consider extending instead of creating new (IDS Article IV-A)');

return parts.join('. ') + '.';
}

module.exports = {
getCodebaseContext,
checkDuplicateArtefact,
enrichRegistryEntry,
// Exposed for testing
_formatDuplicateWarning,
};
Loading
Loading