Skip to content
Merged
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 .claude/da-plans/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ Implementation deviations are logged at the bottom of each plan file.

| Track | Description | Status |
|-------|-------------|--------|
| [Core](core/) | Scanner, vector storage, services, indexer | Phase 1: Merged, Phase 2: Draft (indexing rethink) |
| [Core](core/) | Scanner, vector storage, services, indexer | Phase 1: Merged, Phase 2: Merged (indexing rethink) |
| [CLI](cli/) | Command-line interface | Not started |
| [MCP Server](mcp/) | Model Context Protocol server + adapters | Phase 1: Draft (tools improvement) |
| [Subagents](subagents/) | Coordinator, explorer, planner, GitHub agents | Not started |
Expand Down
2 changes: 1 addition & 1 deletion .claude/da-plans/core/phase-2-indexing-rethink/overview.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Phase 2: Rethink Indexing & Search Flow

**Status:** In progress (Parts 2.2–2.7 merged, 2.8 E2E tests remaining)
**Status:** Complete (all parts merged)

## Context

Expand Down
27 changes: 18 additions & 9 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,34 +9,43 @@ on:
jobs:
build:
runs-on: ubuntu-latest

strategy:
matrix:
node-version: [22.x]

steps:
- uses: actions/checkout@v4

- name: Setup pnpm
uses: pnpm/action-setup@v4

- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v4
with:
node-version: ${{ matrix.node-version }}
cache: 'pnpm'


- name: Cache turbo
uses: actions/cache@v4
with:
path: .turbo
key: turbo-${{ runner.os }}-${{ hashFiles('pnpm-lock.yaml') }}-${{ github.sha }}
restore-keys: |
turbo-${{ runner.os }}-${{ hashFiles('pnpm-lock.yaml') }}-
turbo-${{ runner.os }}-

- name: Install dependencies
run: pnpm install

- name: Lint
run: pnpm lint

- name: Build
run: pnpm build

- name: Type check
run: pnpm typecheck

- name: Test
run: pnpm test
run: pnpm test
3 changes: 3 additions & 0 deletions packages/core/src/__tests__/e2e-force-reindex.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,9 @@ describeE2E('E2E: Force re-index', () => {

await indexer.initialize();
await indexer.index();

// Allow Antfly to finish embedding before running queries
await new Promise((r) => setTimeout(r, 2000));
}, 60_000);

afterAll(async () => {
Expand Down
3 changes: 3 additions & 0 deletions packages/core/src/__tests__/e2e-incremental.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,9 @@ describeE2E('E2E: Incremental indexing', () => {

await indexer.initialize();
await indexer.index();

// Allow Antfly to finish embedding before running queries
await new Promise((r) => setTimeout(r, 2000));
}, 60_000);

afterAll(async () => {
Expand Down
100 changes: 0 additions & 100 deletions packages/core/src/__tests__/e2e-index-dev-agent.test.ts

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
/**
* MCP Tools Regression — verifies exactly 6 built-in adapters survive Phase 2 cleanup.
*
* This test catches accidental re-introduction of removed adapters (History, GitHub,
* Plan, Explore) and ensures no adapters are silently dropped.
*/

import { describe, expect, it } from 'vitest';
import * as builtIn from '../built-in/index.js';

const adapterNames = Object.keys(builtIn).filter((k) => k.endsWith('Adapter'));

describe('MCP tools regression (post Phase 2)', () => {
it('barrel exports exactly 6 adapter classes', () => {
expect(adapterNames).toHaveLength(6);
});

it.each([
'HealthAdapter',
'InspectAdapter',
'MapAdapter',
'RefsAdapter',
'SearchAdapter',
'StatusAdapter',
])('exports %s', (name) => {
expect(adapterNames).toContain(name);
});

it.each(['HistoryAdapter', 'GitHubAdapter', 'PlanAdapter', 'ExploreAdapter'])(
'does NOT export removed %s',
(name) => {
expect(adapterNames).not.toContain(name);
}
);
});
Loading