Commit Graph

12 Commits

Author SHA1 Message Date
gsxdsm
1f23a2e622 FN-6878: register Droid provider before probes
Register Droid provider startup without waiting on local binary probes.

- Register the Droid CLI provider synchronously with an empty model list, then refresh discovered models asynchronously.
- Harden Droid runtime probes to convert spawn errors and timeouts into unavailable sentinel results.
- Add coverage for non-blocking startup, failed probes, unavailable binaries, and process cleanup behavior.
- Add a patch changeset for the published Fusion CLI package.

Files changed:
 .changeset/fn-6878-droid-boot.md                   |  5 ++
 packages/droid-cli/index.ts                        | 73 +++++++++++-------
 packages/droid-cli/src/__tests__/index.test.ts     | 52 ++++++++++++-
 .../src/__tests__/process-manager.test.ts          | 58 +++++++--------
 .../src/__tests__/discover-models.test.ts          |  8 ++
 .../src/__tests__/probe.test.ts                    | 43 ++++++++++-
 .../src/__tests__/startup-probes.test.ts           | 86 ++++++++++++++++++++++
 plugins/fusion-plugin-droid-runtime/src/probe.ts   | 32 +++++---
 8 files changed, 283 insertions(+), 74 deletions(-)

Fusion-Task-Id: FN-6878

Fusion-Task-Lineage: 4e44a6e8-0eea-4867-a172-3bdc0c6368e1
2026-06-21 16:40:32 -07:00
gsxdsm
37c4cfa56e FN-6808: handle AI CLI probe spawn failures
Resolve synchronous AI CLI probe launch failures as unavailable auth states.

- Catch synchronous spawn failures in Claude and Droid probe helpers so fire-and-forget validation paths do not reject.
- Return unavailable/unauthenticated sentinels for Droid model discovery and CLI presence/auth checks.
- Add regression coverage for Claude and Droid presence/auth probes plus a patch changeset.

Files changed:
 .../fn-6808-cli-probe-unhandled-rejection.md       |  5 ++++
 .../src/__tests__/process-manager.test.ts          | 25 ++++++++++++++++++++
 .../src/__tests__/process-manager.test.ts          | 25 ++++++++++++++++++++
 packages/pi-claude-cli/src/process-manager.ts      | 12 +++++++++-
 .../src/process-manager.ts                         | 27 +++++++++++++++++++---
 5 files changed, 90 insertions(+), 4 deletions(-)

Fusion-Task-Id: FN-6808

Fusion-Task-Lineage: 79702ef2-e116-4313-a557-da17a6888c30
2026-06-20 21:32:43 -07:00
gsxdsm
84830595f2 FN-6485: remove synchronous CLI probes
Remove blocking execSync validation paths from CLI process managers while preserving async probe coverage.

- Drop synchronous Claude and Droid CLI presence/auth validators from process managers.
- Keep async spawn-based validation as the sole probing path for session startup.
- Replace sync validator tests with execSync guard coverage for both CLI integrations.

Files changed:
 .../droid-cli/src/__tests__/execsync-guard.test.ts | 17 ++++++++
 .../src/__tests__/process-manager.test.ts          | 46 +---------------------
 .../src/__tests__/execsync-guard.test.ts           | 14 +++++++
 .../src/__tests__/process-manager.test.ts          | 46 +---------------------
 .../pi-claude-cli/src/__tests__/provider.test.ts   |  1 -
 packages/pi-claude-cli/src/process-manager.ts      | 44 +++------------------
 .../src/process-manager.ts                         | 43 +++-----------------
 7 files changed, 45 insertions(+), 166 deletions(-)

Fusion-Task-Id: FN-6485

Fusion-Task-Lineage: e3f0f656-3445-4672-b597-a811924137e9
2026-06-16 15:08:24 -07:00
gsxdsm
cec191eac3 FN-5638: migrate pi-ai and pi-coding-agent packages to @earendil-works scope
Fusion-Task-Id: FN-5638

