@phnx-labs/agents-cli 0.1.0 → 1.14.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/CHANGELOG.md +7 -1
- package/README.md +283 -372
- 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 +8 -1
- package/dist/commands/cloud.js +108 -22
- 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 +96 -27
- 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 +16 -4
- 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 +9 -1
- package/dist/commands/profiles.js +56 -7
- 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 +58 -128
- 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 +8 -1
- package/dist/commands/secrets.js +235 -63
- 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 +188 -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 +317 -24
- package/dist/index.d.ts +7 -2
- package/dist/index.js +172 -34
- 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 +197 -21
- 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 +9 -3
- package/dist/lib/cloud/codex.js +53 -13
- package/dist/lib/cloud/factory.d.ts +8 -3
- package/dist/lib/cloud/factory.js +19 -3
- package/dist/lib/cloud/registry.d.ts +10 -1
- package/dist/lib/cloud/registry.js +14 -3
- package/dist/lib/cloud/rush.d.ts +63 -3
- package/dist/lib/cloud/rush.js +273 -20
- package/dist/lib/cloud/store.d.ts +13 -1
- package/dist/lib/cloud/store.js +23 -4
- package/dist/lib/cloud/stream.d.ts +6 -1
- package/dist/lib/cloud/stream.js +95 -39
- package/dist/lib/cloud/types.d.ts +153 -8
- package/dist/lib/cloud/types.js +34 -2
- 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 +23 -6
- package/dist/lib/exec.js +53 -17
- 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 +119 -101
- 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 +10 -4
- package/dist/lib/models.js +36 -15
- 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 +10 -1
- package/dist/lib/profiles-presets.js +9 -1
- package/dist/lib/profiles.d.ts +35 -1
- package/dist/lib/profiles.js +36 -15
- 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 +40 -13
- package/dist/lib/rotate.js +238 -40
- 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 → secrets/bundles.d.ts} +12 -2
- package/dist/lib/{secrets-bundles.js → secrets/bundles.js} +38 -17
- 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 +12 -1
- package/dist/lib/session/artifacts.js +25 -5
- 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 +16 -2
- package/dist/lib/session/types.js +10 -2
- package/dist/lib/shims.d.ts +64 -5
- package/dist/lib/shims.js +309 -47
- 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 +112 -27
- package/dist/lib/state.js +320 -148
- 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 +32 -1
- package/dist/lib/usage.js +70 -6
- package/dist/lib/version-duplicates.d.ts +21 -0
- package/dist/lib/version-duplicates.js +90 -0
- package/dist/lib/versions.d.ts +33 -4
- package/dist/lib/versions.js +376 -108
- package/package.json +32 -17
- 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/cloud.d.ts.map +0 -1
- package/dist/commands/cloud.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/profiles.d.ts.map +0 -1
- package/dist/commands/profiles.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/secrets.d.ts.map +0 -1
- package/dist/commands/secrets.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 -239
- package/dist/lib/__tests__/models.test.js.map +0 -1
- package/dist/lib/__tests__/rotate.test.d.ts +0 -2
- package/dist/lib/__tests__/rotate.test.d.ts.map +0 -1
- package/dist/lib/__tests__/rotate.test.js +0 -80
- package/dist/lib/__tests__/rotate.test.js.map +0 -1
- package/dist/lib/__tests__/secrets-bundles.test.d.ts +0 -2
- package/dist/lib/__tests__/secrets-bundles.test.d.ts.map +0 -1
- package/dist/lib/__tests__/secrets-bundles.test.js +0 -104
- package/dist/lib/__tests__/secrets-bundles.test.js.map +0 -1
- package/dist/lib/__tests__/secrets.test.d.ts +0 -2
- package/dist/lib/__tests__/secrets.test.d.ts.map +0 -1
- package/dist/lib/__tests__/secrets.test.js +0 -90
- package/dist/lib/__tests__/secrets.test.js.map +0 -1
- package/dist/lib/__tests__/shims.test.d.ts +0 -2
- package/dist/lib/__tests__/shims.test.d.ts.map +0 -1
- package/dist/lib/__tests__/shims.test.js +0 -39
- package/dist/lib/__tests__/shims.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 -220
- package/dist/lib/__tests__/usage.test.js.map +0 -1
- package/dist/lib/__tests__/versions.test.d.ts +0 -2
- package/dist/lib/__tests__/versions.test.d.ts.map +0 -1
- package/dist/lib/__tests__/versions.test.js +0 -63
- package/dist/lib/__tests__/versions.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/cloud/codex.d.ts.map +0 -1
- package/dist/lib/cloud/codex.js.map +0 -1
- package/dist/lib/cloud/factory.d.ts.map +0 -1
- package/dist/lib/cloud/factory.js.map +0 -1
- package/dist/lib/cloud/registry.d.ts.map +0 -1
- package/dist/lib/cloud/registry.js.map +0 -1
- package/dist/lib/cloud/rush.d.ts.map +0 -1
- package/dist/lib/cloud/rush.js.map +0 -1
- package/dist/lib/cloud/store.d.ts.map +0 -1
- package/dist/lib/cloud/store.js.map +0 -1
- package/dist/lib/cloud/stream.d.ts.map +0 -1
- package/dist/lib/cloud/stream.js.map +0 -1
- package/dist/lib/cloud/types.d.ts.map +0 -1
- package/dist/lib/cloud/types.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/profiles-keychain.d.ts +0 -3
- package/dist/lib/profiles-keychain.d.ts.map +0 -1
- package/dist/lib/profiles-keychain.js +0 -10
- package/dist/lib/profiles-keychain.js.map +0 -1
- package/dist/lib/profiles-presets.d.ts.map +0 -1
- package/dist/lib/profiles-presets.js.map +0 -1
- package/dist/lib/profiles.d.ts.map +0 -1
- package/dist/lib/profiles.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/rotate.d.ts.map +0 -1
- package/dist/lib/rotate.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/secrets-bundles.d.ts.map +0 -1
- package/dist/lib/secrets-bundles.js.map +0 -1
- package/dist/lib/secrets.d.ts +0 -27
- package/dist/lib/secrets.d.ts.map +0 -1
- package/dist/lib/secrets.js +0 -127
- package/dist/lib/secrets.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/artifacts.d.ts.map +0 -1
- package/dist/lib/session/artifacts.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,186 +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
|
|
25
|
-
const
|
|
26
|
-
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');
|
|
27
59
|
const META_HEADER = `# agents-cli metadata
|
|
28
60
|
# Auto-generated - do not edit manually
|
|
29
|
-
# https://github.com/
|
|
61
|
+
# https://github.com/phnx-labs/agents-cli
|
|
30
62
|
|
|
31
63
|
`;
|
|
64
|
+
// ─── Root getters ─────────────────────────────────────────────────────────────
|
|
65
|
+
/** Root of the system data directory (~/.agents-system/). Legacy alias — prefer getSystemAgentsDir(). */
|
|
32
66
|
export function getAgentsDir() {
|
|
33
|
-
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;
|
|
34
100
|
}
|
|
101
|
+
/** Walk up from startPath to find a project-scoped .agents/ directory (skipping both roots). */
|
|
35
102
|
export function getProjectAgentsDir(startPath = process.cwd()) {
|
|
36
103
|
let dir = path.resolve(startPath);
|
|
37
104
|
while (true) {
|
|
38
105
|
const agentsPath = path.join(dir, '.agents');
|
|
39
106
|
if (fs.existsSync(agentsPath) && fs.statSync(agentsPath).isDirectory()) {
|
|
40
|
-
|
|
41
|
-
if (agentsPath !== AGENTS_DIR) {
|
|
107
|
+
if (agentsPath !== SYSTEM_AGENTS_DIR && agentsPath !== USER_AGENTS_DIR) {
|
|
42
108
|
return agentsPath;
|
|
43
109
|
}
|
|
44
110
|
}
|
|
45
111
|
const isProjectBoundary = fs.existsSync(path.join(dir, '.git')) || fs.existsSync(path.join(dir, 'agents.yaml'));
|
|
46
112
|
const parent = path.dirname(dir);
|
|
47
|
-
if (parent === dir)
|
|
113
|
+
if (parent === dir)
|
|
48
114
|
break;
|
|
49
|
-
|
|
50
|
-
if (isProjectBoundary) {
|
|
51
|
-
// Check this boundary dir but don't go further
|
|
115
|
+
if (isProjectBoundary)
|
|
52
116
|
break;
|
|
53
|
-
}
|
|
54
117
|
dir = parent;
|
|
55
118
|
}
|
|
56
119
|
return null;
|
|
57
120
|
}
|
|
121
|
+
/** Return all .agents/ directories in scope: project, user, then system. */
|
|
58
122
|
export function getScopedAgentsDirs(startPath = process.cwd()) {
|
|
59
123
|
const dirs = [];
|
|
60
124
|
const projectDir = getProjectAgentsDir(startPath);
|
|
61
125
|
if (projectDir) {
|
|
62
126
|
dirs.push({ scope: 'project', path: projectDir });
|
|
63
127
|
}
|
|
64
|
-
dirs.push({ scope: 'user', path:
|
|
128
|
+
dirs.push({ scope: 'user', path: USER_AGENTS_DIR });
|
|
129
|
+
dirs.push({ scope: 'system', path: SYSTEM_AGENTS_DIR });
|
|
65
130
|
return dirs;
|
|
66
131
|
}
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
export function
|
|
74
|
-
|
|
75
|
-
}
|
|
76
|
-
export
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
export function
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
return
|
|
105
|
-
}
|
|
106
|
-
export function getHooksDir() {
|
|
107
|
-
return HOOKS_DIR;
|
|
108
|
-
}
|
|
109
|
-
export function getSkillsDir() {
|
|
110
|
-
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;
|
|
111
170
|
}
|
|
112
|
-
|
|
113
|
-
|
|
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}`);
|
|
114
230
|
}
|
|
115
|
-
|
|
116
|
-
|
|
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);
|
|
117
237
|
}
|
|
118
238
|
/**
|
|
119
|
-
*
|
|
120
|
-
* source for prompt shortcuts. The expand-promptcuts hook reads directly
|
|
121
|
-
* from this file, so it survives agent-version upgrades without any sync.
|
|
239
|
+
* Return enabled extra repos that exist on disk, in insertion order.
|
|
122
240
|
*/
|
|
123
|
-
export function
|
|
124
|
-
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
|
|
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;
|
|
128
254
|
}
|
|
255
|
+
// ─── Directory setup ───────────────────────────────────────────────────────────
|
|
256
|
+
/** Create both the system and user directory trees if any subdirectories are missing. */
|
|
129
257
|
export function ensureAgentsDir() {
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
fs.mkdirSync(PACKAGES_DIR, { recursive: true });
|
|
135
|
-
}
|
|
136
|
-
if (!fs.existsSync(ROUTINES_DIR)) {
|
|
137
|
-
fs.mkdirSync(ROUTINES_DIR, { recursive: true });
|
|
138
|
-
}
|
|
139
|
-
if (!fs.existsSync(RUNS_DIR)) {
|
|
140
|
-
fs.mkdirSync(RUNS_DIR, { recursive: true });
|
|
141
|
-
}
|
|
142
|
-
if (!fs.existsSync(VERSIONS_DIR)) {
|
|
143
|
-
fs.mkdirSync(VERSIONS_DIR, { recursive: true });
|
|
144
|
-
}
|
|
145
|
-
if (!fs.existsSync(SHIMS_DIR)) {
|
|
146
|
-
fs.mkdirSync(SHIMS_DIR, { recursive: true });
|
|
147
|
-
}
|
|
148
|
-
if (!fs.existsSync(COMMANDS_DIR)) {
|
|
149
|
-
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);
|
|
150
262
|
}
|
|
151
|
-
|
|
152
|
-
fs.
|
|
263
|
+
try {
|
|
264
|
+
fs.chmodSync(USER_AGENTS_DIR, 0o700);
|
|
153
265
|
}
|
|
154
|
-
|
|
155
|
-
|
|
266
|
+
catch { }
|
|
267
|
+
// System repo
|
|
268
|
+
if (!fs.existsSync(SYSTEM_AGENTS_DIR)) {
|
|
269
|
+
fs.mkdirSync(SYSTEM_AGENTS_DIR, opts);
|
|
156
270
|
}
|
|
157
|
-
if (!fs.existsSync(
|
|
158
|
-
fs.mkdirSync(
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
if (!fs.existsSync(
|
|
164
|
-
fs.mkdirSync(
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
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);
|
|
168
297
|
}
|
|
298
|
+
catch { }
|
|
169
299
|
}
|
|
300
|
+
// ─── Meta (agents.yaml) ────────────────────────────────────────────────────────
|
|
301
|
+
/** Return an empty Meta object used when no agents.yaml exists yet. */
|
|
170
302
|
export function createDefaultMeta() {
|
|
171
303
|
return {};
|
|
172
304
|
}
|
|
173
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. */
|
|
174
350
|
export function readMeta() {
|
|
175
351
|
ensureAgentsDir();
|
|
176
|
-
//
|
|
177
|
-
|
|
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');
|
|
178
359
|
if (fs.existsSync(oldMetaFile) && !fs.existsSync(META_FILE)) {
|
|
179
360
|
try {
|
|
180
361
|
const content = fs.readFileSync(oldMetaFile, 'utf-8');
|
|
181
362
|
const parsed = yaml.parse(content);
|
|
182
363
|
const meta = {};
|
|
183
|
-
// Migrate versions.*.default -> agents.*
|
|
184
364
|
if (parsed.versions) {
|
|
185
365
|
meta.agents = {};
|
|
186
366
|
for (const [agent, state] of Object.entries(parsed.versions)) {
|
|
@@ -190,20 +370,18 @@ export function readMeta() {
|
|
|
190
370
|
}
|
|
191
371
|
}
|
|
192
372
|
}
|
|
193
|
-
// Migrate registries
|
|
194
373
|
if (parsed.registries) {
|
|
195
374
|
meta.registries = parsed.registries;
|
|
196
375
|
}
|
|
197
376
|
writeMeta(meta);
|
|
198
|
-
// Remove old meta.yaml to prevent stale reads by shims
|
|
199
377
|
try {
|
|
200
378
|
fs.unlinkSync(oldMetaFile);
|
|
201
379
|
}
|
|
202
|
-
catch { /*
|
|
380
|
+
catch { /* non-critical */ }
|
|
203
381
|
return meta;
|
|
204
382
|
}
|
|
205
383
|
catch {
|
|
206
|
-
/* meta.yaml migration failed
|
|
384
|
+
/* meta.yaml migration failed */
|
|
207
385
|
}
|
|
208
386
|
}
|
|
209
387
|
if (fs.existsSync(META_FILE)) {
|
|
@@ -211,9 +389,7 @@ export function readMeta() {
|
|
|
211
389
|
try {
|
|
212
390
|
mtime = fs.statSync(META_FILE).mtimeMs;
|
|
213
391
|
}
|
|
214
|
-
catch {
|
|
215
|
-
/* file vanished between existsSync and statSync */
|
|
216
|
-
}
|
|
392
|
+
catch { /* file vanished */ }
|
|
217
393
|
if (metaCache && metaCache.mtime === mtime) {
|
|
218
394
|
return metaCache.meta;
|
|
219
395
|
}
|
|
@@ -221,28 +397,38 @@ export function readMeta() {
|
|
|
221
397
|
const content = fs.readFileSync(META_FILE, 'utf-8');
|
|
222
398
|
const parsed = yaml.parse(content);
|
|
223
399
|
const meta = parsed || createDefaultMeta();
|
|
400
|
+
if (applyRegistrySeeds(meta)) {
|
|
401
|
+
writeMeta(meta);
|
|
402
|
+
return meta;
|
|
403
|
+
}
|
|
224
404
|
metaCache = { mtime, meta };
|
|
225
405
|
return meta;
|
|
226
406
|
}
|
|
227
407
|
catch {
|
|
228
|
-
/* agents.yaml corrupt or unreadable, use defaults */
|
|
229
408
|
return createDefaultMeta();
|
|
230
409
|
}
|
|
231
410
|
}
|
|
232
|
-
|
|
411
|
+
const meta = createDefaultMeta();
|
|
412
|
+
if (applyRegistrySeeds(meta)) {
|
|
413
|
+
writeMeta(meta);
|
|
414
|
+
}
|
|
415
|
+
return meta;
|
|
233
416
|
}
|
|
417
|
+
/** Serialize and write agents.yaml to the user repo, invalidating the in-memory cache. */
|
|
234
418
|
export function writeMeta(meta) {
|
|
235
419
|
ensureAgentsDir();
|
|
236
420
|
const content = META_HEADER + yaml.stringify(meta);
|
|
237
421
|
fs.writeFileSync(META_FILE, content, 'utf-8');
|
|
238
422
|
metaCache = null;
|
|
239
423
|
}
|
|
424
|
+
/** Shallow-merge updates into agents.yaml and return the new state. */
|
|
240
425
|
export function updateMeta(updates) {
|
|
241
426
|
const meta = readMeta();
|
|
242
427
|
const newMeta = { ...meta, ...updates };
|
|
243
428
|
writeMeta(newMeta);
|
|
244
429
|
return newMeta;
|
|
245
430
|
}
|
|
431
|
+
/** Derive a filesystem-safe local clone path for a package source URL. */
|
|
246
432
|
export function getPackageLocalPath(source) {
|
|
247
433
|
const sanitized = source
|
|
248
434
|
.replace(/^gh:/, '')
|
|
@@ -251,11 +437,6 @@ export function getPackageLocalPath(source) {
|
|
|
251
437
|
.replace(/\//g, '-');
|
|
252
438
|
return path.join(PACKAGES_DIR, sanitized);
|
|
253
439
|
}
|
|
254
|
-
/**
|
|
255
|
-
* Record that resources were synced to a specific version.
|
|
256
|
-
* Creates nested entries if they don't exist (handles existing installs gracefully).
|
|
257
|
-
* Merges with existing resources (uses Set for deduplication).
|
|
258
|
-
*/
|
|
259
440
|
export function recordVersionResources(agent, version, resourceType, resources) {
|
|
260
441
|
if (resources.length === 0)
|
|
261
442
|
return;
|
|
@@ -271,29 +452,20 @@ export function recordVersionResources(agent, version, resourceType, resources)
|
|
|
271
452
|
meta.versions[agent][version][resourceType] = merged;
|
|
272
453
|
writeMeta(meta);
|
|
273
454
|
}
|
|
274
|
-
/**
|
|
275
|
-
* Get tracked resources for a specific version.
|
|
276
|
-
*/
|
|
277
455
|
export function getVersionResources(agent, version) {
|
|
278
456
|
const meta = readMeta();
|
|
279
457
|
return meta.versions?.[agent]?.[version] || null;
|
|
280
458
|
}
|
|
281
|
-
/**
|
|
282
|
-
* Clear resource tracking when a version is removed.
|
|
283
|
-
*/
|
|
284
459
|
export function clearVersionResources(agent, version) {
|
|
285
460
|
const meta = readMeta();
|
|
286
461
|
if (meta.versions?.[agent]?.[version]) {
|
|
287
462
|
delete meta.versions[agent][version];
|
|
288
|
-
// Clean up empty agent entry
|
|
289
463
|
if (Object.keys(meta.versions[agent]).length === 0) {
|
|
290
464
|
delete meta.versions[agent];
|
|
291
465
|
}
|
|
292
|
-
// Clean up empty versions section
|
|
293
466
|
if (Object.keys(meta.versions).length === 0) {
|
|
294
467
|
delete meta.versions;
|
|
295
468
|
}
|
|
296
469
|
writeMeta(meta);
|
|
297
470
|
}
|
|
298
471
|
}
|
|
299
|
-
//# 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
|