@phnx-labs/agents-cli 0.1.0
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 +316 -0
- package/LICENSE +21 -0
- package/README.md +537 -0
- package/dist/commands/__tests__/sessions.test.d.ts +2 -0
- package/dist/commands/__tests__/sessions.test.d.ts.map +1 -0
- package/dist/commands/__tests__/sessions.test.js +636 -0
- package/dist/commands/__tests__/sessions.test.js.map +1 -0
- package/dist/commands/cloud.d.ts +3 -0
- package/dist/commands/cloud.d.ts.map +1 -0
- package/dist/commands/cloud.js +322 -0
- package/dist/commands/cloud.js.map +1 -0
- package/dist/commands/commands.d.ts +3 -0
- package/dist/commands/commands.d.ts.map +1 -0
- package/dist/commands/commands.js +628 -0
- package/dist/commands/commands.js.map +1 -0
- package/dist/commands/daemon.d.ts +3 -0
- package/dist/commands/daemon.d.ts.map +1 -0
- package/dist/commands/daemon.js +110 -0
- package/dist/commands/daemon.js.map +1 -0
- package/dist/commands/drive.d.ts +3 -0
- package/dist/commands/drive.d.ts.map +1 -0
- package/dist/commands/drive.js +166 -0
- package/dist/commands/drive.js.map +1 -0
- package/dist/commands/exec.d.ts +3 -0
- package/dist/commands/exec.d.ts.map +1 -0
- package/dist/commands/exec.js +241 -0
- package/dist/commands/exec.js.map +1 -0
- package/dist/commands/fork.d.ts +3 -0
- package/dist/commands/fork.d.ts.map +1 -0
- package/dist/commands/fork.js +139 -0
- package/dist/commands/fork.js.map +1 -0
- package/dist/commands/hooks.d.ts +3 -0
- package/dist/commands/hooks.d.ts.map +1 -0
- package/dist/commands/hooks.js +689 -0
- package/dist/commands/hooks.js.map +1 -0
- package/dist/commands/init.d.ts +6 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +127 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/mcp.d.ts +3 -0
- package/dist/commands/mcp.d.ts.map +1 -0
- package/dist/commands/mcp.js +581 -0
- package/dist/commands/mcp.js.map +1 -0
- package/dist/commands/models.d.ts +3 -0
- package/dist/commands/models.d.ts.map +1 -0
- package/dist/commands/models.js +158 -0
- package/dist/commands/models.js.map +1 -0
- package/dist/commands/packages.d.ts +3 -0
- package/dist/commands/packages.d.ts.map +1 -0
- package/dist/commands/packages.js +541 -0
- package/dist/commands/packages.js.map +1 -0
- package/dist/commands/permissions.d.ts +3 -0
- package/dist/commands/permissions.d.ts.map +1 -0
- package/dist/commands/permissions.js +723 -0
- package/dist/commands/permissions.js.map +1 -0
- package/dist/commands/plugins.d.ts +3 -0
- package/dist/commands/plugins.d.ts.map +1 -0
- package/dist/commands/plugins.js +382 -0
- package/dist/commands/plugins.js.map +1 -0
- package/dist/commands/profiles.d.ts +3 -0
- package/dist/commands/profiles.d.ts.map +1 -0
- package/dist/commands/profiles.js +242 -0
- package/dist/commands/profiles.js.map +1 -0
- package/dist/commands/pty.d.ts +20 -0
- package/dist/commands/pty.d.ts.map +1 -0
- package/dist/commands/pty.js +389 -0
- package/dist/commands/pty.js.map +1 -0
- package/dist/commands/pull.d.ts +3 -0
- package/dist/commands/pull.d.ts.map +1 -0
- package/dist/commands/pull.js +448 -0
- package/dist/commands/pull.js.map +1 -0
- package/dist/commands/push.d.ts +3 -0
- package/dist/commands/push.d.ts.map +1 -0
- package/dist/commands/push.js +180 -0
- package/dist/commands/push.js.map +1 -0
- package/dist/commands/refresh-memory.d.ts +9 -0
- package/dist/commands/refresh-memory.d.ts.map +1 -0
- package/dist/commands/refresh-memory.js +45 -0
- package/dist/commands/refresh-memory.js.map +1 -0
- package/dist/commands/resource-view.d.ts +31 -0
- package/dist/commands/resource-view.d.ts.map +1 -0
- package/dist/commands/resource-view.js +183 -0
- package/dist/commands/resource-view.js.map +1 -0
- package/dist/commands/routines.d.ts +3 -0
- package/dist/commands/routines.d.ts.map +1 -0
- package/dist/commands/routines.js +579 -0
- package/dist/commands/routines.js.map +1 -0
- package/dist/commands/rules.d.ts +3 -0
- package/dist/commands/rules.d.ts.map +1 -0
- package/dist/commands/rules.js +488 -0
- package/dist/commands/rules.js.map +1 -0
- package/dist/commands/secrets.d.ts +3 -0
- package/dist/commands/secrets.d.ts.map +1 -0
- package/dist/commands/secrets.js +339 -0
- package/dist/commands/secrets.js.map +1 -0
- package/dist/commands/sessions-picker.d.ts +16 -0
- package/dist/commands/sessions-picker.d.ts.map +1 -0
- package/dist/commands/sessions-picker.js +256 -0
- package/dist/commands/sessions-picker.js.map +1 -0
- package/dist/commands/sessions.d.ts +16 -0
- package/dist/commands/sessions.d.ts.map +1 -0
- package/dist/commands/sessions.js +1077 -0
- package/dist/commands/sessions.js.map +1 -0
- package/dist/commands/skills.d.ts +3 -0
- package/dist/commands/skills.d.ts.map +1 -0
- package/dist/commands/skills.js +716 -0
- package/dist/commands/skills.js.map +1 -0
- package/dist/commands/status.d.ts +3 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +19 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/subagents.d.ts +3 -0
- package/dist/commands/subagents.d.ts.map +1 -0
- package/dist/commands/subagents.js +350 -0
- package/dist/commands/subagents.js.map +1 -0
- package/dist/commands/sync.d.ts +3 -0
- package/dist/commands/sync.d.ts.map +1 -0
- package/dist/commands/sync.js +62 -0
- package/dist/commands/sync.js.map +1 -0
- package/dist/commands/teams-picker.d.ts +14 -0
- package/dist/commands/teams-picker.d.ts.map +1 -0
- package/dist/commands/teams-picker.js +278 -0
- package/dist/commands/teams-picker.js.map +1 -0
- package/dist/commands/teams.d.ts +3 -0
- package/dist/commands/teams.d.ts.map +1 -0
- package/dist/commands/teams.js +917 -0
- package/dist/commands/teams.js.map +1 -0
- package/dist/commands/utils.d.ts +39 -0
- package/dist/commands/utils.d.ts.map +1 -0
- package/dist/commands/utils.js +100 -0
- package/dist/commands/utils.js.map +1 -0
- package/dist/commands/versions.d.ts +3 -0
- package/dist/commands/versions.d.ts.map +1 -0
- package/dist/commands/versions.js +700 -0
- package/dist/commands/versions.js.map +1 -0
- package/dist/commands/view.d.ts +8 -0
- package/dist/commands/view.d.ts.map +1 -0
- package/dist/commands/view.js +626 -0
- package/dist/commands/view.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +484 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/__tests__/bugfixes.test.d.ts +2 -0
- package/dist/lib/__tests__/bugfixes.test.d.ts.map +1 -0
- package/dist/lib/__tests__/bugfixes.test.js +192 -0
- package/dist/lib/__tests__/bugfixes.test.js.map +1 -0
- package/dist/lib/__tests__/exec.test.d.ts +2 -0
- package/dist/lib/__tests__/exec.test.d.ts.map +1 -0
- package/dist/lib/__tests__/exec.test.js +446 -0
- package/dist/lib/__tests__/exec.test.js.map +1 -0
- package/dist/lib/__tests__/git-sync.test.d.ts +2 -0
- package/dist/lib/__tests__/git-sync.test.d.ts.map +1 -0
- package/dist/lib/__tests__/git-sync.test.js +138 -0
- package/dist/lib/__tests__/git-sync.test.js.map +1 -0
- package/dist/lib/__tests__/hooks.test.d.ts +2 -0
- package/dist/lib/__tests__/hooks.test.d.ts.map +1 -0
- package/dist/lib/__tests__/hooks.test.js +203 -0
- package/dist/lib/__tests__/hooks.test.js.map +1 -0
- package/dist/lib/__tests__/memory-compile.test.d.ts +2 -0
- package/dist/lib/__tests__/memory-compile.test.d.ts.map +1 -0
- package/dist/lib/__tests__/memory-compile.test.js +95 -0
- package/dist/lib/__tests__/memory-compile.test.js.map +1 -0
- package/dist/lib/__tests__/models.test.d.ts +2 -0
- package/dist/lib/__tests__/models.test.d.ts.map +1 -0
- package/dist/lib/__tests__/models.test.js +239 -0
- package/dist/lib/__tests__/models.test.js.map +1 -0
- package/dist/lib/__tests__/rotate.test.d.ts +2 -0
- package/dist/lib/__tests__/rotate.test.d.ts.map +1 -0
- package/dist/lib/__tests__/rotate.test.js +80 -0
- package/dist/lib/__tests__/rotate.test.js.map +1 -0
- package/dist/lib/__tests__/secrets-bundles.test.d.ts +2 -0
- package/dist/lib/__tests__/secrets-bundles.test.d.ts.map +1 -0
- package/dist/lib/__tests__/secrets-bundles.test.js +104 -0
- package/dist/lib/__tests__/secrets-bundles.test.js.map +1 -0
- package/dist/lib/__tests__/secrets.test.d.ts +2 -0
- package/dist/lib/__tests__/secrets.test.d.ts.map +1 -0
- package/dist/lib/__tests__/secrets.test.js +90 -0
- package/dist/lib/__tests__/secrets.test.js.map +1 -0
- package/dist/lib/__tests__/shims.test.d.ts +2 -0
- package/dist/lib/__tests__/shims.test.d.ts.map +1 -0
- package/dist/lib/__tests__/shims.test.js +39 -0
- package/dist/lib/__tests__/shims.test.js.map +1 -0
- package/dist/lib/__tests__/usage.test.d.ts +2 -0
- package/dist/lib/__tests__/usage.test.d.ts.map +1 -0
- package/dist/lib/__tests__/usage.test.js +220 -0
- package/dist/lib/__tests__/usage.test.js.map +1 -0
- package/dist/lib/__tests__/versions.test.d.ts +2 -0
- package/dist/lib/__tests__/versions.test.d.ts.map +1 -0
- package/dist/lib/__tests__/versions.test.js +63 -0
- package/dist/lib/__tests__/versions.test.js.map +1 -0
- package/dist/lib/agents.d.ts +107 -0
- package/dist/lib/agents.d.ts.map +1 -0
- package/dist/lib/agents.js +1096 -0
- package/dist/lib/agents.js.map +1 -0
- package/dist/lib/artifact-actions.d.ts +22 -0
- package/dist/lib/artifact-actions.d.ts.map +1 -0
- package/dist/lib/artifact-actions.js +55 -0
- package/dist/lib/artifact-actions.js.map +1 -0
- package/dist/lib/cloud/codex.d.ts +19 -0
- package/dist/lib/cloud/codex.d.ts.map +1 -0
- package/dist/lib/cloud/codex.js +210 -0
- package/dist/lib/cloud/codex.js.map +1 -0
- package/dist/lib/cloud/factory.d.ts +26 -0
- package/dist/lib/cloud/factory.d.ts.map +1 -0
- package/dist/lib/cloud/factory.js +37 -0
- package/dist/lib/cloud/factory.js.map +1 -0
- package/dist/lib/cloud/registry.d.ts +6 -0
- package/dist/lib/cloud/registry.d.ts.map +1 -0
- package/dist/lib/cloud/registry.js +56 -0
- package/dist/lib/cloud/registry.js.map +1 -0
- package/dist/lib/cloud/rush.d.ts +15 -0
- package/dist/lib/cloud/rush.d.ts.map +1 -0
- package/dist/lib/cloud/rush.js +185 -0
- package/dist/lib/cloud/rush.js.map +1 -0
- package/dist/lib/cloud/store.d.ts +10 -0
- package/dist/lib/cloud/store.d.ts.map +1 -0
- package/dist/lib/cloud/store.js +96 -0
- package/dist/lib/cloud/store.js.map +1 -0
- package/dist/lib/cloud/stream.d.ts +18 -0
- package/dist/lib/cloud/stream.d.ts.map +1 -0
- package/dist/lib/cloud/stream.js +138 -0
- package/dist/lib/cloud/stream.js.map +1 -0
- package/dist/lib/cloud/types.d.ts +60 -0
- package/dist/lib/cloud/types.d.ts.map +1 -0
- package/dist/lib/cloud/types.js +2 -0
- package/dist/lib/cloud/types.js.map +1 -0
- package/dist/lib/commands.d.ts +121 -0
- package/dist/lib/commands.d.ts.map +1 -0
- package/dist/lib/commands.js +499 -0
- package/dist/lib/commands.js.map +1 -0
- package/dist/lib/convert.d.ts +11 -0
- package/dist/lib/convert.d.ts.map +1 -0
- package/dist/lib/convert.js +45 -0
- package/dist/lib/convert.js.map +1 -0
- package/dist/lib/daemon.d.ts +22 -0
- package/dist/lib/daemon.d.ts.map +1 -0
- package/dist/lib/daemon.js +311 -0
- package/dist/lib/daemon.js.map +1 -0
- package/dist/lib/drive-sync.d.ts +28 -0
- package/dist/lib/drive-sync.d.ts.map +1 -0
- package/dist/lib/drive-sync.js +193 -0
- package/dist/lib/drive-sync.js.map +1 -0
- package/dist/lib/exec.d.ts +85 -0
- package/dist/lib/exec.d.ts.map +1 -0
- package/dist/lib/exec.js +423 -0
- package/dist/lib/exec.js.map +1 -0
- package/dist/lib/factory.d.ts +57 -0
- package/dist/lib/factory.d.ts.map +1 -0
- package/dist/lib/factory.js +110 -0
- package/dist/lib/factory.js.map +1 -0
- package/dist/lib/git.d.ts +146 -0
- package/dist/lib/git.d.ts.map +1 -0
- package/dist/lib/git.js +635 -0
- package/dist/lib/git.js.map +1 -0
- package/dist/lib/help.d.ts +3 -0
- package/dist/lib/help.d.ts.map +1 -0
- package/dist/lib/help.js +63 -0
- package/dist/lib/help.js.map +1 -0
- package/dist/lib/hooks.d.ts +116 -0
- package/dist/lib/hooks.d.ts.map +1 -0
- package/dist/lib/hooks.js +837 -0
- package/dist/lib/hooks.js.map +1 -0
- package/dist/lib/manifest.d.ts +8 -0
- package/dist/lib/manifest.d.ts.map +1 -0
- package/dist/lib/manifest.js +36 -0
- package/dist/lib/manifest.js.map +1 -0
- package/dist/lib/markdown.d.ts +5 -0
- package/dist/lib/markdown.d.ts.map +1 -0
- package/dist/lib/markdown.js +11 -0
- package/dist/lib/markdown.js.map +1 -0
- package/dist/lib/mcp.d.ts +64 -0
- package/dist/lib/mcp.d.ts.map +1 -0
- package/dist/lib/mcp.js +327 -0
- package/dist/lib/mcp.js.map +1 -0
- package/dist/lib/memory-compile.d.ts +56 -0
- package/dist/lib/memory-compile.d.ts.map +1 -0
- package/dist/lib/memory-compile.js +167 -0
- package/dist/lib/memory-compile.js.map +1 -0
- package/dist/lib/memory.d.ts +56 -0
- package/dist/lib/memory.d.ts.map +1 -0
- package/dist/lib/memory.js +267 -0
- package/dist/lib/memory.js.map +1 -0
- package/dist/lib/models.d.ts +91 -0
- package/dist/lib/models.d.ts.map +1 -0
- package/dist/lib/models.js +706 -0
- package/dist/lib/models.js.map +1 -0
- package/dist/lib/permissions.d.ts +204 -0
- package/dist/lib/permissions.d.ts.map +1 -0
- package/dist/lib/permissions.js +1022 -0
- package/dist/lib/permissions.js.map +1 -0
- package/dist/lib/picker.d.ts +17 -0
- package/dist/lib/picker.d.ts.map +1 -0
- package/dist/lib/picker.js +95 -0
- package/dist/lib/picker.js.map +1 -0
- package/dist/lib/plugins.d.ts +73 -0
- package/dist/lib/plugins.d.ts.map +1 -0
- package/dist/lib/plugins.js +549 -0
- package/dist/lib/plugins.js.map +1 -0
- package/dist/lib/profiles-keychain.d.ts +3 -0
- package/dist/lib/profiles-keychain.d.ts.map +1 -0
- package/dist/lib/profiles-keychain.js +10 -0
- package/dist/lib/profiles-keychain.js.map +1 -0
- package/dist/lib/profiles-presets.d.ts +15 -0
- package/dist/lib/profiles-presets.d.ts.map +1 -0
- package/dist/lib/profiles-presets.js +95 -0
- package/dist/lib/profiles-presets.js.map +1 -0
- package/dist/lib/profiles.d.ts +35 -0
- package/dist/lib/profiles.d.ts.map +1 -0
- package/dist/lib/profiles.js +123 -0
- package/dist/lib/profiles.js.map +1 -0
- package/dist/lib/pty-client.d.ts +22 -0
- package/dist/lib/pty-client.d.ts.map +1 -0
- package/dist/lib/pty-client.js +181 -0
- package/dist/lib/pty-client.js.map +1 -0
- package/dist/lib/pty-server.d.ts +16 -0
- package/dist/lib/pty-server.d.ts.map +1 -0
- package/dist/lib/pty-server.js +422 -0
- package/dist/lib/pty-server.js.map +1 -0
- package/dist/lib/registry.d.ts +28 -0
- package/dist/lib/registry.d.ts.map +1 -0
- package/dist/lib/registry.js +203 -0
- package/dist/lib/registry.js.map +1 -0
- package/dist/lib/resources.d.ts +50 -0
- package/dist/lib/resources.d.ts.map +1 -0
- package/dist/lib/resources.js +103 -0
- package/dist/lib/resources.js.map +1 -0
- package/dist/lib/rotate.d.ts +52 -0
- package/dist/lib/rotate.d.ts.map +1 -0
- package/dist/lib/rotate.js +87 -0
- package/dist/lib/rotate.js.map +1 -0
- package/dist/lib/routines.d.ts +70 -0
- package/dist/lib/routines.d.ts.map +1 -0
- package/dist/lib/routines.js +325 -0
- package/dist/lib/routines.js.map +1 -0
- package/dist/lib/runner.d.ts +12 -0
- package/dist/lib/runner.d.ts.map +1 -0
- package/dist/lib/runner.js +311 -0
- package/dist/lib/runner.js.map +1 -0
- package/dist/lib/sandbox.d.ts +10 -0
- package/dist/lib/sandbox.d.ts.map +1 -0
- package/dist/lib/sandbox.js +201 -0
- package/dist/lib/sandbox.js.map +1 -0
- package/dist/lib/scheduler.d.ts +18 -0
- package/dist/lib/scheduler.d.ts.map +1 -0
- package/dist/lib/scheduler.js +69 -0
- package/dist/lib/scheduler.js.map +1 -0
- package/dist/lib/secrets-bundles.d.ts +29 -0
- package/dist/lib/secrets-bundles.d.ts.map +1 -0
- package/dist/lib/secrets-bundles.js +168 -0
- package/dist/lib/secrets-bundles.js.map +1 -0
- package/dist/lib/secrets.d.ts +27 -0
- package/dist/lib/secrets.d.ts.map +1 -0
- package/dist/lib/secrets.js +127 -0
- package/dist/lib/secrets.js.map +1 -0
- package/dist/lib/session/__tests__/db.test.d.ts +2 -0
- package/dist/lib/session/__tests__/db.test.d.ts.map +1 -0
- package/dist/lib/session/__tests__/db.test.js +54 -0
- package/dist/lib/session/__tests__/db.test.js.map +1 -0
- package/dist/lib/session/__tests__/discover.test.d.ts +2 -0
- package/dist/lib/session/__tests__/discover.test.d.ts.map +1 -0
- package/dist/lib/session/__tests__/discover.test.js +63 -0
- package/dist/lib/session/__tests__/discover.test.js.map +1 -0
- package/dist/lib/session/__tests__/prompt.test.d.ts +2 -0
- package/dist/lib/session/__tests__/prompt.test.d.ts.map +1 -0
- package/dist/lib/session/__tests__/prompt.test.js +44 -0
- package/dist/lib/session/__tests__/prompt.test.js.map +1 -0
- package/dist/lib/session/__tests__/render.test.d.ts +2 -0
- package/dist/lib/session/__tests__/render.test.d.ts.map +1 -0
- package/dist/lib/session/__tests__/render.test.js +602 -0
- package/dist/lib/session/__tests__/render.test.js.map +1 -0
- package/dist/lib/session/artifacts.d.ts +5 -0
- package/dist/lib/session/artifacts.d.ts.map +1 -0
- package/dist/lib/session/artifacts.js +75 -0
- package/dist/lib/session/artifacts.js.map +1 -0
- package/dist/lib/session/db.d.ts +118 -0
- package/dist/lib/session/db.d.ts.map +1 -0
- package/dist/lib/session/db.js +576 -0
- package/dist/lib/session/db.js.map +1 -0
- package/dist/lib/session/discover.d.ts +60 -0
- package/dist/lib/session/discover.d.ts.map +1 -0
- package/dist/lib/session/discover.js +1272 -0
- package/dist/lib/session/discover.js.map +1 -0
- package/dist/lib/session/parse.d.ts +23 -0
- package/dist/lib/session/parse.d.ts.map +1 -0
- package/dist/lib/session/parse.js +650 -0
- package/dist/lib/session/parse.js.map +1 -0
- package/dist/lib/session/prompt.d.ts +4 -0
- package/dist/lib/session/prompt.d.ts.map +1 -0
- package/dist/lib/session/prompt.js +64 -0
- package/dist/lib/session/prompt.js.map +1 -0
- package/dist/lib/session/prompt.test.d.ts +2 -0
- package/dist/lib/session/prompt.test.d.ts.map +1 -0
- package/dist/lib/session/prompt.test.js +57 -0
- package/dist/lib/session/prompt.test.js.map +1 -0
- package/dist/lib/session/render.d.ts +90 -0
- package/dist/lib/session/render.d.ts.map +1 -0
- package/dist/lib/session/render.js +778 -0
- package/dist/lib/session/render.js.map +1 -0
- package/dist/lib/session/team-filter.d.ts +26 -0
- package/dist/lib/session/team-filter.d.ts.map +1 -0
- package/dist/lib/session/team-filter.js +66 -0
- package/dist/lib/session/team-filter.js.map +1 -0
- package/dist/lib/session/team-filter.test.d.ts +2 -0
- package/dist/lib/session/team-filter.test.d.ts.map +1 -0
- package/dist/lib/session/team-filter.test.js +157 -0
- package/dist/lib/session/team-filter.test.js.map +1 -0
- package/dist/lib/session/types.d.ts +69 -0
- package/dist/lib/session/types.d.ts.map +1 -0
- package/dist/lib/session/types.js +2 -0
- package/dist/lib/session/types.js.map +1 -0
- package/dist/lib/shims.d.ts +228 -0
- package/dist/lib/shims.d.ts.map +1 -0
- package/dist/lib/shims.js +1170 -0
- package/dist/lib/shims.js.map +1 -0
- package/dist/lib/skills.d.ts +134 -0
- package/dist/lib/skills.d.ts.map +1 -0
- package/dist/lib/skills.js +783 -0
- package/dist/lib/skills.js.map +1 -0
- package/dist/lib/state.d.ts +53 -0
- package/dist/lib/state.d.ts.map +1 -0
- package/dist/lib/state.js +299 -0
- package/dist/lib/state.js.map +1 -0
- package/dist/lib/subagents.d.ts +75 -0
- package/dist/lib/subagents.d.ts.map +1 -0
- package/dist/lib/subagents.js +402 -0
- package/dist/lib/subagents.js.map +1 -0
- package/dist/lib/teams/agents.d.ts +146 -0
- package/dist/lib/teams/agents.d.ts.map +1 -0
- package/dist/lib/teams/agents.js +1072 -0
- package/dist/lib/teams/agents.js.map +1 -0
- package/dist/lib/teams/api.d.ts +77 -0
- package/dist/lib/teams/api.d.ts.map +1 -0
- package/dist/lib/teams/api.js +229 -0
- package/dist/lib/teams/api.js.map +1 -0
- package/dist/lib/teams/cloud.d.ts +11 -0
- package/dist/lib/teams/cloud.d.ts.map +1 -0
- package/dist/lib/teams/cloud.js +169 -0
- package/dist/lib/teams/cloud.js.map +1 -0
- package/dist/lib/teams/debug.d.ts +2 -0
- package/dist/lib/teams/debug.d.ts.map +1 -0
- package/dist/lib/teams/debug.js +6 -0
- package/dist/lib/teams/debug.js.map +1 -0
- package/dist/lib/teams/file_ops.d.ts +6 -0
- package/dist/lib/teams/file_ops.d.ts.map +1 -0
- package/dist/lib/teams/file_ops.js +59 -0
- package/dist/lib/teams/file_ops.js.map +1 -0
- package/dist/lib/teams/parsers.d.ts +5 -0
- package/dist/lib/teams/parsers.d.ts.map +1 -0
- package/dist/lib/teams/parsers.js +826 -0
- package/dist/lib/teams/parsers.js.map +1 -0
- package/dist/lib/teams/persistence.d.ts +28 -0
- package/dist/lib/teams/persistence.d.ts.map +1 -0
- package/dist/lib/teams/persistence.js +289 -0
- package/dist/lib/teams/persistence.js.map +1 -0
- package/dist/lib/teams/ralph.d.ts +8 -0
- package/dist/lib/teams/ralph.d.ts.map +1 -0
- package/dist/lib/teams/ralph.js +59 -0
- package/dist/lib/teams/ralph.js.map +1 -0
- package/dist/lib/teams/registry.d.ts +11 -0
- package/dist/lib/teams/registry.d.ts.map +1 -0
- package/dist/lib/teams/registry.js +56 -0
- package/dist/lib/teams/registry.js.map +1 -0
- package/dist/lib/teams/summarizer.d.ts +58 -0
- package/dist/lib/teams/summarizer.d.ts.map +1 -0
- package/dist/lib/teams/summarizer.js +766 -0
- package/dist/lib/teams/summarizer.js.map +1 -0
- package/dist/lib/template.d.ts +24 -0
- package/dist/lib/template.d.ts.map +1 -0
- package/dist/lib/template.js +57 -0
- package/dist/lib/template.js.map +1 -0
- package/dist/lib/types.d.ts +282 -0
- package/dist/lib/types.d.ts.map +1 -0
- package/dist/lib/types.js +18 -0
- package/dist/lib/types.js.map +1 -0
- package/dist/lib/usage.d.ts +73 -0
- package/dist/lib/usage.d.ts.map +1 -0
- package/dist/lib/usage.js +623 -0
- package/dist/lib/usage.js.map +1 -0
- package/dist/lib/versions.d.ts +248 -0
- package/dist/lib/versions.d.ts.map +1 -0
- package/dist/lib/versions.js +1737 -0
- package/dist/lib/versions.js.map +1 -0
- package/package.json +82 -0
- package/scripts/postinstall.js +72 -0
- package/scripts/rebuild-sqlite.sh +46 -0
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
import * as fs from 'fs';
|
|
2
|
+
import { DEFAULT_REGISTRIES } from './types.js';
|
|
3
|
+
import { readMeta, writeMeta } from './state.js';
|
|
4
|
+
export function getRegistries(type) {
|
|
5
|
+
const meta = readMeta();
|
|
6
|
+
const defaultRegs = DEFAULT_REGISTRIES[type] || {};
|
|
7
|
+
const userRegs = meta.registries?.[type] || {};
|
|
8
|
+
// Merge defaults with user config (user overrides defaults)
|
|
9
|
+
return { ...defaultRegs, ...userRegs };
|
|
10
|
+
}
|
|
11
|
+
export function getEnabledRegistries(type) {
|
|
12
|
+
const registries = getRegistries(type);
|
|
13
|
+
return Object.entries(registries)
|
|
14
|
+
.filter(([, config]) => config.enabled)
|
|
15
|
+
.map(([name, config]) => ({ name, config }));
|
|
16
|
+
}
|
|
17
|
+
export function setRegistry(type, name, config) {
|
|
18
|
+
const meta = readMeta();
|
|
19
|
+
if (!meta.registries) {
|
|
20
|
+
meta.registries = { mcp: {}, skill: {} };
|
|
21
|
+
}
|
|
22
|
+
if (!meta.registries[type]) {
|
|
23
|
+
meta.registries[type] = {};
|
|
24
|
+
}
|
|
25
|
+
const existing = meta.registries[type][name] || DEFAULT_REGISTRIES[type]?.[name];
|
|
26
|
+
meta.registries[type][name] = { ...existing, ...config };
|
|
27
|
+
writeMeta(meta);
|
|
28
|
+
}
|
|
29
|
+
export function removeRegistry(type, name) {
|
|
30
|
+
const meta = readMeta();
|
|
31
|
+
if (meta.registries?.[type]?.[name]) {
|
|
32
|
+
delete meta.registries[type][name];
|
|
33
|
+
writeMeta(meta);
|
|
34
|
+
return true;
|
|
35
|
+
}
|
|
36
|
+
return false;
|
|
37
|
+
}
|
|
38
|
+
async function fetchMcpRegistry(url, query, limit = 20, apiKey) {
|
|
39
|
+
const params = new URLSearchParams();
|
|
40
|
+
if (query)
|
|
41
|
+
params.set('search', query);
|
|
42
|
+
params.set('limit', String(limit));
|
|
43
|
+
const fullUrl = `${url}/servers?${params}`;
|
|
44
|
+
const headers = {
|
|
45
|
+
Accept: 'application/json',
|
|
46
|
+
};
|
|
47
|
+
if (apiKey) {
|
|
48
|
+
headers['Authorization'] = `Bearer ${apiKey}`;
|
|
49
|
+
}
|
|
50
|
+
const response = await fetch(fullUrl, { headers });
|
|
51
|
+
if (!response.ok) {
|
|
52
|
+
throw new Error(`Registry request failed: ${response.status} ${response.statusText}`);
|
|
53
|
+
}
|
|
54
|
+
return response.json();
|
|
55
|
+
}
|
|
56
|
+
export async function searchMcpRegistries(query, options) {
|
|
57
|
+
const registries = getEnabledRegistries('mcp');
|
|
58
|
+
const results = [];
|
|
59
|
+
const targetRegistries = options?.registry
|
|
60
|
+
? registries.filter((r) => r.name === options.registry)
|
|
61
|
+
: registries;
|
|
62
|
+
if (targetRegistries.length === 0) {
|
|
63
|
+
if (options?.registry) {
|
|
64
|
+
throw new Error(`Registry '${options.registry}' not found or not enabled`);
|
|
65
|
+
}
|
|
66
|
+
return [];
|
|
67
|
+
}
|
|
68
|
+
for (const { name, config } of targetRegistries) {
|
|
69
|
+
try {
|
|
70
|
+
const response = await fetchMcpRegistry(config.url, query, options?.limit || 20, config.apiKey);
|
|
71
|
+
for (const { server } of response.servers) {
|
|
72
|
+
results.push({
|
|
73
|
+
name: server.name,
|
|
74
|
+
description: server.description,
|
|
75
|
+
type: 'mcp',
|
|
76
|
+
source: server.repository?.url || server.name,
|
|
77
|
+
registry: name,
|
|
78
|
+
version: server.version_detail?.version,
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
catch (err) {
|
|
83
|
+
// Log but continue with other registries
|
|
84
|
+
console.error(`Failed to search ${name}: ${err.message}`);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
return results;
|
|
88
|
+
}
|
|
89
|
+
export async function getMcpServerInfo(serverName, registryName) {
|
|
90
|
+
const registries = getEnabledRegistries('mcp');
|
|
91
|
+
const targetRegistries = registryName
|
|
92
|
+
? registries.filter((r) => r.name === registryName)
|
|
93
|
+
: registries;
|
|
94
|
+
for (const { config } of targetRegistries) {
|
|
95
|
+
try {
|
|
96
|
+
// Search with exact name
|
|
97
|
+
const response = await fetchMcpRegistry(config.url, serverName, 10, config.apiKey);
|
|
98
|
+
// Find exact match
|
|
99
|
+
const match = response.servers.find(({ server }) => server.name === serverName ||
|
|
100
|
+
server.name.endsWith(`/${serverName}`));
|
|
101
|
+
if (match) {
|
|
102
|
+
return match.server;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
catch {
|
|
106
|
+
// Continue to next registry
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
return null;
|
|
110
|
+
}
|
|
111
|
+
export async function searchSkillRegistries(_query, _options) {
|
|
112
|
+
const registries = getEnabledRegistries('skill');
|
|
113
|
+
if (registries.length === 0) {
|
|
114
|
+
// No skill registries configured - this is expected for now
|
|
115
|
+
return [];
|
|
116
|
+
}
|
|
117
|
+
// Future: implement skill registry API calls when available
|
|
118
|
+
// For now, skill: prefix falls back to git sources
|
|
119
|
+
return [];
|
|
120
|
+
}
|
|
121
|
+
export async function search(query, options) {
|
|
122
|
+
const results = [];
|
|
123
|
+
if (!options?.type || options.type === 'mcp') {
|
|
124
|
+
const mcpResults = await searchMcpRegistries(query, options);
|
|
125
|
+
results.push(...mcpResults);
|
|
126
|
+
}
|
|
127
|
+
if (!options?.type || options.type === 'skill') {
|
|
128
|
+
const skillResults = await searchSkillRegistries(query, options);
|
|
129
|
+
results.push(...skillResults);
|
|
130
|
+
}
|
|
131
|
+
return results;
|
|
132
|
+
}
|
|
133
|
+
export function parsePackageIdentifier(identifier) {
|
|
134
|
+
// mcp:filesystem -> MCP registry
|
|
135
|
+
if (identifier.startsWith('mcp:')) {
|
|
136
|
+
return { type: 'mcp', name: identifier.slice(4) };
|
|
137
|
+
}
|
|
138
|
+
// skill:user/repo -> skill registry (or git fallback)
|
|
139
|
+
if (identifier.startsWith('skill:')) {
|
|
140
|
+
return { type: 'skill', name: identifier.slice(6) };
|
|
141
|
+
}
|
|
142
|
+
// gh:user/repo -> git source
|
|
143
|
+
if (identifier.startsWith('gh:')) {
|
|
144
|
+
return { type: 'git', name: identifier };
|
|
145
|
+
}
|
|
146
|
+
// https://... or git@... -> git source
|
|
147
|
+
if (identifier.startsWith('https://') || identifier.startsWith('git@')) {
|
|
148
|
+
return { type: 'git', name: identifier };
|
|
149
|
+
}
|
|
150
|
+
// Local repo/path
|
|
151
|
+
if (identifier.startsWith('/') ||
|
|
152
|
+
identifier.startsWith('./') ||
|
|
153
|
+
identifier.startsWith('../') ||
|
|
154
|
+
fs.existsSync(identifier)) {
|
|
155
|
+
return { type: 'git', name: identifier };
|
|
156
|
+
}
|
|
157
|
+
// user/repo format -> could be either, need to search
|
|
158
|
+
if (identifier.includes('/') && !identifier.includes(':')) {
|
|
159
|
+
return { type: 'unknown', name: identifier };
|
|
160
|
+
}
|
|
161
|
+
// Single word -> search MCP registries first
|
|
162
|
+
return { type: 'unknown', name: identifier };
|
|
163
|
+
}
|
|
164
|
+
export async function resolvePackage(identifier) {
|
|
165
|
+
const parsed = parsePackageIdentifier(identifier);
|
|
166
|
+
if (parsed.type === 'git') {
|
|
167
|
+
return { type: 'git', source: parsed.name };
|
|
168
|
+
}
|
|
169
|
+
if (parsed.type === 'mcp') {
|
|
170
|
+
const entry = await getMcpServerInfo(parsed.name);
|
|
171
|
+
if (entry) {
|
|
172
|
+
return {
|
|
173
|
+
type: 'mcp',
|
|
174
|
+
source: entry.repository?.url || entry.name,
|
|
175
|
+
mcpEntry: entry,
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
return null;
|
|
179
|
+
}
|
|
180
|
+
if (parsed.type === 'skill') {
|
|
181
|
+
// Skill registries not available yet, treat as git source
|
|
182
|
+
const gitSource = parsed.name.startsWith('gh:') ? parsed.name : `gh:${parsed.name}`;
|
|
183
|
+
return { type: 'git', source: gitSource };
|
|
184
|
+
}
|
|
185
|
+
// Unknown type - search registries
|
|
186
|
+
if (parsed.type === 'unknown') {
|
|
187
|
+
// Try MCP first
|
|
188
|
+
const mcpEntry = await getMcpServerInfo(parsed.name);
|
|
189
|
+
if (mcpEntry) {
|
|
190
|
+
return {
|
|
191
|
+
type: 'mcp',
|
|
192
|
+
source: mcpEntry.repository?.url || mcpEntry.name,
|
|
193
|
+
mcpEntry,
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
// If it looks like a git path (user/repo), treat as git
|
|
197
|
+
if (parsed.name.includes('/')) {
|
|
198
|
+
return { type: 'git', source: `gh:${parsed.name}` };
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
return null;
|
|
202
|
+
}
|
|
203
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/lib/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unified resource discovery for agents.
|
|
3
|
+
* Scans filesystem (source of truth) to find all installed resources for an agent.
|
|
4
|
+
*/
|
|
5
|
+
import type { AgentId } from './types.js';
|
|
6
|
+
import { type SkillParseError } from './skills.js';
|
|
7
|
+
export interface ResourceEntry {
|
|
8
|
+
name: string;
|
|
9
|
+
path: string;
|
|
10
|
+
scope: 'user' | 'project';
|
|
11
|
+
}
|
|
12
|
+
export interface SkillResourceEntry extends ResourceEntry {
|
|
13
|
+
ruleCount?: number;
|
|
14
|
+
}
|
|
15
|
+
export interface McpResourceEntry {
|
|
16
|
+
name: string;
|
|
17
|
+
scope: 'user' | 'project';
|
|
18
|
+
version?: string;
|
|
19
|
+
}
|
|
20
|
+
export interface AgentResources {
|
|
21
|
+
agentId: AgentId;
|
|
22
|
+
commands: ResourceEntry[];
|
|
23
|
+
skills: SkillResourceEntry[];
|
|
24
|
+
skillErrors: SkillParseError[];
|
|
25
|
+
mcp: McpResourceEntry[];
|
|
26
|
+
memory: ResourceEntry[];
|
|
27
|
+
hooks: ResourceEntry[];
|
|
28
|
+
}
|
|
29
|
+
export interface GetAgentResourcesOptions {
|
|
30
|
+
cwd?: string;
|
|
31
|
+
scope?: 'user' | 'project' | 'all';
|
|
32
|
+
/** For MCP scanning - whether the CLI is installed */
|
|
33
|
+
cliInstalled?: boolean;
|
|
34
|
+
/** Version home to scan for user-scoped resources */
|
|
35
|
+
home?: string;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Get all resources installed for a specific agent by scanning the filesystem.
|
|
39
|
+
* This is the source of truth - not the tracking data in agents.yaml.
|
|
40
|
+
*/
|
|
41
|
+
export declare function getAgentResources(agentId: AgentId, options?: GetAgentResourcesOptions): AgentResources;
|
|
42
|
+
/**
|
|
43
|
+
* Get resources for all agents.
|
|
44
|
+
*/
|
|
45
|
+
export declare function getAllAgentResources(agentIds: AgentId[], options?: GetAgentResourcesOptions & {
|
|
46
|
+
cliStates?: Record<AgentId, {
|
|
47
|
+
installed: boolean;
|
|
48
|
+
}>;
|
|
49
|
+
}): AgentResources[];
|
|
50
|
+
//# sourceMappingURL=resources.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resources.d.ts","sourceRoot":"","sources":["../../src/lib/resources.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAG1C,OAAO,EAAgC,KAAK,eAAe,EAAE,MAAM,aAAa,CAAC;AAMjF,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;CAC3B;AAED,MAAM,WAAW,kBAAmB,SAAQ,aAAa;IACvD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,MAAM,EAAE,kBAAkB,EAAE,CAAC;IAC7B,WAAW,EAAE,eAAe,EAAE,CAAC;IAC/B,GAAG,EAAE,gBAAgB,EAAE,CAAC;IACxB,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,KAAK,EAAE,aAAa,EAAE,CAAC;CACxB;AAED,MAAM,WAAW,wBAAwB;IACvC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,KAAK,CAAC;IACnC,sDAAsD;IACtD,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,qDAAqD;IACrD,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,OAAO,EAChB,OAAO,GAAE,wBAA6B,GACrC,cAAc,CAoFhB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,QAAQ,EAAE,OAAO,EAAE,EACnB,OAAO,GAAE,wBAAwB,GAAG;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC,OAAO,EAAE;QAAE,SAAS,EAAE,OAAO,CAAA;KAAE,CAAC,CAAA;CAAO,GAC/F,cAAc,EAAE,CAOlB"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Unified resource discovery for agents.
|
|
3
|
+
* Scans filesystem (source of truth) to find all installed resources for an agent.
|
|
4
|
+
*/
|
|
5
|
+
import { AGENTS, listInstalledMcpsWithScope } from './agents.js';
|
|
6
|
+
import { listInstalledCommandsWithScope } from './commands.js';
|
|
7
|
+
import { listInstalledSkillsWithScope } from './skills.js';
|
|
8
|
+
import { listInstalledHooksWithScope } from './hooks.js';
|
|
9
|
+
import { listInstalledInstructionsWithScope } from './memory.js';
|
|
10
|
+
import { getEffectiveHome } from './versions.js';
|
|
11
|
+
import { listMcpServerConfigs } from './mcp.js';
|
|
12
|
+
/**
|
|
13
|
+
* Get all resources installed for a specific agent by scanning the filesystem.
|
|
14
|
+
* This is the source of truth - not the tracking data in agents.yaml.
|
|
15
|
+
*/
|
|
16
|
+
export function getAgentResources(agentId, options = {}) {
|
|
17
|
+
const { cwd = process.cwd(), scope = 'all', cliInstalled = true, home } = options;
|
|
18
|
+
const agent = AGENTS[agentId];
|
|
19
|
+
const shouldInclude = (resourceScope) => {
|
|
20
|
+
if (scope === 'all')
|
|
21
|
+
return true;
|
|
22
|
+
return resourceScope === scope;
|
|
23
|
+
};
|
|
24
|
+
// Commands
|
|
25
|
+
const commands = [];
|
|
26
|
+
for (const cmd of listInstalledCommandsWithScope(agentId, cwd, { home })) {
|
|
27
|
+
if (shouldInclude(cmd.scope)) {
|
|
28
|
+
commands.push({ name: cmd.name, path: cmd.path, scope: cmd.scope });
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
// Skills
|
|
32
|
+
const skills = [];
|
|
33
|
+
const skillErrors = [];
|
|
34
|
+
for (const skill of listInstalledSkillsWithScope(agentId, cwd, { home, errors: skillErrors })) {
|
|
35
|
+
if (shouldInclude(skill.scope)) {
|
|
36
|
+
skills.push({
|
|
37
|
+
name: skill.name,
|
|
38
|
+
path: skill.path,
|
|
39
|
+
scope: skill.scope,
|
|
40
|
+
ruleCount: skill.ruleCount,
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
// MCP
|
|
45
|
+
const mcp = [];
|
|
46
|
+
const mcpByName = new Map();
|
|
47
|
+
// Project/user-scoped MCP definitions from .agents/mcp
|
|
48
|
+
for (const server of listMcpServerConfigs(cwd)) {
|
|
49
|
+
const scope = server.scope || 'user';
|
|
50
|
+
if (shouldInclude(scope) && !mcpByName.has(server.name)) {
|
|
51
|
+
mcpByName.set(server.name, { name: server.name, scope });
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
if (cliInstalled) {
|
|
55
|
+
const effectiveHome = home || getEffectiveHome(agentId);
|
|
56
|
+
for (const m of listInstalledMcpsWithScope(agentId, cwd, { home: effectiveHome })) {
|
|
57
|
+
if (!shouldInclude(m.scope))
|
|
58
|
+
continue;
|
|
59
|
+
if (!mcpByName.has(m.name)) {
|
|
60
|
+
mcpByName.set(m.name, { name: m.name, scope: m.scope, version: m.version });
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
mcp.push(...mcpByName.values());
|
|
65
|
+
// Memory/Instructions
|
|
66
|
+
const memory = [];
|
|
67
|
+
for (const instr of listInstalledInstructionsWithScope(agentId, cwd, { home })) {
|
|
68
|
+
if (instr.exists && shouldInclude(instr.scope)) {
|
|
69
|
+
memory.push({
|
|
70
|
+
name: agent.instructionsFile,
|
|
71
|
+
path: instr.path,
|
|
72
|
+
scope: instr.scope,
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
// Hooks
|
|
77
|
+
const hooks = [];
|
|
78
|
+
for (const hook of listInstalledHooksWithScope(agentId, cwd, { home })) {
|
|
79
|
+
if (shouldInclude(hook.scope)) {
|
|
80
|
+
hooks.push({ name: hook.name, path: hook.path, scope: hook.scope });
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
return {
|
|
84
|
+
agentId,
|
|
85
|
+
commands,
|
|
86
|
+
skills,
|
|
87
|
+
skillErrors,
|
|
88
|
+
mcp,
|
|
89
|
+
memory,
|
|
90
|
+
hooks,
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Get resources for all agents.
|
|
95
|
+
*/
|
|
96
|
+
export function getAllAgentResources(agentIds, options = {}) {
|
|
97
|
+
const { cliStates, ...restOptions } = options;
|
|
98
|
+
return agentIds.map((agentId) => {
|
|
99
|
+
const cliInstalled = cliStates?.[agentId]?.installed ?? true;
|
|
100
|
+
return getAgentResources(agentId, { ...restOptions, cliInstalled });
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=resources.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resources.js","sourceRoot":"","sources":["../../src/lib/resources.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import type { AgentId } from './types.js';
|
|
2
|
+
import { type AccountInfo } from './agents.js';
|
|
3
|
+
export interface RotateCandidate {
|
|
4
|
+
agent: AgentId;
|
|
5
|
+
version: string;
|
|
6
|
+
email: string | null;
|
|
7
|
+
usageStatus: AccountInfo['usageStatus'];
|
|
8
|
+
authValid: boolean;
|
|
9
|
+
lastActive: Date | null;
|
|
10
|
+
}
|
|
11
|
+
export interface RotateResult {
|
|
12
|
+
/** The version picked for this run. */
|
|
13
|
+
picked: RotateCandidate;
|
|
14
|
+
/** Candidates that were considered healthy (including the picked one). */
|
|
15
|
+
healthy: RotateCandidate[];
|
|
16
|
+
/** Candidates excluded (not signed in, or out of credits). */
|
|
17
|
+
excluded: RotateCandidate[];
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Pure selection: given a set of candidates, return the best one for the
|
|
21
|
+
* next run. Kept separate from I/O so it can be unit-tested with fixtures.
|
|
22
|
+
*
|
|
23
|
+
* Eligibility: signed in (email present) and not out of credits.
|
|
24
|
+
* Tie-break: least-recently-active wins. Never-used versions sort oldest
|
|
25
|
+
* so fresh installs are tried before recently-used ones.
|
|
26
|
+
*/
|
|
27
|
+
export declare function pickRotateCandidate(candidates: RotateCandidate[]): RotateResult | null;
|
|
28
|
+
/**
|
|
29
|
+
* Rotate across installed versions of an agent and pick the best one for the
|
|
30
|
+
* next run. "Best" means: signed in, not out of credits, and least-recently-
|
|
31
|
+
* active (so two back-to-back runs hit different accounts automatically).
|
|
32
|
+
*
|
|
33
|
+
* No external state: rotation and health are both read off per-version
|
|
34
|
+
* AccountInfo — the same data `agents view` already surfaces. `lastActive`
|
|
35
|
+
* advances naturally after each run, so the cursor is self-maintaining.
|
|
36
|
+
*
|
|
37
|
+
* Returns null if no installed version is eligible (either nothing installed
|
|
38
|
+
* or every account is exhausted / not signed in). Callers fall back to the
|
|
39
|
+
* global default so behavior stays predictable — we never refuse to run.
|
|
40
|
+
*/
|
|
41
|
+
export declare function selectRotateVersion(agent: AgentId): Promise<RotateResult | null>;
|
|
42
|
+
/**
|
|
43
|
+
* Resolve the version `agents run` should use when the caller did not pin
|
|
44
|
+
* one with `@version`. Rotation is the default; falls back to the global
|
|
45
|
+
* default if no version is healthy, and to null if the agent isn't installed
|
|
46
|
+
* under agents-cli at all (let exec surface its own error).
|
|
47
|
+
*/
|
|
48
|
+
export declare function resolveRunVersion(agent: AgentId): Promise<{
|
|
49
|
+
version: string | null;
|
|
50
|
+
rotation: RotateResult | null;
|
|
51
|
+
}>;
|
|
52
|
+
//# sourceMappingURL=rotate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rotate.d.ts","sourceRoot":"","sources":["../../src/lib/rotate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAkB,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAI/D,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,WAAW,EAAE,WAAW,CAAC,aAAa,CAAC,CAAC;IACxC,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,IAAI,GAAG,IAAI,CAAC;CACzB;AAED,MAAM,WAAW,YAAY;IAC3B,uCAAuC;IACvC,MAAM,EAAE,eAAe,CAAC;IACxB,0EAA0E;IAC1E,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,8DAA8D;IAC9D,QAAQ,EAAE,eAAe,EAAE,CAAC;CAC7B;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,eAAe,EAAE,GAAG,YAAY,GAAG,IAAI,CA4BtF;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAuBtF;AAED;;;;;GAKG;AACH,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC;IAC/D,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,QAAQ,EAAE,YAAY,GAAG,IAAI,CAAC;CAC/B,CAAC,CAOD"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { getAccountInfo } from './agents.js';
|
|
2
|
+
import { listInstalledVersions, getVersionHomePath, getGlobalDefault } from './versions.js';
|
|
3
|
+
import { isClaudeAuthValid } from './usage.js';
|
|
4
|
+
/**
|
|
5
|
+
* Pure selection: given a set of candidates, return the best one for the
|
|
6
|
+
* next run. Kept separate from I/O so it can be unit-tested with fixtures.
|
|
7
|
+
*
|
|
8
|
+
* Eligibility: signed in (email present) and not out of credits.
|
|
9
|
+
* Tie-break: least-recently-active wins. Never-used versions sort oldest
|
|
10
|
+
* so fresh installs are tried before recently-used ones.
|
|
11
|
+
*/
|
|
12
|
+
export function pickRotateCandidate(candidates) {
|
|
13
|
+
const healthy = [];
|
|
14
|
+
const excluded = [];
|
|
15
|
+
for (const c of candidates) {
|
|
16
|
+
if (!c.email) {
|
|
17
|
+
excluded.push(c);
|
|
18
|
+
continue;
|
|
19
|
+
}
|
|
20
|
+
if (c.usageStatus === 'out_of_credits') {
|
|
21
|
+
excluded.push(c);
|
|
22
|
+
continue;
|
|
23
|
+
}
|
|
24
|
+
if (!c.authValid) {
|
|
25
|
+
excluded.push(c);
|
|
26
|
+
continue;
|
|
27
|
+
}
|
|
28
|
+
healthy.push(c);
|
|
29
|
+
}
|
|
30
|
+
if (healthy.length === 0)
|
|
31
|
+
return null;
|
|
32
|
+
const sorted = [...healthy].sort((a, b) => {
|
|
33
|
+
const ta = a.lastActive ? a.lastActive.getTime() : 0;
|
|
34
|
+
const tb = b.lastActive ? b.lastActive.getTime() : 0;
|
|
35
|
+
return ta - tb;
|
|
36
|
+
});
|
|
37
|
+
return { picked: sorted[0], healthy: sorted, excluded };
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Rotate across installed versions of an agent and pick the best one for the
|
|
41
|
+
* next run. "Best" means: signed in, not out of credits, and least-recently-
|
|
42
|
+
* active (so two back-to-back runs hit different accounts automatically).
|
|
43
|
+
*
|
|
44
|
+
* No external state: rotation and health are both read off per-version
|
|
45
|
+
* AccountInfo — the same data `agents view` already surfaces. `lastActive`
|
|
46
|
+
* advances naturally after each run, so the cursor is self-maintaining.
|
|
47
|
+
*
|
|
48
|
+
* Returns null if no installed version is eligible (either nothing installed
|
|
49
|
+
* or every account is exhausted / not signed in). Callers fall back to the
|
|
50
|
+
* global default so behavior stays predictable — we never refuse to run.
|
|
51
|
+
*/
|
|
52
|
+
export async function selectRotateVersion(agent) {
|
|
53
|
+
const versions = listInstalledVersions(agent);
|
|
54
|
+
if (versions.length === 0)
|
|
55
|
+
return null;
|
|
56
|
+
const candidates = await Promise.all(versions.map(async (version) => {
|
|
57
|
+
const home = getVersionHomePath(agent, version);
|
|
58
|
+
const info = await getAccountInfo(agent, home);
|
|
59
|
+
const authValid = info.email
|
|
60
|
+
? agent === 'claude' ? await isClaudeAuthValid(home) : true
|
|
61
|
+
: false;
|
|
62
|
+
return {
|
|
63
|
+
agent,
|
|
64
|
+
version,
|
|
65
|
+
email: info.email,
|
|
66
|
+
usageStatus: info.usageStatus,
|
|
67
|
+
authValid,
|
|
68
|
+
lastActive: info.lastActive,
|
|
69
|
+
};
|
|
70
|
+
}));
|
|
71
|
+
return pickRotateCandidate(candidates);
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Resolve the version `agents run` should use when the caller did not pin
|
|
75
|
+
* one with `@version`. Rotation is the default; falls back to the global
|
|
76
|
+
* default if no version is healthy, and to null if the agent isn't installed
|
|
77
|
+
* under agents-cli at all (let exec surface its own error).
|
|
78
|
+
*/
|
|
79
|
+
export async function resolveRunVersion(agent) {
|
|
80
|
+
const rotation = await selectRotateVersion(agent);
|
|
81
|
+
if (rotation) {
|
|
82
|
+
return { version: rotation.picked.version, rotation };
|
|
83
|
+
}
|
|
84
|
+
const fallback = getGlobalDefault(agent);
|
|
85
|
+
return { version: fallback, rotation: null };
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=rotate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rotate.js","sourceRoot":"","sources":["../../src/lib/rotate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import type { AgentId } from './types.js';
|
|
2
|
+
export interface JobAllowConfig {
|
|
3
|
+
tools?: string[];
|
|
4
|
+
sites?: string[];
|
|
5
|
+
dirs?: string[];
|
|
6
|
+
}
|
|
7
|
+
export interface JobConfig {
|
|
8
|
+
name: string;
|
|
9
|
+
schedule: string;
|
|
10
|
+
agent: AgentId;
|
|
11
|
+
mode: 'plan' | 'edit' | 'full';
|
|
12
|
+
effort: 'low' | 'medium' | 'high' | 'xhigh' | 'max' | 'auto';
|
|
13
|
+
timeout: string;
|
|
14
|
+
enabled: boolean;
|
|
15
|
+
prompt: string;
|
|
16
|
+
timezone?: string;
|
|
17
|
+
variables?: Record<string, string>;
|
|
18
|
+
sandbox?: boolean;
|
|
19
|
+
allow?: JobAllowConfig;
|
|
20
|
+
config?: Record<string, unknown>;
|
|
21
|
+
version?: string;
|
|
22
|
+
runOnce?: boolean;
|
|
23
|
+
}
|
|
24
|
+
export interface RunMeta {
|
|
25
|
+
jobName: string;
|
|
26
|
+
runId: string;
|
|
27
|
+
agent: AgentId;
|
|
28
|
+
pid: number | null;
|
|
29
|
+
status: 'running' | 'completed' | 'failed' | 'timeout';
|
|
30
|
+
startedAt: string;
|
|
31
|
+
completedAt: string | null;
|
|
32
|
+
exitCode: number | null;
|
|
33
|
+
}
|
|
34
|
+
export declare function listJobs(): JobConfig[];
|
|
35
|
+
export declare function readJob(name: string): JobConfig | null;
|
|
36
|
+
export declare function writeJob(config: JobConfig): void;
|
|
37
|
+
export declare function deleteJob(name: string): boolean;
|
|
38
|
+
export declare function setJobEnabled(name: string, enabled: boolean): void;
|
|
39
|
+
export declare function validateJob(config: Partial<JobConfig>): string[];
|
|
40
|
+
export declare function resolveJobPrompt(config: JobConfig): string;
|
|
41
|
+
export declare function parseTimeout(timeout: string): number | null;
|
|
42
|
+
export declare function listRuns(jobName: string): RunMeta[];
|
|
43
|
+
export declare function getLatestRun(jobName: string): RunMeta | null;
|
|
44
|
+
export declare function writeRunMeta(meta: RunMeta): void;
|
|
45
|
+
export declare function readRunMeta(jobName: string, runId: string): RunMeta | null;
|
|
46
|
+
export declare function getRunDir(jobName: string, runId: string): string;
|
|
47
|
+
export declare function discoverJobsFromRepo(repoPath: string): Array<{
|
|
48
|
+
name: string;
|
|
49
|
+
path: string;
|
|
50
|
+
}>;
|
|
51
|
+
export declare function jobExists(name: string): boolean;
|
|
52
|
+
export declare function getJobPath(name: string): string | null;
|
|
53
|
+
/**
|
|
54
|
+
* Parse an "at" time string into a one-shot cron expression.
|
|
55
|
+
* Supports formats like:
|
|
56
|
+
* - "9:00" or "09:00" - today at 9:00 AM (or tomorrow if past)
|
|
57
|
+
* - "14:30" - today at 2:30 PM
|
|
58
|
+
* - "2026-02-24 09:00" - specific date and time
|
|
59
|
+
* Returns null if invalid format.
|
|
60
|
+
*/
|
|
61
|
+
export declare function parseAtTime(atTime: string): {
|
|
62
|
+
schedule: string;
|
|
63
|
+
runOnce: boolean;
|
|
64
|
+
} | null;
|
|
65
|
+
export declare function jobContentMatches(name: string, sourcePath: string): boolean;
|
|
66
|
+
export declare function installJobFromSource(sourcePath: string, name: string): {
|
|
67
|
+
success: boolean;
|
|
68
|
+
error?: string;
|
|
69
|
+
};
|
|
70
|
+
//# sourceMappingURL=routines.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routines.d.ts","sourceRoot":"","sources":["../../src/lib/routines.ts"],"names":[],"mappings":"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"}
|