Fusion-Task-Lineage: 6e99c156-5f6c-42e6-bd26-618e08ffd05f
2026-05-28 21:23:48 -07:00
Fusion
85b96a7546 feat(FN-3938): add integration tests for droid-cli extension entrypoint
Adds integration test coverage for the droid-cli extension entrypoint, with a minor README refresh.

Fusion-Task-Id: FN-3938
2026-05-10 15:33:24 -07:00
Fusion
7e1768b1b1 feat(FN-3328): refactor droid-cli into compatibility shim backed by fusion-
Merged FN-3328: Refactored the droid integration by converting `droid-cli` into a lightweight compatibility shim that delegates to `fusion-plugin-droid-runtime`, reducing droid-cli by ~5,400 lines of code while moving the actual runtime logic into the plugin scaffold. Updated the plugin loader to al

Fusion-Task-Id: FN-3328
2026-05-04 17:22:21 -07:00
Fusion
4b6c11ff0a docs(FN-3293): finalize stabilization audit documentation
- Add FN-3293 stabilization update section to docs/test-audit-report.md
- Document deterministic test hardening across CLI, dashboard, droid-cli, and core suites
- Update flaky hotspot notes to reflect resolved dashboard retry timeout coverage

Fusion-Task-Id: FN-3293
2026-05-04 13:17:57 -07:00
Fusion
3f5893bdc1 feat(FN-3074): sort done column by recency, preserve merge-active state, ad
This merge adds done-column sorting by most recent completion while preserving merge-active state on verification bounces, introduces a comprehensive droid runtime regression test suite covering engine delegation, auth routes, and model routing, hardens the CLI native bundle externalization, and fix

Fusion-Task-Id: FN-3074
2026-05-04 07:25:14 -07:00
Fusion
5be5da1938 feat(FN-3332): add droid runtime plugin with event bridge and process manag
The merge delivers a new `fusion-plugin-droid-runtime` plugin providing a full MCP server and runtime adapter for droid-based agents, with event bridging, process management, tool mapping, and a prompt builder. It also adds agent delegation and org hierarchy tools to the pi extension, while fixing a

Fusion-Task-Id: FN-3332
2026-05-04 03:04:33 -07:00
Fusion
ada8b2db5a test(FN-2986): expand droid provider unit coverage
- Replace the minimal droid provider test with comprehensive coverage across registration and streaming paths
- Add child_process and pi-ai mocks to exercise CLI process lifecycle, tool wiring, and message handling logic
- Cover success, error, abort, and edge-case behaviors for provider execution and event emission
- Increase regression protection for droid model discovery, deduplication, and provider integration flows

Fusion-Task-Id: FN-2986
2026-05-01 13:11:53 -07:00
gsxdsm
f5267ce237 fix(pi-claude-cli,droid-cli,dashboard): stop ballooning resumed CLI sessions and thread per-chat session
In a multi-iteration tool loop, buildResumePrompt anchored on the last user
message and walked forward through preceding tool results. The only user
message stays at index 0, so each iteration re-sent the entire transcript over
stdin to the resumed CLI session, duplicating the original query plus a
growing stack of tool results into the on-disk session every turn. The agent
saw its own context bloating and called it "compaction." Anchor on the last
assistant message and slice forward instead — the genuine delta since the
last turn already on disk. Same bug+fix in droid-cli (copy of pi-claude-cli).

Quick chat also created a fresh pi/Claude CLI session per user message and
faked continuity by stuffing the last 50 chat_messages into the prompt as
"## Previous Conversation". Replace that with real session continuity:
chat_sessions gains a cliSessionFile column (migration 56); ChatManager
opens the existing pi SessionManager file when present and creates a fresh
one (persisting its path) on the first turn. The prompt now carries only
the new user content.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-01 09:21:15 -07:00
Fusion
0ec5dfa3b1 feat(FN-2978): add droid-cli package with provider registration and model d
This merge introduces a new `packages/droid-cli` package that bridges AI agent execution as a subprocess, including process management, event streaming, tool mapping, MCP configuration, and thinking-mode support. It also adds the `DroidCliProviderCard` dashboard UI component with onboarding flows an

Fusion-Task-Id: FN-2978
2026-05-01 03:47:10 -07:00