Catalog›OKF bundles›Code versions (Git)›Plan-001 — Plugin discoveryP0Plan-001 — Plugin discoveryContents of the Plan-001 bundle. Open site Project Open in the app JSON README (API)# Plan-001 — Plugin discovery## Contents- [Plan-001: Plugin discovery](./plan.md) - Plan overview, DAG, tracks, gates, test plan.- [Task-001: FR-008 candidate search core](./tasks/Task-001-candidate-search-core.md)- [Task-002: FR-008 dedupe, rank, signal, token redaction](./tasks/Task-002-dedupe-rank-signal.md)- [Task-003: FR-009 compatibility verification](./tasks/Task-003-compatibility-verification.md)- [Task-004: FR-010 TTL cache + createPluginSearch factory](./tasks/Task-004-cache-and-factory.md)- [Task-005: FR-011 GitHub rate-limit surfacing + short-circuit](./tasks/Task-005-rate-limit.md)- [Task-006: FR-012 sourceToInstallInput](./tasks/Task-006-source-to-install-input.md)- [Task-007: re-exports + quality gates](./tasks/Task-007-exports-and-gates.md)- [Task-008: publish hand-off gate](./tasks/Task-008-publish-handoff.md)READMELoading documentation…# ts-plugin-kit [](https://discord.gg/k8DVhuYBR2) Framework-agnostic plugin/marketplace toolkit: typed git/npm sources, ref/sha pinning, install registry, and default-set reconciliation. **Zero runtime dependencies.** It is the install mechanism shared by Agent-IX CLIs and any other host (the `ix` CLI, `quoin`, a future desktop app). It knows nothing about oclif or any particular plugin payload — a host supplies a `readName` callback and decides what to do with the resolved files. ## Install Published on the public npm registry: ```bash npm install @agent-ix/ts-plugin-kit ``` ## Usage ```ts import { reconcile, validateMarketplaceManifest, } from "@agent-ix/ts-plugin-kit"; // host parses YAML/JSON itself, then validates the object const manifest = validateMarketplaceManifest(parsedYaml); const result = reconcile(manifest, { mode: "lazy", // install only what's missing/repinned; zero git when settled cacheRoot: "~/.cache/ix/ts-plugin-kit", targetRoot: "~/.ix/filament/modules", // <name>/ materialized here registryPath: "~/.ix/filament/registry.json", readName: (dir) => /* derive a name from the resolved content */ "...", }); // result.{installed, unchanged, updated, skipped} ``` A manifest entry's `source` is one of: | `type` | fetches | | ------------- | ---------------------------------------------------- | | `github` | `owner/repo` at a `ref`/`sha` | | `git-subdir` | one **sparse-checked-out** subdir of a repo at a pin | | `git` | any git URL at a `ref`/`sha` | | `path` | a local directory (dev) | | `url` / `npm` | reserved — resolution not yet implemented | All operations are **synchronous** (git is the only side effect) and pins are recorded as resolved commit shas, so a settled lazy `reconcile` performs no git at all. Included: - ✅ CI via [`agent-ix/nodejs-actions`](https://github.com/agent-ix/nodejs-actions) - 📦 **Local Development** via [PNPM](https://pnpm.io/) + Corepack - 🧪 Jest for unit testing (supports coverage, JSON output) - 💃 Prettier and ESLint for code quality - 🏷 Tag-triggered release workflow with registry support - 🔖 Automatic versioning based on Git tags --- ## 🚀 Getting Started This project uses **pnpm** with **Corepack** for local development. ### Prerequisites - Node.js 20+ - Corepack enabled (`corepack enable`) ### Setup ```bash # Install dependencies (uses pnpm version from package.json) pnpm install # Build the project pnpm run build # Run tests pnpm run test ``` --- ## 📜 Scripts All development commands are defined in `package.json` scripts. Run `pnpm run help` or `pnpm run` to see the full list. ### Core Development | Command | Description | | ----------------- | --------------------------------------- | | `pnpm run build` | Compile TypeScript | | `pnpm test` | Run tests | | `pnpm run lint` | Run ESLint | | `pnpm run format` | Run Prettier | | `pnpm run clean` | Remove build artifacts and node_modules | ### Package Management | Command | Description | | ------------------------------ | ---------------------------------------- | | `pnpm run pkg:add <pkg>` | Add dependency | | `pnpm run pkg:add-dev <pkg>` | Add dev dependency | | `pnpm run pkg:update` | Update dependencies | | `pnpm run pkg:use-local <pkg>` | Link local package via @agent-ix/js-deps | ### Publishing & Docker | Command | Description | | ------------------------ | --------------------------------------------- | | `pnpm run publish` | Publish to the public npm registry (upstream) | | `pnpm run publish:local` | Publish to local npm.ix registry (via Docker) | | `pnpm run docker:build` | Build release Docker image | --- ## 🛠 Makefile A `Makefile` is provided for backwards compatibility. It delegates all commands to the equivalent `pnpm run` scripts. ```bash make build # -> pnpm run build make test # -> pnpm run test make local-publish # -> pnpm run publish:local ``` DetailsTypeOKF bundlesTopicCode versions (Git)Publisheragent-ixSourceokf_githubCategoryDataVersion0.1Proposed changes1Last update2026-10-03T21:01:32ZProject statusActiveLanguageTypeScriptLicenseMITAdded2026-09-08 16:05:40Updated2026-09-08 16:05:40Source idagent-ix/ts-plugin-kit:plan/Plan-001-plugin-discovery/index.mdMoreMore okf bundles on Code versions (Git)All from agent-ixA–Z index