Skip to content

feat(abyss-integration): consume abyss skill-manifest for capability discovery (v4.8.0)#52

Merged
telagod merged 1 commit into
mainfrom
feat/skill-manifest-consumption
Jun 18, 2026
Merged

feat(abyss-integration): consume abyss skill-manifest for capability discovery (v4.8.0)#52
telagod merged 1 commit into
mainfrom
feat/skill-manifest-consumption

Conversation

@telagod

@telagod telagod commented Jun 18, 2026

Copy link
Copy Markdown
Owner

Summary

code-abyss 4.8.0 reads abyss's skill-manifest JSON at install time instead of carrying a hand-maintained mirror of abyss's surface. The pre-existing inject/adapter/MCP paths are unchanged — this patch is additive, with fallback to hand-coded defaults whenever the manifest is unavailable.

What discovery actually picks up

Real smoke against abyss 0.5.23:

```
abyss v0.5.23: 19 CLI commands, 8 MCP tools; daemon verbs: ping, stats, reindex, logs, mcp, subscribe

MCP tools (from manifest): search_context, get_symbols, find_callers, impact_analysis,
code_map, evolution, index_project, arch_map ← discovery 自动有
MCP tools (null fallback): search_context, get_symbols, find_callers, impact_analysis,
code_map, evolution, index_project ← hand-coded 漏 arch_map
```

`arch_map` was added to abyss in v0.4.0 but never mirrored in code-abyss. Manifest discovery surfaces it automatically — exactly the kind of drift this patch prevents.

What changed

  • `bin/lib/abyss-integration.js`: 3 new exports — `tryReadAbyssManifest`, `summarizeAbyssManifest`, `resolveAbyssMcpTools`. Never-throws, schema_version==1 gated, version-gated at `SKILL_MANIFEST_AVAILABLE_FROM = '0.5.22'`.
  • `bin/install.js`: `ensureAbyssBinary` calls `discoverAbyssCapabilities()` and prints the manifest summary after detection or download.
  • `MIN_ABYSS_VERSION` bumped `0.3.0` → `0.5.20`: 0.5.x line has been dogfooded across hono/helix/vite/FastAPI/Django/SQLAlchemy. 0.5.22+ unlocks dynamic discovery.
  • `package.json` 4.7.2 → 4.8.0 (minor, additive).
  • README + CHANGELOG entries.
  • 7 new tests including a real-abyss smoke against `/home/telagod/project/code-abyss-dev/target/release/abyss`.

Test plan

  • `npm test` (jest): 36 suites passed, 1 skipped, 417 tests passed, 1 skipped (was 411)
  • Real-abyss smoke asserts `schema_version === 1` and presence of the `subscribe` daemon verb
  • Fallback verified: manifest=null returns the hand-coded 7-tool list
  • Version-gate test: 0.5.19 fails MIN, 0.5.20/0.5.23 pass; 0.5.21 < skill-manifest gate
  • tryReadAbyssManifest double-gated: explicit binPath still runs `--version` to prevent old-binary noise

Compatibility

abyss not in PATH → fallback. abyss < 0.5.22 → fallback. Manifest parse fail → fallback. Never throws. Existing inject/adapter/MCP registration paths zero-touch.

Sister-project link

Released alongside abyss v0.5.22 (which ships `abyss skill-manifest`) — see https://github.com/telagod/abyss/releases/tag/v0.5.22 and https://github.com/telagod/abyss/releases/tag/v0.5.23.

…discovery (v4.8.0)

Code-abyss 4.8.0 now reads abyss's skill-manifest JSON when the installed
abyss binary is >= 0.5.22. The manifest is the contract:
- providers.cli.commands — what abyss exposes
- providers.mcp.tools — MCP tools list
- providers.daemon.verbs — daemon socket capabilities
- schema_version: 1 — shape pin

Falls back to hard-coded defaults when abyss is missing, < 0.5.22, or the
manifest fails to parse. The pre-existing injectClaudeHooks, hook scripts,
and adapter shapes are unchanged — this patch is ADDITIVE.

MIN_ABYSS_VERSION bumped 0.3.0 → 0.5.20 (the most recent stable; v0.5.x
has been thoroughly dogfooded against hono/helix/vite/FastAPI/Django/
SQLAlchemy). 0.5.22+ unlocks dynamic capability discovery.
@telagod telagod merged commit a43c86d into main Jun 18, 2026
15 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant