@phnx-labs/agents-cli 1.12.0 → 1.14.2
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/CHANGELOG.md +7 -1
- package/README.md +308 -297
- package/dist/commands/alias.d.ts +11 -0
- package/dist/commands/alias.js +117 -0
- package/dist/commands/beta.d.ts +2 -0
- package/dist/commands/beta.js +53 -0
- package/dist/commands/cloud.d.ts +10 -0
- package/dist/commands/cloud.js +408 -0
- package/dist/commands/commands.d.ts +9 -1
- package/dist/commands/commands.js +24 -172
- package/dist/commands/daemon.d.ts +8 -1
- package/dist/commands/daemon.js +13 -5
- package/dist/commands/doctor.d.ts +15 -0
- package/dist/commands/doctor.js +132 -0
- package/dist/commands/drive.d.ts +8 -1
- package/dist/commands/drive.js +20 -3
- package/dist/commands/exec.d.ts +8 -1
- package/dist/commands/exec.js +207 -20
- package/dist/commands/factory.d.ts +19 -0
- package/dist/commands/factory.js +71 -0
- package/dist/commands/fork.d.ts +8 -1
- package/dist/commands/fork.js +11 -4
- package/dist/commands/hooks.d.ts +9 -1
- package/dist/commands/hooks.js +30 -182
- package/dist/commands/init.d.ts +15 -1
- package/dist/commands/init.js +168 -74
- package/dist/commands/mcp.d.ts +9 -1
- package/dist/commands/mcp.js +11 -7
- package/dist/commands/models.d.ts +8 -1
- package/dist/commands/models.js +45 -6
- package/dist/commands/packages.d.ts +8 -1
- package/dist/commands/packages.js +13 -7
- package/dist/commands/permissions.d.ts +9 -1
- package/dist/commands/permissions.js +3 -3
- package/dist/commands/plugins.d.ts +8 -1
- package/dist/commands/plugins.js +13 -2
- package/dist/commands/profiles.d.ts +11 -0
- package/dist/commands/profiles.js +291 -0
- package/dist/commands/prune.d.ts +22 -0
- package/dist/commands/prune.js +191 -0
- package/dist/commands/pty.d.ts +1 -1
- package/dist/commands/pty.js +2 -1
- package/dist/commands/pull.d.ts +8 -1
- package/dist/commands/pull.js +93 -129
- package/dist/commands/refresh-memory.d.ts +7 -1
- package/dist/commands/refresh-memory.js +7 -1
- package/dist/commands/repo.d.ts +15 -0
- package/dist/commands/repo.js +570 -0
- package/dist/commands/resource-view.d.ts +10 -3
- package/dist/commands/resource-view.js +18 -5
- package/dist/commands/routines.d.ts +8 -1
- package/dist/commands/routines.js +17 -4
- package/dist/commands/rules.d.ts +9 -1
- package/dist/commands/rules.js +16 -11
- package/dist/commands/secrets.d.ts +10 -0
- package/dist/commands/secrets.js +518 -0
- package/dist/commands/sessions-picker.d.ts +2 -1
- package/dist/commands/sessions-picker.js +88 -11
- package/dist/commands/sessions-tail.d.ts +19 -0
- package/dist/commands/sessions-tail.js +235 -0
- package/dist/commands/sessions.d.ts +2 -1
- package/dist/commands/sessions.js +288 -7
- package/dist/commands/skills.d.ts +9 -1
- package/dist/commands/skills.js +28 -178
- package/dist/commands/status.d.ts +7 -1
- package/dist/commands/status.js +7 -1
- package/dist/commands/subagents.d.ts +8 -1
- package/dist/commands/subagents.js +11 -1
- package/dist/commands/sync.d.ts +8 -1
- package/dist/commands/sync.js +8 -1
- package/dist/commands/teams-picker.d.ts +4 -1
- package/dist/commands/teams-picker.js +55 -3
- package/dist/commands/teams.d.ts +15 -1
- package/dist/commands/teams.js +323 -69
- package/dist/commands/usage.d.ts +11 -0
- package/dist/commands/usage.js +60 -0
- package/dist/commands/utils.d.ts +6 -1
- package/dist/commands/utils.js +6 -1
- package/dist/commands/versions.d.ts +8 -1
- package/dist/commands/versions.js +4 -3
- package/dist/commands/view.d.ts +47 -2
- package/dist/commands/view.js +353 -20
- package/dist/index.d.ts +7 -2
- package/dist/index.js +205 -38
- package/dist/lib/acp/client.d.ts +31 -0
- package/dist/lib/acp/client.js +117 -0
- package/dist/lib/acp/harnesses.d.ts +26 -0
- package/dist/lib/acp/harnesses.js +65 -0
- package/dist/lib/acp/run.d.ts +18 -0
- package/dist/lib/acp/run.js +39 -0
- package/dist/lib/agents.d.ts +74 -2
- package/dist/lib/agents.js +207 -23
- package/dist/lib/artifact-actions.d.ts +8 -4
- package/dist/lib/artifact-actions.js +8 -6
- package/dist/lib/auto-pull-worker.d.ts +11 -0
- package/dist/lib/auto-pull-worker.js +121 -0
- package/dist/lib/auto-pull.d.ts +31 -0
- package/dist/lib/auto-pull.js +97 -0
- package/dist/lib/beta.d.ts +23 -0
- package/dist/lib/beta.js +90 -0
- package/dist/lib/capabilities.d.ts +29 -0
- package/dist/lib/capabilities.js +74 -0
- package/dist/lib/cloud/codex.d.ts +25 -0
- package/dist/lib/cloud/codex.js +250 -0
- package/dist/lib/cloud/factory.d.ts +31 -0
- package/dist/lib/cloud/factory.js +53 -0
- package/dist/lib/cloud/registry.d.ts +15 -0
- package/dist/lib/cloud/registry.js +67 -0
- package/dist/lib/cloud/rush.d.ts +75 -0
- package/dist/lib/cloud/rush.js +438 -0
- package/dist/lib/cloud/store.d.ts +22 -0
- package/dist/lib/cloud/store.js +115 -0
- package/dist/lib/cloud/stream.d.ts +23 -0
- package/dist/lib/cloud/stream.js +194 -0
- package/dist/lib/cloud/types.d.ts +205 -0
- package/dist/lib/cloud/types.js +34 -0
- package/dist/lib/command-skills.d.ts +20 -0
- package/dist/lib/command-skills.js +142 -0
- package/dist/lib/commands.d.ts +22 -2
- package/dist/lib/commands.js +51 -11
- package/dist/lib/convert.d.ts +10 -1
- package/dist/lib/convert.js +9 -1
- package/dist/lib/daemon.d.ts +21 -1
- package/dist/lib/daemon.js +97 -4
- package/dist/lib/drive-sync.d.ts +18 -1
- package/dist/lib/drive-sync.js +57 -15
- package/dist/lib/exec.d.ts +25 -5
- package/dist/lib/exec.js +72 -27
- package/dist/lib/fs-walk.d.ts +2 -0
- package/dist/lib/fs-walk.js +40 -0
- package/dist/lib/fuzzy.d.ts +53 -0
- package/dist/lib/fuzzy.js +72 -0
- package/dist/lib/gemini-settings.d.ts +4 -0
- package/dist/lib/gemini-settings.js +33 -0
- package/dist/lib/git.d.ts +12 -2
- package/dist/lib/git.js +17 -6
- package/dist/lib/help.d.ts +20 -1
- package/dist/lib/help.js +45 -6
- package/dist/lib/hooks/match.d.ts +32 -0
- package/dist/lib/hooks/match.js +120 -0
- package/dist/lib/hooks.d.ts +17 -4
- package/dist/lib/hooks.js +191 -21
- package/dist/lib/manifest.d.ts +6 -1
- package/dist/lib/manifest.js +15 -4
- package/dist/lib/markdown.d.ts +0 -1
- package/dist/lib/markdown.js +6 -1
- package/dist/lib/mcp.d.ts +0 -1
- package/dist/lib/mcp.js +29 -33
- package/dist/lib/memory-compile.d.ts +13 -3
- package/dist/lib/memory-compile.js +31 -9
- package/dist/lib/memory.d.ts +14 -7
- package/dist/lib/memory.js +67 -38
- package/dist/lib/migrate.d.ts +8 -0
- package/dist/lib/migrate.js +85 -0
- package/dist/lib/models.d.ts +25 -11
- package/dist/lib/models.js +405 -16
- package/dist/lib/onepassword.d.ts +63 -0
- package/dist/lib/onepassword.js +186 -0
- package/dist/lib/paths.d.ts +8 -0
- package/dist/lib/paths.js +20 -0
- package/dist/lib/permissions.d.ts +24 -2
- package/dist/lib/permissions.js +117 -48
- package/dist/lib/picker.d.ts +10 -1
- package/dist/lib/picker.js +15 -1
- package/dist/lib/plugins.d.ts +7 -1
- package/dist/lib/plugins.js +10 -1
- package/dist/lib/profiles-presets.d.ts +24 -0
- package/dist/lib/profiles-presets.js +103 -0
- package/dist/lib/profiles.d.ts +69 -0
- package/dist/lib/profiles.js +144 -0
- package/dist/lib/pty-client.d.ts +1 -1
- package/dist/lib/pty-client.js +0 -1
- package/dist/lib/pty-server.d.ts +16 -2
- package/dist/lib/pty-server.js +92 -3
- package/dist/lib/registry.d.ts +23 -3
- package/dist/lib/registry.js +153 -8
- package/dist/lib/resources.d.ts +28 -1
- package/dist/lib/resources.js +79 -1
- package/dist/lib/rotate.d.ts +89 -0
- package/dist/lib/rotate.js +327 -0
- package/dist/lib/routines.d.ts +29 -1
- package/dist/lib/routines.js +32 -5
- package/dist/lib/runner.d.ts +14 -1
- package/dist/lib/runner.js +22 -3
- package/dist/lib/sandbox.d.ts +16 -1
- package/dist/lib/sandbox.js +39 -16
- package/dist/lib/scheduler.d.ts +8 -1
- package/dist/lib/scheduler.js +8 -1
- package/dist/lib/secrets/AgentsKeychain.app/Contents/CodeResources +0 -0
- package/dist/lib/secrets/AgentsKeychain.app/Contents/Info.plist +22 -0
- package/dist/lib/secrets/AgentsKeychain.app/Contents/MacOS/AgentsKeychain +0 -0
- package/dist/lib/secrets/AgentsKeychain.app/Contents/_CodeSignature/CodeResources +123 -0
- package/dist/lib/secrets/AgentsKeychain.app/Contents/embedded.provisionprofile +0 -0
- package/dist/lib/secrets/bundles.d.ts +39 -0
- package/dist/lib/secrets/bundles.js +189 -0
- package/dist/lib/secrets/index.d.ts +55 -0
- package/dist/lib/secrets/index.js +211 -0
- package/dist/lib/secrets/profiles.d.ts +10 -0
- package/dist/lib/secrets/profiles.js +13 -0
- package/dist/lib/session/active.d.ts +43 -0
- package/dist/lib/session/active.js +392 -0
- package/dist/lib/session/artifacts.d.ts +16 -0
- package/dist/lib/session/artifacts.js +95 -0
- package/dist/lib/session/cloud.d.ts +30 -0
- package/dist/lib/session/cloud.js +121 -0
- package/dist/lib/session/db.d.ts +23 -2
- package/dist/lib/session/db.js +76 -12
- package/dist/lib/session/discover.d.ts +19 -4
- package/dist/lib/session/discover.js +344 -48
- package/dist/lib/session/parse.d.ts +28 -1
- package/dist/lib/session/parse.js +267 -9
- package/dist/lib/session/prompt.d.ts +9 -1
- package/dist/lib/session/prompt.js +17 -3
- package/dist/lib/session/render.d.ts +13 -1
- package/dist/lib/session/render.js +20 -1
- package/dist/lib/session/team-filter.d.ts +9 -1
- package/dist/lib/session/team-filter.js +11 -2
- package/dist/lib/session/types.d.ts +24 -2
- package/dist/lib/session/types.js +10 -2
- package/dist/lib/shims.d.ts +93 -5
- package/dist/lib/shims.js +380 -67
- package/dist/lib/skills.d.ts +27 -2
- package/dist/lib/skills.js +127 -65
- package/dist/lib/sqlite.d.ts +43 -0
- package/dist/lib/sqlite.js +94 -0
- package/dist/lib/state.d.ts +114 -22
- package/dist/lib/state.js +323 -138
- package/dist/lib/subagents.d.ts +9 -1
- package/dist/lib/subagents.js +70 -63
- package/dist/lib/sync-manifest.d.ts +81 -0
- package/dist/lib/sync-manifest.js +450 -0
- package/dist/lib/teams/agents.d.ts +103 -5
- package/dist/lib/teams/agents.js +414 -91
- package/dist/lib/teams/api.d.ts +26 -3
- package/dist/lib/teams/api.js +63 -3
- package/dist/lib/teams/debug.d.ts +6 -1
- package/dist/lib/teams/debug.js +6 -1
- package/dist/lib/teams/file_ops.d.ts +7 -1
- package/dist/lib/teams/file_ops.js +7 -1
- package/dist/lib/teams/index.d.ts +15 -0
- package/dist/lib/teams/index.js +14 -0
- package/dist/lib/teams/parsers.d.ts +4 -1
- package/dist/lib/teams/parsers.js +11 -1
- package/dist/lib/teams/persistence.d.ts +15 -1
- package/dist/lib/teams/persistence.js +102 -20
- package/dist/lib/teams/registry.d.ts +12 -1
- package/dist/lib/teams/registry.js +116 -33
- package/dist/lib/teams/summarizer.d.ts +15 -1
- package/dist/lib/teams/summarizer.js +14 -1
- package/dist/lib/teams/supervisor.d.ts +48 -0
- package/dist/lib/teams/supervisor.js +73 -0
- package/dist/lib/template.d.ts +8 -6
- package/dist/lib/template.js +8 -6
- package/dist/lib/types.d.ts +147 -8
- package/dist/lib/types.js +26 -3
- package/dist/lib/usage.d.ts +48 -1
- package/dist/lib/usage.js +97 -16
- package/dist/lib/version-duplicates.d.ts +21 -0
- package/dist/lib/version-duplicates.js +90 -0
- package/dist/lib/versions.d.ts +39 -4
- package/dist/lib/versions.js +401 -111
- package/package.json +33 -18
- package/scripts/postinstall.js +126 -30
- package/dist/commands/__tests__/sessions.test.d.ts +0 -2
- package/dist/commands/__tests__/sessions.test.d.ts.map +0 -1
- package/dist/commands/__tests__/sessions.test.js +0 -636
- package/dist/commands/__tests__/sessions.test.js.map +0 -1
- package/dist/commands/commands.d.ts.map +0 -1
- package/dist/commands/commands.js.map +0 -1
- package/dist/commands/daemon.d.ts.map +0 -1
- package/dist/commands/daemon.js.map +0 -1
- package/dist/commands/drive.d.ts.map +0 -1
- package/dist/commands/drive.js.map +0 -1
- package/dist/commands/exec.d.ts.map +0 -1
- package/dist/commands/exec.js.map +0 -1
- package/dist/commands/fork.d.ts.map +0 -1
- package/dist/commands/fork.js.map +0 -1
- package/dist/commands/hooks.d.ts.map +0 -1
- package/dist/commands/hooks.js.map +0 -1
- package/dist/commands/init.d.ts.map +0 -1
- package/dist/commands/init.js.map +0 -1
- package/dist/commands/mcp.d.ts.map +0 -1
- package/dist/commands/mcp.js.map +0 -1
- package/dist/commands/models.d.ts.map +0 -1
- package/dist/commands/models.js.map +0 -1
- package/dist/commands/packages.d.ts.map +0 -1
- package/dist/commands/packages.js.map +0 -1
- package/dist/commands/permissions.d.ts.map +0 -1
- package/dist/commands/permissions.js.map +0 -1
- package/dist/commands/plugins.d.ts.map +0 -1
- package/dist/commands/plugins.js.map +0 -1
- package/dist/commands/pty.d.ts.map +0 -1
- package/dist/commands/pty.js.map +0 -1
- package/dist/commands/pull.d.ts.map +0 -1
- package/dist/commands/pull.js.map +0 -1
- package/dist/commands/push.d.ts +0 -3
- package/dist/commands/push.d.ts.map +0 -1
- package/dist/commands/push.js +0 -180
- package/dist/commands/push.js.map +0 -1
- package/dist/commands/refresh-memory.d.ts.map +0 -1
- package/dist/commands/refresh-memory.js.map +0 -1
- package/dist/commands/resource-view.d.ts.map +0 -1
- package/dist/commands/resource-view.js.map +0 -1
- package/dist/commands/routines.d.ts.map +0 -1
- package/dist/commands/routines.js.map +0 -1
- package/dist/commands/rules.d.ts.map +0 -1
- package/dist/commands/rules.js.map +0 -1
- package/dist/commands/sessions-picker.d.ts.map +0 -1
- package/dist/commands/sessions-picker.js.map +0 -1
- package/dist/commands/sessions.d.ts.map +0 -1
- package/dist/commands/sessions.js.map +0 -1
- package/dist/commands/skills.d.ts.map +0 -1
- package/dist/commands/skills.js.map +0 -1
- package/dist/commands/status.d.ts.map +0 -1
- package/dist/commands/status.js.map +0 -1
- package/dist/commands/subagents.d.ts.map +0 -1
- package/dist/commands/subagents.js.map +0 -1
- package/dist/commands/sync.d.ts.map +0 -1
- package/dist/commands/sync.js.map +0 -1
- package/dist/commands/teams-picker.d.ts.map +0 -1
- package/dist/commands/teams-picker.js.map +0 -1
- package/dist/commands/teams.d.ts.map +0 -1
- package/dist/commands/teams.js.map +0 -1
- package/dist/commands/utils.d.ts.map +0 -1
- package/dist/commands/utils.js.map +0 -1
- package/dist/commands/versions.d.ts.map +0 -1
- package/dist/commands/versions.js.map +0 -1
- package/dist/commands/view.d.ts.map +0 -1
- package/dist/commands/view.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/lib/__tests__/bugfixes.test.d.ts +0 -2
- package/dist/lib/__tests__/bugfixes.test.d.ts.map +0 -1
- package/dist/lib/__tests__/bugfixes.test.js +0 -192
- package/dist/lib/__tests__/bugfixes.test.js.map +0 -1
- package/dist/lib/__tests__/exec.test.d.ts +0 -2
- package/dist/lib/__tests__/exec.test.d.ts.map +0 -1
- package/dist/lib/__tests__/exec.test.js +0 -446
- package/dist/lib/__tests__/exec.test.js.map +0 -1
- package/dist/lib/__tests__/git-sync.test.d.ts +0 -2
- package/dist/lib/__tests__/git-sync.test.d.ts.map +0 -1
- package/dist/lib/__tests__/git-sync.test.js +0 -138
- package/dist/lib/__tests__/git-sync.test.js.map +0 -1
- package/dist/lib/__tests__/hooks.test.d.ts +0 -2
- package/dist/lib/__tests__/hooks.test.d.ts.map +0 -1
- package/dist/lib/__tests__/hooks.test.js +0 -203
- package/dist/lib/__tests__/hooks.test.js.map +0 -1
- package/dist/lib/__tests__/memory-compile.test.d.ts +0 -2
- package/dist/lib/__tests__/memory-compile.test.d.ts.map +0 -1
- package/dist/lib/__tests__/memory-compile.test.js +0 -95
- package/dist/lib/__tests__/memory-compile.test.js.map +0 -1
- package/dist/lib/__tests__/models.test.d.ts +0 -2
- package/dist/lib/__tests__/models.test.d.ts.map +0 -1
- package/dist/lib/__tests__/models.test.js +0 -184
- package/dist/lib/__tests__/models.test.js.map +0 -1
- package/dist/lib/__tests__/usage.test.d.ts +0 -2
- package/dist/lib/__tests__/usage.test.d.ts.map +0 -1
- package/dist/lib/__tests__/usage.test.js +0 -218
- package/dist/lib/__tests__/usage.test.js.map +0 -1
- package/dist/lib/agents.d.ts.map +0 -1
- package/dist/lib/agents.js.map +0 -1
- package/dist/lib/artifact-actions.d.ts.map +0 -1
- package/dist/lib/artifact-actions.js.map +0 -1
- package/dist/lib/commands.d.ts.map +0 -1
- package/dist/lib/commands.js.map +0 -1
- package/dist/lib/convert.d.ts.map +0 -1
- package/dist/lib/convert.js.map +0 -1
- package/dist/lib/daemon.d.ts.map +0 -1
- package/dist/lib/daemon.js.map +0 -1
- package/dist/lib/drive-sync.d.ts.map +0 -1
- package/dist/lib/drive-sync.js.map +0 -1
- package/dist/lib/exec.d.ts.map +0 -1
- package/dist/lib/exec.js.map +0 -1
- package/dist/lib/factory.d.ts +0 -57
- package/dist/lib/factory.d.ts.map +0 -1
- package/dist/lib/factory.js +0 -110
- package/dist/lib/factory.js.map +0 -1
- package/dist/lib/git.d.ts.map +0 -1
- package/dist/lib/git.js.map +0 -1
- package/dist/lib/help.d.ts.map +0 -1
- package/dist/lib/help.js.map +0 -1
- package/dist/lib/hooks.d.ts.map +0 -1
- package/dist/lib/hooks.js.map +0 -1
- package/dist/lib/manifest.d.ts.map +0 -1
- package/dist/lib/manifest.js.map +0 -1
- package/dist/lib/markdown.d.ts.map +0 -1
- package/dist/lib/markdown.js.map +0 -1
- package/dist/lib/mcp.d.ts.map +0 -1
- package/dist/lib/mcp.js.map +0 -1
- package/dist/lib/memory-compile.d.ts.map +0 -1
- package/dist/lib/memory-compile.js.map +0 -1
- package/dist/lib/memory.d.ts.map +0 -1
- package/dist/lib/memory.js.map +0 -1
- package/dist/lib/models.d.ts.map +0 -1
- package/dist/lib/models.js.map +0 -1
- package/dist/lib/permissions.d.ts.map +0 -1
- package/dist/lib/permissions.js.map +0 -1
- package/dist/lib/picker.d.ts.map +0 -1
- package/dist/lib/picker.js.map +0 -1
- package/dist/lib/plugins.d.ts.map +0 -1
- package/dist/lib/plugins.js.map +0 -1
- package/dist/lib/pty-client.d.ts.map +0 -1
- package/dist/lib/pty-client.js.map +0 -1
- package/dist/lib/pty-server.d.ts.map +0 -1
- package/dist/lib/pty-server.js.map +0 -1
- package/dist/lib/registry.d.ts.map +0 -1
- package/dist/lib/registry.js.map +0 -1
- package/dist/lib/resources.d.ts.map +0 -1
- package/dist/lib/resources.js.map +0 -1
- package/dist/lib/routines.d.ts.map +0 -1
- package/dist/lib/routines.js.map +0 -1
- package/dist/lib/runner.d.ts.map +0 -1
- package/dist/lib/runner.js.map +0 -1
- package/dist/lib/sandbox.d.ts.map +0 -1
- package/dist/lib/sandbox.js.map +0 -1
- package/dist/lib/scheduler.d.ts.map +0 -1
- package/dist/lib/scheduler.js.map +0 -1
- package/dist/lib/session/__tests__/db.test.d.ts +0 -2
- package/dist/lib/session/__tests__/db.test.d.ts.map +0 -1
- package/dist/lib/session/__tests__/db.test.js +0 -54
- package/dist/lib/session/__tests__/db.test.js.map +0 -1
- package/dist/lib/session/__tests__/discover.test.d.ts +0 -2
- package/dist/lib/session/__tests__/discover.test.d.ts.map +0 -1
- package/dist/lib/session/__tests__/discover.test.js +0 -63
- package/dist/lib/session/__tests__/discover.test.js.map +0 -1
- package/dist/lib/session/__tests__/prompt.test.d.ts +0 -2
- package/dist/lib/session/__tests__/prompt.test.d.ts.map +0 -1
- package/dist/lib/session/__tests__/prompt.test.js +0 -44
- package/dist/lib/session/__tests__/prompt.test.js.map +0 -1
- package/dist/lib/session/__tests__/render.test.d.ts +0 -2
- package/dist/lib/session/__tests__/render.test.d.ts.map +0 -1
- package/dist/lib/session/__tests__/render.test.js +0 -602
- package/dist/lib/session/__tests__/render.test.js.map +0 -1
- package/dist/lib/session/db.d.ts.map +0 -1
- package/dist/lib/session/db.js.map +0 -1
- package/dist/lib/session/discover.d.ts.map +0 -1
- package/dist/lib/session/discover.js.map +0 -1
- package/dist/lib/session/parse.d.ts.map +0 -1
- package/dist/lib/session/parse.js.map +0 -1
- package/dist/lib/session/prompt.d.ts.map +0 -1
- package/dist/lib/session/prompt.js.map +0 -1
- package/dist/lib/session/prompt.test.d.ts +0 -2
- package/dist/lib/session/prompt.test.d.ts.map +0 -1
- package/dist/lib/session/prompt.test.js +0 -57
- package/dist/lib/session/prompt.test.js.map +0 -1
- package/dist/lib/session/render.d.ts.map +0 -1
- package/dist/lib/session/render.js.map +0 -1
- package/dist/lib/session/team-filter.d.ts.map +0 -1
- package/dist/lib/session/team-filter.js.map +0 -1
- package/dist/lib/session/team-filter.test.d.ts +0 -2
- package/dist/lib/session/team-filter.test.d.ts.map +0 -1
- package/dist/lib/session/team-filter.test.js +0 -157
- package/dist/lib/session/team-filter.test.js.map +0 -1
- package/dist/lib/session/types.d.ts.map +0 -1
- package/dist/lib/session/types.js.map +0 -1
- package/dist/lib/shims.d.ts.map +0 -1
- package/dist/lib/shims.js.map +0 -1
- package/dist/lib/skills.d.ts.map +0 -1
- package/dist/lib/skills.js.map +0 -1
- package/dist/lib/state.d.ts.map +0 -1
- package/dist/lib/state.js.map +0 -1
- package/dist/lib/subagents.d.ts.map +0 -1
- package/dist/lib/subagents.js.map +0 -1
- package/dist/lib/teams/agents.d.ts.map +0 -1
- package/dist/lib/teams/agents.js.map +0 -1
- package/dist/lib/teams/api.d.ts.map +0 -1
- package/dist/lib/teams/api.js.map +0 -1
- package/dist/lib/teams/cloud.d.ts +0 -11
- package/dist/lib/teams/cloud.d.ts.map +0 -1
- package/dist/lib/teams/cloud.js +0 -169
- package/dist/lib/teams/cloud.js.map +0 -1
- package/dist/lib/teams/debug.d.ts.map +0 -1
- package/dist/lib/teams/debug.js.map +0 -1
- package/dist/lib/teams/file_ops.d.ts.map +0 -1
- package/dist/lib/teams/file_ops.js.map +0 -1
- package/dist/lib/teams/parsers.d.ts.map +0 -1
- package/dist/lib/teams/parsers.js.map +0 -1
- package/dist/lib/teams/persistence.d.ts.map +0 -1
- package/dist/lib/teams/persistence.js.map +0 -1
- package/dist/lib/teams/ralph.d.ts +0 -8
- package/dist/lib/teams/ralph.d.ts.map +0 -1
- package/dist/lib/teams/ralph.js +0 -59
- package/dist/lib/teams/ralph.js.map +0 -1
- package/dist/lib/teams/registry.d.ts.map +0 -1
- package/dist/lib/teams/registry.js.map +0 -1
- package/dist/lib/teams/summarizer.d.ts.map +0 -1
- package/dist/lib/teams/summarizer.js.map +0 -1
- package/dist/lib/template.d.ts.map +0 -1
- package/dist/lib/template.js.map +0 -1
- package/dist/lib/types.d.ts.map +0 -1
- package/dist/lib/types.js.map +0 -1
- package/dist/lib/usage.d.ts.map +0 -1
- package/dist/lib/usage.js.map +0 -1
- package/dist/lib/versions.d.ts.map +0 -1
- package/dist/lib/versions.js.map +0 -1
- package/scripts/rebuild-sqlite.sh +0 -46
package/dist/lib/state.js
CHANGED
|
@@ -1,173 +1,366 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Filesystem layout and persistent state for agents-cli.
|
|
3
|
+
*
|
|
4
|
+
* Two roots:
|
|
5
|
+
* - ~/.agents-system/ — system repo (npm-shipped resources, versions, shims, backups, runs)
|
|
6
|
+
* - ~/.agents/ — user repo (user-authored commands, skills, hooks, rules, mcp,
|
|
7
|
+
* permissions, subagents, profiles, secrets, agents.yaml)
|
|
8
|
+
*
|
|
9
|
+
* Resolution precedence for resources: project > user > system.
|
|
10
|
+
* Every module that needs a path or reads/writes agents.yaml goes through here.
|
|
11
|
+
*/
|
|
1
12
|
import * as fs from 'fs';
|
|
2
13
|
import * as path from 'path';
|
|
3
14
|
import * as os from 'os';
|
|
4
15
|
import * as yaml from 'yaml';
|
|
16
|
+
import { SEEDED_REGISTRIES } from './types.js';
|
|
5
17
|
const HOME = os.homedir();
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
const
|
|
9
|
-
|
|
10
|
-
const
|
|
11
|
-
|
|
12
|
-
const
|
|
13
|
-
|
|
14
|
-
const
|
|
15
|
-
|
|
16
|
-
const
|
|
17
|
-
const
|
|
18
|
-
const
|
|
19
|
-
const
|
|
20
|
-
const
|
|
21
|
-
const
|
|
22
|
-
const
|
|
23
|
-
const
|
|
24
|
-
const
|
|
18
|
+
// ─── Root directories ─────────────────────────────────────────────────────────
|
|
19
|
+
/** System repo — npm-shipped, read-only from user commands. */
|
|
20
|
+
const SYSTEM_AGENTS_DIR = path.join(HOME, '.agents-system');
|
|
21
|
+
/** User repo — user-authored resources and agents.yaml. Always-on. */
|
|
22
|
+
const USER_AGENTS_DIR = path.join(HOME, '.agents');
|
|
23
|
+
// ─── Meta file (agents.yaml lives in the user repo) ──────────────────────────
|
|
24
|
+
const META_FILE = path.join(USER_AGENTS_DIR, 'agents.yaml');
|
|
25
|
+
/** Legacy location — used only for one-shot migration in readMeta(). */
|
|
26
|
+
const SYSTEM_META_FILE = path.join(SYSTEM_AGENTS_DIR, 'agents.yaml');
|
|
27
|
+
// ─── System resource dirs ─────────────────────────────────────────────────────
|
|
28
|
+
const SYSTEM_COMMANDS_DIR = path.join(SYSTEM_AGENTS_DIR, 'commands');
|
|
29
|
+
const SYSTEM_HOOKS_DIR = path.join(SYSTEM_AGENTS_DIR, 'hooks');
|
|
30
|
+
const SYSTEM_SKILLS_DIR = path.join(SYSTEM_AGENTS_DIR, 'skills');
|
|
31
|
+
const SYSTEM_RULES_DIR = path.join(SYSTEM_AGENTS_DIR, 'rules');
|
|
32
|
+
const SYSTEM_LEGACY_MEMORY_DIR = path.join(SYSTEM_AGENTS_DIR, 'memory');
|
|
33
|
+
const SYSTEM_MCP_DIR = path.join(SYSTEM_AGENTS_DIR, 'mcp');
|
|
34
|
+
const SYSTEM_PERMISSIONS_DIR = path.join(SYSTEM_AGENTS_DIR, 'permissions');
|
|
35
|
+
const SYSTEM_SUBAGENTS_DIR = path.join(SYSTEM_AGENTS_DIR, 'subagents');
|
|
36
|
+
const SYSTEM_SECRETS_DIR = path.join(SYSTEM_AGENTS_DIR, 'secrets');
|
|
37
|
+
const SYSTEM_PROMPTCUTS_FILE = path.join(SYSTEM_AGENTS_DIR, 'hooks', 'promptcuts.yaml');
|
|
38
|
+
const SYSTEM_MCP_CONFIG_FILE = path.join(SYSTEM_AGENTS_DIR, 'mcp.json');
|
|
39
|
+
const SYSTEM_INSTRUCTIONS_FILE = path.join(SYSTEM_AGENTS_DIR, 'instructions.md');
|
|
40
|
+
// System-only paths (never duplicated in user repo)
|
|
41
|
+
const PACKAGES_DIR = path.join(SYSTEM_AGENTS_DIR, 'packages');
|
|
42
|
+
const ROUTINES_DIR = path.join(SYSTEM_AGENTS_DIR, 'routines');
|
|
43
|
+
const RUNS_DIR = path.join(SYSTEM_AGENTS_DIR, 'runs');
|
|
44
|
+
const VERSIONS_DIR = path.join(SYSTEM_AGENTS_DIR, 'versions');
|
|
45
|
+
const SHIMS_DIR = path.join(SYSTEM_AGENTS_DIR, 'shims');
|
|
46
|
+
const BACKUPS_DIR = path.join(SYSTEM_AGENTS_DIR, 'backups');
|
|
47
|
+
const PLUGINS_DIR = path.join(SYSTEM_AGENTS_DIR, 'plugins');
|
|
48
|
+
const DRIVE_DIR = path.join(SYSTEM_AGENTS_DIR, 'drive');
|
|
49
|
+
// ─── User resource dirs ───────────────────────────────────────────────────────
|
|
50
|
+
const USER_COMMANDS_DIR = path.join(USER_AGENTS_DIR, 'commands');
|
|
51
|
+
const USER_HOOKS_DIR = path.join(USER_AGENTS_DIR, 'hooks');
|
|
52
|
+
const USER_SKILLS_DIR = path.join(USER_AGENTS_DIR, 'skills');
|
|
53
|
+
const USER_RULES_DIR = path.join(USER_AGENTS_DIR, 'rules');
|
|
54
|
+
const USER_MCP_DIR = path.join(USER_AGENTS_DIR, 'mcp');
|
|
55
|
+
const USER_PERMISSIONS_DIR = path.join(USER_AGENTS_DIR, 'permissions');
|
|
56
|
+
const USER_SUBAGENTS_DIR = path.join(USER_AGENTS_DIR, 'subagents');
|
|
57
|
+
const USER_SECRETS_DIR = path.join(USER_AGENTS_DIR, 'secrets');
|
|
58
|
+
const USER_PROMPTCUTS_FILE = path.join(USER_AGENTS_DIR, 'hooks', 'promptcuts.yaml');
|
|
25
59
|
const META_HEADER = `# agents-cli metadata
|
|
26
60
|
# Auto-generated - do not edit manually
|
|
27
|
-
# https://github.com/
|
|
61
|
+
# https://github.com/phnx-labs/agents-cli
|
|
28
62
|
|
|
29
63
|
`;
|
|
64
|
+
// ─── Root getters ─────────────────────────────────────────────────────────────
|
|
65
|
+
/** Root of the system data directory (~/.agents-system/). Legacy alias — prefer getSystemAgentsDir(). */
|
|
30
66
|
export function getAgentsDir() {
|
|
31
|
-
return
|
|
67
|
+
return SYSTEM_AGENTS_DIR;
|
|
68
|
+
}
|
|
69
|
+
/** Root of the system data directory (~/.agents-system/). */
|
|
70
|
+
export function getSystemAgentsDir() {
|
|
71
|
+
return SYSTEM_AGENTS_DIR;
|
|
72
|
+
}
|
|
73
|
+
/** Root of the user repo (~/.agents/). Always present after ensureAgentsDir(). */
|
|
74
|
+
export function getUserAgentsDir() {
|
|
75
|
+
return USER_AGENTS_DIR;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Backward-compat shim. Returns null when ~/.agents/ is a symlink to the
|
|
79
|
+
* system dir; otherwise returns USER_AGENTS_DIR.
|
|
80
|
+
*
|
|
81
|
+
* @deprecated Use getUserAgentsDir() directly.
|
|
82
|
+
*/
|
|
83
|
+
export function getOptionalUserAgentsDir() {
|
|
84
|
+
if (fs.existsSync(USER_AGENTS_DIR)) {
|
|
85
|
+
try {
|
|
86
|
+
const stat = fs.lstatSync(USER_AGENTS_DIR);
|
|
87
|
+
if (stat.isSymbolicLink()) {
|
|
88
|
+
try {
|
|
89
|
+
if (fs.realpathSync(USER_AGENTS_DIR) === fs.realpathSync(SYSTEM_AGENTS_DIR))
|
|
90
|
+
return null;
|
|
91
|
+
}
|
|
92
|
+
catch {
|
|
93
|
+
return null;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
catch { /* dir may not exist yet */ }
|
|
98
|
+
}
|
|
99
|
+
return USER_AGENTS_DIR;
|
|
32
100
|
}
|
|
101
|
+
/** Walk up from startPath to find a project-scoped .agents/ directory (skipping both roots). */
|
|
33
102
|
export function getProjectAgentsDir(startPath = process.cwd()) {
|
|
34
103
|
let dir = path.resolve(startPath);
|
|
35
104
|
while (true) {
|
|
36
105
|
const agentsPath = path.join(dir, '.agents');
|
|
37
106
|
if (fs.existsSync(agentsPath) && fs.statSync(agentsPath).isDirectory()) {
|
|
38
|
-
|
|
39
|
-
if (agentsPath !== AGENTS_DIR) {
|
|
107
|
+
if (agentsPath !== SYSTEM_AGENTS_DIR && agentsPath !== USER_AGENTS_DIR) {
|
|
40
108
|
return agentsPath;
|
|
41
109
|
}
|
|
42
110
|
}
|
|
43
|
-
const isProjectBoundary = fs.existsSync(path.join(dir, '.git')) || fs.existsSync(path.join(dir, '.
|
|
111
|
+
const isProjectBoundary = fs.existsSync(path.join(dir, '.git')) || fs.existsSync(path.join(dir, 'agents.yaml'));
|
|
44
112
|
const parent = path.dirname(dir);
|
|
45
|
-
if (parent === dir)
|
|
113
|
+
if (parent === dir)
|
|
46
114
|
break;
|
|
47
|
-
|
|
48
|
-
if (isProjectBoundary) {
|
|
49
|
-
// Check this boundary dir but don't go further
|
|
115
|
+
if (isProjectBoundary)
|
|
50
116
|
break;
|
|
51
|
-
}
|
|
52
117
|
dir = parent;
|
|
53
118
|
}
|
|
54
119
|
return null;
|
|
55
120
|
}
|
|
121
|
+
/** Return all .agents/ directories in scope: project, user, then system. */
|
|
56
122
|
export function getScopedAgentsDirs(startPath = process.cwd()) {
|
|
57
123
|
const dirs = [];
|
|
58
124
|
const projectDir = getProjectAgentsDir(startPath);
|
|
59
125
|
if (projectDir) {
|
|
60
126
|
dirs.push({ scope: 'project', path: projectDir });
|
|
61
127
|
}
|
|
62
|
-
dirs.push({ scope: 'user', path:
|
|
128
|
+
dirs.push({ scope: 'user', path: USER_AGENTS_DIR });
|
|
129
|
+
dirs.push({ scope: 'system', path: SYSTEM_AGENTS_DIR });
|
|
63
130
|
return dirs;
|
|
64
131
|
}
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
export function
|
|
72
|
-
|
|
73
|
-
}
|
|
74
|
-
export
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
export function
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
return
|
|
103
|
-
}
|
|
104
|
-
export function getSkillsDir() {
|
|
105
|
-
return SKILLS_DIR;
|
|
132
|
+
// ─── System resource getters (legacy aliases for read/sync paths) ─────────────
|
|
133
|
+
/** Path to slash command markdown files — system repo. */
|
|
134
|
+
export function getCommandsDir() { return SYSTEM_COMMANDS_DIR; }
|
|
135
|
+
/** Path to hook script directories — system repo. */
|
|
136
|
+
export function getHooksDir() { return SYSTEM_HOOKS_DIR; }
|
|
137
|
+
/** Path to skill bundles — system repo. */
|
|
138
|
+
export function getSkillsDir() { return SYSTEM_SKILLS_DIR; }
|
|
139
|
+
/** Path to the canonical rules directory — system repo. */
|
|
140
|
+
export function getRulesDir() { return SYSTEM_RULES_DIR; }
|
|
141
|
+
/** Back-compat export; resolves to system rules dir. */
|
|
142
|
+
export function getMemoryDir() { return SYSTEM_RULES_DIR; }
|
|
143
|
+
let legacyMemoryWarned = false;
|
|
144
|
+
/**
|
|
145
|
+
* Read-side resolution for the canonical rules dir.
|
|
146
|
+
*
|
|
147
|
+
* Returns SYSTEM_RULES_DIR normally. Falls back to the legacy
|
|
148
|
+
* SYSTEM_LEGACY_MEMORY_DIR (~/.agents-system/memory/) only when the upstream
|
|
149
|
+
* still uses the old layout and the user hasn't pulled the rename yet —
|
|
150
|
+
* detected by absence of rules/AGENTS.md and presence of memory/AGENTS.md.
|
|
151
|
+
*
|
|
152
|
+
* Prints a single warning per process the first time the fallback fires.
|
|
153
|
+
* Per the read-only system-repo invariant, this never moves files; the rename
|
|
154
|
+
* is applied when the user pulls upstream.
|
|
155
|
+
*/
|
|
156
|
+
export function getResolvedRulesDir() {
|
|
157
|
+
const rulesAgents = path.join(SYSTEM_RULES_DIR, 'AGENTS.md');
|
|
158
|
+
const legacyAgents = path.join(SYSTEM_LEGACY_MEMORY_DIR, 'AGENTS.md');
|
|
159
|
+
if (fs.existsSync(rulesAgents))
|
|
160
|
+
return SYSTEM_RULES_DIR;
|
|
161
|
+
if (fs.existsSync(legacyAgents)) {
|
|
162
|
+
if (!legacyMemoryWarned) {
|
|
163
|
+
legacyMemoryWarned = true;
|
|
164
|
+
process.stderr.write('agents-cli: Legacy memory/ directory detected — agents-cli still works, ' +
|
|
165
|
+
"but run 'agents repo pull system' to migrate to rules/.\n");
|
|
166
|
+
}
|
|
167
|
+
return SYSTEM_LEGACY_MEMORY_DIR;
|
|
168
|
+
}
|
|
169
|
+
return SYSTEM_RULES_DIR;
|
|
106
170
|
}
|
|
107
|
-
|
|
108
|
-
|
|
171
|
+
/** Path to MCP server YAML configs — system repo. */
|
|
172
|
+
export function getMcpDir() { return SYSTEM_MCP_DIR; }
|
|
173
|
+
/** Path to permission group YAML files — system repo. */
|
|
174
|
+
export function getPermissionsDir() { return SYSTEM_PERMISSIONS_DIR; }
|
|
175
|
+
/** Path to subagent definition directories — system repo. */
|
|
176
|
+
export function getSubagentsDir() { return SYSTEM_SUBAGENTS_DIR; }
|
|
177
|
+
/** Path to encrypted secret bundles — system repo. */
|
|
178
|
+
export function getSecretsDir() { return SYSTEM_SECRETS_DIR; }
|
|
179
|
+
/** Path to ~/.agents-system/promptcuts.yaml. */
|
|
180
|
+
export function getPromptcutsPath() { return SYSTEM_PROMPTCUTS_FILE; }
|
|
181
|
+
/** Path to the legacy MCP config JSON. */
|
|
182
|
+
export function getMcpConfigPath() { return SYSTEM_MCP_CONFIG_FILE; }
|
|
183
|
+
/** Path to the global instructions file. */
|
|
184
|
+
export function getInstructionsPath() { return SYSTEM_INSTRUCTIONS_FILE; }
|
|
185
|
+
// ─── System-specific getters ───────────────────────────────────────────────────
|
|
186
|
+
export function getSystemCommandsDir() { return SYSTEM_COMMANDS_DIR; }
|
|
187
|
+
export function getSystemHooksDir() { return SYSTEM_HOOKS_DIR; }
|
|
188
|
+
export function getSystemSkillsDir() { return SYSTEM_SKILLS_DIR; }
|
|
189
|
+
export function getSystemRulesDir() { return SYSTEM_RULES_DIR; }
|
|
190
|
+
export function getSystemMcpDir() { return SYSTEM_MCP_DIR; }
|
|
191
|
+
export function getSystemPermissionsDir() { return SYSTEM_PERMISSIONS_DIR; }
|
|
192
|
+
export function getSystemSubagentsDir() { return SYSTEM_SUBAGENTS_DIR; }
|
|
193
|
+
export function getSystemSecretsDir() { return SYSTEM_SECRETS_DIR; }
|
|
194
|
+
export function getSystemPromptcutsPath() { return SYSTEM_PROMPTCUTS_FILE; }
|
|
195
|
+
// ─── User resource getters ────────────────────────────────────────────────────
|
|
196
|
+
export function getUserCommandsDir() { return USER_COMMANDS_DIR; }
|
|
197
|
+
export function getUserHooksDir() { return USER_HOOKS_DIR; }
|
|
198
|
+
export function getUserSkillsDir() { return USER_SKILLS_DIR; }
|
|
199
|
+
export function getUserRulesDir() { return USER_RULES_DIR; }
|
|
200
|
+
export function getUserMcpDir() { return USER_MCP_DIR; }
|
|
201
|
+
export function getUserPermissionsDir() { return USER_PERMISSIONS_DIR; }
|
|
202
|
+
export function getUserSubagentsDir() { return USER_SUBAGENTS_DIR; }
|
|
203
|
+
export function getUserSecretsDir() { return USER_SECRETS_DIR; }
|
|
204
|
+
export function getUserPromptcutsPath() { return USER_PROMPTCUTS_FILE; }
|
|
205
|
+
// ─── System-only path getters ─────────────────────────────────────────────────
|
|
206
|
+
/** Path to cloned packages (~/.agents-system/packages/). */
|
|
207
|
+
export function getPackagesDir() { return PACKAGES_DIR; }
|
|
208
|
+
/** Path to routine YAML definitions (~/.agents-system/routines/). */
|
|
209
|
+
export function getRoutinesDir() { return ROUTINES_DIR; }
|
|
210
|
+
/** Path to routine execution logs (~/.agents-system/runs/). */
|
|
211
|
+
export function getRunsDir() { return RUNS_DIR; }
|
|
212
|
+
/** Path to installed agent CLI binaries (~/.agents-system/versions/). */
|
|
213
|
+
export function getVersionsDir() { return VERSIONS_DIR; }
|
|
214
|
+
/** Path to version-switching shim scripts (~/.agents-system/shims/). */
|
|
215
|
+
export function getShimsDir() { return SHIMS_DIR; }
|
|
216
|
+
/** Path to config backups (~/.agents-system/backups/). */
|
|
217
|
+
export function getBackupsDir() { return BACKUPS_DIR; }
|
|
218
|
+
/** Path to plugin bundles (~/.agents-system/plugins/). */
|
|
219
|
+
export function getPluginsDir() { return PLUGINS_DIR; }
|
|
220
|
+
/** Path to synced remote session data (~/.agents-system/drive/). */
|
|
221
|
+
export function getDriveDir() { return DRIVE_DIR; }
|
|
222
|
+
/**
|
|
223
|
+
* Path to a single user-level extra DotAgent repo clone (~/.agents-<alias>/).
|
|
224
|
+
*
|
|
225
|
+
* Extra repos are user-defined config — they live as peer dirs to ~/.agents/,
|
|
226
|
+
* not under the system repo. `agents repo add` clones here by default.
|
|
227
|
+
*/
|
|
228
|
+
export function getExtraRepoDir(alias) {
|
|
229
|
+
return path.join(HOME, `.agents-${alias}`);
|
|
109
230
|
}
|
|
110
|
-
|
|
111
|
-
|
|
231
|
+
/** Resolve the on-disk path for an extra repo, whether managed or user-owned. */
|
|
232
|
+
export function resolveExtraRepoDir(alias, config) {
|
|
233
|
+
if (config?.path) {
|
|
234
|
+
return path.resolve(config.path);
|
|
235
|
+
}
|
|
236
|
+
return getExtraRepoDir(alias);
|
|
112
237
|
}
|
|
113
|
-
|
|
114
|
-
|
|
238
|
+
/**
|
|
239
|
+
* Return enabled extra repos that exist on disk, in insertion order.
|
|
240
|
+
*/
|
|
241
|
+
export function getEnabledExtraRepos() {
|
|
242
|
+
const meta = readMeta();
|
|
243
|
+
const extras = meta.extraRepos || {};
|
|
244
|
+
const out = [];
|
|
245
|
+
for (const [alias, config] of Object.entries(extras)) {
|
|
246
|
+
if (!config.enabled)
|
|
247
|
+
continue;
|
|
248
|
+
const dir = resolveExtraRepoDir(alias, config);
|
|
249
|
+
if (!fs.existsSync(dir))
|
|
250
|
+
continue;
|
|
251
|
+
out.push({ alias, dir, url: config.url });
|
|
252
|
+
}
|
|
253
|
+
return out;
|
|
115
254
|
}
|
|
255
|
+
// ─── Directory setup ───────────────────────────────────────────────────────────
|
|
256
|
+
/** Create both the system and user directory trees if any subdirectories are missing. */
|
|
116
257
|
export function ensureAgentsDir() {
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
fs.mkdirSync(PACKAGES_DIR, { recursive: true });
|
|
122
|
-
}
|
|
123
|
-
if (!fs.existsSync(ROUTINES_DIR)) {
|
|
124
|
-
fs.mkdirSync(ROUTINES_DIR, { recursive: true });
|
|
125
|
-
}
|
|
126
|
-
if (!fs.existsSync(RUNS_DIR)) {
|
|
127
|
-
fs.mkdirSync(RUNS_DIR, { recursive: true });
|
|
128
|
-
}
|
|
129
|
-
if (!fs.existsSync(VERSIONS_DIR)) {
|
|
130
|
-
fs.mkdirSync(VERSIONS_DIR, { recursive: true });
|
|
131
|
-
}
|
|
132
|
-
if (!fs.existsSync(SHIMS_DIR)) {
|
|
133
|
-
fs.mkdirSync(SHIMS_DIR, { recursive: true });
|
|
134
|
-
}
|
|
135
|
-
if (!fs.existsSync(COMMANDS_DIR)) {
|
|
136
|
-
fs.mkdirSync(COMMANDS_DIR, { recursive: true });
|
|
258
|
+
const opts = { recursive: true, mode: 0o700 };
|
|
259
|
+
// User repo — minimal scaffold (sub-dirs created on first write)
|
|
260
|
+
if (!fs.existsSync(USER_AGENTS_DIR)) {
|
|
261
|
+
fs.mkdirSync(USER_AGENTS_DIR, opts);
|
|
137
262
|
}
|
|
138
|
-
|
|
139
|
-
fs.
|
|
263
|
+
try {
|
|
264
|
+
fs.chmodSync(USER_AGENTS_DIR, 0o700);
|
|
140
265
|
}
|
|
141
|
-
|
|
142
|
-
|
|
266
|
+
catch { }
|
|
267
|
+
// System repo
|
|
268
|
+
if (!fs.existsSync(SYSTEM_AGENTS_DIR)) {
|
|
269
|
+
fs.mkdirSync(SYSTEM_AGENTS_DIR, opts);
|
|
143
270
|
}
|
|
144
|
-
if (!fs.existsSync(
|
|
145
|
-
fs.mkdirSync(
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
if (!fs.existsSync(
|
|
151
|
-
fs.mkdirSync(
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
271
|
+
if (!fs.existsSync(PACKAGES_DIR))
|
|
272
|
+
fs.mkdirSync(PACKAGES_DIR, opts);
|
|
273
|
+
if (!fs.existsSync(ROUTINES_DIR))
|
|
274
|
+
fs.mkdirSync(ROUTINES_DIR, opts);
|
|
275
|
+
if (!fs.existsSync(RUNS_DIR))
|
|
276
|
+
fs.mkdirSync(RUNS_DIR, opts);
|
|
277
|
+
if (!fs.existsSync(VERSIONS_DIR))
|
|
278
|
+
fs.mkdirSync(VERSIONS_DIR, opts);
|
|
279
|
+
if (!fs.existsSync(SHIMS_DIR))
|
|
280
|
+
fs.mkdirSync(SHIMS_DIR, opts);
|
|
281
|
+
if (!fs.existsSync(SYSTEM_COMMANDS_DIR))
|
|
282
|
+
fs.mkdirSync(SYSTEM_COMMANDS_DIR, opts);
|
|
283
|
+
if (!fs.existsSync(SYSTEM_HOOKS_DIR))
|
|
284
|
+
fs.mkdirSync(SYSTEM_HOOKS_DIR, opts);
|
|
285
|
+
if (!fs.existsSync(SYSTEM_SKILLS_DIR))
|
|
286
|
+
fs.mkdirSync(SYSTEM_SKILLS_DIR, opts);
|
|
287
|
+
if (!fs.existsSync(SYSTEM_RULES_DIR))
|
|
288
|
+
fs.mkdirSync(SYSTEM_RULES_DIR, opts);
|
|
289
|
+
if (!fs.existsSync(SYSTEM_PERMISSIONS_DIR))
|
|
290
|
+
fs.mkdirSync(SYSTEM_PERMISSIONS_DIR, opts);
|
|
291
|
+
if (!fs.existsSync(SYSTEM_SUBAGENTS_DIR))
|
|
292
|
+
fs.mkdirSync(SYSTEM_SUBAGENTS_DIR, opts);
|
|
293
|
+
if (!fs.existsSync(DRIVE_DIR))
|
|
294
|
+
fs.mkdirSync(DRIVE_DIR, opts);
|
|
295
|
+
try {
|
|
296
|
+
fs.chmodSync(SYSTEM_AGENTS_DIR, 0o700);
|
|
155
297
|
}
|
|
298
|
+
catch { }
|
|
156
299
|
}
|
|
300
|
+
// ─── Meta (agents.yaml) ────────────────────────────────────────────────────────
|
|
301
|
+
/** Return an empty Meta object used when no agents.yaml exists yet. */
|
|
157
302
|
export function createDefaultMeta() {
|
|
158
303
|
return {};
|
|
159
304
|
}
|
|
160
305
|
let metaCache = null;
|
|
306
|
+
function applyRegistrySeeds(meta) {
|
|
307
|
+
const seeded = new Set(meta.seededPresets || []);
|
|
308
|
+
let changed = false;
|
|
309
|
+
for (const [type, presets] of Object.entries(SEEDED_REGISTRIES)) {
|
|
310
|
+
for (const [name, config] of Object.entries(presets)) {
|
|
311
|
+
const key = `${type}.${name}`;
|
|
312
|
+
if (seeded.has(key))
|
|
313
|
+
continue;
|
|
314
|
+
if (!meta.registries)
|
|
315
|
+
meta.registries = { mcp: {}, skill: {} };
|
|
316
|
+
if (!meta.registries[type])
|
|
317
|
+
meta.registries[type] = {};
|
|
318
|
+
if (!meta.registries[type][name]) {
|
|
319
|
+
meta.registries[type][name] = { ...config };
|
|
320
|
+
}
|
|
321
|
+
seeded.add(key);
|
|
322
|
+
changed = true;
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
if (changed)
|
|
326
|
+
meta.seededPresets = [...seeded];
|
|
327
|
+
return changed;
|
|
328
|
+
}
|
|
329
|
+
/**
|
|
330
|
+
* One-shot migration: move agents.yaml from system repo to user repo.
|
|
331
|
+
* Idempotent — no-ops if user file already exists or system file absent.
|
|
332
|
+
*/
|
|
333
|
+
function migrateSystemMetaToUser() {
|
|
334
|
+
if (fs.existsSync(META_FILE))
|
|
335
|
+
return;
|
|
336
|
+
if (!fs.existsSync(SYSTEM_META_FILE))
|
|
337
|
+
return;
|
|
338
|
+
try {
|
|
339
|
+
if (!fs.existsSync(USER_AGENTS_DIR)) {
|
|
340
|
+
fs.mkdirSync(USER_AGENTS_DIR, { recursive: true, mode: 0o700 });
|
|
341
|
+
}
|
|
342
|
+
fs.renameSync(SYSTEM_META_FILE, META_FILE);
|
|
343
|
+
console.log('Migrated agents.yaml to ~/.agents/');
|
|
344
|
+
}
|
|
345
|
+
catch {
|
|
346
|
+
// Best-effort; proceed with fresh state if it fails.
|
|
347
|
+
}
|
|
348
|
+
}
|
|
349
|
+
/** Read and cache ~/.agents/agents.yaml, migrating from legacy locations if needed. */
|
|
161
350
|
export function readMeta() {
|
|
162
351
|
ensureAgentsDir();
|
|
163
|
-
//
|
|
164
|
-
|
|
352
|
+
// NOTE: agents.yaml migration from ~/.agents-system/ to ~/.agents/ is handled
|
|
353
|
+
// exclusively by runMigration() in migrate.ts, called from postinstall and
|
|
354
|
+
// explicit command-time fallbacks (agents view/use/pull). Calling it here
|
|
355
|
+
// would mutate real-user filesystem state during test runs that import this
|
|
356
|
+
// module, causing cross-test pollution.
|
|
357
|
+
// Legacy migration: check for old meta.yaml in system dir
|
|
358
|
+
const oldMetaFile = path.join(SYSTEM_AGENTS_DIR, 'meta.yaml');
|
|
165
359
|
if (fs.existsSync(oldMetaFile) && !fs.existsSync(META_FILE)) {
|
|
166
360
|
try {
|
|
167
361
|
const content = fs.readFileSync(oldMetaFile, 'utf-8');
|
|
168
362
|
const parsed = yaml.parse(content);
|
|
169
363
|
const meta = {};
|
|
170
|
-
// Migrate versions.*.default -> agents.*
|
|
171
364
|
if (parsed.versions) {
|
|
172
365
|
meta.agents = {};
|
|
173
366
|
for (const [agent, state] of Object.entries(parsed.versions)) {
|
|
@@ -177,20 +370,18 @@ export function readMeta() {
|
|
|
177
370
|
}
|
|
178
371
|
}
|
|
179
372
|
}
|
|
180
|
-
// Migrate registries
|
|
181
373
|
if (parsed.registries) {
|
|
182
374
|
meta.registries = parsed.registries;
|
|
183
375
|
}
|
|
184
376
|
writeMeta(meta);
|
|
185
|
-
// Remove old meta.yaml to prevent stale reads by shims
|
|
186
377
|
try {
|
|
187
378
|
fs.unlinkSync(oldMetaFile);
|
|
188
379
|
}
|
|
189
|
-
catch { /*
|
|
380
|
+
catch { /* non-critical */ }
|
|
190
381
|
return meta;
|
|
191
382
|
}
|
|
192
383
|
catch {
|
|
193
|
-
/* meta.yaml migration failed
|
|
384
|
+
/* meta.yaml migration failed */
|
|
194
385
|
}
|
|
195
386
|
}
|
|
196
387
|
if (fs.existsSync(META_FILE)) {
|
|
@@ -198,9 +389,7 @@ export function readMeta() {
|
|
|
198
389
|
try {
|
|
199
390
|
mtime = fs.statSync(META_FILE).mtimeMs;
|
|
200
391
|
}
|
|
201
|
-
catch {
|
|
202
|
-
/* file vanished between existsSync and statSync */
|
|
203
|
-
}
|
|
392
|
+
catch { /* file vanished */ }
|
|
204
393
|
if (metaCache && metaCache.mtime === mtime) {
|
|
205
394
|
return metaCache.meta;
|
|
206
395
|
}
|
|
@@ -208,28 +397,38 @@ export function readMeta() {
|
|
|
208
397
|
const content = fs.readFileSync(META_FILE, 'utf-8');
|
|
209
398
|
const parsed = yaml.parse(content);
|
|
210
399
|
const meta = parsed || createDefaultMeta();
|
|
400
|
+
if (applyRegistrySeeds(meta)) {
|
|
401
|
+
writeMeta(meta);
|
|
402
|
+
return meta;
|
|
403
|
+
}
|
|
211
404
|
metaCache = { mtime, meta };
|
|
212
405
|
return meta;
|
|
213
406
|
}
|
|
214
407
|
catch {
|
|
215
|
-
/* agents.yaml corrupt or unreadable, use defaults */
|
|
216
408
|
return createDefaultMeta();
|
|
217
409
|
}
|
|
218
410
|
}
|
|
219
|
-
|
|
411
|
+
const meta = createDefaultMeta();
|
|
412
|
+
if (applyRegistrySeeds(meta)) {
|
|
413
|
+
writeMeta(meta);
|
|
414
|
+
}
|
|
415
|
+
return meta;
|
|
220
416
|
}
|
|
417
|
+
/** Serialize and write agents.yaml to the user repo, invalidating the in-memory cache. */
|
|
221
418
|
export function writeMeta(meta) {
|
|
222
419
|
ensureAgentsDir();
|
|
223
420
|
const content = META_HEADER + yaml.stringify(meta);
|
|
224
421
|
fs.writeFileSync(META_FILE, content, 'utf-8');
|
|
225
422
|
metaCache = null;
|
|
226
423
|
}
|
|
424
|
+
/** Shallow-merge updates into agents.yaml and return the new state. */
|
|
227
425
|
export function updateMeta(updates) {
|
|
228
426
|
const meta = readMeta();
|
|
229
427
|
const newMeta = { ...meta, ...updates };
|
|
230
428
|
writeMeta(newMeta);
|
|
231
429
|
return newMeta;
|
|
232
430
|
}
|
|
431
|
+
/** Derive a filesystem-safe local clone path for a package source URL. */
|
|
233
432
|
export function getPackageLocalPath(source) {
|
|
234
433
|
const sanitized = source
|
|
235
434
|
.replace(/^gh:/, '')
|
|
@@ -238,11 +437,6 @@ export function getPackageLocalPath(source) {
|
|
|
238
437
|
.replace(/\//g, '-');
|
|
239
438
|
return path.join(PACKAGES_DIR, sanitized);
|
|
240
439
|
}
|
|
241
|
-
/**
|
|
242
|
-
* Record that resources were synced to a specific version.
|
|
243
|
-
* Creates nested entries if they don't exist (handles existing installs gracefully).
|
|
244
|
-
* Merges with existing resources (uses Set for deduplication).
|
|
245
|
-
*/
|
|
246
440
|
export function recordVersionResources(agent, version, resourceType, resources) {
|
|
247
441
|
if (resources.length === 0)
|
|
248
442
|
return;
|
|
@@ -258,29 +452,20 @@ export function recordVersionResources(agent, version, resourceType, resources)
|
|
|
258
452
|
meta.versions[agent][version][resourceType] = merged;
|
|
259
453
|
writeMeta(meta);
|
|
260
454
|
}
|
|
261
|
-
/**
|
|
262
|
-
* Get tracked resources for a specific version.
|
|
263
|
-
*/
|
|
264
455
|
export function getVersionResources(agent, version) {
|
|
265
456
|
const meta = readMeta();
|
|
266
457
|
return meta.versions?.[agent]?.[version] || null;
|
|
267
458
|
}
|
|
268
|
-
/**
|
|
269
|
-
* Clear resource tracking when a version is removed.
|
|
270
|
-
*/
|
|
271
459
|
export function clearVersionResources(agent, version) {
|
|
272
460
|
const meta = readMeta();
|
|
273
461
|
if (meta.versions?.[agent]?.[version]) {
|
|
274
462
|
delete meta.versions[agent][version];
|
|
275
|
-
// Clean up empty agent entry
|
|
276
463
|
if (Object.keys(meta.versions[agent]).length === 0) {
|
|
277
464
|
delete meta.versions[agent];
|
|
278
465
|
}
|
|
279
|
-
// Clean up empty versions section
|
|
280
466
|
if (Object.keys(meta.versions).length === 0) {
|
|
281
467
|
delete meta.versions;
|
|
282
468
|
}
|
|
283
469
|
writeMeta(meta);
|
|
284
470
|
}
|
|
285
471
|
}
|
|
286
|
-
//# sourceMappingURL=state.js.map
|
package/dist/lib/subagents.d.ts
CHANGED
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Subagent management -- discovery, installation, and format conversion.
|
|
3
|
+
*
|
|
4
|
+
* Subagents are named agent definitions in ~/.agents/subagents/, each a directory
|
|
5
|
+
* with an agent.md file (frontmatter + instructions). This module discovers them,
|
|
6
|
+
* transforms them into agent-native formats (Claude .mdc, OpenClaw YAML),
|
|
7
|
+
* and syncs them into version homes.
|
|
8
|
+
*/
|
|
1
9
|
import type { AgentId, DiscoveredSubagent, InstalledSubagent, SubagentFrontmatter } from './types.js';
|
|
2
10
|
/**
|
|
3
11
|
* Parse AGENT.md frontmatter to extract subagent metadata
|
|
@@ -65,6 +73,7 @@ export declare function removeSubagentFromAgent(subagentName: string, agent: Age
|
|
|
65
73
|
* Check if subagent content matches between source and installed
|
|
66
74
|
*/
|
|
67
75
|
export declare function subagentContentMatches(installedDir: string, sourceDir: string): boolean;
|
|
76
|
+
/** Agents that support the subagent system (Claude via flattened .md, OpenClaw via directory copy). */
|
|
68
77
|
export declare const SUBAGENT_CAPABLE_AGENTS: AgentId[];
|
|
69
78
|
/**
|
|
70
79
|
* List subagents installed to a specific agent's home
|
|
@@ -72,4 +81,3 @@ export declare const SUBAGENT_CAPABLE_AGENTS: AgentId[];
|
|
|
72
81
|
* OpenClaw: scans ~/.openclaw/{name}/AGENTS.md
|
|
73
82
|
*/
|
|
74
83
|
export declare function listSubagentsForAgent(agentId: AgentId, home: string): InstalledSubagent[];
|
|
75
|
-
//# sourceMappingURL=subagents.d.ts.map
|