Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .aiox-core/core/code-intel/helpers/dev-helper.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ const { getEnricher, getClient, isCodeIntelAvailable } = require('../index');
const RISK_THRESHOLDS = {
LOW_MAX: 4, // 0-4 refs = LOW
MEDIUM_MAX: 15, // 5-15 refs = MEDIUM
// >15 refs = HIGH
// >15 refs = HIGH
};

// Minimum references to suggest REUSE (>threshold = REUSE, <=threshold = ADAPT)
Expand Down
1 change: 0 additions & 1 deletion .aiox-core/core/code-intel/helpers/devops-helper.js
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,6 @@ async function generateImpactSummary(files) {
} catch { /* skip — partial result ok */ }

const riskLevel = classifyRiskLevel(impact.blastRadius);
const fileCount = impact.references ? impact.references.length : 0;
const topFiles = (impact.references || [])
.map((r) => r.file || r.path || 'unknown')
.slice(0, 10);
Expand Down
2 changes: 1 addition & 1 deletion .aiox-core/core/code-intel/helpers/planning-helper.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ const { getEnricher, getClient, isCodeIntelAvailable } = require('../index');
const RISK_THRESHOLDS = {
LOW_MAX: 4, // 0-4 refs = LOW
MEDIUM_MAX: 15, // 5-15 refs = MEDIUM
// >15 refs = HIGH
// >15 refs = HIGH
};

/**
Expand Down
4 changes: 2 additions & 2 deletions .aiox-core/core/code-intel/helpers/qa-helper.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,14 @@ const { getEnricher, getClient, isCodeIntelAvailable } = require('../index');
const RISK_THRESHOLDS = {
LOW_MAX: 4, // 0-4 refs = LOW
MEDIUM_MAX: 15, // 5-15 refs = MEDIUM
// >15 refs = HIGH
// >15 refs = HIGH
};

// Coverage status thresholds based on test reference count
const COVERAGE_THRESHOLDS = {
INDIRECT_MAX: 2, // 1-2 test refs = INDIRECT
MINIMAL_MAX: 5, // 3-5 test refs = MINIMAL
// >5 test refs = GOOD
// >5 test refs = GOOD
};

/**
Expand Down
2 changes: 1 addition & 1 deletion .aiox-core/core/config/template-overrides.js
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ function getTemplateOverrides(resolvedConfig) {
if (unknown.length > 0) {
throw new Error(
`Unknown story section ID(s) in template_overrides: ${unknown.join(', ')}. ` +
`Valid IDs: ${KNOWN_STORY_SECTIONS.join(', ')}`
`Valid IDs: ${KNOWN_STORY_SECTIONS.join(', ')}`,
);
}

Expand Down
1 change: 0 additions & 1 deletion .aiox-core/core/doctor/checks/rules-files.js
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,6 @@ async function run(context) {
};
}

const present = EXPECTED_RULES.length - missing.length;
const severity = missing.length > 3 ? 'FAIL' : 'WARN';

return {
Expand Down
2 changes: 1 addition & 1 deletion .aiox-core/core/graph-dashboard/cli.js
Original file line number Diff line number Diff line change
Expand Up @@ -280,7 +280,7 @@ Examples:
* Handle default summary view: dependency tree (compact) + stats + provider status.
* @param {Object} args - Parsed CLI args
*/
async function handleSummary(args) {
async function handleSummary(_args) {
const codeIntelSource = new CodeIntelSource();
const registrySource = new RegistrySource();
const metricsSource = new MetricsSource();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -161,7 +161,7 @@ class CodeIntelSource {
Object.entries(deps.dependencies).map(([key, val]) => ({
id: key,
...((typeof val === 'object' && val) || {}),
}))
})),
);
}

