@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/skills.d.ts
CHANGED
|
@@ -1,4 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Skill management -- discovery, installation, and syncing of SKILL.md bundles.
|
|
3
|
+
*
|
|
4
|
+
* Skills are knowledge packs stored in ~/.agents/skills/. Each skill directory
|
|
5
|
+
* contains a SKILL.md (with frontmatter metadata) and optional supporting files
|
|
6
|
+
* (rules/, examples/, etc.). This module handles parsing skill metadata,
|
|
7
|
+
* installing skills into agent version homes, and tracking installation state.
|
|
8
|
+
*/
|
|
1
9
|
import type { AgentId, SkillMetadata, InstalledSkill } from './types.js';
|
|
10
|
+
/** User-scoped skills dir (~/.agents/skills/). Used for installs. */
|
|
2
11
|
export declare function getSkillsDir(): string;
|
|
3
12
|
export declare function ensureCentralSkillsDir(): void;
|
|
4
13
|
export declare function getAgentSkillsDir(agentId: AgentId): string;
|
|
@@ -41,6 +50,12 @@ export interface DiscoveredSkill {
|
|
|
41
50
|
ruleCount: number;
|
|
42
51
|
validation: ValidationResult;
|
|
43
52
|
parseError?: string;
|
|
53
|
+
/**
|
|
54
|
+
* Which repo the skill was discovered in. `undefined` means the primary
|
|
55
|
+
* ~/.agents/ repo; otherwise the alias of an extra repo registered via
|
|
56
|
+
* `agents repo add`. Primary wins on name collisions.
|
|
57
|
+
*/
|
|
58
|
+
source?: string;
|
|
44
59
|
}
|
|
45
60
|
export declare function discoverSkillsFromRepo(repoPath: string): DiscoveredSkill[];
|
|
46
61
|
export declare function installSkill(sourcePath: string, skillName: string, agents: AgentId[], method?: 'symlink' | 'copy'): {
|
|
@@ -58,9 +73,20 @@ export declare function skillExists(agentId: AgentId, skillName: string): boolea
|
|
|
58
73
|
*/
|
|
59
74
|
export declare function skillContentMatches(agentId: AgentId, skillName: string, sourcePath: string): boolean;
|
|
60
75
|
/**
|
|
61
|
-
* List skill names
|
|
76
|
+
* List skill names from user (~/.agents/skills/) and system (~/.agents-system/skills/) dirs.
|
|
77
|
+
* User dir takes priority; deduplication preserves first occurrence.
|
|
62
78
|
*/
|
|
63
79
|
export declare function listCentralSkills(): string[];
|
|
80
|
+
/**
|
|
81
|
+
* Resolve a skill name to its source directory. Searches user dir first,
|
|
82
|
+
* then system dir, then extra repos. Returns null if no source has a SKILL.md.
|
|
83
|
+
*/
|
|
84
|
+
export declare function resolveSkillSourcePath(skillName: string): string | null;
|
|
85
|
+
/**
|
|
86
|
+
* Union of skill names available across the primary and all enabled extras.
|
|
87
|
+
* Primary wins on name collision.
|
|
88
|
+
*/
|
|
89
|
+
export declare function listAllSkills(): string[];
|
|
64
90
|
/**
|
|
65
91
|
* Path to the skills dir of a specific version home (not the active one).
|
|
66
92
|
*/
|
|
@@ -131,4 +157,3 @@ export declare function installSkillCentrally(sourcePath: string, skillName: str
|
|
|
131
157
|
error?: string;
|
|
132
158
|
warnings?: string[];
|
|
133
159
|
};
|
|
134
|
-
//# sourceMappingURL=skills.d.ts.map
|
package/dist/lib/skills.js
CHANGED
|
@@ -1,16 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Skill management -- discovery, installation, and syncing of SKILL.md bundles.
|
|
3
|
+
*
|
|
4
|
+
* Skills are knowledge packs stored in ~/.agents/skills/. Each skill directory
|
|
5
|
+
* contains a SKILL.md (with frontmatter metadata) and optional supporting files
|
|
6
|
+
* (rules/, examples/, etc.). This module handles parsing skill metadata,
|
|
7
|
+
* installing skills into agent version homes, and tracking installation state.
|
|
8
|
+
*/
|
|
1
9
|
import * as fs from 'fs';
|
|
2
10
|
import * as path from 'path';
|
|
3
11
|
import * as os from 'os';
|
|
4
12
|
import * as yaml from 'yaml';
|
|
5
13
|
import { SKILLS_CAPABLE_AGENTS, ensureSkillsDir } from './agents.js';
|
|
6
|
-
import {
|
|
14
|
+
import { getUserSkillsDir, getSkillsDir as getSystemSkillsDir, getProjectAgentsDir, getEnabledExtraRepos } from './state.js';
|
|
7
15
|
import { getEffectiveHome, getVersionHomePath, listInstalledVersions } from './versions.js';
|
|
8
16
|
const HOME = os.homedir();
|
|
17
|
+
/** User-scoped skills dir (~/.agents/skills/). Used for installs. */
|
|
9
18
|
export function getSkillsDir() {
|
|
10
|
-
return
|
|
19
|
+
return getUserSkillsDir();
|
|
11
20
|
}
|
|
12
21
|
export function ensureCentralSkillsDir() {
|
|
13
|
-
const dir =
|
|
22
|
+
const dir = getUserSkillsDir();
|
|
14
23
|
if (!fs.existsSync(dir)) {
|
|
15
24
|
fs.mkdirSync(dir, { recursive: true });
|
|
16
25
|
}
|
|
@@ -317,17 +326,60 @@ export function skillContentMatches(agentId, skillName, sourcePath) {
|
|
|
317
326
|
}
|
|
318
327
|
}
|
|
319
328
|
/**
|
|
320
|
-
* List skill names
|
|
329
|
+
* List skill names from user (~/.agents/skills/) and system (~/.agents-system/skills/) dirs.
|
|
330
|
+
* User dir takes priority; deduplication preserves first occurrence.
|
|
321
331
|
*/
|
|
322
332
|
export function listCentralSkills() {
|
|
323
|
-
const
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
333
|
+
const seen = new Set();
|
|
334
|
+
for (const dir of [getUserSkillsDir(), getSystemSkillsDir()]) {
|
|
335
|
+
if (!fs.existsSync(dir))
|
|
336
|
+
continue;
|
|
337
|
+
for (const e of fs.readdirSync(dir, { withFileTypes: true })) {
|
|
338
|
+
if (!e.isDirectory() || e.name.startsWith('.'))
|
|
339
|
+
continue;
|
|
340
|
+
if (!fs.existsSync(path.join(dir, e.name, 'SKILL.md')))
|
|
341
|
+
continue;
|
|
342
|
+
seen.add(e.name);
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
return Array.from(seen).sort();
|
|
346
|
+
}
|
|
347
|
+
/**
|
|
348
|
+
* Resolve a skill name to its source directory. Searches user dir first,
|
|
349
|
+
* then system dir, then extra repos. Returns null if no source has a SKILL.md.
|
|
350
|
+
*/
|
|
351
|
+
export function resolveSkillSourcePath(skillName) {
|
|
352
|
+
for (const dir of [getUserSkillsDir(), getSystemSkillsDir()]) {
|
|
353
|
+
const candidate = path.join(dir, skillName);
|
|
354
|
+
if (fs.existsSync(path.join(candidate, 'SKILL.md')))
|
|
355
|
+
return candidate;
|
|
356
|
+
}
|
|
357
|
+
for (const extra of getEnabledExtraRepos()) {
|
|
358
|
+
const candidate = path.join(extra.dir, 'skills', skillName);
|
|
359
|
+
if (fs.existsSync(path.join(candidate, 'SKILL.md')))
|
|
360
|
+
return candidate;
|
|
361
|
+
}
|
|
362
|
+
return null;
|
|
363
|
+
}
|
|
364
|
+
/**
|
|
365
|
+
* Union of skill names available across the primary and all enabled extras.
|
|
366
|
+
* Primary wins on name collision.
|
|
367
|
+
*/
|
|
368
|
+
export function listAllSkills() {
|
|
369
|
+
const seen = new Set(listCentralSkills());
|
|
370
|
+
for (const extra of getEnabledExtraRepos()) {
|
|
371
|
+
const dir = path.join(extra.dir, 'skills');
|
|
372
|
+
if (!fs.existsSync(dir))
|
|
373
|
+
continue;
|
|
374
|
+
for (const e of fs.readdirSync(dir, { withFileTypes: true })) {
|
|
375
|
+
if (!e.isDirectory() || e.name.startsWith('.'))
|
|
376
|
+
continue;
|
|
377
|
+
if (!fs.existsSync(path.join(dir, e.name, 'SKILL.md')))
|
|
378
|
+
continue;
|
|
379
|
+
seen.add(e.name);
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
return Array.from(seen).sort();
|
|
331
383
|
}
|
|
332
384
|
/**
|
|
333
385
|
* Path to the skills dir of a specific version home (not the active one).
|
|
@@ -354,35 +406,35 @@ export function listSkillsInVersionHome(agent, version) {
|
|
|
354
406
|
*/
|
|
355
407
|
function versionSkillMatches(agent, version, skillName) {
|
|
356
408
|
const installedPath = path.join(getVersionSkillsDir(agent, version), skillName);
|
|
357
|
-
const
|
|
358
|
-
if (!fs.existsSync(installedPath) || !
|
|
409
|
+
const sourcePath = resolveSkillSourcePath(skillName);
|
|
410
|
+
if (!fs.existsSync(installedPath) || !sourcePath)
|
|
359
411
|
return false;
|
|
360
412
|
const installedSkillMd = path.join(installedPath, 'SKILL.md');
|
|
361
|
-
const
|
|
362
|
-
if (!fs.existsSync(installedSkillMd) || !fs.existsSync(
|
|
413
|
+
const sourceSkillMd = path.join(sourcePath, 'SKILL.md');
|
|
414
|
+
if (!fs.existsSync(installedSkillMd) || !fs.existsSync(sourceSkillMd))
|
|
363
415
|
return false;
|
|
364
416
|
try {
|
|
365
417
|
if (normalizeContent(fs.readFileSync(installedSkillMd, 'utf-8')) !==
|
|
366
|
-
normalizeContent(fs.readFileSync(
|
|
418
|
+
normalizeContent(fs.readFileSync(sourceSkillMd, 'utf-8'))) {
|
|
367
419
|
return false;
|
|
368
420
|
}
|
|
369
421
|
}
|
|
370
422
|
catch {
|
|
371
423
|
return false;
|
|
372
424
|
}
|
|
373
|
-
return directoriesMatch(path.join(installedPath, 'rules'), path.join(
|
|
425
|
+
return directoriesMatch(path.join(installedPath, 'rules'), path.join(sourcePath, 'rules'));
|
|
374
426
|
}
|
|
375
427
|
/**
|
|
376
428
|
* Compare a version home's skills against central. Returns the reconciliation diff.
|
|
377
429
|
*/
|
|
378
430
|
export function diffVersionSkills(agent, version) {
|
|
379
|
-
const
|
|
431
|
+
const available = new Set(listAllSkills());
|
|
380
432
|
const installed = new Set(listSkillsInVersionHome(agent, version));
|
|
381
433
|
const toAdd = [];
|
|
382
434
|
const toUpdate = [];
|
|
383
435
|
const matched = [];
|
|
384
436
|
const orphans = [];
|
|
385
|
-
for (const name of
|
|
437
|
+
for (const name of available) {
|
|
386
438
|
if (!installed.has(name)) {
|
|
387
439
|
toAdd.push(name);
|
|
388
440
|
}
|
|
@@ -394,7 +446,7 @@ export function diffVersionSkills(agent, version) {
|
|
|
394
446
|
}
|
|
395
447
|
}
|
|
396
448
|
for (const name of installed) {
|
|
397
|
-
if (!
|
|
449
|
+
if (!available.has(name))
|
|
398
450
|
orphans.push(name);
|
|
399
451
|
}
|
|
400
452
|
return { agent, version, toAdd: toAdd.sort(), toUpdate: toUpdate.sort(), matched, orphans: orphans.sort() };
|
|
@@ -439,9 +491,9 @@ function walkRelativeFiles(base) {
|
|
|
439
491
|
* local secrets.
|
|
440
492
|
*/
|
|
441
493
|
export function installSkillToVersion(agent, version, skillName, method = 'copy') {
|
|
442
|
-
const
|
|
443
|
-
if (!
|
|
444
|
-
return { success: false, error: `Skill '${skillName}' not found in central` };
|
|
494
|
+
const sourcePath = resolveSkillSourcePath(skillName);
|
|
495
|
+
if (!sourcePath) {
|
|
496
|
+
return { success: false, error: `Skill '${skillName}' not found in central or any extra repo` };
|
|
445
497
|
}
|
|
446
498
|
const skillsDir = getVersionSkillsDir(agent, version);
|
|
447
499
|
if (!fs.existsSync(skillsDir)) {
|
|
@@ -449,15 +501,15 @@ export function installSkillToVersion(agent, version, skillName, method = 'copy'
|
|
|
449
501
|
}
|
|
450
502
|
const target = path.join(skillsDir, skillName);
|
|
451
503
|
// Snapshot files unique to the version home so we can restore them after
|
|
452
|
-
// the fresh copy (copy mode only; symlink shares
|
|
453
|
-
// local to preserve — and writing a .env into a symlinked skill
|
|
454
|
-
// pollute the git-tracked
|
|
504
|
+
// the fresh copy (copy mode only; symlink shares the source so there's
|
|
505
|
+
// nothing local to preserve — and writing a .env into a symlinked skill
|
|
506
|
+
// would pollute the git-tracked source dir anyway).
|
|
455
507
|
const preserved = [];
|
|
456
508
|
if (method === 'copy' && fs.existsSync(target) && !fs.lstatSync(target).isSymbolicLink()) {
|
|
457
|
-
const
|
|
509
|
+
const sourceFiles = walkRelativeFiles(sourcePath);
|
|
458
510
|
const installedFiles = walkRelativeFiles(target);
|
|
459
511
|
for (const rel of installedFiles) {
|
|
460
|
-
if (
|
|
512
|
+
if (sourceFiles.has(rel))
|
|
461
513
|
continue;
|
|
462
514
|
try {
|
|
463
515
|
const abs = path.join(target, rel);
|
|
@@ -482,10 +534,10 @@ export function installSkillToVersion(agent, version, skillName, method = 'copy'
|
|
|
482
534
|
}
|
|
483
535
|
try {
|
|
484
536
|
if (method === 'symlink') {
|
|
485
|
-
fs.symlinkSync(
|
|
537
|
+
fs.symlinkSync(sourcePath, target, 'dir');
|
|
486
538
|
}
|
|
487
539
|
else {
|
|
488
|
-
fs.cpSync(
|
|
540
|
+
fs.cpSync(sourcePath, target, { recursive: true });
|
|
489
541
|
}
|
|
490
542
|
}
|
|
491
543
|
catch (err) {
|
|
@@ -568,34 +620,42 @@ export function uninstallSkill(skillName) {
|
|
|
568
620
|
}
|
|
569
621
|
export function listInstalledSkills() {
|
|
570
622
|
const skills = new Map();
|
|
571
|
-
const
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
623
|
+
const scan = (dir, source) => {
|
|
624
|
+
if (!fs.existsSync(dir))
|
|
625
|
+
return;
|
|
626
|
+
try {
|
|
627
|
+
const entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
628
|
+
for (const entry of entries) {
|
|
629
|
+
if (!entry.isDirectory())
|
|
630
|
+
continue;
|
|
631
|
+
// Skip hidden directories (e.g., .system)
|
|
632
|
+
if (entry.name.startsWith('.'))
|
|
633
|
+
continue;
|
|
634
|
+
// Primary wins on name collisions.
|
|
635
|
+
if (skills.has(entry.name))
|
|
636
|
+
continue;
|
|
637
|
+
const skillDir = path.join(dir, entry.name);
|
|
638
|
+
const metadata = parseSkillMetadata(skillDir);
|
|
639
|
+
const validation = validateSkillMetadata(metadata, entry.name);
|
|
640
|
+
if (metadata) {
|
|
641
|
+
skills.set(entry.name, {
|
|
642
|
+
name: entry.name,
|
|
643
|
+
path: skillDir,
|
|
644
|
+
metadata,
|
|
645
|
+
ruleCount: countSkillRules(skillDir),
|
|
646
|
+
validation,
|
|
647
|
+
source,
|
|
648
|
+
});
|
|
649
|
+
}
|
|
594
650
|
}
|
|
595
651
|
}
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
652
|
+
catch {
|
|
653
|
+
// Ignore errors
|
|
654
|
+
}
|
|
655
|
+
};
|
|
656
|
+
scan(getSkillsDir());
|
|
657
|
+
for (const extra of getEnabledExtraRepos()) {
|
|
658
|
+
scan(path.join(extra.dir, 'skills'), extra.alias);
|
|
599
659
|
}
|
|
600
660
|
return skills;
|
|
601
661
|
}
|
|
@@ -710,26 +770,29 @@ export function listInstalledSkillsWithScope(agentId, cwd = process.cwd(), optio
|
|
|
710
770
|
return results;
|
|
711
771
|
}
|
|
712
772
|
export function getSkillInfo(skillName) {
|
|
713
|
-
const
|
|
714
|
-
if (!
|
|
773
|
+
const sourcePath = resolveSkillSourcePath(skillName);
|
|
774
|
+
if (!sourcePath) {
|
|
715
775
|
return null;
|
|
716
776
|
}
|
|
717
|
-
const metadata = parseSkillMetadata(
|
|
777
|
+
const metadata = parseSkillMetadata(sourcePath);
|
|
718
778
|
const validation = validateSkillMetadata(metadata, skillName);
|
|
719
779
|
if (!metadata) {
|
|
720
780
|
return null;
|
|
721
781
|
}
|
|
722
782
|
return {
|
|
723
783
|
name: skillName,
|
|
724
|
-
path:
|
|
784
|
+
path: sourcePath,
|
|
725
785
|
metadata,
|
|
726
|
-
ruleCount: countSkillRules(
|
|
786
|
+
ruleCount: countSkillRules(sourcePath),
|
|
727
787
|
validation,
|
|
728
788
|
};
|
|
729
789
|
}
|
|
730
790
|
export function getSkillRules(skillName) {
|
|
731
|
-
const
|
|
732
|
-
|
|
791
|
+
const sourcePath = resolveSkillSourcePath(skillName);
|
|
792
|
+
if (!sourcePath) {
|
|
793
|
+
return [];
|
|
794
|
+
}
|
|
795
|
+
const rulesDir = path.join(sourcePath, 'rules');
|
|
733
796
|
if (!fs.existsSync(rulesDir)) {
|
|
734
797
|
return [];
|
|
735
798
|
}
|
|
@@ -780,4 +843,3 @@ export function installSkillCentrally(sourcePath, skillName) {
|
|
|
780
843
|
return { success: false, error: `Failed to copy skill: ${err.message}` };
|
|
781
844
|
}
|
|
782
845
|
}
|
|
783
|
-
//# sourceMappingURL=skills.js.map
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Runtime-aware compatibility shim for SQLite.
|
|
3
|
+
*
|
|
4
|
+
* Picks `bun:sqlite` under Bun and `node:sqlite` under Node (>=22.5). Avoids
|
|
5
|
+
* the native `better-sqlite3` addon entirely so there is no prebuild compile
|
|
6
|
+
* and no Node/Bun ABI mismatch when the same source runs in tests (Bun) and
|
|
7
|
+
* production (Node).
|
|
8
|
+
*
|
|
9
|
+
* Exposes the small better-sqlite3-shaped surface area the rest of the
|
|
10
|
+
* codebase already uses: `prepare/exec/pragma/transaction/close` on the DB,
|
|
11
|
+
* `run/get/all` on statements.
|
|
12
|
+
*/
|
|
13
|
+
interface NativeStmt {
|
|
14
|
+
run(...args: unknown[]): RunResult;
|
|
15
|
+
get(...args: unknown[]): unknown;
|
|
16
|
+
all(...args: unknown[]): unknown[];
|
|
17
|
+
}
|
|
18
|
+
export interface RunResult {
|
|
19
|
+
changes: number | bigint;
|
|
20
|
+
lastInsertRowid: number | bigint;
|
|
21
|
+
}
|
|
22
|
+
declare class StatementImpl<_T = unknown> {
|
|
23
|
+
private readonly inner;
|
|
24
|
+
constructor(inner: NativeStmt);
|
|
25
|
+
run(...params: unknown[]): RunResult;
|
|
26
|
+
get(...params: unknown[]): unknown;
|
|
27
|
+
all(...params: unknown[]): unknown[];
|
|
28
|
+
}
|
|
29
|
+
declare class Database {
|
|
30
|
+
private readonly inner;
|
|
31
|
+
constructor(filename: string);
|
|
32
|
+
prepare<T = unknown>(sql: string): StatementImpl<T>;
|
|
33
|
+
exec(sql: string): void;
|
|
34
|
+
pragma(stmt: string): void;
|
|
35
|
+
transaction<Args extends unknown[], R>(fn: (...args: Args) => R): (...args: Args) => R;
|
|
36
|
+
close(): void;
|
|
37
|
+
}
|
|
38
|
+
declare namespace Database {
|
|
39
|
+
type Database = InstanceType<typeof DatabaseConstructor>;
|
|
40
|
+
type Statement<T = unknown> = StatementImpl<T>;
|
|
41
|
+
}
|
|
42
|
+
declare const DatabaseConstructor: typeof Database;
|
|
43
|
+
export default Database;
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Runtime-aware compatibility shim for SQLite.
|
|
3
|
+
*
|
|
4
|
+
* Picks `bun:sqlite` under Bun and `node:sqlite` under Node (>=22.5). Avoids
|
|
5
|
+
* the native `better-sqlite3` addon entirely so there is no prebuild compile
|
|
6
|
+
* and no Node/Bun ABI mismatch when the same source runs in tests (Bun) and
|
|
7
|
+
* production (Node).
|
|
8
|
+
*
|
|
9
|
+
* Exposes the small better-sqlite3-shaped surface area the rest of the
|
|
10
|
+
* codebase already uses: `prepare/exec/pragma/transaction/close` on the DB,
|
|
11
|
+
* `run/get/all` on statements.
|
|
12
|
+
*/
|
|
13
|
+
import { createRequire } from 'module';
|
|
14
|
+
const isBun = typeof globalThis.Bun !== 'undefined';
|
|
15
|
+
const require = createRequire(import.meta.url);
|
|
16
|
+
// Keep Node on createRequire() so Vitest doesn't try to prebundle the built-in
|
|
17
|
+
// sqlite module as a userland package during test collection.
|
|
18
|
+
const sqliteMod = isBun
|
|
19
|
+
? await import('bun:sqlite')
|
|
20
|
+
: require('node:sqlite');
|
|
21
|
+
// bun:sqlite exports `Database`; node:sqlite exports `DatabaseSync`.
|
|
22
|
+
const NativeDatabase = sqliteMod.Database
|
|
23
|
+
?? sqliteMod.DatabaseSync;
|
|
24
|
+
function bindArgs(params) {
|
|
25
|
+
// Both bindings accept positional `(a, b, c)` and named `({ a, b, c })`
|
|
26
|
+
// forms. Pass an object through unchanged so callers using named binds work.
|
|
27
|
+
if (params.length === 1 &&
|
|
28
|
+
params[0] !== null &&
|
|
29
|
+
typeof params[0] === 'object' &&
|
|
30
|
+
!Array.isArray(params[0])) {
|
|
31
|
+
return [params[0]];
|
|
32
|
+
}
|
|
33
|
+
return params;
|
|
34
|
+
}
|
|
35
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
36
|
+
class StatementImpl {
|
|
37
|
+
inner;
|
|
38
|
+
constructor(inner) {
|
|
39
|
+
this.inner = inner;
|
|
40
|
+
}
|
|
41
|
+
run(...params) {
|
|
42
|
+
return this.inner.run(...bindArgs(params));
|
|
43
|
+
}
|
|
44
|
+
get(...params) {
|
|
45
|
+
return this.inner.get(...bindArgs(params));
|
|
46
|
+
}
|
|
47
|
+
all(...params) {
|
|
48
|
+
return this.inner.all(...bindArgs(params));
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
class Database {
|
|
52
|
+
inner;
|
|
53
|
+
constructor(filename) {
|
|
54
|
+
this.inner = new NativeDatabase(filename);
|
|
55
|
+
}
|
|
56
|
+
prepare(sql) {
|
|
57
|
+
return new StatementImpl(this.inner.prepare(sql));
|
|
58
|
+
}
|
|
59
|
+
exec(sql) {
|
|
60
|
+
this.inner.exec(sql);
|
|
61
|
+
}
|
|
62
|
+
// node:sqlite has no dedicated `pragma()` and bun:sqlite's signature differs
|
|
63
|
+
// slightly from better-sqlite3. `exec('PRAGMA ...')` works on both and is
|
|
64
|
+
// sufficient for the setter pragmas (`journal_mode = WAL`) used here.
|
|
65
|
+
// Reader pragmas in this codebase use `db.prepare(...).all()`.
|
|
66
|
+
pragma(stmt) {
|
|
67
|
+
this.inner.exec(`PRAGMA ${stmt}`);
|
|
68
|
+
}
|
|
69
|
+
// Wrap fn in BEGIN/COMMIT, ROLLBACK on throw. Manual on both runtimes
|
|
70
|
+
// because node:sqlite has no `db.transaction(fn)` and the manual form is
|
|
71
|
+
// identical in shape to what better-sqlite3 / bun:sqlite produce.
|
|
72
|
+
transaction(fn) {
|
|
73
|
+
return (...args) => {
|
|
74
|
+
this.inner.exec('BEGIN');
|
|
75
|
+
try {
|
|
76
|
+
const result = fn(...args);
|
|
77
|
+
this.inner.exec('COMMIT');
|
|
78
|
+
return result;
|
|
79
|
+
}
|
|
80
|
+
catch (err) {
|
|
81
|
+
try {
|
|
82
|
+
this.inner.exec('ROLLBACK');
|
|
83
|
+
}
|
|
84
|
+
catch { /* original error wins */ }
|
|
85
|
+
throw err;
|
|
86
|
+
}
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
close() {
|
|
90
|
+
this.inner.close();
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
const DatabaseConstructor = Database;
|
|
94
|
+
export default Database;
|
package/dist/lib/state.d.ts
CHANGED
|
@@ -1,46 +1,138 @@
|
|
|
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 type { Meta } from './types.js';
|
|
13
|
+
/** Root of the system data directory (~/.agents-system/). Legacy alias — prefer getSystemAgentsDir(). */
|
|
2
14
|
export declare function getAgentsDir(): string;
|
|
15
|
+
/** Root of the system data directory (~/.agents-system/). */
|
|
16
|
+
export declare function getSystemAgentsDir(): string;
|
|
17
|
+
/** Root of the user repo (~/.agents/). Always present after ensureAgentsDir(). */
|
|
18
|
+
export declare function getUserAgentsDir(): string;
|
|
19
|
+
/**
|
|
20
|
+
* Backward-compat shim. Returns null when ~/.agents/ is a symlink to the
|
|
21
|
+
* system dir; otherwise returns USER_AGENTS_DIR.
|
|
22
|
+
*
|
|
23
|
+
* @deprecated Use getUserAgentsDir() directly.
|
|
24
|
+
*/
|
|
25
|
+
export declare function getOptionalUserAgentsDir(): string | null;
|
|
26
|
+
/** Walk up from startPath to find a project-scoped .agents/ directory (skipping both roots). */
|
|
3
27
|
export declare function getProjectAgentsDir(startPath?: string): string | null;
|
|
28
|
+
/** Return all .agents/ directories in scope: project, user, then system. */
|
|
4
29
|
export declare function getScopedAgentsDirs(startPath?: string): Array<{
|
|
5
|
-
scope: 'project' | 'user';
|
|
30
|
+
scope: 'project' | 'user' | 'system';
|
|
6
31
|
path: string;
|
|
7
32
|
}>;
|
|
33
|
+
/** Path to slash command markdown files — system repo. */
|
|
34
|
+
export declare function getCommandsDir(): string;
|
|
35
|
+
/** Path to hook script directories — system repo. */
|
|
36
|
+
export declare function getHooksDir(): string;
|
|
37
|
+
/** Path to skill bundles — system repo. */
|
|
38
|
+
export declare function getSkillsDir(): string;
|
|
39
|
+
/** Path to the canonical rules directory — system repo. */
|
|
40
|
+
export declare function getRulesDir(): string;
|
|
41
|
+
/** Back-compat export; resolves to system rules dir. */
|
|
42
|
+
export declare function getMemoryDir(): string;
|
|
43
|
+
/**
|
|
44
|
+
* Read-side resolution for the canonical rules dir.
|
|
45
|
+
*
|
|
46
|
+
* Returns SYSTEM_RULES_DIR normally. Falls back to the legacy
|
|
47
|
+
* SYSTEM_LEGACY_MEMORY_DIR (~/.agents-system/memory/) only when the upstream
|
|
48
|
+
* still uses the old layout and the user hasn't pulled the rename yet —
|
|
49
|
+
* detected by absence of rules/AGENTS.md and presence of memory/AGENTS.md.
|
|
50
|
+
*
|
|
51
|
+
* Prints a single warning per process the first time the fallback fires.
|
|
52
|
+
* Per the read-only system-repo invariant, this never moves files; the rename
|
|
53
|
+
* is applied when the user pulls upstream.
|
|
54
|
+
*/
|
|
55
|
+
export declare function getResolvedRulesDir(): string;
|
|
56
|
+
/** Path to MCP server YAML configs — system repo. */
|
|
57
|
+
export declare function getMcpDir(): string;
|
|
58
|
+
/** Path to permission group YAML files — system repo. */
|
|
59
|
+
export declare function getPermissionsDir(): string;
|
|
60
|
+
/** Path to subagent definition directories — system repo. */
|
|
61
|
+
export declare function getSubagentsDir(): string;
|
|
62
|
+
/** Path to encrypted secret bundles — system repo. */
|
|
63
|
+
export declare function getSecretsDir(): string;
|
|
64
|
+
/** Path to ~/.agents-system/promptcuts.yaml. */
|
|
65
|
+
export declare function getPromptcutsPath(): string;
|
|
66
|
+
/** Path to the legacy MCP config JSON. */
|
|
67
|
+
export declare function getMcpConfigPath(): string;
|
|
68
|
+
/** Path to the global instructions file. */
|
|
69
|
+
export declare function getInstructionsPath(): string;
|
|
70
|
+
export declare function getSystemCommandsDir(): string;
|
|
71
|
+
export declare function getSystemHooksDir(): string;
|
|
72
|
+
export declare function getSystemSkillsDir(): string;
|
|
73
|
+
export declare function getSystemRulesDir(): string;
|
|
74
|
+
export declare function getSystemMcpDir(): string;
|
|
75
|
+
export declare function getSystemPermissionsDir(): string;
|
|
76
|
+
export declare function getSystemSubagentsDir(): string;
|
|
77
|
+
export declare function getSystemSecretsDir(): string;
|
|
78
|
+
export declare function getSystemPromptcutsPath(): string;
|
|
79
|
+
export declare function getUserCommandsDir(): string;
|
|
80
|
+
export declare function getUserHooksDir(): string;
|
|
81
|
+
export declare function getUserSkillsDir(): string;
|
|
82
|
+
export declare function getUserRulesDir(): string;
|
|
83
|
+
export declare function getUserMcpDir(): string;
|
|
84
|
+
export declare function getUserPermissionsDir(): string;
|
|
85
|
+
export declare function getUserSubagentsDir(): string;
|
|
86
|
+
export declare function getUserSecretsDir(): string;
|
|
87
|
+
export declare function getUserPromptcutsPath(): string;
|
|
88
|
+
/** Path to cloned packages (~/.agents-system/packages/). */
|
|
8
89
|
export declare function getPackagesDir(): string;
|
|
90
|
+
/** Path to routine YAML definitions (~/.agents-system/routines/). */
|
|
9
91
|
export declare function getRoutinesDir(): string;
|
|
92
|
+
/** Path to routine execution logs (~/.agents-system/runs/). */
|
|
10
93
|
export declare function getRunsDir(): string;
|
|
94
|
+
/** Path to installed agent CLI binaries (~/.agents-system/versions/). */
|
|
11
95
|
export declare function getVersionsDir(): string;
|
|
96
|
+
/** Path to version-switching shim scripts (~/.agents-system/shims/). */
|
|
12
97
|
export declare function getShimsDir(): string;
|
|
13
|
-
|
|
14
|
-
export declare function getMcpDir(): string;
|
|
98
|
+
/** Path to config backups (~/.agents-system/backups/). */
|
|
15
99
|
export declare function getBackupsDir(): string;
|
|
16
|
-
|
|
100
|
+
/** Path to plugin bundles (~/.agents-system/plugins/). */
|
|
17
101
|
export declare function getPluginsDir(): string;
|
|
102
|
+
/** Path to synced remote session data (~/.agents-system/drive/). */
|
|
18
103
|
export declare function getDriveDir(): string;
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
104
|
+
/**
|
|
105
|
+
* Path to a single user-level extra DotAgent repo clone (~/.agents-<alias>/).
|
|
106
|
+
*
|
|
107
|
+
* Extra repos are user-defined config — they live as peer dirs to ~/.agents/,
|
|
108
|
+
* not under the system repo. `agents repo add` clones here by default.
|
|
109
|
+
*/
|
|
110
|
+
export declare function getExtraRepoDir(alias: string): string;
|
|
111
|
+
/** Resolve the on-disk path for an extra repo, whether managed or user-owned. */
|
|
112
|
+
export declare function resolveExtraRepoDir(alias: string, config?: {
|
|
113
|
+
path?: string;
|
|
114
|
+
}): string;
|
|
115
|
+
/**
|
|
116
|
+
* Return enabled extra repos that exist on disk, in insertion order.
|
|
117
|
+
*/
|
|
118
|
+
export declare function getEnabledExtraRepos(): Array<{
|
|
119
|
+
alias: string;
|
|
120
|
+
dir: string;
|
|
121
|
+
url: string;
|
|
122
|
+
}>;
|
|
123
|
+
/** Create both the system and user directory trees if any subdirectories are missing. */
|
|
25
124
|
export declare function ensureAgentsDir(): void;
|
|
125
|
+
/** Return an empty Meta object used when no agents.yaml exists yet. */
|
|
26
126
|
export declare function createDefaultMeta(): Meta;
|
|
127
|
+
/** Read and cache ~/.agents/agents.yaml, migrating from legacy locations if needed. */
|
|
27
128
|
export declare function readMeta(): Meta;
|
|
129
|
+
/** Serialize and write agents.yaml to the user repo, invalidating the in-memory cache. */
|
|
28
130
|
export declare function writeMeta(meta: Meta): void;
|
|
131
|
+
/** Shallow-merge updates into agents.yaml and return the new state. */
|
|
29
132
|
export declare function updateMeta(updates: Partial<Meta>): Meta;
|
|
133
|
+
/** Derive a filesystem-safe local clone path for a package source URL. */
|
|
30
134
|
export declare function getPackageLocalPath(source: string): string;
|
|
31
135
|
import type { AgentId, ResourceType, VersionResources } from './types.js';
|
|
32
|
-
/**
|
|
33
|
-
* Record that resources were synced to a specific version.
|
|
34
|
-
* Creates nested entries if they don't exist (handles existing installs gracefully).
|
|
35
|
-
* Merges with existing resources (uses Set for deduplication).
|
|
36
|
-
*/
|
|
37
136
|
export declare function recordVersionResources(agent: AgentId, version: string, resourceType: ResourceType, resources: string[]): void;
|
|
38
|
-
/**
|
|
39
|
-
* Get tracked resources for a specific version.
|
|
40
|
-
*/
|
|
41
137
|
export declare function getVersionResources(agent: AgentId, version: string): VersionResources | null;
|
|
42
|
-
/**
|
|
43
|
-
* Clear resource tracking when a version is removed.
|
|
44
|
-
*/
|
|
45
138
|
export declare function clearVersionResources(agent: AgentId, version: string): void;
|
|
46
|
-
//# sourceMappingURL=state.d.ts.map
|