@agtd/agent 0.1.2 → 0.1.3

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.
Files changed (110) hide show
  1. package/dist/agent.js +6 -49
  2. package/dist/{chunk-24ORBJSI.js → chunk-RJLNNX7L.js} +489 -32
  3. package/dist/cli.js +186 -120
  4. package/package.json +2 -1
  5. package/dist/__tests__/codexAdapterFindFile.test.d.ts +0 -2
  6. package/dist/__tests__/codexAdapterFindFile.test.d.ts.map +0 -1
  7. package/dist/__tests__/codexAdapterFindFile.test.js +0 -298
  8. package/dist/__tests__/codexAdapterFindFile.test.js.map +0 -1
  9. package/dist/__tests__/enrichers.test.d.ts +0 -2
  10. package/dist/__tests__/enrichers.test.d.ts.map +0 -1
  11. package/dist/__tests__/enrichers.test.js +0 -47
  12. package/dist/__tests__/enrichers.test.js.map +0 -1
  13. package/dist/__tests__/tmux.integration.test.d.ts +0 -2
  14. package/dist/__tests__/tmux.integration.test.d.ts.map +0 -1
  15. package/dist/__tests__/tmux.integration.test.js +0 -112
  16. package/dist/__tests__/tmux.integration.test.js.map +0 -1
  17. package/dist/__tests__/tmux.test.d.ts +0 -2
  18. package/dist/__tests__/tmux.test.d.ts.map +0 -1
  19. package/dist/__tests__/tmux.test.js +0 -26
  20. package/dist/__tests__/tmux.test.js.map +0 -1
  21. package/dist/__tests__/transcriptAdapters.test.d.ts +0 -2
  22. package/dist/__tests__/transcriptAdapters.test.d.ts.map +0 -1
  23. package/dist/__tests__/transcriptAdapters.test.js +0 -133
  24. package/dist/__tests__/transcriptAdapters.test.js.map +0 -1
  25. package/dist/adapters/claude-code.d.ts +0 -3
  26. package/dist/adapters/claude-code.d.ts.map +0 -1
  27. package/dist/adapters/claude-code.js +0 -48
  28. package/dist/adapters/claude-code.js.map +0 -1
  29. package/dist/adapters/codex.d.ts +0 -3
  30. package/dist/adapters/codex.d.ts.map +0 -1
  31. package/dist/adapters/codex.js +0 -33
  32. package/dist/adapters/codex.js.map +0 -1
  33. package/dist/adapters/generic.d.ts +0 -3
  34. package/dist/adapters/generic.d.ts.map +0 -1
  35. package/dist/adapters/generic.js +0 -38
  36. package/dist/adapters/generic.js.map +0 -1
  37. package/dist/adapters/index.d.ts +0 -7
  38. package/dist/adapters/index.d.ts.map +0 -1
  39. package/dist/adapters/index.js +0 -12
  40. package/dist/adapters/index.js.map +0 -1
  41. package/dist/agent.d.ts +0 -3
  42. package/dist/agent.d.ts.map +0 -1
  43. package/dist/agent.js.map +0 -1
  44. package/dist/cli.d.ts +0 -11
  45. package/dist/cli.d.ts.map +0 -1
  46. package/dist/cli.js.map +0 -1
  47. package/dist/config.d.ts +0 -26
  48. package/dist/config.d.ts.map +0 -1
  49. package/dist/config.js +0 -48
  50. package/dist/config.js.map +0 -1
  51. package/dist/enrichers/git.d.ts +0 -6
  52. package/dist/enrichers/git.d.ts.map +0 -1
  53. package/dist/enrichers/git.js +0 -20
  54. package/dist/enrichers/git.js.map +0 -1
  55. package/dist/enrichers/pr.d.ts +0 -2
  56. package/dist/enrichers/pr.d.ts.map +0 -1
  57. package/dist/enrichers/pr.js +0 -10
  58. package/dist/enrichers/pr.js.map +0 -1
  59. package/dist/enrichers/transcript.d.ts +0 -8
  60. package/dist/enrichers/transcript.d.ts.map +0 -1
  61. package/dist/enrichers/transcript.js +0 -33
  62. package/dist/enrichers/transcript.js.map +0 -1
  63. package/dist/heartbeat.d.ts +0 -4
  64. package/dist/heartbeat.d.ts.map +0 -1
  65. package/dist/heartbeat.js +0 -15
  66. package/dist/heartbeat.js.map +0 -1
  67. package/dist/init.d.ts +0 -10
  68. package/dist/init.d.ts.map +0 -1
  69. package/dist/init.js +0 -70
  70. package/dist/init.js.map +0 -1
  71. package/dist/register.d.ts +0 -3
  72. package/dist/register.d.ts.map +0 -1
  73. package/dist/register.js +0 -22
  74. package/dist/register.js.map +0 -1
  75. package/dist/sessionScanner.d.ts +0 -20
  76. package/dist/sessionScanner.d.ts.map +0 -1
  77. package/dist/sessionScanner.js +0 -479
  78. package/dist/sessionScanner.js.map +0 -1
  79. package/dist/spawn.d.ts +0 -8
  80. package/dist/spawn.d.ts.map +0 -1
  81. package/dist/spawn.js +0 -73
  82. package/dist/spawn.js.map +0 -1
  83. package/dist/syncProjects.d.ts +0 -3
  84. package/dist/syncProjects.d.ts.map +0 -1
  85. package/dist/syncProjects.js +0 -91
  86. package/dist/syncProjects.js.map +0 -1
  87. package/dist/terminalBridge.d.ts +0 -4
  88. package/dist/terminalBridge.d.ts.map +0 -1
  89. package/dist/terminalBridge.js +0 -42
  90. package/dist/terminalBridge.js.map +0 -1
  91. package/dist/tmux.d.ts +0 -21
  92. package/dist/tmux.d.ts.map +0 -1
  93. package/dist/tmux.js +0 -89
  94. package/dist/tmux.js.map +0 -1
  95. package/dist/transcriptAdapters/claude-code.d.ts +0 -3
  96. package/dist/transcriptAdapters/claude-code.d.ts.map +0 -1
  97. package/dist/transcriptAdapters/claude-code.js +0 -147
  98. package/dist/transcriptAdapters/claude-code.js.map +0 -1
  99. package/dist/transcriptAdapters/codex.d.ts +0 -3
  100. package/dist/transcriptAdapters/codex.d.ts.map +0 -1
  101. package/dist/transcriptAdapters/codex.js +0 -251
  102. package/dist/transcriptAdapters/codex.js.map +0 -1
  103. package/dist/transcriptAdapters/index.d.ts +0 -17
  104. package/dist/transcriptAdapters/index.d.ts.map +0 -1
  105. package/dist/transcriptAdapters/index.js +0 -9
  106. package/dist/transcriptAdapters/index.js.map +0 -1
  107. package/dist/wsClient.d.ts +0 -6
  108. package/dist/wsClient.d.ts.map +0 -1
  109. package/dist/wsClient.js +0 -156
  110. package/dist/wsClient.js.map +0 -1
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=enrichers.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"enrichers.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/enrichers.test.ts"],"names":[],"mappings":""}
@@ -1,47 +0,0 @@
1
- import { describe, it, expect } from "vitest";
2
- import { derivePrUrl } from "../enrichers/pr.js";
3
- import { parseTranscript } from "../enrichers/transcript.js";
4
- describe("PR URL enricher", () => {
5
- it("derives GitHub PR search URL from HTTPS remote", () => {
6
- const url = derivePrUrl("https://github.com/user/repo.git", "feat/my-branch");
7
- expect(url).toContain("github.com/user/repo/pulls");
8
- expect(url).toContain("head:feat%2Fmy-branch");
9
- });
10
- it("handles SSH remote URLs", () => {
11
- const url = derivePrUrl("git@github.com:user/repo.git", "fix/bug");
12
- expect(url).toContain("github.com/user/repo/pulls");
13
- expect(url).toContain("fix%2Fbug");
14
- });
15
- it("returns null for non-GitHub remotes", () => {
16
- expect(derivePrUrl("https://gitlab.com/user/repo.git", "main")).toBeNull();
17
- });
18
- it("returns null for empty inputs", () => {
19
- expect(derivePrUrl("", "main")).toBeNull();
20
- expect(derivePrUrl("https://github.com/u/r", "")).toBeNull();
21
- });
22
- });
23
- describe("Transcript parser", () => {
24
- it("extracts model name", () => {
25
- const result = parseTranscript("Using model: claude-sonnet-4-5");
26
- expect(result.model).toBe("claude-sonnet-4-5");
27
- });
28
- it("extracts context percentage", () => {
29
- const result = parseTranscript("context: 61%");
30
- expect(result.contextPercent).toBe(61);
31
- });
32
- it("extracts MCP servers", () => {
33
- const result = parseTranscript("mcp: [github, filesystem]");
34
- expect(result.mcpServers).toEqual(["github", "filesystem"]);
35
- });
36
- it("returns nulls for empty input", () => {
37
- const result = parseTranscript("");
38
- expect(result.model).toBeNull();
39
- expect(result.contextPercent).toBeNull();
40
- expect(result.mcpServers).toBeNull();
41
- });
42
- it("handles GPT model names", () => {
43
- const result = parseTranscript("model: gpt-4o-mini");
44
- expect(result.model).toBe("gpt-4o-mini");
45
- });
46
- });
47
- //# sourceMappingURL=enrichers.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"enrichers.test.js","sourceRoot":"","sources":["../../src/__tests__/enrichers.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=tmux.integration.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tmux.integration.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/tmux.integration.test.ts"],"names":[],"mappings":""}
@@ -1,112 +0,0 @@
1
- /**
2
- * Integration tests for tmux key-sending approaches.
3
- *
4
- * Key findings from empirical testing:
5
- * - Both hex mode (buildSendKeysCmd) and plain send-keys (buildSendMessageCmd) deliver
6
- * the SAME bytes to the running program. For 'hello world' + Enter, both deliver
7
- * the string as a single data event with bytes [68 65 6c 6c 6f 20 77 6f 72 6c 64 0d].
8
- * - readline.emitKeypressEvents (used by Ink/Codex internally) correctly parses a
9
- * batched data event into individual keypress events: h, e, l, l, o, ..., return.
10
- * - However, Ink TUIs may be mid-render when input arrives; sending chars one at a
11
- * time (with 20ms delays) is more reliable for interactive TUIs.
12
- *
13
- * Skipped automatically if tmux is not available.
14
- */
15
- import { describe, it, expect, afterEach } from "vitest";
16
- import { execSync } from "node:child_process";
17
- import * as fs from "node:fs";
18
- import * as os from "node:os";
19
- import * as path from "node:path";
20
- import { isTmuxAvailable, tmuxExec, buildSendKeysCmd, buildSendMessageCmd, buildCapturePaneCmd, sanitizeShellArg, } from "../tmux.js";
21
- const AVAILABLE = isTmuxAvailable();
22
- const PREFIX = `agtd-itest-${Date.now()}`;
23
- function killSession(name) {
24
- try {
25
- execSync(`tmux kill-session -t '${sanitizeShellArg(name)}'`, {
26
- stdio: "pipe",
27
- });
28
- }
29
- catch { }
30
- }
31
- function newSession(name) {
32
- tmuxExec(`tmux new-session -d -s '${sanitizeShellArg(name)}'`);
33
- }
34
- /** Poll capture-pane every 100 ms until pattern matches or timeout. */
35
- async function waitFor(session, pattern, timeoutMs = 5000) {
36
- const deadline = Date.now() + timeoutMs;
37
- while (Date.now() < deadline) {
38
- const out = tmuxExec(buildCapturePaneCmd(session));
39
- if (pattern.test(out))
40
- return out;
41
- await new Promise((r) => setTimeout(r, 100));
42
- }
43
- return tmuxExec(buildCapturePaneCmd(session));
44
- }
45
- function writeTmpScript(code) {
46
- const dir = fs.mkdtempSync(path.join(os.tmpdir(), "agtd-test-"));
47
- const file = path.join(dir, "script.mjs");
48
- fs.writeFileSync(file, code);
49
- return file;
50
- }
51
- // ── Verify byte delivery ──────────────────────────────────────────────────
52
- describe.skipIf(!AVAILABLE)("tmux byte delivery — both send approaches", () => {
53
- const session = `${PREFIX}-bytes`;
54
- afterEach(() => killSession(session));
55
- // Raw-mode Node.js script that logs each keypress (uses readline.emitKeypressEvents
56
- // internally, same as Ink/Codex)
57
- const SCRIPT = writeTmpScript(`
58
- import readline from 'readline';
59
- readline.emitKeypressEvents(process.stdin);
60
- if (process.stdin.isTTY) process.stdin.setRawMode(true);
61
- process.stdin.resume();
62
- process.stdin.setEncoding('utf8');
63
- let buf = '';
64
- process.stdin.on('keypress', (ch, key) => {
65
- if (key?.name === 'return') {
66
- process.stdout.write('GOT:' + buf + '\\n');
67
- buf = '';
68
- return;
69
- }
70
- if (key?.ctrl && key?.name === 'c') process.exit(0);
71
- if (ch) buf += ch;
72
- });
73
- process.stdout.write('READY\\n');
74
- `);
75
- async function setup() {
76
- killSession(session);
77
- newSession(session);
78
- tmuxExec(`tmux send-keys -t '${sanitizeShellArg(session)}' 'node ${SCRIPT}' Enter`);
79
- await waitFor(session, /READY/, 3000);
80
- await new Promise((r) => setTimeout(r, 300));
81
- }
82
- it("buildSendMessageCmd ('text' Enter) delivers chars via emitKeypressEvents", async () => {
83
- await setup();
84
- tmuxExec(buildSendMessageCmd(session, "hello world"));
85
- const out = await waitFor(session, /GOT:/, 3000);
86
- expect(out).toContain("GOT:hello world");
87
- });
88
- it("char-by-char hex mode (user-message approach) delivers chars correctly", async () => {
89
- await setup();
90
- // Simulate what the user-message handler now does: send each char, then CR
91
- for (const char of "hello chars") {
92
- tmuxExec(buildSendKeysCmd(session, char));
93
- await new Promise((r) => setTimeout(r, 20));
94
- }
95
- tmuxExec(buildSendKeysCmd(session, "\r"));
96
- const out = await waitFor(session, /GOT:/, 3000);
97
- expect(out).toContain("GOT:hello chars");
98
- });
99
- it("messages with special characters (quotes, backticks) are delivered", async () => {
100
- await setup();
101
- const msg = "fix it's bug";
102
- // char-by-char (agent approach)
103
- for (const char of msg) {
104
- tmuxExec(buildSendKeysCmd(session, char));
105
- await new Promise((r) => setTimeout(r, 20));
106
- }
107
- tmuxExec(buildSendKeysCmd(session, "\r"));
108
- const out = await waitFor(session, /GOT:/, 3000);
109
- expect(out).toContain(`GOT:${msg}`);
110
- });
111
- }, { timeout: 30000 });
112
- //# sourceMappingURL=tmux.integration.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tmux.integration.test.js","sourceRoot":"","sources":["../../src/__tests__/tmux.integration.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=tmux.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tmux.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/tmux.test.ts"],"names":[],"mappings":""}
@@ -1,26 +0,0 @@
1
- import { describe, it, expect } from "vitest";
2
- import { buildCreateSessionCmd, buildCreateWindowCmd, buildSendKeysCmd, buildCapturePaneCmd, } from "../tmux.js";
3
- describe("tmux command builders", () => {
4
- it("builds create session command", () => {
5
- const cmd = buildCreateSessionCmd("aidash-s1", "/code/proj");
6
- expect(cmd).toBe("tmux new-session -d -s 'aidash-s1' -c '/code/proj'");
7
- });
8
- it("builds create window command", () => {
9
- const cmd = buildCreateWindowCmd("aidash-s1", "my-window", "/code/proj");
10
- expect(cmd).toBe("tmux new-window -t 'aidash-s1' -n 'my-window' -c '/code/proj'");
11
- });
12
- it("builds send-keys command with hex-encoded bytes", () => {
13
- const cmd = buildSendKeysCmd("aidash-s1", "hi");
14
- // "hi" = 0x68 0x69
15
- expect(cmd).toBe("tmux send-keys -t 'aidash-s1' -H 68 69");
16
- });
17
- it("sends Enter key as hex 0d (carriage return)", () => {
18
- const cmd = buildSendKeysCmd("aidash-s1", "\r");
19
- expect(cmd).toBe("tmux send-keys -t 'aidash-s1' -H 0d");
20
- });
21
- it("builds capture-pane command with ANSI escape preservation", () => {
22
- const cmd = buildCapturePaneCmd("aidash-s1");
23
- expect(cmd).toBe("tmux capture-pane -t 'aidash-s1' -p -e -S -");
24
- });
25
- });
26
- //# sourceMappingURL=tmux.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tmux.test.js","sourceRoot":"","sources":["../../src/__tests__/tmux.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,YAAY,CAAC;AAEpB,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACvC,MAAM,GAAG,GAAG,qBAAqB,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QAC7D,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,oDAAoD,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,MAAM,GAAG,GAAG,oBAAoB,CAAC,WAAW,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;QACzE,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CACd,+DAA+D,CAChE,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,MAAM,GAAG,GAAG,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QAChD,mBAAmB;QACnB,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,MAAM,GAAG,GAAG,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QAChD,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2DAA2D,EAAE,GAAG,EAAE;QACnE,MAAM,GAAG,GAAG,mBAAmB,CAAC,WAAW,CAAC,CAAC;QAC7C,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=transcriptAdapters.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"transcriptAdapters.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/transcriptAdapters.test.ts"],"names":[],"mappings":""}
@@ -1,133 +0,0 @@
1
- import { describe, it, expect, beforeAll, afterAll } from "vitest";
2
- import { writeFileSync, mkdirSync, rmSync } from "node:fs";
3
- import { join } from "node:path";
4
- import { tmpdir } from "node:os";
5
- import { claudeCodeAdapter } from "../transcriptAdapters/claude-code.js";
6
- import { codexAdapter } from "../transcriptAdapters/codex.js";
7
- const FAKE_SESSION = {
8
- id: "sess_test",
9
- deviceId: "dev1",
10
- projectId: null,
11
- agentType: "claude-code",
12
- agentCommand: "",
13
- cwd: "/projects/myapp",
14
- branch: "main",
15
- status: "idle",
16
- task: "",
17
- model: null,
18
- contextPercent: null,
19
- mcpServers: null,
20
- prUrl: null,
21
- tmuxSession: "aidash-sess_test",
22
- tmuxWindow: "claude",
23
- lastHeartbeatAt: new Date().toISOString(),
24
- codexThreadId: null,
25
- };
26
- const USER_LINE = JSON.stringify({
27
- type: "user",
28
- uuid: "uuid-1",
29
- timestamp: "2026-01-01T00:00:00Z",
30
- message: { content: [{ type: "text", text: "Hello Claude" }] },
31
- });
32
- const ASSISTANT_LINE = JSON.stringify({
33
- type: "assistant",
34
- uuid: "uuid-2",
35
- timestamp: "2026-01-01T00:00:01Z",
36
- message: {
37
- content: [{ type: "text", text: "Hi there!" }],
38
- model: "claude-opus-4-6",
39
- usage: { input_tokens: 10, output_tokens: 5 },
40
- },
41
- });
42
- describe("claudeCodeAdapter", () => {
43
- const tmpDir = join(tmpdir(), "agtd-test-" + Date.now());
44
- // The adapter constructs: join(homeDir, ".claude", "projects", cwd.replace(/\//g, "-"))
45
- // For cwd="/projects/myapp" the dir name is "-projects-myapp"
46
- const projectDir = join(tmpDir, ".claude", "projects", "-projects-myapp");
47
- const jsonlPath = join(projectDir, "session.jsonl");
48
- beforeAll(() => {
49
- mkdirSync(projectDir, { recursive: true });
50
- writeFileSync(jsonlPath, [USER_LINE, ASSISTANT_LINE].join("\n") + "\n");
51
- });
52
- afterAll(() => {
53
- rmSync(tmpDir, { recursive: true, force: true });
54
- });
55
- it("findFile returns path when project dir contains a jsonl file", () => {
56
- // Pass tmpDir as homeDir so the adapter looks in tmpDir/.claude/projects/...
57
- const path = claudeCodeAdapter.findFile(FAKE_SESSION, tmpDir);
58
- expect(path).toBe(jsonlPath);
59
- });
60
- it("parse returns messages with correct roles", () => {
61
- const result = claudeCodeAdapter.parse(jsonlPath, 0, 50);
62
- expect(result.messages).toHaveLength(2);
63
- expect(result.messages[0].role).toBe("user");
64
- const c0 = result.messages[0].content[0];
65
- expect(c0.type).toBe("text");
66
- expect(c0.text).toBe("Hello Claude");
67
- expect(result.messages[1].role).toBe("assistant");
68
- expect(result.messages[1].model).toBe("claude-opus-4-6");
69
- });
70
- it("parse respects cursor and limit", () => {
71
- const result = claudeCodeAdapter.parse(jsonlPath, 1, 1);
72
- expect(result.messages).toHaveLength(1);
73
- expect(result.messages[0].role).toBe("assistant");
74
- expect(result.hasMore).toBe(false);
75
- expect(result.total).toBe(2);
76
- });
77
- it("parse returns empty result for missing file", () => {
78
- const result = claudeCodeAdapter.parse("/nonexistent/path.jsonl", 0, 50);
79
- expect(result.messages).toHaveLength(0);
80
- expect(result.total).toBe(0);
81
- expect(result.hasMore).toBe(false);
82
- });
83
- });
84
- const CODEX_USER_LINE = JSON.stringify({
85
- type: "response_item",
86
- timestamp: "2026-01-01T00:00:00Z",
87
- payload: {
88
- type: "message",
89
- role: "user",
90
- content: [{ type: "text", text: "fix the bug" }],
91
- },
92
- });
93
- const CODEX_ASSISTANT_LINE = JSON.stringify({
94
- type: "response_item",
95
- timestamp: "2026-01-01T00:00:01Z",
96
- payload: {
97
- type: "message",
98
- role: "assistant",
99
- content: [{ type: "text", text: "Done!" }],
100
- },
101
- });
102
- describe("codexAdapter", () => {
103
- const codexTmpDir = join(tmpdir(), "agtd-codex-test-" + Date.now());
104
- // Codex sessions are stored under sessions/YEAR/MONTH/DAY/file.jsonl
105
- const sessionDir = join(codexTmpDir, ".codex", "sessions", "2026", "01", "01");
106
- const jsonlPath = join(sessionDir, "session.jsonl");
107
- beforeAll(() => {
108
- mkdirSync(sessionDir, { recursive: true });
109
- writeFileSync(jsonlPath, [CODEX_USER_LINE, CODEX_ASSISTANT_LINE].join("\n") + "\n");
110
- });
111
- afterAll(() => {
112
- rmSync(codexTmpDir, { recursive: true, force: true });
113
- });
114
- it("findFile returns latest jsonl in sessions dir when SQLite absent", () => {
115
- const CODEX_SESSION = {
116
- id: "codex-123",
117
- cwd: "/projects/x",
118
- agentType: "codex",
119
- };
120
- const path = codexAdapter.findFile(CODEX_SESSION, codexTmpDir);
121
- expect(path).toBe(jsonlPath);
122
- });
123
- it("parse returns user and assistant messages", () => {
124
- const result = codexAdapter.parse(jsonlPath, 0, 50);
125
- expect(result.messages).toHaveLength(2);
126
- expect(result.messages[0].role).toBe("user");
127
- const c0 = result.messages[0].content[0];
128
- expect(c0.type).toBe("text");
129
- expect(c0.text).toBe("fix the bug");
130
- expect(result.messages[1].role).toBe("assistant");
131
- });
132
- });
133
- //# sourceMappingURL=transcriptAdapters.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"transcriptAdapters.test.js","sourceRoot":"","sources":["../../src/__tests__/transcriptAdapters.test.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import type { AgentAdapter } from "./index.js";
2
- export declare const claudeCodeAdapter: AgentAdapter;
3
- //# sourceMappingURL=claude-code.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"claude-code.d.ts","sourceRoot":"","sources":["../../src/adapters/claude-code.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAM/C,eAAO,MAAM,iBAAiB,EAAE,YA6C/B,CAAC"}
@@ -1,48 +0,0 @@
1
- function escapeForShell(str) {
2
- return str.replace(/'/g, "'\\''");
3
- }
4
- export const claudeCodeAdapter = {
5
- type: "claude-code",
6
- buildSpawnCommand(_task, cwd) {
7
- const escapedCwd = escapeForShell(cwd);
8
- // Start in interactive mode (no -p flag which exits after one response)
9
- return `cd '${escapedCwd}' && claude`;
10
- },
11
- hookInstallInstructions() {
12
- return [
13
- "To install the Claude Code hook for the agent dashboard:",
14
- "",
15
- "1. Edit (or create) ~/.claude/hooks.json",
16
- "2. Add the following hook configuration:",
17
- "",
18
- " {",
19
- ' "hooks": {',
20
- ' "PreToolUse": [',
21
- " {",
22
- ' "type": "command",',
23
- ' "command": "/path/to/packages/agent/src/hooks/claude-hook.sh PreToolUse"',
24
- " }",
25
- " ],",
26
- ' "PostToolUse": [',
27
- " {",
28
- ' "type": "command",',
29
- ' "command": "/path/to/packages/agent/src/hooks/claude-hook.sh PostToolUse"',
30
- " }",
31
- " ],",
32
- ' "Stop": [',
33
- " {",
34
- ' "type": "command",',
35
- ' "command": "/path/to/packages/agent/src/hooks/claude-hook.sh Stop"',
36
- " }",
37
- " ]",
38
- " }",
39
- " }",
40
- "",
41
- "3. Set the following environment variables:",
42
- " - AGENT_DASHBOARD_BACKEND (e.g., http://localhost:3001)",
43
- " - AGENT_DASHBOARD_DEVICE_ID",
44
- " - AGENT_DASHBOARD_API_KEY",
45
- ].join("\n");
46
- },
47
- };
48
- //# sourceMappingURL=claude-code.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"claude-code.js","sourceRoot":"","sources":["../../src/adapters/claude-code.ts"],"names":[],"mappings":"AAEA,SAAS,cAAc,CAAC,GAAW;IACjC,OAAO,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,CAAC,MAAM,iBAAiB,GAAiB;IAC7C,IAAI,EAAE,aAAa;IAEnB,iBAAiB,CAAC,KAAa,EAAE,GAAW;QAC1C,MAAM,UAAU,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;QACvC,wEAAwE;QACxE,OAAO,OAAO,UAAU,aAAa,CAAC;IACxC,CAAC;IAED,uBAAuB;QACrB,OAAO;YACL,0DAA0D;YAC1D,EAAE;YACF,0CAA0C;YAC1C,0CAA0C;YAC1C,EAAE;YACF,MAAM;YACN,iBAAiB;YACjB,wBAAwB;YACxB,YAAY;YACZ,+BAA+B;YAC/B,qFAAqF;YACrF,YAAY;YACZ,WAAW;YACX,yBAAyB;YACzB,YAAY;YACZ,+BAA+B;YAC/B,sFAAsF;YACtF,YAAY;YACZ,WAAW;YACX,kBAAkB;YAClB,YAAY;YACZ,+BAA+B;YAC/B,+EAA+E;YAC/E,YAAY;YACZ,UAAU;YACV,QAAQ;YACR,MAAM;YACN,EAAE;YACF,6CAA6C;YAC7C,4DAA4D;YAC5D,gCAAgC;YAChC,8BAA8B;SAC/B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC;CACF,CAAC"}
@@ -1,3 +0,0 @@
1
- import type { AgentAdapter } from "./index.js";
2
- export declare const codexAdapter: AgentAdapter;
3
- //# sourceMappingURL=codex.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"codex.d.ts","sourceRoot":"","sources":["../../src/adapters/codex.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAM/C,eAAO,MAAM,YAAY,EAAE,YA8B1B,CAAC"}
@@ -1,33 +0,0 @@
1
- function escapeForShell(str) {
2
- return str.replace(/'/g, "'\\''");
3
- }
4
- export const codexAdapter = {
5
- type: "codex",
6
- buildSpawnCommand(task, cwd) {
7
- const escapedTask = escapeForShell(task);
8
- const escapedCwd = escapeForShell(cwd);
9
- return `cd '${escapedCwd}' && codex '${escapedTask}'`;
10
- },
11
- hookInstallInstructions() {
12
- return [
13
- "To install the Codex hook for the agent dashboard:",
14
- "",
15
- "1. Use the codex-hook.sh wrapper script instead of calling codex directly:",
16
- "",
17
- " ./packages/agent/src/hooks/codex-hook.sh 'your task here'",
18
- "",
19
- " The wrapper script will:",
20
- " - Send a working heartbeat before running codex",
21
- " - Start a background keepalive loop (every 10s)",
22
- " - Run codex with the provided task",
23
- " - Send an idle heartbeat on exit",
24
- "",
25
- "2. Set the following environment variables:",
26
- " - AGENT_DASHBOARD_BACKEND (e.g., http://localhost:3001)",
27
- " - AGENT_DASHBOARD_DEVICE_ID",
28
- " - AGENT_DASHBOARD_API_KEY",
29
- " - AGENT_DASHBOARD_SESSION_ID (unique session identifier)",
30
- ].join("\n");
31
- },
32
- };
33
- //# sourceMappingURL=codex.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"codex.js","sourceRoot":"","sources":["../../src/adapters/codex.ts"],"names":[],"mappings":"AAEA,SAAS,cAAc,CAAC,GAAW;IACjC,OAAO,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,CAAC,MAAM,YAAY,GAAiB;IACxC,IAAI,EAAE,OAAO;IAEb,iBAAiB,CAAC,IAAY,EAAE,GAAW;QACzC,MAAM,WAAW,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,UAAU,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;QACvC,OAAO,OAAO,UAAU,eAAe,WAAW,GAAG,CAAC;IACxD,CAAC;IAED,uBAAuB;QACrB,OAAO;YACL,oDAAoD;YACpD,EAAE;YACF,4EAA4E;YAC5E,EAAE;YACF,8DAA8D;YAC9D,EAAE;YACF,6BAA6B;YAC7B,oDAAoD;YACpD,oDAAoD;YACpD,uCAAuC;YACvC,qCAAqC;YACrC,EAAE;YACF,6CAA6C;YAC7C,4DAA4D;YAC5D,gCAAgC;YAChC,8BAA8B;YAC9B,6DAA6D;SAC9D,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC;CACF,CAAC"}
@@ -1,3 +0,0 @@
1
- import type { AgentAdapter } from "./index.js";
2
- export declare const genericAdapter: AgentAdapter;
3
- //# sourceMappingURL=generic.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"generic.d.ts","sourceRoot":"","sources":["../../src/adapters/generic.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAM/C,eAAO,MAAM,cAAc,EAAE,YAmC5B,CAAC"}
@@ -1,38 +0,0 @@
1
- function escapeForShell(str) {
2
- return str.replace(/'/g, "'\\''");
3
- }
4
- export const genericAdapter = {
5
- type: "generic",
6
- buildSpawnCommand(task, cwd) {
7
- const escapedTask = escapeForShell(task);
8
- const escapedCwd = escapeForShell(cwd);
9
- return `cd '${escapedCwd}' && echo 'Task: ${escapedTask}'`;
10
- },
11
- hookInstallInstructions() {
12
- return [
13
- "To send heartbeats from a generic agent to the dashboard:",
14
- "",
15
- "1. Use the generic-hook.sh script to send manual heartbeat updates:",
16
- "",
17
- " ./packages/agent/src/hooks/generic-hook.sh <session_id> <status> [task]",
18
- "",
19
- " Examples:",
20
- ' ./packages/agent/src/hooks/generic-hook.sh my-session working "Implementing feature X"',
21
- " ./packages/agent/src/hooks/generic-hook.sh my-session idle",
22
- " ./packages/agent/src/hooks/generic-hook.sh my-session awaiting_permission",
23
- "",
24
- "2. Or send heartbeats directly via curl:",
25
- "",
26
- " curl -X POST $AGENT_DASHBOARD_BACKEND/api/agent/heartbeat \\",
27
- ' -H "Content-Type: application/json" \\',
28
- ' -H "x-api-key: $AGENT_DASHBOARD_API_KEY" \\',
29
- " -d '{\"deviceId\": \"...\", \"sessionId\": \"...\", \"status\": \"working\"}'",
30
- "",
31
- "3. Set the following environment variables:",
32
- " - AGENT_DASHBOARD_BACKEND (e.g., http://localhost:3001)",
33
- " - AGENT_DASHBOARD_DEVICE_ID",
34
- " - AGENT_DASHBOARD_API_KEY",
35
- ].join("\n");
36
- },
37
- };
38
- //# sourceMappingURL=generic.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"generic.js","sourceRoot":"","sources":["../../src/adapters/generic.ts"],"names":[],"mappings":"AAEA,SAAS,cAAc,CAAC,GAAW;IACjC,OAAO,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,CAAC,MAAM,cAAc,GAAiB;IAC1C,IAAI,EAAE,SAAS;IAEf,iBAAiB,CAAC,IAAY,EAAE,GAAW;QACzC,MAAM,WAAW,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,UAAU,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;QACvC,OAAO,OAAO,UAAU,oBAAoB,WAAW,GAAG,CAAC;IAC7D,CAAC;IAED,uBAAuB;QACrB,OAAO;YACL,2DAA2D;YAC3D,EAAE;YACF,qEAAqE;YACrE,EAAE;YACF,4EAA4E;YAC5E,EAAE;YACF,cAAc;YACd,2FAA2F;YAC3F,+DAA+D;YAC/D,8EAA8E;YAC9E,EAAE;YACF,0CAA0C;YAC1C,EAAE;YACF,iEAAiE;YACjE,6CAA6C;YAC7C,kDAAkD;YAClD,oFAAoF;YACpF,EAAE;YACF,6CAA6C;YAC7C,4DAA4D;YAC5D,gCAAgC;YAChC,8BAA8B;SAC/B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACf,CAAC;CACF,CAAC"}
@@ -1,7 +0,0 @@
1
- export interface AgentAdapter {
2
- type: string;
3
- buildSpawnCommand(task: string, cwd: string): string;
4
- hookInstallInstructions(): string;
5
- }
6
- export declare function getAdapter(agentType: string): AgentAdapter;
7
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;IACrD,uBAAuB,IAAI,MAAM,CAAC;CACnC;AAYD,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,YAAY,CAE1D"}
@@ -1,12 +0,0 @@
1
- import { claudeCodeAdapter } from "./claude-code.js";
2
- import { codexAdapter } from "./codex.js";
3
- import { genericAdapter } from "./generic.js";
4
- const adapters = {
5
- "claude-code": claudeCodeAdapter,
6
- "codex": codexAdapter,
7
- "generic": genericAdapter,
8
- };
9
- export function getAdapter(agentType) {
10
- return adapters[agentType] || genericAdapter;
11
- }
12
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,MAAM,QAAQ,GAAiC;IAC7C,aAAa,EAAE,iBAAiB;IAChC,OAAO,EAAE,YAAY;IACrB,SAAS,EAAE,cAAc;CAC1B,CAAC;AAEF,MAAM,UAAU,UAAU,CAAC,SAAiB;IAC1C,OAAO,QAAQ,CAAC,SAAS,CAAC,IAAI,cAAc,CAAC;AAC/C,CAAC"}
package/dist/agent.d.ts DELETED
@@ -1,3 +0,0 @@
1
- import type { AgentConfig } from "./config.js";
2
- export declare function startAgent(config: AgentConfig): Promise<void>;
3
- //# sourceMappingURL=agent.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AA2B/C,wBAAsB,UAAU,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAmBnE"}
package/dist/agent.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAErD,KAAK,UAAU,cAAc,CAC3B,MAAmB,EACnB,UAAU,GAAG,EAAE;IAEf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,IAAI,CAAC;YACH,MAAM,cAAc,CAAC,MAAM,CAAC,CAAC;YAC7B,OAAO;QACT,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACnD,OAAO,CAAC,GAAG,CACT,kCAAkC,QAAQ,SAAS,CAAC,GAAG,CAAC,IAAI,UAAU,GAAG,CAC1E,CAAC;YACF,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,MAAmB;IAClD,OAAO,CAAC,GAAG,CAAC,8BAA8B,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC7D,OAAO,CAAC,GAAG,CAAC,YAAY,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;IAE7C,MAAM,cAAc,CAAC,MAAM,CAAC,CAAC;IAC7B,MAAM,YAAY,CAAC,MAAM,CAAC,CAAC;IAC3B,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAEzB,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAE5B,WAAW,CAAC,KAAK,IAAI,EAAE;QACrB,IAAI,CAAC;YACH,MAAM,cAAc,CAAC,MAAM,CAAC,CAAC;QAC/B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC;QACxC,CAAC;IACH,CAAC,EAAE,qBAAqB,CAAC,CAAC;IAE1B,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;AACtD,CAAC;AAED,uCAAuC;AACvC,MAAM,WAAW,GACf,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACf,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;AAEhE,IAAI,WAAW,EAAE,CAAC;IAChB,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACnC,MAAM,MAAM,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;IACtC,UAAU,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE;QAC7B,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;QAClC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC"}
package/dist/cli.d.ts DELETED
@@ -1,11 +0,0 @@
1
- interface ParsedArgs {
2
- init: boolean;
3
- backend?: string;
4
- apiKey?: string;
5
- deviceName?: string;
6
- configPath?: string;
7
- help: boolean;
8
- }
9
- export declare function parseArgs(argv: string[]): ParsedArgs;
10
- export {};
11
- //# sourceMappingURL=cli.d.ts.map
package/dist/cli.d.ts.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAaA,UAAU,UAAU;IAClB,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,OAAO,CAAC;CACf;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CAmCpD"}
package/dist/cli.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}