Expand Down
2 changes: 1 addition & 1 deletion .aiox-core/core/ids/layer-classifier.js
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ const LAYER_RULES = [
* @returns {'L1' | 'L2' | 'L3' | 'L4'} The boundary layer
*/
function classifyLayer(entityPath) {
if (typeof entityPath !== "string") return "L4";
if (typeof entityPath !== 'string') return 'L4';

// Normalize: forward slashes, no leading ./ or /
const normalized = entityPath
Expand Down
2 changes: 1 addition & 1 deletion .aiox-core/core/synapse/layers/layer-processor.js
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ class LayerProcessor {
* @param {object[]} context.previousLayers - Results from previous layers
* @returns {{ rules: string[], metadata: object } | null} Rules and metadata, or null to skip
*/
process(context) {
process(_context) {
throw new Error(`${this.name}: process() must be implemented by subclass`);
}

Expand Down
28 changes: 0 additions & 28 deletions .aiox-core/core/synapse/session/session-manager.js
Original file line number Diff line number Diff line change
Expand Up @@ -87,29 +87,6 @@ function ensureDir(dirPath) {
}
}

/**
* Ensure .synapse/.gitignore exists with required entries
*
* @param {string} synapsePath - Path to .synapse/ directory
*/
function ensureGitignore(synapsePath) {
const gitignorePath = path.join(synapsePath, '.gitignore');

if (fs.existsSync(gitignorePath)) {
return;
}

const content = [
'# SYNAPSE runtime data (auto-generated)',
'sessions/',
'cache/',
'',
].join('\n');

ensureDir(synapsePath);
fs.writeFileSync(gitignorePath, content, 'utf8');
}

/**
* Create a new session
*
Expand All @@ -125,10 +102,6 @@ function createSession(sessionId, cwd, sessionsDir) {
const dir = sessionsDir || path.join(cwd, '.synapse', 'sessions');
ensureDir(dir);

// Ensure .gitignore exists in .synapse/
const synapsePath = path.dirname(dir);
ensureGitignore(synapsePath);

const session = buildDefaultSession(sessionId, cwd);
const filePath = resolveSessionFile(sessionId, dir);

Expand Down Expand Up @@ -399,6 +372,5 @@ module.exports = {
deleteSession,
cleanStaleSessions,
generateTitle,
ensureGitignore,
SCHEMA_VERSION,
};
30 changes: 15 additions & 15 deletions .aiox-core/data/capability-detection.js
Original file line number Diff line number Diff line change
Expand Up @@ -31,13 +31,13 @@ function detectToolSearch() {
return {
available: features.tengu_mcp_tool_search === true,
source: 'cachedGrowthBookFeatures.tengu_mcp_tool_search',
detectionMethod: 'claude-json-feature-flag'
detectionMethod: 'claude-json-feature-flag',
};
} catch {
return {
available: false,
source: 'detection-failed',
detectionMethod: 'claude-json-feature-flag'
detectionMethod: 'claude-json-feature-flag',
};
}
}
Expand All @@ -47,7 +47,7 @@ function detectDeferLoading() {
return {
available: false,
reason: 'defer_loading is API-only (Python SDK). Not exposed in Claude Code CLI.',
source: 'ADR-7 / Codex CRITICO-1'
source: 'ADR-7 / Codex CRITICO-1',
};
}

Expand All @@ -60,7 +60,7 @@ function detectProjectMcps() {
name,
type: cfg.type || 'command',
scope: 'project',
source: '.mcp.json'
source: '.mcp.json',
}));
} catch {
return [];
Expand All @@ -83,7 +83,7 @@ function detectGlobalMcps() {
name: match[1],
type: 'docker-gateway',
scope: 'global',
source: '~/.docker/mcp/config.yaml'
source: '~/.docker/mcp/config.yaml',
});
}
}
Expand All @@ -103,7 +103,7 @@ function detectGlobalMcps() {
name,
type: cfg.type || 'command',
scope: 'global-settings',
source: '~/.claude/settings.json'
source: '~/.claude/settings.json',
});
}
}
Expand All @@ -121,7 +121,7 @@ function detectDockerGateway() {
return {
available: exists,
configPath: exists ? dockerMcpDir : null,
detectionMethod: 'filesystem-check'
detectionMethod: 'filesystem-check',
};
}

Expand Down Expand Up @@ -180,7 +180,7 @@ function loadToolRegistry() {
tier2Count: tier2,
tier3Count: tier3,
essential,
nonEssential
nonEssential,
};
} catch {
return { available: false, totalTools: 0, tier1Count: 0, tier2Count: 0, tier3Count: 0, essential: [], nonEssential: [] };
Expand All @@ -197,22 +197,22 @@ function determineStrategy(toolSearch, deferLoading, dockerGateway) {
return {
primary: 'tool-search-auto',
description: 'Claude Code Tool Search is active. Tier 3 MCP tools are automatically deferred via tool_search.',
fallbacks: ['mcp-discipline', 'claudemd-guidance']
fallbacks: ['mcp-discipline', 'claudemd-guidance'],
};
}

if (dockerGateway.available) {
return {
primary: 'mcp-discipline',
description: 'Tool Search not available. Using MCP discipline: disable non-essential servers in .mcp.json.',
fallbacks: ['claudemd-guidance']
fallbacks: ['claudemd-guidance'],
};
}

return {
primary: 'claudemd-guidance',
description: 'Neither Tool Search nor Docker Gateway available. Using CLAUDE.md guidance for tool selection priority.',
fallbacks: []
fallbacks: [],
};
}

Expand All @@ -236,20 +236,20 @@ function run() {

methodology: {
toolSearchLatency: 'Managed internally by Claude Code — not programmatically measurable. Guidance-level enforcement via CLAUDE.md.',
mcpCountUnit: 'servers (not individual tools). TOK-1.5 baseline uses tool count (e.g., Apify = 7 tools = 1 server).'
mcpCountUnit: 'servers (not individual tools). TOK-1.5 baseline uses tool count (e.g., Apify = 7 tools = 1 server).',
},

runtime: {
toolSearch,
deferLoading,
dockerGateway
dockerGateway,
},

mcpServers: {
project: projectMcps,
global: globalMcps,
totalCount: projectMcps.length + globalMcps.length,
countUnit: 'servers'
countUnit: 'servers',
},

toolRegistry,
Expand All @@ -263,7 +263,7 @@ function run() {

nonEssentialServers: toolRegistry.nonEssential.length > 0
? toolRegistry.nonEssential
: []
: [],
};

// Ensure output directory exists
Expand Down
Loading
Loading