@swarmify/agents-cli 1.10.3 → 1.11.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 +18 -0
- package/README.md +71 -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 +436 -0
- package/dist/commands/__tests__/sessions.test.js.map +1 -0
- package/dist/commands/commands.d.ts.map +1 -1
- package/dist/commands/commands.js +79 -67
- package/dist/commands/commands.js.map +1 -1
- package/dist/commands/daemon.js +1 -1
- package/dist/commands/daemon.js.map +1 -1
- package/dist/commands/exec.d.ts.map +1 -1
- package/dist/commands/exec.js +11 -1
- package/dist/commands/exec.js.map +1 -1
- package/dist/commands/hooks.d.ts.map +1 -1
- package/dist/commands/hooks.js +72 -60
- package/dist/commands/hooks.js.map +1 -1
- package/dist/commands/mcp.d.ts.map +1 -1
- package/dist/commands/mcp.js +134 -57
- package/dist/commands/mcp.js.map +1 -1
- package/dist/commands/packages.d.ts.map +1 -1
- package/dist/commands/packages.js +92 -42
- package/dist/commands/packages.js.map +1 -1
- package/dist/commands/permissions.d.ts.map +1 -1
- package/dist/commands/permissions.js +108 -81
- package/dist/commands/permissions.js.map +1 -1
- package/dist/commands/plugins.js +8 -8
- package/dist/commands/plugins.js.map +1 -1
- package/dist/commands/pty.d.ts +20 -0
- package/dist/commands/pty.d.ts.map +1 -0
- package/dist/commands/pty.js +280 -0
- package/dist/commands/pty.js.map +1 -0
- package/dist/commands/pull.d.ts.map +1 -1
- package/dist/commands/pull.js +27 -27
- package/dist/commands/pull.js.map +1 -1
- package/dist/commands/push.d.ts.map +1 -1
- package/dist/commands/push.js +4 -2
- package/dist/commands/push.js.map +1 -1
- package/dist/commands/routines.d.ts.map +1 -1
- package/dist/commands/routines.js +14 -10
- package/dist/commands/routines.js.map +1 -1
- package/dist/commands/rules.d.ts.map +1 -1
- package/dist/commands/rules.js +70 -61
- package/dist/commands/rules.js.map +1 -1
- package/dist/commands/sessions.d.ts.map +1 -1
- package/dist/commands/sessions.js +369 -44
- package/dist/commands/sessions.js.map +1 -1
- package/dist/commands/sessions.test.d.ts +2 -0
- package/dist/commands/sessions.test.d.ts.map +1 -0
- package/dist/commands/sessions.test.js +53 -0
- package/dist/commands/sessions.test.js.map +1 -0
- package/dist/commands/skills.d.ts.map +1 -1
- package/dist/commands/skills.js +75 -57
- package/dist/commands/skills.js.map +1 -1
- package/dist/commands/subagents.d.ts.map +1 -1
- package/dist/commands/subagents.js +10 -4
- package/dist/commands/subagents.js.map +1 -1
- package/dist/commands/utils.d.ts +16 -0
- package/dist/commands/utils.d.ts.map +1 -1
- package/dist/commands/utils.js +48 -0
- package/dist/commands/utils.js.map +1 -1
- package/dist/commands/versions.d.ts.map +1 -1
- package/dist/commands/versions.js +148 -43
- package/dist/commands/versions.js.map +1 -1
- package/dist/commands/view.d.ts.map +1 -1
- package/dist/commands/view.js +109 -45
- package/dist/commands/view.js.map +1 -1
- package/dist/index.js +66 -42
- package/dist/index.js.map +1 -1
- package/dist/lib/__tests__/exec.test.js +34 -1
- package/dist/lib/__tests__/exec.test.js.map +1 -1
- package/dist/lib/agents.d.ts +23 -0
- package/dist/lib/agents.d.ts.map +1 -1
- package/dist/lib/agents.js +212 -16
- package/dist/lib/agents.js.map +1 -1
- package/dist/lib/daemon.d.ts.map +1 -1
- package/dist/lib/daemon.js +15 -7
- package/dist/lib/daemon.js.map +1 -1
- package/dist/lib/exec.d.ts +3 -0
- package/dist/lib/exec.d.ts.map +1 -1
- package/dist/lib/exec.js +26 -0
- package/dist/lib/exec.js.map +1 -1
- package/dist/lib/git.d.ts.map +1 -1
- package/dist/lib/git.js +11 -1
- package/dist/lib/git.js.map +1 -1
- 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.map +1 -1
- package/dist/lib/registry.js +8 -0
- package/dist/lib/registry.js.map +1 -1
- package/dist/lib/resources.d.ts +2 -0
- package/dist/lib/resources.d.ts.map +1 -1
- package/dist/lib/resources.js +7 -7
- package/dist/lib/resources.js.map +1 -1
- package/dist/lib/runner.d.ts.map +1 -1
- package/dist/lib/runner.js +13 -9
- package/dist/lib/runner.js.map +1 -1
- package/dist/lib/sandbox.js +1 -1
- package/dist/lib/sandbox.js.map +1 -1
- package/dist/lib/session/discover.d.ts +18 -0
- package/dist/lib/session/discover.d.ts.map +1 -1
- package/dist/lib/session/discover.js +405 -167
- package/dist/lib/session/discover.js.map +1 -1
- package/dist/lib/session/parse.d.ts.map +1 -1
- package/dist/lib/session/parse.js +8 -3
- package/dist/lib/session/parse.js.map +1 -1
- package/dist/lib/session/prompt.d.ts +3 -0
- package/dist/lib/session/prompt.d.ts.map +1 -0
- package/dist/lib/session/prompt.js +40 -0
- package/dist/lib/session/prompt.js.map +1 -0
- package/dist/lib/session/render.d.ts.map +1 -1
- package/dist/lib/session/render.js +6 -37
- package/dist/lib/session/render.js.map +1 -1
- package/dist/lib/session/types.d.ts +1 -0
- package/dist/lib/session/types.d.ts.map +1 -1
- package/dist/lib/shims.d.ts.map +1 -1
- package/dist/lib/shims.js +6 -1
- package/dist/lib/shims.js.map +1 -1
- package/dist/lib/state.d.ts +0 -1
- package/dist/lib/state.d.ts.map +1 -1
- package/dist/lib/state.js +3 -9
- package/dist/lib/state.js.map +1 -1
- package/dist/lib/types.d.ts +3 -5
- package/dist/lib/types.d.ts.map +1 -1
- package/dist/lib/types.js.map +1 -1
- package/dist/lib/usage.d.ts +30 -0
- package/dist/lib/usage.d.ts.map +1 -0
- package/dist/lib/usage.js +428 -0
- package/dist/lib/usage.js.map +1 -0
- package/dist/lib/versions.d.ts +28 -0
- package/dist/lib/versions.d.ts.map +1 -1
- package/dist/lib/versions.js +200 -9
- package/dist/lib/versions.js.map +1 -1
- package/package.json +3 -1
- package/dist/commands/cron.d.ts +0 -3
- package/dist/commands/cron.d.ts.map +0 -1
- package/dist/commands/cron.js +0 -457
- package/dist/commands/cron.js.map +0 -1
- package/dist/lib/cron.d.ts +0 -70
- package/dist/lib/cron.d.ts.map +0 -1
- package/dist/lib/cron.js +0 -325
- package/dist/lib/cron.js.map +0 -1
- package/dist/lib/drive-server.d.ts +0 -9
- package/dist/lib/drive-server.d.ts.map +0 -1
- package/dist/lib/drive-server.js +0 -217
- package/dist/lib/drive-server.js.map +0 -1
- package/dist/lib/drives.d.ts +0 -34
- package/dist/lib/drives.d.ts.map +0 -1
- package/dist/lib/drives.js +0 -267
- package/dist/lib/drives.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,23 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.11.0
|
|
4
|
+
|
|
5
|
+
**PTY -- interactive terminal sessions for AI agents**
|
|
6
|
+
|
|
7
|
+
- New `agents pty` command suite for persistent, interactive PTY sessions
|
|
8
|
+
- Sidecar server architecture -- lightweight daemon on `~/.agents/pty.sock`, auto-starts on first use
|
|
9
|
+
- `agents pty start` -- spawn a session with configurable rows, cols, shell, and working directory
|
|
10
|
+
- `agents pty exec <id> <command>` -- submit commands (non-blocking, sentinel-based completion detection)
|
|
11
|
+
- `agents pty screen <id>` -- render the terminal as clean text (no ANSI codes), powered by xterm-headless
|
|
12
|
+
- `agents pty write <id> <input>` -- send keystrokes with escape sequence support (`\n`, `\t`, `\e`, `\xHH`)
|
|
13
|
+
- `agents pty read <id>` -- read raw PTY output with configurable timeout
|
|
14
|
+
- `agents pty signal <id> [INT|TERM|KILL]` -- send signals to the PTY process
|
|
15
|
+
- `agents pty list` -- show active sessions with status, PID, age, and active command
|
|
16
|
+
- `agents pty server start|stop|status` -- manage the sidecar server directly
|
|
17
|
+
- Session idle cleanup (30 min) and server auto-exit (1 hour with no sessions)
|
|
18
|
+
- `--json` output on all commands for scripting
|
|
19
|
+
- Auto-fixes node-pty spawn-helper permissions on startup (bun install workaround)
|
|
20
|
+
|
|
3
21
|
## 1.10.0
|
|
4
22
|
|
|
5
23
|
**Drive -- sync agent sessions across machines**
|
package/README.md
CHANGED
|
@@ -22,6 +22,18 @@ agents exec gemini "Write tests for the fixed code"
|
|
|
22
22
|
|
|
23
23
|
Each agent resolves to the project-pinned version, with the right skills, MCP servers, and permissions already synced. No setup between steps -- just run.
|
|
24
24
|
|
|
25
|
+
`agents exec` also passes through environment overrides to the spawned CLI, so Claude can target any Anthropic-compatible endpoint:
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
agents exec claude "Reply with exactly: agents-qwen route ok" \
|
|
29
|
+
--mode full \
|
|
30
|
+
--model qwen3.6:35b \
|
|
31
|
+
--env ANTHROPIC_BASE_URL=https://ollama.427yosemite.com \
|
|
32
|
+
--env ANTHROPIC_AUTH_TOKEN="$(security find-generic-password -a "$USER" -s yosemite-ollama-auth-token -w)" \
|
|
33
|
+
--env ANTHROPIC_MODEL=qwen3.6:35b \
|
|
34
|
+
--env ANTHROPIC_SMALL_FAST_MODEL=qwen3.6:35b
|
|
35
|
+
```
|
|
36
|
+
|
|
25
37
|
This makes agent pipelines possible. Chain agents by strength, swap one for another, script them in CI -- the interface stays the same:
|
|
26
38
|
|
|
27
39
|
```bash
|
|
@@ -39,6 +51,34 @@ Supports plan (read-only) and edit modes, effort levels that map to the right mo
|
|
|
39
51
|
|
|
40
52
|
---
|
|
41
53
|
|
|
54
|
+
## Non-interactive usage
|
|
55
|
+
|
|
56
|
+
Other coding agents usually run in non-TTY shells. `agents` now supports that mode directly:
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
agents add codex@latest --yes
|
|
60
|
+
agents use claude@2.1.79 --yes
|
|
61
|
+
agents commands add --names review-pr,debug --agents codex@0.113.0
|
|
62
|
+
agents skills add --names agents-cli --agents claude@default
|
|
63
|
+
agents install ./team-agent-pack --agents codex@0.113.0
|
|
64
|
+
agents mcp add postgres --agents claude@2.1.79 -- npx -y @modelcontextprotocol/server-postgres
|
|
65
|
+
agents mcp register postgres
|
|
66
|
+
agents sessions view <session-id>
|
|
67
|
+
agents routines view <job-name>
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
Rules for automation:
|
|
71
|
+
|
|
72
|
+
- Pass explicit names or IDs instead of relying on pickers.
|
|
73
|
+
- Use `--yes` when a command would otherwise ask for default sync or confirmation choices.
|
|
74
|
+
- Use `--names` with `commands`, `skills`, `hooks`, `rules`, and `permissions` to install from central storage without a checkbox prompt.
|
|
75
|
+
- Use `agent@version` or `agent@default` with `--agents` when you need an exact managed version.
|
|
76
|
+
- Long `view` commands print directly in non-interactive shells instead of opening `less`.
|
|
77
|
+
|
|
78
|
+
If a command still needs a human-only picker, it now exits with a plain-text hint that shows the matching non-interactive form.
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
42
82
|
## Pin agent versions per project
|
|
43
83
|
|
|
44
84
|
```bash
|
|
@@ -112,6 +152,22 @@ agents fork # Fork the default repo to your GitHub
|
|
|
112
152
|
agents pull --upstream # Merge updates from upstream
|
|
113
153
|
```
|
|
114
154
|
|
|
155
|
+
### Interactive PTY sessions
|
|
156
|
+
|
|
157
|
+
Give your agents the ability to interact with full-screen terminal programs -- REPLs, TUIs, interactive installers, anything that needs a real terminal.
|
|
158
|
+
|
|
159
|
+
```bash
|
|
160
|
+
SID=$(agents pty start) # Start a session
|
|
161
|
+
agents pty exec $SID "python3" # Launch Python REPL
|
|
162
|
+
agents pty screen $SID # See what's on screen
|
|
163
|
+
agents pty write $SID "print('hello')\n" # Type into it
|
|
164
|
+
agents pty screen $SID # See the result
|
|
165
|
+
agents pty write $SID "exit()\n" # Quit
|
|
166
|
+
agents pty stop $SID # Clean up
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
A sidecar server holds PTY sessions alive between CLI calls. `screen` renders the terminal as clean text (no ANSI codes) using xterm-headless -- so agents see exactly what a human would see. Sessions auto-clean after 30 minutes of idle.
|
|
170
|
+
|
|
115
171
|
### Schedule agents as routines
|
|
116
172
|
|
|
117
173
|
```bash
|
|
@@ -203,6 +259,17 @@ agents exec <agent> <prompt> # Run agent
|
|
|
203
259
|
agents routines add <name> # Schedule a job
|
|
204
260
|
agents routines list # Show all jobs
|
|
205
261
|
agents daemon start # Start scheduler
|
|
262
|
+
|
|
263
|
+
# PTY sessions
|
|
264
|
+
agents pty start # Start a PTY session (returns ID)
|
|
265
|
+
agents pty exec <id> <command> # Run a command in the session
|
|
266
|
+
agents pty screen <id> # Render terminal as clean text
|
|
267
|
+
agents pty write <id> <input> # Send keystrokes (\n \t \e \xHH)
|
|
268
|
+
agents pty read <id> # Read raw output
|
|
269
|
+
agents pty signal <id> INT # Send signal
|
|
270
|
+
agents pty list # Show active sessions
|
|
271
|
+
agents pty stop <id> # Kill a session
|
|
272
|
+
agents pty server status # Check sidecar server
|
|
206
273
|
```
|
|
207
274
|
|
|
208
275
|
---
|
|
@@ -240,6 +307,10 @@ Add rule files in a `rules/` subdirectory -- each rule is a markdown file with s
|
|
|
240
307
|
| OpenCode | yes | yes | yes | yes | AGENTS.md | yes | yes | -- |
|
|
241
308
|
| OpenClaw | yes | yes | -- | yes | workspace/AGENTS.md | yes | -- | -- |
|
|
242
309
|
|
|
310
|
+
## How It Compares
|
|
311
|
+
|
|
312
|
+
See [docs/04-landscape.md](docs/04-landscape.md) for a detailed comparison with other tools in the ecosystem -- Rivet, Agentloom, mise, skills.sh, cass, Microsoft APM, and more.
|
|
313
|
+
|
|
243
314
|
## License
|
|
244
315
|
|
|
245
316
|
MIT
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessions.test.d.ts","sourceRoot":"","sources":["../../../src/commands/__tests__/sessions.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,436 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
import * as fs from 'fs';
|
|
3
|
+
import * as os from 'os';
|
|
4
|
+
import * as path from 'path';
|
|
5
|
+
import { spawnSync } from 'child_process';
|
|
6
|
+
const repoRoot = process.cwd();
|
|
7
|
+
const cliEntry = path.join(repoRoot, 'src', 'index.ts');
|
|
8
|
+
const tsxBin = path.join(repoRoot, 'node_modules', '.bin', 'tsx');
|
|
9
|
+
function writeUpdateCache(tempHome) {
|
|
10
|
+
const packageJson = JSON.parse(fs.readFileSync(path.join(repoRoot, 'package.json'), 'utf-8'));
|
|
11
|
+
fs.mkdirSync(path.join(tempHome, '.agents'), { recursive: true });
|
|
12
|
+
fs.writeFileSync(path.join(tempHome, '.agents', '.update-check'), JSON.stringify({ lastCheck: Date.now(), latestVersion: packageJson.version }), 'utf-8');
|
|
13
|
+
}
|
|
14
|
+
function writeClaudeSession(tempHome, projectKey, sessionId, cwd, content, timestamp) {
|
|
15
|
+
fs.mkdirSync(cwd, { recursive: true });
|
|
16
|
+
const sessionsDir = path.join(tempHome, '.claude', 'projects', projectKey);
|
|
17
|
+
fs.mkdirSync(sessionsDir, { recursive: true });
|
|
18
|
+
fs.writeFileSync(path.join(sessionsDir, `${sessionId}.jsonl`), JSON.stringify({
|
|
19
|
+
type: 'user',
|
|
20
|
+
timestamp,
|
|
21
|
+
cwd,
|
|
22
|
+
sessionId,
|
|
23
|
+
version: '2.1.110',
|
|
24
|
+
gitBranch: 'main',
|
|
25
|
+
message: { role: 'user', content },
|
|
26
|
+
}) + '\n', 'utf-8');
|
|
27
|
+
}
|
|
28
|
+
function writeCodexSession(tempHome, sessionId, cwd, prompt, timestamp) {
|
|
29
|
+
fs.mkdirSync(cwd, { recursive: true });
|
|
30
|
+
const sessionsDir = path.join(tempHome, '.codex', 'sessions', '2026', '04', '17');
|
|
31
|
+
fs.mkdirSync(sessionsDir, { recursive: true });
|
|
32
|
+
const filePath = path.join(sessionsDir, `rollout-${timestamp.replace(/[:.]/g, '-')}-${sessionId}.jsonl`);
|
|
33
|
+
const lines = [
|
|
34
|
+
JSON.stringify({
|
|
35
|
+
timestamp,
|
|
36
|
+
type: 'session_meta',
|
|
37
|
+
payload: {
|
|
38
|
+
id: sessionId,
|
|
39
|
+
timestamp,
|
|
40
|
+
cwd,
|
|
41
|
+
originator: 'codex_cli_rs',
|
|
42
|
+
cli_version: '0.113.0',
|
|
43
|
+
source: 'cli',
|
|
44
|
+
},
|
|
45
|
+
}),
|
|
46
|
+
JSON.stringify({
|
|
47
|
+
timestamp,
|
|
48
|
+
type: 'response_item',
|
|
49
|
+
payload: {
|
|
50
|
+
type: 'message',
|
|
51
|
+
role: 'developer',
|
|
52
|
+
content: [{ type: 'input_text', text: '<permissions instructions>\nFilesystem sandboxing.\n</permissions instructions>' }],
|
|
53
|
+
},
|
|
54
|
+
}),
|
|
55
|
+
JSON.stringify({
|
|
56
|
+
timestamp,
|
|
57
|
+
type: 'response_item',
|
|
58
|
+
payload: {
|
|
59
|
+
type: 'message',
|
|
60
|
+
role: 'user',
|
|
61
|
+
content: [{ type: 'input_text', text: '<environment_context>\n <cwd>/tmp/project</cwd>\n <shell>zsh</shell>\n</environment_context>' }],
|
|
62
|
+
},
|
|
63
|
+
}),
|
|
64
|
+
JSON.stringify({
|
|
65
|
+
timestamp,
|
|
66
|
+
type: 'response_item',
|
|
67
|
+
payload: {
|
|
68
|
+
type: 'message',
|
|
69
|
+
role: 'user',
|
|
70
|
+
content: [{ type: 'input_text', text: '<collaboration_mode># Collaboration Mode: Default\n</collaboration_mode>' }],
|
|
71
|
+
},
|
|
72
|
+
}),
|
|
73
|
+
JSON.stringify({
|
|
74
|
+
timestamp,
|
|
75
|
+
type: 'response_item',
|
|
76
|
+
payload: {
|
|
77
|
+
type: 'message',
|
|
78
|
+
role: 'user',
|
|
79
|
+
content: [{ type: 'input_text', text: '# AGENTS.md instructions for /tmp/project\n\n<INSTRUCTIONS>\nDo work.\n</INSTRUCTIONS>' }],
|
|
80
|
+
},
|
|
81
|
+
}),
|
|
82
|
+
JSON.stringify({
|
|
83
|
+
timestamp,
|
|
84
|
+
type: 'response_item',
|
|
85
|
+
payload: {
|
|
86
|
+
type: 'message',
|
|
87
|
+
role: 'user',
|
|
88
|
+
content: [{ type: 'input_text', text: prompt }],
|
|
89
|
+
},
|
|
90
|
+
}),
|
|
91
|
+
JSON.stringify({
|
|
92
|
+
timestamp,
|
|
93
|
+
type: 'response_item',
|
|
94
|
+
payload: {
|
|
95
|
+
type: 'message',
|
|
96
|
+
role: 'assistant',
|
|
97
|
+
content: [{ type: 'output_text', text: 'Looking into it now.' }],
|
|
98
|
+
},
|
|
99
|
+
}),
|
|
100
|
+
];
|
|
101
|
+
fs.writeFileSync(filePath, lines.join('\n') + '\n', 'utf-8');
|
|
102
|
+
}
|
|
103
|
+
function runAgents(args, cwd, home) {
|
|
104
|
+
return spawnSync(tsxBin, [cliEntry, ...args], {
|
|
105
|
+
cwd,
|
|
106
|
+
env: { ...process.env, HOME: home },
|
|
107
|
+
encoding: 'utf-8',
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
function outputOf(result) {
|
|
111
|
+
return `${result.stdout}${result.stderr}`;
|
|
112
|
+
}
|
|
113
|
+
describe('agents sessions', () => {
|
|
114
|
+
it('lists only sessions from the current directory by default and shows all with --all', () => {
|
|
115
|
+
const tempHome = fs.mkdtempSync(path.join(os.tmpdir(), 'agents-sessions-list-'));
|
|
116
|
+
try {
|
|
117
|
+
writeUpdateCache(tempHome);
|
|
118
|
+
const swarmifyDir = path.join(tempHome, 'work', 'swarmify');
|
|
119
|
+
const agentsCliDir = path.join(tempHome, 'work', 'agents-cli');
|
|
120
|
+
const swarmifySessionId = '11111111-1111-4111-8111-111111111111';
|
|
121
|
+
const agentsCliSessionId = '22222222-2222-4222-8222-222222222222';
|
|
122
|
+
writeClaudeSession(tempHome, 'swarmify-test', swarmifySessionId, swarmifyDir, 'Inspect the swarmify session list', '2026-04-17T19:35:30.000Z');
|
|
123
|
+
writeClaudeSession(tempHome, 'agents-cli-test', agentsCliSessionId, agentsCliDir, 'Inspect the agents-cli session list', '2026-04-17T19:36:30.000Z');
|
|
124
|
+
const localResult = runAgents(['sessions'], swarmifyDir, tempHome);
|
|
125
|
+
expect(localResult.status).toBe(0);
|
|
126
|
+
const localOutput = outputOf(localResult);
|
|
127
|
+
expect(localOutput).toContain(swarmifySessionId.slice(0, 8));
|
|
128
|
+
expect(localOutput).not.toContain(agentsCliSessionId.slice(0, 8));
|
|
129
|
+
const allResult = runAgents(['sessions', '--all'], swarmifyDir, tempHome);
|
|
130
|
+
expect(allResult.status).toBe(0);
|
|
131
|
+
const allOutput = outputOf(allResult);
|
|
132
|
+
expect(allOutput).toContain(swarmifySessionId.slice(0, 8));
|
|
133
|
+
expect(allOutput).toContain(agentsCliSessionId.slice(0, 8));
|
|
134
|
+
}
|
|
135
|
+
finally {
|
|
136
|
+
fs.rmSync(tempHome, { recursive: true, force: true });
|
|
137
|
+
}
|
|
138
|
+
});
|
|
139
|
+
it('shows message and token counts while skipping Claude local-command preambles in the topic', () => {
|
|
140
|
+
const tempHome = fs.mkdtempSync(path.join(os.tmpdir(), 'agents-sessions-stats-'));
|
|
141
|
+
try {
|
|
142
|
+
writeUpdateCache(tempHome);
|
|
143
|
+
const repoDir = path.join(tempHome, 'work', 'agents-cli');
|
|
144
|
+
const projectKey = 'agents-cli-test';
|
|
145
|
+
const sessionId = '77777777-7777-4777-8777-777777777777';
|
|
146
|
+
fs.mkdirSync(repoDir, { recursive: true });
|
|
147
|
+
fs.mkdirSync(path.join(tempHome, '.claude', 'projects', projectKey), { recursive: true });
|
|
148
|
+
fs.writeFileSync(path.join(tempHome, '.claude', 'projects', projectKey, `${sessionId}.jsonl`), [
|
|
149
|
+
JSON.stringify({
|
|
150
|
+
type: 'user',
|
|
151
|
+
timestamp: '2026-04-17T19:00:00.000Z',
|
|
152
|
+
cwd: repoDir,
|
|
153
|
+
sessionId,
|
|
154
|
+
version: '2.1.110',
|
|
155
|
+
gitBranch: 'main',
|
|
156
|
+
isMeta: true,
|
|
157
|
+
message: {
|
|
158
|
+
role: 'user',
|
|
159
|
+
content: '<local-command-caveat>Caveat: The messages below were generated by the user while running local commands.</local-command-caveat>',
|
|
160
|
+
},
|
|
161
|
+
}),
|
|
162
|
+
JSON.stringify({
|
|
163
|
+
type: 'user',
|
|
164
|
+
timestamp: '2026-04-17T19:00:01.000Z',
|
|
165
|
+
cwd: repoDir,
|
|
166
|
+
sessionId,
|
|
167
|
+
version: '2.1.110',
|
|
168
|
+
gitBranch: 'main',
|
|
169
|
+
message: { role: 'user', content: '<bash-input>pwd</bash-input>' },
|
|
170
|
+
}),
|
|
171
|
+
JSON.stringify({
|
|
172
|
+
type: 'user',
|
|
173
|
+
timestamp: '2026-04-17T19:00:02.000Z',
|
|
174
|
+
cwd: repoDir,
|
|
175
|
+
sessionId,
|
|
176
|
+
version: '2.1.110',
|
|
177
|
+
gitBranch: 'main',
|
|
178
|
+
message: { role: 'user', content: 'Inspect session stats' },
|
|
179
|
+
}),
|
|
180
|
+
JSON.stringify({
|
|
181
|
+
type: 'assistant',
|
|
182
|
+
timestamp: '2026-04-17T19:00:03.000Z',
|
|
183
|
+
cwd: repoDir,
|
|
184
|
+
sessionId,
|
|
185
|
+
version: '2.1.110',
|
|
186
|
+
gitBranch: 'main',
|
|
187
|
+
message: {
|
|
188
|
+
id: 'msg-stats',
|
|
189
|
+
role: 'assistant',
|
|
190
|
+
content: [{ type: 'text', text: 'Looking now.' }],
|
|
191
|
+
usage: {
|
|
192
|
+
input_tokens: 10,
|
|
193
|
+
output_tokens: 5,
|
|
194
|
+
cache_read_input_tokens: 20,
|
|
195
|
+
cache_creation_input_tokens: 0,
|
|
196
|
+
},
|
|
197
|
+
},
|
|
198
|
+
}),
|
|
199
|
+
JSON.stringify({
|
|
200
|
+
type: 'assistant',
|
|
201
|
+
timestamp: '2026-04-17T19:00:04.000Z',
|
|
202
|
+
cwd: repoDir,
|
|
203
|
+
sessionId,
|
|
204
|
+
version: '2.1.110',
|
|
205
|
+
gitBranch: 'main',
|
|
206
|
+
message: {
|
|
207
|
+
id: 'msg-stats',
|
|
208
|
+
role: 'assistant',
|
|
209
|
+
content: [{ type: 'tool_use', id: 'tool-1', name: 'Read', input: { file_path: '/tmp/example' } }],
|
|
210
|
+
usage: {
|
|
211
|
+
input_tokens: 10,
|
|
212
|
+
output_tokens: 5,
|
|
213
|
+
cache_read_input_tokens: 20,
|
|
214
|
+
cache_creation_input_tokens: 0,
|
|
215
|
+
},
|
|
216
|
+
},
|
|
217
|
+
}),
|
|
218
|
+
].join('\n') + '\n', 'utf-8');
|
|
219
|
+
const result = runAgents(['sessions'], repoDir, tempHome);
|
|
220
|
+
expect(result.status).toBe(0);
|
|
221
|
+
const output = outputOf(result);
|
|
222
|
+
expect(output).toContain('Msgs');
|
|
223
|
+
expect(output).toContain('Tokens');
|
|
224
|
+
const row = output.split('\n').find(line => line.includes(sessionId.slice(0, 8))) || '';
|
|
225
|
+
expect(row).toContain('Inspect session stats');
|
|
226
|
+
expect(row).not.toContain('Caveat:');
|
|
227
|
+
expect(row).toMatch(/\b2\s+35\s+Inspect session stats\b/);
|
|
228
|
+
}
|
|
229
|
+
finally {
|
|
230
|
+
fs.rmSync(tempHome, { recursive: true, force: true });
|
|
231
|
+
}
|
|
232
|
+
});
|
|
233
|
+
it('finds matching projects outside the current directory when --project is provided', () => {
|
|
234
|
+
const tempHome = fs.mkdtempSync(path.join(os.tmpdir(), 'agents-sessions-project-'));
|
|
235
|
+
try {
|
|
236
|
+
writeUpdateCache(tempHome);
|
|
237
|
+
const workspaceDir = path.join(tempHome, 'work');
|
|
238
|
+
const swarmifyDir = path.join(workspaceDir, 'swarmify');
|
|
239
|
+
const agentsCliDir = path.join(workspaceDir, 'agents-cli');
|
|
240
|
+
const swarmifySessionId = '55555555-5555-4555-8555-555555555555';
|
|
241
|
+
const agentsCliSessionId = '66666666-6666-4666-8666-666666666666';
|
|
242
|
+
fs.mkdirSync(workspaceDir, { recursive: true });
|
|
243
|
+
writeClaudeSession(tempHome, 'swarmify-test', swarmifySessionId, swarmifyDir, 'Inspect the swarmify session list', '2026-04-17T19:35:30.000Z');
|
|
244
|
+
writeClaudeSession(tempHome, 'agents-cli-test', agentsCliSessionId, agentsCliDir, 'Inspect the agents-cli session list', '2026-04-17T19:36:30.000Z');
|
|
245
|
+
const result = runAgents(['sessions', '--project', 'agents-cli'], workspaceDir, tempHome);
|
|
246
|
+
expect(result.status).toBe(0);
|
|
247
|
+
const output = outputOf(result);
|
|
248
|
+
expect(output).toContain(agentsCliSessionId.slice(0, 8));
|
|
249
|
+
expect(output).not.toContain(swarmifySessionId.slice(0, 8));
|
|
250
|
+
expect(output).not.toContain(`No sessions found for ${workspaceDir}`);
|
|
251
|
+
}
|
|
252
|
+
finally {
|
|
253
|
+
fs.rmSync(tempHome, { recursive: true, force: true });
|
|
254
|
+
}
|
|
255
|
+
});
|
|
256
|
+
it('shows the first human Codex prompt instead of injected session scaffolding', () => {
|
|
257
|
+
const tempHome = fs.mkdtempSync(path.join(os.tmpdir(), 'agents-sessions-codex-topic-'));
|
|
258
|
+
try {
|
|
259
|
+
writeUpdateCache(tempHome);
|
|
260
|
+
const projectDir = path.join(tempHome, 'work', 'agents-cli');
|
|
261
|
+
const sessionId = '99999999-9999-4999-8999-999999999999';
|
|
262
|
+
const prompt = 'Search across sessions by prompt text';
|
|
263
|
+
writeCodexSession(tempHome, sessionId, projectDir, prompt, '2026-04-17T19:40:30.000Z');
|
|
264
|
+
const result = runAgents(['sessions', '--all'], projectDir, tempHome);
|
|
265
|
+
expect(result.status).toBe(0);
|
|
266
|
+
const output = outputOf(result);
|
|
267
|
+
expect(output).toContain(sessionId.slice(0, 8));
|
|
268
|
+
expect(output).toContain(prompt);
|
|
269
|
+
expect(output).not.toContain('Collaboration Mode: Default');
|
|
270
|
+
expect(output).not.toContain('# AGENTS.md instructions');
|
|
271
|
+
}
|
|
272
|
+
finally {
|
|
273
|
+
fs.rmSync(tempHome, { recursive: true, force: true });
|
|
274
|
+
}
|
|
275
|
+
});
|
|
276
|
+
});
|
|
277
|
+
describe('agents sessions view', () => {
|
|
278
|
+
it('resolves explicit IDs across directories even when the default listing is scoped to cwd', () => {
|
|
279
|
+
const tempHome = fs.mkdtempSync(path.join(os.tmpdir(), 'agents-sessions-view-global-'));
|
|
280
|
+
try {
|
|
281
|
+
writeUpdateCache(tempHome);
|
|
282
|
+
const swarmifyDir = path.join(tempHome, 'work', 'swarmify');
|
|
283
|
+
const agentsCliDir = path.join(tempHome, 'work', 'agents-cli');
|
|
284
|
+
const siblingSessionId = '33333333-3333-4333-8333-333333333333';
|
|
285
|
+
writeClaudeSession(tempHome, 'swarmify-test', '44444444-4444-4444-8444-444444444444', swarmifyDir, 'Inspect the swarmify session list', '2026-04-17T19:35:30.000Z');
|
|
286
|
+
writeClaudeSession(tempHome, 'agents-cli-test', siblingSessionId, agentsCliDir, 'Review sibling repo state', '2026-04-17T19:36:30.000Z');
|
|
287
|
+
const result = runAgents(['sessions', 'view', siblingSessionId, '--transcript'], swarmifyDir, tempHome);
|
|
288
|
+
expect(result.status).toBe(0);
|
|
289
|
+
const output = outputOf(result);
|
|
290
|
+
expect(output).toContain('Review sibling repo state');
|
|
291
|
+
expect(output).not.toContain(`No session found matching: ${siblingSessionId}`);
|
|
292
|
+
}
|
|
293
|
+
finally {
|
|
294
|
+
fs.rmSync(tempHome, { recursive: true, force: true });
|
|
295
|
+
}
|
|
296
|
+
});
|
|
297
|
+
it('resolves Claude /resume history IDs to the resumed transcript', () => {
|
|
298
|
+
const tempHome = fs.mkdtempSync(path.join(os.tmpdir(), 'agents-sessions-view-'));
|
|
299
|
+
try {
|
|
300
|
+
writeUpdateCache(tempHome);
|
|
301
|
+
const projectRoot = path.join(tempHome, 'work', 'swarmify');
|
|
302
|
+
const transcriptCwd = path.join(projectRoot, 'extension');
|
|
303
|
+
const transcriptId = '92267176-d991-45c2-a8e5-e851e30a203b';
|
|
304
|
+
const historyOnlyId = 'f6a6cd2d-2138-41c4-b653-d2881ce9cdd3';
|
|
305
|
+
fs.mkdirSync(path.join(tempHome, '.claude', 'projects', 'swarmify-test'), { recursive: true });
|
|
306
|
+
fs.writeFileSync(path.join(tempHome, '.claude', 'history.jsonl'), JSON.stringify({
|
|
307
|
+
display: '/resume',
|
|
308
|
+
timestamp: Date.parse('2026-04-17T19:30:00.000Z'),
|
|
309
|
+
project: projectRoot,
|
|
310
|
+
sessionId: historyOnlyId,
|
|
311
|
+
}) + '\n', 'utf-8');
|
|
312
|
+
fs.mkdirSync(transcriptCwd, { recursive: true });
|
|
313
|
+
fs.writeFileSync(path.join(tempHome, '.claude', 'projects', 'swarmify-test', `${transcriptId}.jsonl`), [
|
|
314
|
+
JSON.stringify({
|
|
315
|
+
type: 'user',
|
|
316
|
+
timestamp: '2026-04-17T19:00:00.000Z',
|
|
317
|
+
cwd: transcriptCwd,
|
|
318
|
+
sessionId: transcriptId,
|
|
319
|
+
version: '2.1.110',
|
|
320
|
+
gitBranch: 'main',
|
|
321
|
+
message: { role: 'user', content: 'Earlier context' },
|
|
322
|
+
}),
|
|
323
|
+
JSON.stringify({
|
|
324
|
+
type: 'assistant',
|
|
325
|
+
timestamp: '2026-04-17T19:00:05.000Z',
|
|
326
|
+
cwd: transcriptCwd,
|
|
327
|
+
sessionId: transcriptId,
|
|
328
|
+
version: '2.1.110',
|
|
329
|
+
gitBranch: 'main',
|
|
330
|
+
message: {
|
|
331
|
+
role: 'assistant',
|
|
332
|
+
content: [{ type: 'text', text: 'Earlier reply' }],
|
|
333
|
+
},
|
|
334
|
+
}),
|
|
335
|
+
JSON.stringify({
|
|
336
|
+
type: 'attachment',
|
|
337
|
+
timestamp: '2026-04-17T19:30:30.000Z',
|
|
338
|
+
cwd: transcriptCwd,
|
|
339
|
+
sessionId: transcriptId,
|
|
340
|
+
version: '2.1.110',
|
|
341
|
+
gitBranch: 'main',
|
|
342
|
+
attachment: {
|
|
343
|
+
type: 'hook_success',
|
|
344
|
+
hookName: 'SessionStart:resume',
|
|
345
|
+
hookEvent: 'SessionStart',
|
|
346
|
+
},
|
|
347
|
+
}),
|
|
348
|
+
JSON.stringify({
|
|
349
|
+
type: 'user',
|
|
350
|
+
timestamp: '2026-04-17T19:30:45.000Z',
|
|
351
|
+
cwd: transcriptCwd,
|
|
352
|
+
sessionId: transcriptId,
|
|
353
|
+
version: '2.1.110',
|
|
354
|
+
gitBranch: 'main',
|
|
355
|
+
message: { role: 'user', content: 'Continue from where we left off' },
|
|
356
|
+
}),
|
|
357
|
+
JSON.stringify({
|
|
358
|
+
type: 'assistant',
|
|
359
|
+
timestamp: '2026-04-17T19:31:00.000Z',
|
|
360
|
+
cwd: transcriptCwd,
|
|
361
|
+
sessionId: transcriptId,
|
|
362
|
+
version: '2.1.110',
|
|
363
|
+
gitBranch: 'main',
|
|
364
|
+
message: {
|
|
365
|
+
role: 'assistant',
|
|
366
|
+
content: [{ type: 'text', text: 'Loaded resumed transcript' }],
|
|
367
|
+
},
|
|
368
|
+
}),
|
|
369
|
+
].join('\n') + '\n', 'utf-8');
|
|
370
|
+
const result = runAgents(['sessions', 'view', historyOnlyId, '--transcript'], repoRoot, tempHome);
|
|
371
|
+
expect(result.status).toBe(0);
|
|
372
|
+
const output = outputOf(result);
|
|
373
|
+
expect(output).toContain(`Resolved Claude history entry ${historyOnlyId} to transcript ${transcriptId}.`);
|
|
374
|
+
expect(output).toContain('Loaded resumed transcript');
|
|
375
|
+
expect(output).not.toContain(`No transcript session found matching: ${historyOnlyId}`);
|
|
376
|
+
}
|
|
377
|
+
finally {
|
|
378
|
+
fs.rmSync(tempHome, { recursive: true, force: true });
|
|
379
|
+
}
|
|
380
|
+
});
|
|
381
|
+
it('resolves text queries against session topics, not only IDs', () => {
|
|
382
|
+
const tempHome = fs.mkdtempSync(path.join(os.tmpdir(), 'agents-sessions-view-query-'));
|
|
383
|
+
try {
|
|
384
|
+
writeUpdateCache(tempHome);
|
|
385
|
+
const projectDir = path.join(tempHome, 'work', 'agents-cli');
|
|
386
|
+
const sessionId = 'aaaaaaaa-aaaa-4aaa-8aaa-aaaaaaaaaaaa';
|
|
387
|
+
const prompt = 'Search across sessions by prompt text';
|
|
388
|
+
writeCodexSession(tempHome, sessionId, projectDir, prompt, '2026-04-17T19:41:30.000Z');
|
|
389
|
+
const result = runAgents(['sessions', 'view', 'prompt text', '--transcript'], projectDir, tempHome);
|
|
390
|
+
expect(result.status).toBe(0);
|
|
391
|
+
const output = outputOf(result);
|
|
392
|
+
expect(output).toContain(prompt);
|
|
393
|
+
expect(output).not.toContain('No session found matching: prompt text');
|
|
394
|
+
}
|
|
395
|
+
finally {
|
|
396
|
+
fs.rmSync(tempHome, { recursive: true, force: true });
|
|
397
|
+
}
|
|
398
|
+
});
|
|
399
|
+
it('applies --project filters before resolving search queries', () => {
|
|
400
|
+
const tempHome = fs.mkdtempSync(path.join(os.tmpdir(), 'agents-sessions-view-project-filter-'));
|
|
401
|
+
try {
|
|
402
|
+
writeUpdateCache(tempHome);
|
|
403
|
+
const workspaceDir = path.join(tempHome, 'work');
|
|
404
|
+
const agentsDir = path.join(workspaceDir, 'agents');
|
|
405
|
+
const agentsCliDir = path.join(workspaceDir, 'agents-cli');
|
|
406
|
+
writeCodexSession(tempHome, 'bbbbbbbb-bbbb-4bbb-8bbb-bbbbbbbbbbbb', agentsDir, 'Filter scoped search target', '2026-04-17T19:42:30.000Z');
|
|
407
|
+
writeCodexSession(tempHome, 'cccccccc-cccc-4ccc-8ccc-cccccccccccc', agentsCliDir, 'Filter scoped search decoy', '2026-04-17T19:43:30.000Z');
|
|
408
|
+
const result = runAgents(['sessions', 'view', '--project', 'agents-cli', 'scoped search', '--transcript'], workspaceDir, tempHome);
|
|
409
|
+
expect(result.status).toBe(0);
|
|
410
|
+
const output = outputOf(result);
|
|
411
|
+
expect(output).toContain('Filter scoped search decoy');
|
|
412
|
+
expect(output).not.toContain('Filter scoped search target');
|
|
413
|
+
}
|
|
414
|
+
finally {
|
|
415
|
+
fs.rmSync(tempHome, { recursive: true, force: true });
|
|
416
|
+
}
|
|
417
|
+
});
|
|
418
|
+
it('applies --agent filters before resolving search queries', () => {
|
|
419
|
+
const tempHome = fs.mkdtempSync(path.join(os.tmpdir(), 'agents-sessions-view-agent-filter-'));
|
|
420
|
+
try {
|
|
421
|
+
writeUpdateCache(tempHome);
|
|
422
|
+
const projectDir = path.join(tempHome, 'work', 'agents-cli');
|
|
423
|
+
writeClaudeSession(tempHome, 'agents-cli-claude', 'dddddddd-dddd-4ddd-8ddd-dddddddddddd', projectDir, 'Shared filter phrase from claude', '2026-04-17T19:44:30.000Z');
|
|
424
|
+
writeCodexSession(tempHome, 'eeeeeeee-eeee-4eee-8eee-eeeeeeeeeeee', projectDir, 'Shared filter phrase from codex', '2026-04-17T19:45:30.000Z');
|
|
425
|
+
const result = runAgents(['sessions', 'view', '--agent', 'codex', 'shared filter phrase', '--transcript'], projectDir, tempHome);
|
|
426
|
+
expect(result.status).toBe(0);
|
|
427
|
+
const output = outputOf(result);
|
|
428
|
+
expect(output).toContain('Shared filter phrase from codex');
|
|
429
|
+
expect(output).not.toContain('Shared filter phrase from claude');
|
|
430
|
+
}
|
|
431
|
+
finally {
|
|
432
|
+
fs.rmSync(tempHome, { recursive: true, force: true });
|
|
433
|
+
}
|
|
434
|
+
});
|
|
435
|
+
});
|
|
436
|
+
//# sourceMappingURL=sessions.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessions.test.js","sourceRoot":"","sources":["../../../src/commands/__tests__/sessions.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/commands/commands.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"commands.d.ts","sourceRoot":"","sources":["../../src/commands/commands.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA6CzC,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA8d/D"}
|