plexus-agent-config 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bin.d.ts +3 -0
- package/dist/bin.d.ts.map +1 -0
- package/dist/bin.js +175 -0
- package/dist/bin.js.map +1 -0
- package/node_modules/plexus-agent-config-core/dist/agents/adapters/base.d.ts +38 -0
- package/node_modules/plexus-agent-config-core/dist/agents/adapters/base.d.ts.map +1 -0
- package/node_modules/plexus-agent-config-core/dist/agents/adapters/base.js +125 -0
- package/node_modules/plexus-agent-config-core/dist/agents/adapters/base.js.map +1 -0
- package/node_modules/plexus-agent-config-core/dist/agents/adapters/codex.d.ts +9 -0
- package/node_modules/plexus-agent-config-core/dist/agents/adapters/codex.d.ts.map +1 -0
- package/node_modules/plexus-agent-config-core/dist/agents/adapters/codex.js +96 -0
- package/node_modules/plexus-agent-config-core/dist/agents/adapters/codex.js.map +1 -0
- package/node_modules/plexus-agent-config-core/dist/agents/adapters/index.d.ts +8 -0
- package/node_modules/plexus-agent-config-core/dist/agents/adapters/index.d.ts.map +1 -0
- package/node_modules/plexus-agent-config-core/dist/agents/adapters/index.js +12 -0
- package/node_modules/plexus-agent-config-core/dist/agents/adapters/index.js.map +1 -0
- package/node_modules/plexus-agent-config-core/dist/agents/adapters/json-mcp.d.ts +25 -0
- package/node_modules/plexus-agent-config-core/dist/agents/adapters/json-mcp.d.ts.map +1 -0
- package/node_modules/plexus-agent-config-core/dist/agents/adapters/json-mcp.js +182 -0
- package/node_modules/plexus-agent-config-core/dist/agents/adapters/json-mcp.js.map +1 -0
- package/node_modules/plexus-agent-config-core/dist/agents/catalog.d.ts +15 -0
- package/node_modules/plexus-agent-config-core/dist/agents/catalog.d.ts.map +1 -0
- package/node_modules/plexus-agent-config-core/dist/agents/catalog.js +153 -0
- package/node_modules/plexus-agent-config-core/dist/agents/catalog.js.map +1 -0
- package/node_modules/plexus-agent-config-core/dist/agents/detect.d.ts +14 -0
- package/node_modules/plexus-agent-config-core/dist/agents/detect.d.ts.map +1 -0
- package/node_modules/plexus-agent-config-core/dist/agents/detect.js +92 -0
- package/node_modules/plexus-agent-config-core/dist/agents/detect.js.map +1 -0
- package/node_modules/plexus-agent-config-core/dist/agents/index.d.ts +5 -0
- package/node_modules/plexus-agent-config-core/dist/agents/index.d.ts.map +1 -0
- package/node_modules/plexus-agent-config-core/dist/agents/index.js +5 -0
- package/node_modules/plexus-agent-config-core/dist/agents/index.js.map +1 -0
- package/node_modules/plexus-agent-config-core/dist/agents/inspect.d.ts +74 -0
- package/node_modules/plexus-agent-config-core/dist/agents/inspect.d.ts.map +1 -0
- package/node_modules/plexus-agent-config-core/dist/agents/inspect.js +169 -0
- package/node_modules/plexus-agent-config-core/dist/agents/inspect.js.map +1 -0
- package/node_modules/plexus-agent-config-core/dist/backup/index.d.ts +70 -0
- package/node_modules/plexus-agent-config-core/dist/backup/index.d.ts.map +1 -0
- package/node_modules/plexus-agent-config-core/dist/backup/index.js +258 -0
- package/node_modules/plexus-agent-config-core/dist/backup/index.js.map +1 -0
- package/node_modules/plexus-agent-config-core/dist/debug/index.d.ts +71 -0
- package/node_modules/plexus-agent-config-core/dist/debug/index.d.ts.map +1 -0
- package/node_modules/plexus-agent-config-core/dist/debug/index.js +263 -0
- package/node_modules/plexus-agent-config-core/dist/debug/index.js.map +1 -0
- package/node_modules/plexus-agent-config-core/dist/effective/index.d.ts +65 -0
- package/node_modules/plexus-agent-config-core/dist/effective/index.d.ts.map +1 -0
- package/node_modules/plexus-agent-config-core/dist/effective/index.js +227 -0
- package/node_modules/plexus-agent-config-core/dist/effective/index.js.map +1 -0
- package/node_modules/plexus-agent-config-core/dist/import/from-agents.d.ts +59 -0
- package/node_modules/plexus-agent-config-core/dist/import/from-agents.d.ts.map +1 -0
- package/node_modules/plexus-agent-config-core/dist/import/from-agents.js +212 -0
- package/node_modules/plexus-agent-config-core/dist/import/from-agents.js.map +1 -0
- package/node_modules/plexus-agent-config-core/dist/import/index.d.ts +26 -0
- package/node_modules/plexus-agent-config-core/dist/import/index.d.ts.map +1 -0
- package/node_modules/plexus-agent-config-core/dist/import/index.js +100 -0
- package/node_modules/plexus-agent-config-core/dist/import/index.js.map +1 -0
- package/node_modules/plexus-agent-config-core/dist/index.d.ts +12 -0
- package/node_modules/plexus-agent-config-core/dist/index.d.ts.map +1 -0
- package/node_modules/plexus-agent-config-core/dist/index.js +12 -0
- package/node_modules/plexus-agent-config-core/dist/index.js.map +1 -0
- package/node_modules/plexus-agent-config-core/dist/rules/index.d.ts +6 -0
- package/node_modules/plexus-agent-config-core/dist/rules/index.d.ts.map +1 -0
- package/node_modules/plexus-agent-config-core/dist/rules/index.js +292 -0
- package/node_modules/plexus-agent-config-core/dist/rules/index.js.map +1 -0
- package/node_modules/plexus-agent-config-core/dist/spread/index.d.ts +38 -0
- package/node_modules/plexus-agent-config-core/dist/spread/index.d.ts.map +1 -0
- package/node_modules/plexus-agent-config-core/dist/spread/index.js +190 -0
- package/node_modules/plexus-agent-config-core/dist/spread/index.js.map +1 -0
- package/node_modules/plexus-agent-config-core/dist/store/config.d.ts +5 -0
- package/node_modules/plexus-agent-config-core/dist/store/config.d.ts.map +1 -0
- package/node_modules/plexus-agent-config-core/dist/store/config.js +62 -0
- package/node_modules/plexus-agent-config-core/dist/store/config.js.map +1 -0
- package/node_modules/plexus-agent-config-core/dist/store/custom-agents.d.ts +45 -0
- package/node_modules/plexus-agent-config-core/dist/store/custom-agents.d.ts.map +1 -0
- package/node_modules/plexus-agent-config-core/dist/store/custom-agents.js +103 -0
- package/node_modules/plexus-agent-config-core/dist/store/custom-agents.js.map +1 -0
- package/node_modules/plexus-agent-config-core/dist/store/fs-utils.d.ts +16 -0
- package/node_modules/plexus-agent-config-core/dist/store/fs-utils.d.ts.map +1 -0
- package/node_modules/plexus-agent-config-core/dist/store/fs-utils.js +45 -0
- package/node_modules/plexus-agent-config-core/dist/store/fs-utils.js.map +1 -0
- package/node_modules/plexus-agent-config-core/dist/store/index.d.ts +9 -0
- package/node_modules/plexus-agent-config-core/dist/store/index.d.ts.map +1 -0
- package/node_modules/plexus-agent-config-core/dist/store/index.js +9 -0
- package/node_modules/plexus-agent-config-core/dist/store/index.js.map +1 -0
- package/node_modules/plexus-agent-config-core/dist/store/mcp.d.ts +5 -0
- package/node_modules/plexus-agent-config-core/dist/store/mcp.d.ts.map +1 -0
- package/node_modules/plexus-agent-config-core/dist/store/mcp.js +30 -0
- package/node_modules/plexus-agent-config-core/dist/store/mcp.js.map +1 -0
- package/node_modules/plexus-agent-config-core/dist/store/merge.d.ts +15 -0
- package/node_modules/plexus-agent-config-core/dist/store/merge.d.ts.map +1 -0
- package/node_modules/plexus-agent-config-core/dist/store/merge.js +28 -0
- package/node_modules/plexus-agent-config-core/dist/store/merge.js.map +1 -0
- package/node_modules/plexus-agent-config-core/dist/store/paths.d.ts +22 -0
- package/node_modules/plexus-agent-config-core/dist/store/paths.d.ts.map +1 -0
- package/node_modules/plexus-agent-config-core/dist/store/paths.js +107 -0
- package/node_modules/plexus-agent-config-core/dist/store/paths.js.map +1 -0
- package/node_modules/plexus-agent-config-core/dist/store/rules.d.ts +12 -0
- package/node_modules/plexus-agent-config-core/dist/store/rules.d.ts.map +1 -0
- package/node_modules/plexus-agent-config-core/dist/store/rules.js +32 -0
- package/node_modules/plexus-agent-config-core/dist/store/rules.js.map +1 -0
- package/node_modules/plexus-agent-config-core/dist/store/scaffolding.d.ts +11 -0
- package/node_modules/plexus-agent-config-core/dist/store/scaffolding.d.ts.map +1 -0
- package/node_modules/plexus-agent-config-core/dist/store/scaffolding.js +32 -0
- package/node_modules/plexus-agent-config-core/dist/store/scaffolding.js.map +1 -0
- package/node_modules/plexus-agent-config-core/dist/store/skills.d.ts +13 -0
- package/node_modules/plexus-agent-config-core/dist/store/skills.d.ts.map +1 -0
- package/node_modules/plexus-agent-config-core/dist/store/skills.js +84 -0
- package/node_modules/plexus-agent-config-core/dist/store/skills.js.map +1 -0
- package/node_modules/plexus-agent-config-core/dist/sync/index.d.ts +89 -0
- package/node_modules/plexus-agent-config-core/dist/sync/index.d.ts.map +1 -0
- package/node_modules/plexus-agent-config-core/dist/sync/index.js +423 -0
- package/node_modules/plexus-agent-config-core/dist/sync/index.js.map +1 -0
- package/node_modules/plexus-agent-config-core/dist/team/git.d.ts +23 -0
- package/node_modules/plexus-agent-config-core/dist/team/git.d.ts.map +1 -0
- package/node_modules/plexus-agent-config-core/dist/team/git.js +132 -0
- package/node_modules/plexus-agent-config-core/dist/team/git.js.map +1 -0
- package/node_modules/plexus-agent-config-core/dist/team/index.d.ts +2 -0
- package/node_modules/plexus-agent-config-core/dist/team/index.d.ts.map +1 -0
- package/node_modules/plexus-agent-config-core/dist/team/index.js +2 -0
- package/node_modules/plexus-agent-config-core/dist/team/index.js.map +1 -0
- package/node_modules/plexus-agent-config-core/dist/types.d.ts +142 -0
- package/node_modules/plexus-agent-config-core/dist/types.d.ts.map +1 -0
- package/node_modules/plexus-agent-config-core/dist/types.js +13 -0
- package/node_modules/plexus-agent-config-core/dist/types.js.map +1 -0
- package/node_modules/plexus-agent-config-core/package.json +29 -0
- package/node_modules/plexus-agent-config-web/.next/BUILD_ID +1 -0
- package/node_modules/plexus-agent-config-web/.next/app-path-routes-manifest.json +39 -0
- package/node_modules/plexus-agent-config-web/.next/build-manifest.json +20 -0
- package/node_modules/plexus-agent-config-web/.next/export-marker.json +6 -0
- package/node_modules/plexus-agent-config-web/.next/images-manifest.json +68 -0
- package/node_modules/plexus-agent-config-web/.next/next-minimal-server.js.nft.json +1 -0
- package/node_modules/plexus-agent-config-web/.next/next-server.js.nft.json +1 -0
- package/node_modules/plexus-agent-config-web/.next/package.json +1 -0
- package/node_modules/plexus-agent-config-web/.next/prerender-manifest.json +36 -0
- package/node_modules/plexus-agent-config-web/.next/react-loadable-manifest.json +1 -0
- package/node_modules/plexus-agent-config-web/.next/required-server-files.js +337 -0
- package/node_modules/plexus-agent-config-web/.next/required-server-files.json +337 -0
- package/node_modules/plexus-agent-config-web/.next/routes-manifest.json +286 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/_global-error/page.js +32 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/_global-error/page.js.nft.json +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/_global-error/page_client-reference-manifest.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/_global-error.html +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/_global-error.meta +16 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/_global-error.rsc +14 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/_global-error.segments/_full.segment.rsc +14 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +5 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/_global-error.segments/_global-error.segment.rsc +5 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/_global-error.segments/_head.segment.rsc +5 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/_global-error.segments/_index.segment.rsc +5 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/_not-found/page.js +2 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/_not-found/page.js.nft.json +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/about/page.js +2 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/about/page.js.nft.json +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/about/page_client-reference-manifest.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/agents/[id]/page.js +2 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/agents/[id]/page.js.nft.json +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/agents/[id]/page_client-reference-manifest.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/api/agent/[id]/file/route.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/api/agent/[id]/file/route.js.nft.json +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/api/agent/[id]/file/route_client-reference-manifest.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/api/agent/[id]/route.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/api/agent/[id]/route.js.nft.json +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/api/agent/[id]/route_client-reference-manifest.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/api/agent-catalog/route.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/api/agent-catalog/route.js.nft.json +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/api/agent-catalog/route_client-reference-manifest.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/api/agents/route.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/api/agents/route.js.nft.json +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/api/agents/route_client-reference-manifest.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/api/backups/[id]/restore/route.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/api/backups/[id]/restore/route.js.nft.json +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/api/backups/[id]/restore/route_client-reference-manifest.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/api/backups/route.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/api/backups/route.js.nft.json +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/api/backups/route_client-reference-manifest.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/api/config/route.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/api/config/route.js.nft.json +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/api/config/route_client-reference-manifest.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/api/custom-agents/[id]/file/route.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/api/custom-agents/[id]/file/route.js.nft.json +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/api/custom-agents/[id]/file/route_client-reference-manifest.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/api/custom-agents/[id]/route.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/api/custom-agents/[id]/route.js.nft.json +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/api/custom-agents/[id]/route_client-reference-manifest.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/api/custom-agents/route.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/api/custom-agents/route.js.nft.json +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/api/custom-agents/route_client-reference-manifest.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/api/debug/route.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/api/debug/route.js.nft.json +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/api/debug/route_client-reference-manifest.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/api/import/route.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/api/import/route.js.nft.json +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/api/import/route_client-reference-manifest.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/api/mcp/[id]/toggle/route.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/api/mcp/[id]/toggle/route.js.nft.json +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/api/mcp/[id]/toggle/route_client-reference-manifest.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/api/mcp/effective/route.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/api/mcp/effective/route.js.nft.json +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/api/mcp/effective/route_client-reference-manifest.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/api/mcp/route.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/api/mcp/route.js.nft.json +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/api/mcp/route_client-reference-manifest.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/api/rules/route.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/api/rules/route.js.nft.json +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/api/rules/route_client-reference-manifest.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/api/skills/[id]/route.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/api/skills/[id]/route.js.nft.json +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/api/skills/[id]/route_client-reference-manifest.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/api/skills/[id]/toggle/route.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/api/skills/[id]/toggle/route.js.nft.json +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/api/skills/[id]/toggle/route_client-reference-manifest.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/api/skills/effective/route.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/api/skills/effective/route.js.nft.json +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/api/skills/effective/route_client-reference-manifest.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/api/skills/route.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/api/skills/route.js.nft.json +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/api/skills/route_client-reference-manifest.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/api/spread/route.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/api/spread/route.js.nft.json +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/api/spread/route_client-reference-manifest.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/api/sync/route.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/api/sync/route.js.nft.json +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/api/sync/route_client-reference-manifest.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/api/team/route.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/api/team/route.js.nft.json +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/api/team/route_client-reference-manifest.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/backups/page.js +4 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/backups/page.js.nft.json +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/backups/page_client-reference-manifest.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/debug/page.js +2 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/debug/page.js.nft.json +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/debug/page_client-reference-manifest.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/mcp/page.js +2 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/mcp/page.js.nft.json +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/mcp/page_client-reference-manifest.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/mirror/page.js +2 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/mirror/page.js.nft.json +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/mirror/page_client-reference-manifest.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/page.js +2 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/page.js.nft.json +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/page_client-reference-manifest.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/rules/page.js +10 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/rules/page.js.nft.json +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/rules/page_client-reference-manifest.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/settings/page.js +2 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/settings/page.js.nft.json +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/settings/page_client-reference-manifest.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/skills/page.js +2 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/skills/page.js.nft.json +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/skills/page_client-reference-manifest.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/spread/page.js +2 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/spread/page.js.nft.json +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/spread/page_client-reference-manifest.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/team/page.js +2 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/team/page.js.nft.json +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/app/team/page_client-reference-manifest.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/app-paths-manifest.json +39 -0
- package/node_modules/plexus-agent-config-web/.next/server/chunks/103.js +18 -0
- package/node_modules/plexus-agent-config-web/.next/server/chunks/174.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/chunks/380.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/chunks/397.js +26 -0
- package/node_modules/plexus-agent-config-web/.next/server/chunks/479.js +45 -0
- package/node_modules/plexus-agent-config-web/.next/server/chunks/620.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/chunks/750.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/chunks/921.js +5 -0
- package/node_modules/plexus-agent-config-web/.next/server/functions-config-manifest.json +4 -0
- package/node_modules/plexus-agent-config-web/.next/server/interception-route-rewrite-manifest.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/middleware-build-manifest.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/middleware-manifest.json +6 -0
- package/node_modules/plexus-agent-config-web/.next/server/middleware-react-loadable-manifest.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/next-font-manifest.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/next-font-manifest.json +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/pages/500.html +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/pages-manifest.json +3 -0
- package/node_modules/plexus-agent-config-web/.next/server/prefetch-hints.json +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/server-reference-manifest.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/server-reference-manifest.json +1 -0
- package/node_modules/plexus-agent-config-web/.next/server/webpack-runtime.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/static/chunks/1968-9d19293a29f03646.js +32 -0
- package/node_modules/plexus-agent-config-web/.next/static/chunks/3051-5eb2f5784474c658.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/static/chunks/3090-3702701c503793f0.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/static/chunks/4399-7cc367307a2c52a6.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/static/chunks/5587-933f3258279c6072.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/static/chunks/626-7ea78ce012c8d471.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/static/chunks/7814-1bc9d30b9724b70c.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/static/chunks/87c73c54-64138e17754e338c.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/static/chunks/app/_global-error/page-fe6298e28540d3d8.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/static/chunks/app/_not-found/page-303a3bb713044693.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/static/chunks/app/about/page-64a1ee41b87ea86c.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/static/chunks/app/agents/[id]/page-c3c89d8ae72c75c2.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/static/chunks/app/api/agent/[id]/file/route-fe6298e28540d3d8.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/static/chunks/app/api/agent/[id]/route-fe6298e28540d3d8.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/static/chunks/app/api/agent-catalog/route-fe6298e28540d3d8.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/static/chunks/app/api/agents/route-fe6298e28540d3d8.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/static/chunks/app/api/backups/[id]/restore/route-fe6298e28540d3d8.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/static/chunks/app/api/backups/route-fe6298e28540d3d8.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/static/chunks/app/api/config/route-fe6298e28540d3d8.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/static/chunks/app/api/custom-agents/[id]/file/route-fe6298e28540d3d8.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/static/chunks/app/api/custom-agents/[id]/route-fe6298e28540d3d8.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/static/chunks/app/api/custom-agents/route-fe6298e28540d3d8.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/static/chunks/app/api/debug/route-fe6298e28540d3d8.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/static/chunks/app/api/import/route-fe6298e28540d3d8.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/static/chunks/app/api/mcp/[id]/toggle/route-fe6298e28540d3d8.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/static/chunks/app/api/mcp/effective/route-fe6298e28540d3d8.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/static/chunks/app/api/mcp/route-fe6298e28540d3d8.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/static/chunks/app/api/rules/route-fe6298e28540d3d8.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/static/chunks/app/api/skills/[id]/route-fe6298e28540d3d8.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/static/chunks/app/api/skills/[id]/toggle/route-fe6298e28540d3d8.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/static/chunks/app/api/skills/effective/route-fe6298e28540d3d8.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/static/chunks/app/api/skills/route-fe6298e28540d3d8.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/static/chunks/app/api/spread/route-fe6298e28540d3d8.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/static/chunks/app/api/sync/route-fe6298e28540d3d8.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/static/chunks/app/api/team/route-fe6298e28540d3d8.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/static/chunks/app/backups/page-6842a663db4fab47.js +3 -0
- package/node_modules/plexus-agent-config-web/.next/static/chunks/app/debug/page-19e534df1d13eb98.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/static/chunks/app/layout-798b3b697994c5bf.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/static/chunks/app/mcp/page-d0d518965db961f1.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/static/chunks/app/mirror/page-e88f348e1a12487a.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/static/chunks/app/page-039dbbfad47ff659.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/static/chunks/app/rules/page-5bb663fc0ee9960b.js +9 -0
- package/node_modules/plexus-agent-config-web/.next/static/chunks/app/settings/page-8164e1d1a8a08038.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/static/chunks/app/skills/page-6067058898aa6e10.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/static/chunks/app/spread/page-fe6298e28540d3d8.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/static/chunks/app/team/page-edd7f54640e60e94.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/static/chunks/framework-2c03ddc44b9f482b.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/static/chunks/main-488dba80110e3bfb.js +5 -0
- package/node_modules/plexus-agent-config-web/.next/static/chunks/main-app-4c4bad3c22a66283.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/static/chunks/next/dist/client/components/builtin/app-error-fe6298e28540d3d8.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/static/chunks/next/dist/client/components/builtin/forbidden-fe6298e28540d3d8.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/static/chunks/next/dist/client/components/builtin/global-error-821a044f296e83b5.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/static/chunks/next/dist/client/components/builtin/not-found-fe6298e28540d3d8.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/static/chunks/next/dist/client/components/builtin/unauthorized-fe6298e28540d3d8.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/static/chunks/polyfills-42372ed130431b0a.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/static/chunks/webpack-dd4b9bd51624284c.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/static/css/eba3657411e6e6cd.css +5 -0
- package/node_modules/plexus-agent-config-web/.next/static/media/19cfc7226ec3afaa-s.woff2 +0 -0
- package/node_modules/plexus-agent-config-web/.next/static/media/21350d82a1f187e9-s.woff2 +0 -0
- package/node_modules/plexus-agent-config-web/.next/static/media/8e9860b6e62d6359-s.woff2 +0 -0
- package/node_modules/plexus-agent-config-web/.next/static/media/ba9851c3c22cd980-s.woff2 +0 -0
- package/node_modules/plexus-agent-config-web/.next/static/media/c5fe6dc8356a8c31-s.woff2 +0 -0
- package/node_modules/plexus-agent-config-web/.next/static/media/df0a9ae256c0569c-s.woff2 +0 -0
- package/node_modules/plexus-agent-config-web/.next/static/media/e4af272ccee01ff0-s.p.woff2 +0 -0
- package/node_modules/plexus-agent-config-web/.next/static/mvb1RnSdmeAxbYF-SjSfa/_buildManifest.js +1 -0
- package/node_modules/plexus-agent-config-web/.next/static/mvb1RnSdmeAxbYF-SjSfa/_ssgManifest.js +1 -0
- package/node_modules/plexus-agent-config-web/next.config.mjs +17 -0
- package/node_modules/plexus-agent-config-web/package.json +40 -0
- package/node_modules/plexus-agent-config-web/public/architecture/config-sharing-map.html +887 -0
- package/node_modules/plexus-agent-config-web/public/favicon.svg +5 -0
- package/package.json +64 -0
package/dist/bin.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bin.d.ts","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":""}
|
package/dist/bin.js
ADDED
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { spawn } from "node:child_process";
|
|
3
|
+
import { existsSync } from "node:fs";
|
|
4
|
+
import { createRequire } from "node:module";
|
|
5
|
+
import path from "node:path";
|
|
6
|
+
import { fileURLToPath } from "node:url";
|
|
7
|
+
import kleur from "kleur";
|
|
8
|
+
import { ALL_AGENTS, detectAgents, ensureStoreScaffolding, joinTeam, pullTeam, runShareAll, teamStatus, } from "plexus-agent-config-core";
|
|
9
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
10
|
+
const __dirname = path.dirname(__filename);
|
|
11
|
+
const require = createRequire(import.meta.url);
|
|
12
|
+
function help() {
|
|
13
|
+
console.log(`
|
|
14
|
+
${kleur.bold("Plexus")} – team-shared AI agent config
|
|
15
|
+
|
|
16
|
+
${kleur.bold("Usage:")}
|
|
17
|
+
plexus start the local dashboard (default)
|
|
18
|
+
plexus start [-p <port>]
|
|
19
|
+
plexus detect list detected AI agents on this machine
|
|
20
|
+
plexus join <git-url> subscribe to a team config repo
|
|
21
|
+
plexus pull refresh the team layer from upstream
|
|
22
|
+
plexus sync [--prefer <agent>] import, share, and apply config to all enabled agents
|
|
23
|
+
plexus status show subscription / sync status
|
|
24
|
+
plexus help show this help
|
|
25
|
+
`);
|
|
26
|
+
}
|
|
27
|
+
async function cmdDetect() {
|
|
28
|
+
const agents = detectAgents();
|
|
29
|
+
for (const a of agents) {
|
|
30
|
+
const tag = a.installed ? kleur.green("installed") : kleur.gray("missing ");
|
|
31
|
+
console.log(` ${tag} ${a.displayName.padEnd(16)} ${kleur.dim(a.rootDir)}`);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
const AGENTS = new Set(ALL_AGENTS);
|
|
35
|
+
function preferredAgentFromArgs(args) {
|
|
36
|
+
const idx = args.findIndex((arg) => arg === "--prefer" || arg === "--primary");
|
|
37
|
+
if (idx < 0)
|
|
38
|
+
return undefined;
|
|
39
|
+
const value = args[idx + 1];
|
|
40
|
+
if (!AGENTS.has(value ?? "")) {
|
|
41
|
+
console.error(kleur.red(`Usage: plexus sync --prefer <${ALL_AGENTS.join("|")}>`));
|
|
42
|
+
process.exit(1);
|
|
43
|
+
}
|
|
44
|
+
return value;
|
|
45
|
+
}
|
|
46
|
+
async function cmdSync(args) {
|
|
47
|
+
await ensureStoreScaffolding();
|
|
48
|
+
const preferredAgent = preferredAgentFromArgs(args);
|
|
49
|
+
console.log(kleur.cyan("→ sharing config across all enabled agents..."));
|
|
50
|
+
const report = await runShareAll({ preferredAgent });
|
|
51
|
+
if (report.preferredAgent && report.conflictsResolved > 0) {
|
|
52
|
+
console.log(` ${kleur.green("✓")} resolved ${report.conflictsResolved} conflict(s) with ${report.preferredAgent}`);
|
|
53
|
+
}
|
|
54
|
+
console.log(` ${kleur.green("✓")} imported ${report.imported.mcpWritten + report.imported.mcpExtended} MCP and ${report.imported.skillsWritten + report.imported.skillsExtended} skills`);
|
|
55
|
+
console.log(` ${kleur.green("✓")} enabled ${report.shared.mcp} MCP and ${report.shared.skills} skills`);
|
|
56
|
+
if (report.rules.skipped) {
|
|
57
|
+
console.log(` ${kleur.yellow("warn")} ${report.rules.skipped}`);
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
console.log(` ${kleur.green("✓")} applied rules to ${report.rules.applied.filter((r) => r.applied).length} agent files`);
|
|
61
|
+
}
|
|
62
|
+
for (const r of report.results) {
|
|
63
|
+
const ok = r.errors.length === 0;
|
|
64
|
+
const head = ok ? kleur.green("✓") : kleur.red("✗");
|
|
65
|
+
console.log(` ${head} ${r.agent.padEnd(16)} mcp=${r.applied.mcp} skills=${r.applied.skills}`);
|
|
66
|
+
for (const w of r.warnings)
|
|
67
|
+
console.log(` ${kleur.yellow("warn")} ${w}`);
|
|
68
|
+
for (const e of r.errors)
|
|
69
|
+
console.log(` ${kleur.red("err ")} ${e}`);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
async function cmdStatus() {
|
|
73
|
+
const ts = await teamStatus();
|
|
74
|
+
if (ts.subscribed) {
|
|
75
|
+
console.log(`Team: ${kleur.cyan(ts.repoUrl ?? "")}`);
|
|
76
|
+
if (ts.hasUpstreamUpdate) {
|
|
77
|
+
console.log(` ${kleur.yellow(`⟳ ${ts.behind} update(s) available – run 'plexus pull'`)}`);
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
console.log(` ${kleur.green("up-to-date")}`);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
console.log(`Team: ${kleur.gray("not subscribed")} (run 'plexus join <git-url>')`);
|
|
85
|
+
}
|
|
86
|
+
await cmdDetect();
|
|
87
|
+
}
|
|
88
|
+
function findWebDir() {
|
|
89
|
+
const installedWebDir = (() => {
|
|
90
|
+
try {
|
|
91
|
+
return path.dirname(require.resolve("plexus-agent-config-web/package.json"));
|
|
92
|
+
}
|
|
93
|
+
catch {
|
|
94
|
+
return null;
|
|
95
|
+
}
|
|
96
|
+
})();
|
|
97
|
+
const candidates = [
|
|
98
|
+
installedWebDir,
|
|
99
|
+
// Monorepo development / npm link paths.
|
|
100
|
+
path.resolve(__dirname, "../../../apps/web"),
|
|
101
|
+
path.resolve(__dirname, "../../apps/web"),
|
|
102
|
+
path.resolve(process.cwd(), "apps/web"),
|
|
103
|
+
].filter((candidate) => Boolean(candidate));
|
|
104
|
+
for (const c of candidates) {
|
|
105
|
+
if (existsSync(path.join(c, "package.json")))
|
|
106
|
+
return c;
|
|
107
|
+
}
|
|
108
|
+
return null;
|
|
109
|
+
}
|
|
110
|
+
async function cmdStart(port) {
|
|
111
|
+
await ensureStoreScaffolding();
|
|
112
|
+
const webDir = findWebDir();
|
|
113
|
+
if (!webDir) {
|
|
114
|
+
console.error(kleur.red("Could not locate apps/web. If you cloned the monorepo, run from the repo root."));
|
|
115
|
+
process.exit(1);
|
|
116
|
+
}
|
|
117
|
+
const env = { ...process.env, PORT: String(port), PLEXUS_PORT: String(port) };
|
|
118
|
+
const isProdBuild = existsSync(path.join(webDir, ".next"));
|
|
119
|
+
const args = isProdBuild ? ["run", "start"] : ["run", "dev"];
|
|
120
|
+
console.log(kleur.cyan(`→ Starting Plexus dashboard on http://localhost:${port}`));
|
|
121
|
+
console.log(kleur.dim(` (mode: ${isProdBuild ? "production" : "development"})`));
|
|
122
|
+
const child = spawn("npm", [...args, "--", "-p", String(port)], {
|
|
123
|
+
cwd: webDir,
|
|
124
|
+
env,
|
|
125
|
+
stdio: "inherit",
|
|
126
|
+
});
|
|
127
|
+
child.on("exit", (code) => process.exit(code ?? 0));
|
|
128
|
+
}
|
|
129
|
+
async function main() {
|
|
130
|
+
const [, , cmd = "start", ...rest] = process.argv;
|
|
131
|
+
switch (cmd) {
|
|
132
|
+
case "help":
|
|
133
|
+
case "--help":
|
|
134
|
+
case "-h":
|
|
135
|
+
help();
|
|
136
|
+
return;
|
|
137
|
+
case "detect":
|
|
138
|
+
await cmdDetect();
|
|
139
|
+
return;
|
|
140
|
+
case "sync":
|
|
141
|
+
await cmdSync(rest);
|
|
142
|
+
return;
|
|
143
|
+
case "status":
|
|
144
|
+
await cmdStatus();
|
|
145
|
+
return;
|
|
146
|
+
case "join": {
|
|
147
|
+
const url = rest[0];
|
|
148
|
+
if (!url) {
|
|
149
|
+
console.error(kleur.red("Usage: plexus join <git-url>"));
|
|
150
|
+
process.exit(1);
|
|
151
|
+
}
|
|
152
|
+
const r = await joinTeam(url);
|
|
153
|
+
console.log(r.ok ? kleur.green(r.message) : kleur.red(r.message));
|
|
154
|
+
process.exit(r.ok ? 0 : 1);
|
|
155
|
+
return;
|
|
156
|
+
}
|
|
157
|
+
case "pull": {
|
|
158
|
+
const r = await pullTeam();
|
|
159
|
+
console.log(r.ok ? kleur.green(r.message) : kleur.red(r.message));
|
|
160
|
+
process.exit(r.ok ? 0 : 1);
|
|
161
|
+
return;
|
|
162
|
+
}
|
|
163
|
+
default: {
|
|
164
|
+
const portFlagIdx = rest.findIndex((a) => a === "-p" || a === "--port");
|
|
165
|
+
const port = portFlagIdx >= 0 ? Number.parseInt(rest[portFlagIdx + 1] ?? "7777", 10) : 7777;
|
|
166
|
+
await cmdStart(port);
|
|
167
|
+
return;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
main().catch((err) => {
|
|
172
|
+
console.error(kleur.red("Fatal:"), err);
|
|
173
|
+
process.exit(1);
|
|
174
|
+
});
|
|
175
|
+
//# sourceMappingURL=bin.js.map
|
package/dist/bin.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { AgentId, MCPServerDef, SkillDef, SyncResult } from "../../types.js";
|
|
2
|
+
export interface ApplyContext {
|
|
3
|
+
agentId: AgentId;
|
|
4
|
+
mcp: MCPServerDef[];
|
|
5
|
+
skills: SkillDef[];
|
|
6
|
+
/** Where merged skills live on disk; adapters can symlink to these. */
|
|
7
|
+
skillSourcePaths: Map<string, string>;
|
|
8
|
+
syncStrategy: "symlink" | "copy";
|
|
9
|
+
}
|
|
10
|
+
export interface AgentAdapter {
|
|
11
|
+
id: AgentId;
|
|
12
|
+
apply(ctx: ApplyContext): Promise<SyncResult>;
|
|
13
|
+
}
|
|
14
|
+
export declare function ensureDir(dir: string): Promise<void>;
|
|
15
|
+
export declare function pathExists(p: string): Promise<boolean>;
|
|
16
|
+
export declare function isSymlink(p: string): Promise<boolean>;
|
|
17
|
+
/**
|
|
18
|
+
* Place `target` at `linkPath` either as a symlink (preferred) or copy fallback.
|
|
19
|
+
*
|
|
20
|
+
* If the destination is an existing real file/dir we evict it into the
|
|
21
|
+
* central Plexus backups area (~/.config/plexus/backups/_collisions/<ts>/...)
|
|
22
|
+
* BEFORE placing the new symlink. Older inline `.plexus-backup-<ts>` residue
|
|
23
|
+
* in agent directories is no longer created by this function.
|
|
24
|
+
*/
|
|
25
|
+
export declare function placeLinkOrCopy(target: string, linkPath: string, strategy: "symlink" | "copy"): Promise<{
|
|
26
|
+
via: "symlink" | "copy";
|
|
27
|
+
backedUp?: string;
|
|
28
|
+
}>;
|
|
29
|
+
export declare function emptyResult(agentId: AgentId): SyncResult;
|
|
30
|
+
/**
|
|
31
|
+
* Replace a regular file at `linkPath` with a symlink pointing at `target`.
|
|
32
|
+
* If symlink isn't supported (Windows without privilege), falls back to a copy.
|
|
33
|
+
*
|
|
34
|
+
* Caller is responsible for invoking the backup module BEFORE calling this —
|
|
35
|
+
* we do not silently overwrite without a snapshot existing somewhere.
|
|
36
|
+
*/
|
|
37
|
+
export declare function placeFileSymlink(target: string, linkPath: string, strategy: "symlink" | "copy"): Promise<"symlink" | "copy">;
|
|
38
|
+
//# sourceMappingURL=base.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../src/agents/adapters/base.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAElF,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,EAAE,YAAY,EAAE,CAAC;IACpB,MAAM,EAAE,QAAQ,EAAE,CAAC;IACnB,uEAAuE;IACvE,gBAAgB,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACtC,YAAY,EAAE,SAAS,GAAG,MAAM,CAAC;CAClC;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,OAAO,CAAC;IACZ,KAAK,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;CAC/C;AAED,wBAAsB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE1D;AAED,wBAAsB,UAAU,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAO5D;AAED,wBAAsB,SAAS,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAO3D;AAED;;;;;;;GAOG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,SAAS,GAAG,MAAM,GAC3B,OAAO,CAAC;IAAE,GAAG,EAAE,SAAS,GAAG,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAmCzD;AAED,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,UAAU,CAOxD;AAED;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,SAAS,GAAG,MAAM,GAC3B,OAAO,CAAC,SAAS,GAAG,MAAM,CAAC,CAwC7B"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import fs from "node:fs/promises";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
export async function ensureDir(dir) {
|
|
4
|
+
await fs.mkdir(dir, { recursive: true });
|
|
5
|
+
}
|
|
6
|
+
export async function pathExists(p) {
|
|
7
|
+
try {
|
|
8
|
+
await fs.access(p);
|
|
9
|
+
return true;
|
|
10
|
+
}
|
|
11
|
+
catch {
|
|
12
|
+
return false;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
export async function isSymlink(p) {
|
|
16
|
+
try {
|
|
17
|
+
const s = await fs.lstat(p);
|
|
18
|
+
return s.isSymbolicLink();
|
|
19
|
+
}
|
|
20
|
+
catch {
|
|
21
|
+
return false;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Place `target` at `linkPath` either as a symlink (preferred) or copy fallback.
|
|
26
|
+
*
|
|
27
|
+
* If the destination is an existing real file/dir we evict it into the
|
|
28
|
+
* central Plexus backups area (~/.config/plexus/backups/_collisions/<ts>/...)
|
|
29
|
+
* BEFORE placing the new symlink. Older inline `.plexus-backup-<ts>` residue
|
|
30
|
+
* in agent directories is no longer created by this function.
|
|
31
|
+
*/
|
|
32
|
+
export async function placeLinkOrCopy(target, linkPath, strategy) {
|
|
33
|
+
await ensureDir(path.dirname(linkPath));
|
|
34
|
+
let backedUp;
|
|
35
|
+
if (await pathExists(linkPath)) {
|
|
36
|
+
if (await isSymlink(linkPath)) {
|
|
37
|
+
await fs.unlink(linkPath);
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
const { quarantineCollision } = await import("../../backup/index.js");
|
|
41
|
+
const dest = await quarantineCollision({ agent: "unknown", sourcePath: linkPath });
|
|
42
|
+
if (dest)
|
|
43
|
+
backedUp = dest;
|
|
44
|
+
// After quarantineCollision the original path is gone; fall through to placement.
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
if (strategy === "symlink") {
|
|
48
|
+
try {
|
|
49
|
+
const stat = await fs.lstat(target);
|
|
50
|
+
const type = stat.isDirectory() ? "dir" : "file";
|
|
51
|
+
await fs.symlink(target, linkPath, type);
|
|
52
|
+
return { via: "symlink", backedUp };
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
// Fallback to copy if symlink not supported (e.g. Windows without privilege).
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
// copy fallback
|
|
59
|
+
const stat = await fs.lstat(target);
|
|
60
|
+
if (stat.isDirectory()) {
|
|
61
|
+
await fs.cp(target, linkPath, { recursive: true });
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
await fs.copyFile(target, linkPath);
|
|
65
|
+
}
|
|
66
|
+
return { via: "copy", backedUp };
|
|
67
|
+
}
|
|
68
|
+
export function emptyResult(agentId) {
|
|
69
|
+
return {
|
|
70
|
+
agent: agentId,
|
|
71
|
+
applied: { mcp: 0, skills: 0 },
|
|
72
|
+
warnings: [],
|
|
73
|
+
errors: [],
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Replace a regular file at `linkPath` with a symlink pointing at `target`.
|
|
78
|
+
* If symlink isn't supported (Windows without privilege), falls back to a copy.
|
|
79
|
+
*
|
|
80
|
+
* Caller is responsible for invoking the backup module BEFORE calling this —
|
|
81
|
+
* we do not silently overwrite without a snapshot existing somewhere.
|
|
82
|
+
*/
|
|
83
|
+
export async function placeFileSymlink(target, linkPath, strategy) {
|
|
84
|
+
await ensureDir(path.dirname(linkPath));
|
|
85
|
+
let lst = null;
|
|
86
|
+
try {
|
|
87
|
+
lst = await fs.lstat(linkPath);
|
|
88
|
+
}
|
|
89
|
+
catch {
|
|
90
|
+
// not present yet — fine
|
|
91
|
+
}
|
|
92
|
+
if (lst) {
|
|
93
|
+
if (lst.isSymbolicLink()) {
|
|
94
|
+
try {
|
|
95
|
+
const current = await fs.readlink(linkPath);
|
|
96
|
+
const resolved = path.isAbsolute(current)
|
|
97
|
+
? current
|
|
98
|
+
: path.resolve(path.dirname(linkPath), current);
|
|
99
|
+
if (resolved === path.resolve(target)) {
|
|
100
|
+
return "symlink"; // already correct
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
catch {
|
|
104
|
+
// fall through
|
|
105
|
+
}
|
|
106
|
+
await fs.unlink(linkPath);
|
|
107
|
+
}
|
|
108
|
+
else {
|
|
109
|
+
// Regular file — remove (caller already snapshotted).
|
|
110
|
+
await fs.unlink(linkPath);
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
if (strategy === "symlink") {
|
|
114
|
+
try {
|
|
115
|
+
await fs.symlink(target, linkPath, "file");
|
|
116
|
+
return "symlink";
|
|
117
|
+
}
|
|
118
|
+
catch {
|
|
119
|
+
// fall through to copy
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
await fs.copyFile(target, linkPath);
|
|
123
|
+
return "copy";
|
|
124
|
+
}
|
|
125
|
+
//# sourceMappingURL=base.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/agents/adapters/base.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { type AgentAdapter } from "./base.js";
|
|
2
|
+
/**
|
|
3
|
+
* Codex adapter.
|
|
4
|
+
*
|
|
5
|
+
* Codex stores MCP servers in TOML at ~/.codex/config.toml under
|
|
6
|
+
* `[mcp_servers.<id>]` tables. Skills go under ~/.codex/skills.
|
|
7
|
+
*/
|
|
8
|
+
export declare const codexAdapter: AgentAdapter;
|
|
9
|
+
//# sourceMappingURL=codex.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codex.d.ts","sourceRoot":"","sources":["../../../src/agents/adapters/codex.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,KAAK,YAAY,EAKlB,MAAM,WAAW,CAAC;AAEnB;;;;;GAKG;AACH,eAAO,MAAM,YAAY,EAAE,YAoF1B,CAAC"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import fs from "node:fs/promises";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import TOML from "@iarna/toml";
|
|
4
|
+
import { AGENT_PATHS } from "../../store/paths.js";
|
|
5
|
+
import { emptyResult, ensureDir, placeLinkOrCopy, } from "./base.js";
|
|
6
|
+
/**
|
|
7
|
+
* Codex adapter.
|
|
8
|
+
*
|
|
9
|
+
* Codex stores MCP servers in TOML at ~/.codex/config.toml under
|
|
10
|
+
* `[mcp_servers.<id>]` tables. Skills go under ~/.codex/skills.
|
|
11
|
+
*/
|
|
12
|
+
export const codexAdapter = {
|
|
13
|
+
id: "codex",
|
|
14
|
+
async apply(ctx) {
|
|
15
|
+
const result = emptyResult("codex");
|
|
16
|
+
const caps = AGENT_PATHS.codex;
|
|
17
|
+
// ── MCP (JSON → TOML) ─────────────────────────────────
|
|
18
|
+
try {
|
|
19
|
+
await ensureDir(path.dirname(caps.mcpPath));
|
|
20
|
+
const enabledForAgent = ctx.mcp.filter((s) => s.enabledAgents.includes("codex"));
|
|
21
|
+
const enabledIds = new Set(enabledForAgent.map((s) => s.id));
|
|
22
|
+
const disabledManagedIds = new Set(ctx.mcp.filter((s) => !s.enabledAgents.includes("codex")).map((s) => s.id));
|
|
23
|
+
let existing = {};
|
|
24
|
+
try {
|
|
25
|
+
const raw = await fs.readFile(caps.mcpPath, "utf8");
|
|
26
|
+
existing = TOML.parse(raw);
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
// first write
|
|
30
|
+
}
|
|
31
|
+
const existingServers = (existing.mcp_servers ?? {});
|
|
32
|
+
const preserved = {};
|
|
33
|
+
for (const [k, v] of Object.entries(existingServers)) {
|
|
34
|
+
if (disabledManagedIds.has(k))
|
|
35
|
+
continue;
|
|
36
|
+
if (enabledIds.has(k))
|
|
37
|
+
continue; // will be replaced below
|
|
38
|
+
preserved[k] = v;
|
|
39
|
+
}
|
|
40
|
+
const nextServers = { ...preserved };
|
|
41
|
+
for (const s of enabledForAgent) {
|
|
42
|
+
nextServers[s.id] = {
|
|
43
|
+
command: s.command,
|
|
44
|
+
...(s.args ? { args: s.args } : {}),
|
|
45
|
+
...(s.env ? { env: s.env } : {}),
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
existing.mcp_servers = nextServers;
|
|
49
|
+
await fs.writeFile(caps.mcpPath, TOML.stringify(existing), "utf8");
|
|
50
|
+
result.applied.mcp = enabledForAgent.length;
|
|
51
|
+
}
|
|
52
|
+
catch (err) {
|
|
53
|
+
result.errors.push(`Codex MCP write failed: ${err.message}`);
|
|
54
|
+
}
|
|
55
|
+
// ── Skills ────────────────────────────────────────────
|
|
56
|
+
try {
|
|
57
|
+
await ensureDir(caps.skillsDir);
|
|
58
|
+
const filtered = ctx.skills.filter((s) => s.enabledAgents.includes("codex"));
|
|
59
|
+
const disabledManagedSkillIds = new Set(ctx.skills.filter((s) => !s.enabledAgents.includes("codex")).map((s) => s.id));
|
|
60
|
+
for (const id of disabledManagedSkillIds) {
|
|
61
|
+
const dir = path.join(caps.skillsDir, id);
|
|
62
|
+
try {
|
|
63
|
+
// Symlink-safe removal: lstat first, unlink for symlinks, rm for real dirs.
|
|
64
|
+
const lst = await fs.lstat(dir);
|
|
65
|
+
if (lst.isSymbolicLink()) {
|
|
66
|
+
await fs.unlink(dir);
|
|
67
|
+
}
|
|
68
|
+
else {
|
|
69
|
+
await fs.rm(dir, { recursive: true, force: true });
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
catch {
|
|
73
|
+
// best effort cleanup
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
for (const skill of filtered) {
|
|
77
|
+
const sourcePath = ctx.skillSourcePaths.get(skill.id);
|
|
78
|
+
if (!sourcePath)
|
|
79
|
+
continue;
|
|
80
|
+
const destDir = path.join(caps.skillsDir, skill.id);
|
|
81
|
+
try {
|
|
82
|
+
await placeLinkOrCopy(sourcePath, destDir, ctx.syncStrategy);
|
|
83
|
+
result.applied.skills += 1;
|
|
84
|
+
}
|
|
85
|
+
catch (err) {
|
|
86
|
+
result.errors.push(`Skill ${skill.id} sync failed: ${err.message}`);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
catch (err) {
|
|
91
|
+
result.errors.push(`Codex skills sync failed: ${err.message}`);
|
|
92
|
+
}
|
|
93
|
+
return result;
|
|
94
|
+
},
|
|
95
|
+
};
|
|
96
|
+
//# sourceMappingURL=codex.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codex.js","sourceRoot":"","sources":["../../../src/agents/adapters/codex.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { AgentId } from "../../types.js";
|
|
2
|
+
import type { AgentAdapter } from "./base.js";
|
|
3
|
+
import { codexAdapter } from "./codex.js";
|
|
4
|
+
import { makeJsonMcpAdapter } from "./json-mcp.js";
|
|
5
|
+
export declare const adapters: Record<AgentId, AgentAdapter>;
|
|
6
|
+
export { codexAdapter, makeJsonMcpAdapter };
|
|
7
|
+
export type { AgentAdapter, ApplyContext } from "./base.js";
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/agents/adapters/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAEnD,eAAO,MAAM,QAAQ,EAAE,MAAM,CAAC,OAAO,EAAE,YAAY,CAOlD,CAAC;AAEF,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,CAAC;AAC5C,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { codexAdapter } from "./codex.js";
|
|
2
|
+
import { makeJsonMcpAdapter } from "./json-mcp.js";
|
|
3
|
+
export const adapters = {
|
|
4
|
+
"claude-code": makeJsonMcpAdapter("claude-code"),
|
|
5
|
+
cursor: makeJsonMcpAdapter("cursor"),
|
|
6
|
+
codex: codexAdapter,
|
|
7
|
+
"gemini-cli": makeJsonMcpAdapter("gemini-cli"),
|
|
8
|
+
"qwen-code": makeJsonMcpAdapter("qwen-code"),
|
|
9
|
+
"factory-droid": makeJsonMcpAdapter("factory-droid"),
|
|
10
|
+
};
|
|
11
|
+
export { codexAdapter, makeJsonMcpAdapter };
|
|
12
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/agents/adapters/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAEnD,MAAM,CAAC,MAAM,QAAQ,GAAkC;IACrD,aAAa,EAAE,kBAAkB,CAAC,aAAa,CAAC;IAChD,MAAM,EAAE,kBAAkB,CAAC,QAAQ,CAAC;IACpC,KAAK,EAAE,YAAY;IACnB,YAAY,EAAE,kBAAkB,CAAC,YAAY,CAAC;IAC9C,WAAW,EAAE,kBAAkB,CAAC,WAAW,CAAC;IAC5C,eAAe,EAAE,kBAAkB,CAAC,eAAe,CAAC;CACrD,CAAC;AAEF,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { AgentId } from "../../types.js";
|
|
2
|
+
import { type AgentAdapter } from "./base.js";
|
|
3
|
+
/**
|
|
4
|
+
* Generic JSON-MCP + skill-directory adapter.
|
|
5
|
+
*
|
|
6
|
+
* Used by Claude Code, Cursor, Gemini CLI, Qwen Code, Factory Droid (and any future agent that
|
|
7
|
+
* stores MCP as `{ "mcpServers": {...} }` JSON and skills as a directory).
|
|
8
|
+
*
|
|
9
|
+
* Two MCP write modes (chosen by AGENT_PATHS[agent].mcpFileMode):
|
|
10
|
+
*
|
|
11
|
+
* - "exclusive": Plexus owns the agent's MCP file. We render a canonical
|
|
12
|
+
* JSON to ~/.config/plexus/.cache/mcp/<agent>.json and symlink the
|
|
13
|
+
* agent's path to that cache. Editing the agent's path is editing the
|
|
14
|
+
* same Plexus-owned file. This is appropriate for agents whose MCP
|
|
15
|
+
* file holds nothing else (Cursor, Factory Droid).
|
|
16
|
+
*
|
|
17
|
+
* - "shared" (default): the agent's file holds many other unrelated keys
|
|
18
|
+
* (for example Claude Code's ~/.claude.json carries auth/history/settings). We
|
|
19
|
+
* partial-write only the `mcpServers` section in place and never replace
|
|
20
|
+
* the whole file.
|
|
21
|
+
*
|
|
22
|
+
* Skills are always symlink-first via placeLinkOrCopy.
|
|
23
|
+
*/
|
|
24
|
+
export declare function makeJsonMcpAdapter(agentId: AgentId): AgentAdapter;
|
|
25
|
+
//# sourceMappingURL=json-mcp.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json-mcp.d.ts","sourceRoot":"","sources":["../../../src/agents/adapters/json-mcp.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAA4B,MAAM,gBAAgB,CAAC;AACxE,OAAO,EACL,KAAK,YAAY,EAMlB,MAAM,WAAW,CAAC;AAEnB;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,YAAY,CA8DjE"}
|