sweteam 0.6.3 → 0.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (134) hide show
  1. package/README.md +19 -9
  2. package/dist/adapters/adapter.d.ts +1 -0
  3. package/dist/adapters/adapter.d.ts.map +1 -1
  4. package/dist/adapters/adapter.js.map +1 -1
  5. package/dist/adapters/claude-code.d.ts +1 -0
  6. package/dist/adapters/claude-code.d.ts.map +1 -1
  7. package/dist/adapters/claude-code.js +38 -6
  8. package/dist/adapters/claude-code.js.map +1 -1
  9. package/dist/adapters/codex.d.ts +1 -0
  10. package/dist/adapters/codex.d.ts.map +1 -1
  11. package/dist/adapters/codex.js +31 -9
  12. package/dist/adapters/codex.js.map +1 -1
  13. package/dist/adapters/custom.d.ts +1 -0
  14. package/dist/adapters/custom.d.ts.map +1 -1
  15. package/dist/adapters/custom.js +43 -22
  16. package/dist/adapters/custom.js.map +1 -1
  17. package/dist/adapters/opencode.d.ts +1 -0
  18. package/dist/adapters/opencode.d.ts.map +1 -1
  19. package/dist/adapters/opencode.js +31 -9
  20. package/dist/adapters/opencode.js.map +1 -1
  21. package/dist/adapters/prompt-detection.d.ts.map +1 -1
  22. package/dist/adapters/prompt-detection.js +7 -0
  23. package/dist/adapters/prompt-detection.js.map +1 -1
  24. package/dist/commands/delete.js +2 -2
  25. package/dist/commands/delete.js.map +1 -1
  26. package/dist/commands/enter.d.ts +0 -1
  27. package/dist/commands/enter.d.ts.map +1 -1
  28. package/dist/commands/enter.js +0 -7
  29. package/dist/commands/enter.js.map +1 -1
  30. package/dist/commands/list.d.ts.map +1 -1
  31. package/dist/commands/list.js +48 -47
  32. package/dist/commands/list.js.map +1 -1
  33. package/dist/commands/show.d.ts.map +1 -1
  34. package/dist/commands/show.js +58 -41
  35. package/dist/commands/show.js.map +1 -1
  36. package/dist/config/loader.d.ts +1 -0
  37. package/dist/config/loader.d.ts.map +1 -1
  38. package/dist/config/loader.js +17 -0
  39. package/dist/config/loader.js.map +1 -1
  40. package/dist/db/schema.d.ts.map +1 -1
  41. package/dist/db/schema.js +10 -4
  42. package/dist/db/schema.js.map +1 -1
  43. package/dist/git/git.d.ts +1 -1
  44. package/dist/git/git.d.ts.map +1 -1
  45. package/dist/git/git.js +67 -28
  46. package/dist/git/git.js.map +1 -1
  47. package/dist/index.js +17 -2
  48. package/dist/index.js.map +1 -1
  49. package/dist/lifecycle.d.ts +1 -1
  50. package/dist/lifecycle.d.ts.map +1 -1
  51. package/dist/lifecycle.js +43 -26
  52. package/dist/lifecycle.js.map +1 -1
  53. package/dist/orchestrator/build-handler.d.ts +1 -1
  54. package/dist/orchestrator/build-handler.d.ts.map +1 -1
  55. package/dist/orchestrator/build-handler.js +26 -10
  56. package/dist/orchestrator/build-handler.js.map +1 -1
  57. package/dist/orchestrator/dag.d.ts +2 -0
  58. package/dist/orchestrator/dag.d.ts.map +1 -1
  59. package/dist/orchestrator/dag.js +30 -7
  60. package/dist/orchestrator/dag.js.map +1 -1
  61. package/dist/orchestrator/error-handling.d.ts +0 -19
  62. package/dist/orchestrator/error-handling.d.ts.map +1 -1
  63. package/dist/orchestrator/error-handling.js +0 -106
  64. package/dist/orchestrator/error-handling.js.map +1 -1
  65. package/dist/orchestrator/feedback-handler.d.ts +7 -1
  66. package/dist/orchestrator/feedback-handler.d.ts.map +1 -1
  67. package/dist/orchestrator/feedback-handler.js +43 -25
  68. package/dist/orchestrator/feedback-handler.js.map +1 -1
  69. package/dist/orchestrator/orchestrator.d.ts +3 -1
  70. package/dist/orchestrator/orchestrator.d.ts.map +1 -1
  71. package/dist/orchestrator/orchestrator.js +122 -65
  72. package/dist/orchestrator/orchestrator.js.map +1 -1
  73. package/dist/orchestrator/parallel-runner.d.ts +3 -1
  74. package/dist/orchestrator/parallel-runner.d.ts.map +1 -1
  75. package/dist/orchestrator/parallel-runner.js +16 -3
  76. package/dist/orchestrator/parallel-runner.js.map +1 -1
  77. package/dist/orchestrator/reviewer.d.ts +5 -1
  78. package/dist/orchestrator/reviewer.d.ts.map +1 -1
  79. package/dist/orchestrator/reviewer.js +15 -7
  80. package/dist/orchestrator/reviewer.js.map +1 -1
  81. package/dist/orchestrator/task-runner.d.ts +1 -0
  82. package/dist/orchestrator/task-runner.d.ts.map +1 -1
  83. package/dist/orchestrator/task-runner.js +6 -4
  84. package/dist/orchestrator/task-runner.js.map +1 -1
  85. package/dist/planner/plan-parser.d.ts.map +1 -1
  86. package/dist/planner/plan-parser.js +11 -3
  87. package/dist/planner/plan-parser.js.map +1 -1
  88. package/dist/planner/planner.d.ts +2 -2
  89. package/dist/planner/planner.d.ts.map +1 -1
  90. package/dist/planner/planner.js +6 -4
  91. package/dist/planner/planner.js.map +1 -1
  92. package/dist/repl/repl.d.ts +2 -0
  93. package/dist/repl/repl.d.ts.map +1 -1
  94. package/dist/repl/repl.js +137 -113
  95. package/dist/repl/repl.js.map +1 -1
  96. package/dist/session/agent-log.d.ts.map +1 -1
  97. package/dist/session/agent-log.js +15 -4
  98. package/dist/session/agent-log.js.map +1 -1
  99. package/dist/session/in-session-commands.d.ts.map +1 -1
  100. package/dist/session/in-session-commands.js +97 -77
  101. package/dist/session/in-session-commands.js.map +1 -1
  102. package/dist/session/interactive.d.ts +6 -0
  103. package/dist/session/interactive.d.ts.map +1 -1
  104. package/dist/session/interactive.js +114 -32
  105. package/dist/session/interactive.js.map +1 -1
  106. package/dist/session/manager.d.ts +1 -1
  107. package/dist/session/manager.d.ts.map +1 -1
  108. package/dist/session/manager.js +9 -4
  109. package/dist/session/manager.js.map +1 -1
  110. package/dist/ui/agent-panel.d.ts.map +1 -1
  111. package/dist/ui/agent-panel.js +29 -14
  112. package/dist/ui/agent-panel.js.map +1 -1
  113. package/dist/ui/banner.d.ts +2 -4
  114. package/dist/ui/banner.d.ts.map +1 -1
  115. package/dist/ui/banner.js +61 -70
  116. package/dist/ui/banner.js.map +1 -1
  117. package/dist/ui/markdown.d.ts.map +1 -1
  118. package/dist/ui/markdown.js +42 -36
  119. package/dist/ui/markdown.js.map +1 -1
  120. package/dist/ui/prompt.d.ts.map +1 -1
  121. package/dist/ui/prompt.js +29 -15
  122. package/dist/ui/prompt.js.map +1 -1
  123. package/dist/ui/sidebar.d.ts +0 -1
  124. package/dist/ui/sidebar.d.ts.map +1 -1
  125. package/dist/ui/sidebar.js +41 -78
  126. package/dist/ui/sidebar.js.map +1 -1
  127. package/dist/ui/theme.d.ts +111 -0
  128. package/dist/ui/theme.d.ts.map +1 -0
  129. package/dist/ui/theme.js +226 -0
  130. package/dist/ui/theme.js.map +1 -0
  131. package/dist/utils/time.d.ts.map +1 -1
  132. package/dist/utils/time.js +2 -0
  133. package/dist/utils/time.js.map +1 -1
  134. package/package.json +4 -5
package/README.md CHANGED
@@ -16,7 +16,8 @@
16
16
 
17
17
  <p align="center">
18
18
  <img src="https://img.shields.io/npm/v/sweteam?color=blue&label=npm" alt="npm version" />
19
- <img src="https://img.shields.io/badge/node-%3E%3D18-brightgreen" alt="node version" />
19
+ <img src="https://img.shields.io/npm/dt/sweteam?color=brightgreen&label=downloads" alt="npm downloads" />
20
+ <img src="https://img.shields.io/badge/node-%3E%3D20-brightgreen" alt="node version" />
20
21
  <img src="https://img.shields.io/badge/license-MIT-blue" alt="license" />
21
22
  <img src="https://img.shields.io/badge/PRs-welcome-brightgreen" alt="PRs welcome" />
22
23
  </p>
@@ -93,7 +94,7 @@ sweteam doesn't replace your coding agents. It gives them the same structure tha
93
94
  When you launch `sweteam`, you're greeted with an interactive REPL:
94
95
 
95
96
  ```
96
- ╭─── sweteam v0.1.0 ────────────────────────────────────────────╮
97
+ ╭─── sweteam v0.8.0 ────────────────────────────────────────────╮
97
98
  │ │ │
98
99
  │ Welcome to sweteam! │ Getting started │
99
100
  │ │ /create [repo] Start new │
@@ -102,7 +103,7 @@ When you launch `sweteam`, you're greeted with an interactive REPL:
102
103
  │ │ ───────── │ │ ──────────────────────────── │
103
104
  │ └─────────────────┘ │ Recent sessions │
104
105
  │ │ s_a1b2c3d4 Add dark theme │
105
- │ Orchestrator · v0.1.0 │ s_e5f6g7h8 Fix auth flow │
106
+ │ Orchestrator · v0.8.0 │ s_e5f6g7h8 Fix auth flow │
106
107
  │ ~/projects/myrepo │ │
107
108
  ╰───────────────────────────────────────────────────────────────╯
108
109
 
@@ -136,6 +137,7 @@ Inside a session, agents stream their work in real time:
136
137
  - **Feedback iterations** — session stays open; you give feedback, agents iterate on the same PR
137
138
  - **Live attach** — re-enter any session and see agent output streaming in real time
138
139
  - **Git native** — all git/GitHub operations via `git` and `gh` CLI directly
140
+ - **Image input** — attach images to your session and forward them to underlying CLI agents
139
141
  - **Pluggable agents** — supports Claude Code, Codex CLI, OpenCode, or any custom CLI
140
142
 
141
143
  ## Prerequisites
@@ -152,7 +154,7 @@ Plus these required tools:
152
154
 
153
155
  - **git** — version control
154
156
  - **gh** — [GitHub CLI](https://cli.github.com/) (authenticated via `gh auth login`)
155
- - **Node.js** — v18+
157
+ - **Node.js** — v20+
156
158
 
157
159
  ## Installation
158
160
 
@@ -267,7 +269,7 @@ Build complete.
267
269
  ✓ task-003 Create dark theme preset
268
270
  ✓ task-004 Create light theme preset
269
271
  ✓ task-005 Wire theme into TUI render paths
270
- ⚠ task-006 Add runtime theme toggle — ESCALATED
272
+ ⚠ task-006 Add runtime theme toggle — FAILED
271
273
 
272
274
  PR: https://github.com/YourName/myrepo/pull/42
273
275
 
@@ -327,9 +329,14 @@ Once inside a session, use `@` commands:
327
329
  | `@status` | Show task progress dashboard |
328
330
  | `@plan` | Re-display the current plan |
329
331
  | `@feedback <text>` | Give feedback on completed work (triggers new iteration) |
332
+ | `@watch` | Re-attach to live agent output |
330
333
  | `@diff` | Show cumulative diff |
331
334
  | `@pr` | Show the PR link |
332
335
  | `@tasks` | List all tasks with statuses and review info |
336
+ | `@ask` | Ask the architect about the development process |
337
+ | `@cancel` | Cancel the current planner run (session stays active) |
338
+ | `@image <path>` | Attach image file(s) to pass to the underlying CLI agent |
339
+ | `@images` | List attached images (`@images clear` to remove all) |
333
340
  | `@stop` | Stop this session and return to REPL |
334
341
  | `@help` | Show available commands |
335
342
 
@@ -349,15 +356,17 @@ Inside the interactive REPL, use `/` commands:
349
356
  | `/delete <id>` | Delete a session |
350
357
  | `/init` | Re-run CLI discovery |
351
358
  | `/help` | Show help |
352
- | `/exit` | Quit |
359
+ | `/exit`, `/quit` | Quit |
353
360
 
354
361
  ### CLI flags
355
362
 
356
363
  ```bash
357
364
  sweteam --coder codex # Override coder agent
358
365
  sweteam --reviewer claude-code # Override reviewer agent
366
+ sweteam --planner codex # Override planner agent
359
367
  sweteam --parallel 5 # Override max parallel tasks
360
368
  sweteam --config ./custom.toml # Use custom config file
369
+ sweteam --image photo.png # Attach image file(s) to session
361
370
  ```
362
371
 
363
372
  ### List filters
@@ -545,8 +554,9 @@ src/
545
554
  ├── commands/ # CLI subcommands (create, list, enter, etc.)
546
555
  ├── config/ # Config loader and GitHub auth
547
556
  ├── git/ # Git and GitHub CLI wrappers
548
- ├── ui/ # Terminal UI (banner, prompt, agent panel, markdown)
557
+ ├── ui/ # Terminal UI (banner, prompt, agent panel, sidebar, markdown, theme)
549
558
  ├── db/ # SQLite schema and client (Drizzle ORM)
559
+ ├── utils/ # Utility functions (time formatting)
550
560
  └── __tests__/ # Test suite
551
561
  ```
552
562
 
@@ -554,11 +564,11 @@ src/
554
564
 
555
565
  | Component | Choice |
556
566
  | ------------- | -------------------------------- |
557
- | Language | TypeScript (ESM, Node.js 18+) |
567
+ | Language | TypeScript (ESM, Node.js 20+) |
558
568
  | ORM | Drizzle |
559
569
  | Database | SQLite via better-sqlite3 |
560
570
  | CLI framework | Commander.js |
561
- | Terminal UI | Custom (chalk, raw-mode prompt) |
571
+ | Terminal UI | Custom (chalk, gradient-string, raw-mode prompt) |
562
572
  | Git | `git` + `gh` CLI (child process) |
563
573
  | IDs | nanoid |
564
574
  | Config | TOML |
@@ -12,6 +12,7 @@ export interface AgentAdapter {
12
12
  cwd: string;
13
13
  timeout?: number;
14
14
  sessionId?: string;
15
+ images?: string[];
15
16
  onOutput?: (chunk: string) => void;
16
17
  onInputNeeded?: (promptText: string) => Promise<string | null>;
17
18
  }): Promise<AgentResult>;
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/adapters/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAMzD,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IAEb,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAEhC,OAAO,CAAC,IAAI,EAAE;QACZ,MAAM,EAAE,MAAM,CAAC;QACf,GAAG,EAAE,MAAM,CAAC;QACZ,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;QACnC,aAAa,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;KAChE,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;CAC1B;AAQD,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,YAAY,CAWhF"}
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../src/adapters/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAMzD,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IAEb,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;IAEhC,OAAO,CAAC,IAAI,EAAE;QACZ,MAAM,EAAE,MAAM,CAAC;QACf,GAAG,EAAE,MAAM,CAAC;QACZ,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAClB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;QACnC,aAAa,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;KAChE,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;CAC1B;AAQD,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,YAAY,CAWhF"}
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../src/adapters/adapter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAuB5C,MAAM,gBAAgB,GAAuC;IAC3D,aAAa,EAAE,GAAG,EAAE,CAAC,IAAI,iBAAiB,EAAE;IAC5C,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,YAAY,EAAE;IAC/B,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,eAAe,EAAE;CACtC,CAAC;AAEF,MAAM,UAAU,cAAc,CAAC,IAAY,EAAE,MAAqB;IAChE,IAAI,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3B,OAAO,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;IAClC,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACxC,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,kBAAkB,IAAI,sBAAsB,CAAC,CAAC;IAChE,CAAC;IAED,OAAO,IAAI,aAAa,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;AAC9C,CAAC"}
1
+ {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../src/adapters/adapter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAwB5C,MAAM,gBAAgB,GAAuC;IAC3D,aAAa,EAAE,GAAG,EAAE,CAAC,IAAI,iBAAiB,EAAE;IAC5C,KAAK,EAAE,GAAG,EAAE,CAAC,IAAI,YAAY,EAAE;IAC/B,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,eAAe,EAAE;CACtC,CAAC;AAEF,MAAM,UAAU,cAAc,CAAC,IAAY,EAAE,MAAqB;IAChE,IAAI,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC3B,OAAO,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;IAClC,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACxC,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,kBAAkB,IAAI,sBAAsB,CAAC,CAAC;IAChE,CAAC;IAED,OAAO,IAAI,aAAa,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;AAC9C,CAAC"}
@@ -7,6 +7,7 @@ export declare class ClaudeCodeAdapter implements AgentAdapter {
7
7
  cwd: string;
8
8
  timeout?: number;
9
9
  sessionId?: string;
10
+ images?: string[];
10
11
  onOutput?: (chunk: string) => void;
11
12
  onInputNeeded?: (promptText: string) => Promise<string | null>;
12
13
  }): Promise<AgentResult>;
@@ -1 +1 @@
1
- {"version":3,"file":"claude-code.d.ts","sourceRoot":"","sources":["../../src/adapters/claude-code.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AA2B9D,qBAAa,iBAAkB,YAAW,YAAY;IACpD,IAAI,SAAiB;IAEf,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IASrC,OAAO,CAAC,IAAI,EAAE;QACZ,MAAM,EAAE,MAAM,CAAC;QACf,GAAG,EAAE,MAAM,CAAC;QACZ,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;QACnC,aAAa,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;KAChE,GAAG,OAAO,CAAC,WAAW,CAAC;CA8HzB"}
1
+ {"version":3,"file":"claude-code.d.ts","sourceRoot":"","sources":["../../src/adapters/claude-code.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AA2B9D,qBAAa,iBAAkB,YAAW,YAAY;IACpD,IAAI,SAAiB;IAEf,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IASrC,OAAO,CAAC,IAAI,EAAE;QACZ,MAAM,EAAE,MAAM,CAAC;QACf,GAAG,EAAE,MAAM,CAAC;QACZ,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAClB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;QACnC,aAAa,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;KAChE,GAAG,OAAO,CAAC,WAAW,CAAC;CA4JzB"}
@@ -38,18 +38,29 @@ export class ClaudeCodeAdapter {
38
38
  const timeout = opts.timeout ?? 0;
39
39
  const startTime = Date.now();
40
40
  return new Promise((resolve, reject) => {
41
- const proc = spawn('claude', ['-p', '--output-format', 'stream-json', '--verbose', '--dangerously-skip-permissions'], {
41
+ const args = ['-p', '--output-format', 'stream-json', '--verbose', '--dangerously-skip-permissions'];
42
+ if (opts.images) {
43
+ for (const img of opts.images) {
44
+ args.push('--image', img);
45
+ }
46
+ }
47
+ const proc = spawn('claude', args, {
42
48
  cwd: opts.cwd,
43
49
  stdio: ['pipe', 'pipe', 'pipe'],
44
50
  });
45
51
  trackProcess(proc, opts.sessionId);
52
+ const MAX_OUTPUT_SIZE = 10 * 1024 * 1024;
46
53
  let accumulatedText = '';
47
54
  let resultText = null;
48
55
  let stderr = '';
49
56
  let lineBuffer = '';
50
57
  let settled = false;
51
- // Prevent EPIPE crashes if process dies before stdin write
52
- proc.stdin.on('error', () => { });
58
+ // Silence EPIPE but log other stdin errors
59
+ proc.stdin.on('error', (err) => {
60
+ if (err.code !== 'EPIPE') {
61
+ console.error(`stdin error: ${err.message}`);
62
+ }
63
+ });
53
64
  function processLine(line) {
54
65
  const trimmed = line.trim();
55
66
  if (!trimmed)
@@ -60,7 +71,17 @@ export class ClaudeCodeAdapter {
60
71
  }
61
72
  catch {
62
73
  // Non-JSON line — treat as raw text (backward compat)
63
- accumulatedText += line + '\n';
74
+ const rawLine = line + '\n';
75
+ if (accumulatedText.length + rawLine.length > MAX_OUTPUT_SIZE) {
76
+ accumulatedText = accumulatedText.slice(accumulatedText.length + rawLine.length - MAX_OUTPUT_SIZE) + rawLine;
77
+ }
78
+ else {
79
+ accumulatedText += rawLine;
80
+ }
81
+ // Log if it looks like an error message
82
+ if (/^(error:|Error:|fatal:|Authentication|not found)/i.test(trimmed)) {
83
+ console.error(`claude-code non-JSON error output: ${trimmed}`);
84
+ }
64
85
  if (opts.onOutput)
65
86
  opts.onOutput(line + '\n');
66
87
  return;
@@ -83,7 +104,13 @@ export class ClaudeCodeAdapter {
83
104
  }
84
105
  else if (block.type === 'text') {
85
106
  // Accumulate text silently — don't send to panel
86
- accumulatedText += block.text ?? '';
107
+ const blockText = block.text ?? '';
108
+ if (accumulatedText.length + blockText.length > MAX_OUTPUT_SIZE) {
109
+ accumulatedText = accumulatedText.slice(accumulatedText.length + blockText.length - MAX_OUTPUT_SIZE) + blockText;
110
+ }
111
+ else {
112
+ accumulatedText += blockText;
113
+ }
87
114
  }
88
115
  }
89
116
  }
@@ -106,7 +133,12 @@ export class ClaudeCodeAdapter {
106
133
  });
107
134
  proc.stderr.on('data', (chunk) => {
108
135
  const text = chunk.toString();
109
- stderr += text;
136
+ if (stderr.length + text.length > MAX_OUTPUT_SIZE) {
137
+ stderr = stderr.slice(stderr.length + text.length - MAX_OUTPUT_SIZE) + text;
138
+ }
139
+ else {
140
+ stderr += text;
141
+ }
110
142
  });
111
143
  const timer = timeout > 0
112
144
  ? setTimeout(() => {
@@ -1 +1 @@
1
- {"version":3,"file":"claude-code.js","sourceRoot":"","sources":["../../src/adapters/claude-code.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"claude-code.js","sourceRoot":"","sources":["../../src/adapters/claude-code.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,7 @@ export declare class CodexAdapter implements AgentAdapter {
7
7
  cwd: string;
8
8
  timeout?: number;
9
9
  sessionId?: string;
10
+ images?: string[];
10
11
  onOutput?: (chunk: string) => void;
11
12
  onInputNeeded?: (promptText: string) => Promise<string | null>;
12
13
  }): Promise<AgentResult>;
@@ -1 +1 @@
1
- {"version":3,"file":"codex.d.ts","sourceRoot":"","sources":["../../src/adapters/codex.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAI9D,qBAAa,YAAa,YAAW,YAAY;IAC/C,IAAI,SAAW;IAET,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IASrC,OAAO,CAAC,IAAI,EAAE;QACZ,MAAM,EAAE,MAAM,CAAC;QACf,GAAG,EAAE,MAAM,CAAC;QACZ,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;QACnC,aAAa,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;KAChE,GAAG,OAAO,CAAC,WAAW,CAAC;CA2FzB"}
1
+ {"version":3,"file":"codex.d.ts","sourceRoot":"","sources":["../../src/adapters/codex.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAI9D,qBAAa,YAAa,YAAW,YAAY;IAC/C,IAAI,SAAW;IAET,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IASrC,OAAO,CAAC,IAAI,EAAE;QACZ,MAAM,EAAE,MAAM,CAAC;QACf,GAAG,EAAE,MAAM,CAAC;QACZ,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAClB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;QACnC,aAAa,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;KAChE,GAAG,OAAO,CAAC,WAAW,CAAC;CAgHzB"}
@@ -16,22 +16,38 @@ export class CodexAdapter {
16
16
  const timeout = opts.timeout ?? 0;
17
17
  const startTime = Date.now();
18
18
  return new Promise((resolve, reject) => {
19
- const proc = spawn('codex', ['-q', opts.prompt], {
19
+ const args = ['-q', opts.prompt];
20
+ if (opts.images) {
21
+ for (const img of opts.images) {
22
+ args.push('--image', img);
23
+ }
24
+ }
25
+ const proc = spawn('codex', args, {
20
26
  cwd: opts.cwd,
21
27
  stdio: ['pipe', 'pipe', 'pipe'],
22
28
  });
23
29
  trackProcess(proc, opts.sessionId);
30
+ const MAX_OUTPUT_SIZE = 10 * 1024 * 1024;
24
31
  let stdout = '';
25
32
  let stderr = '';
26
33
  let recentOutput = '';
27
34
  let debounceTimer = null;
28
35
  let waitingForInput = false;
29
36
  let settled = false;
30
- // Prevent EPIPE crashes
31
- proc.stdin.on('error', () => { });
37
+ // Silence EPIPE but log other stdin errors
38
+ proc.stdin.on('error', (err) => {
39
+ if (err.code !== 'EPIPE') {
40
+ console.error(`stdin error: ${err.message}`);
41
+ }
42
+ });
32
43
  proc.stdout.on('data', (chunk) => {
33
44
  const text = chunk.toString();
34
- stdout += text;
45
+ if (stdout.length + text.length > MAX_OUTPUT_SIZE) {
46
+ stdout = stdout.slice(stdout.length + text.length - MAX_OUTPUT_SIZE) + text;
47
+ }
48
+ else {
49
+ stdout += text;
50
+ }
35
51
  if (opts.onOutput) {
36
52
  opts.onOutput(text);
37
53
  }
@@ -46,26 +62,32 @@ export class CodexAdapter {
46
62
  debounceTimer = setTimeout(() => {
47
63
  if (waitingForInput || settled)
48
64
  return;
49
- if (detectInputPrompt(recentOutput)) {
65
+ const captured = recentOutput;
66
+ recentOutput = '';
67
+ if (detectInputPrompt(captured)) {
50
68
  waitingForInput = true;
51
- const promptText = extractPromptText(recentOutput);
69
+ const promptText = extractPromptText(captured);
52
70
  opts.onInputNeeded(promptText)
53
71
  .then((response) => {
54
72
  waitingForInput = false;
55
73
  if (response !== null && !proc.killed) {
56
74
  proc.stdin.write(response + '\n');
57
75
  }
58
- recentOutput = '';
59
76
  })
60
77
  .catch(() => {
61
78
  waitingForInput = false;
62
- recentOutput = '';
63
79
  });
64
80
  }
65
81
  }, 2000);
66
82
  });
67
83
  proc.stderr.on('data', (chunk) => {
68
- stderr += chunk.toString();
84
+ const errText = chunk.toString();
85
+ if (stderr.length + errText.length > MAX_OUTPUT_SIZE) {
86
+ stderr = stderr.slice(stderr.length + errText.length - MAX_OUTPUT_SIZE) + errText;
87
+ }
88
+ else {
89
+ stderr += errText;
90
+ }
69
91
  });
70
92
  const timer = timeout > 0
71
93
  ? setTimeout(() => {
@@ -1 +1 @@
1
- {"version":3,"file":"codex.js","sourceRoot":"","sources":["../../src/adapters/codex.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"codex.js","sourceRoot":"","sources":["../../src/adapters/codex.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,7 @@ export declare class CustomAdapter implements AgentAdapter {
10
10
  cwd: string;
11
11
  timeout?: number;
12
12
  sessionId?: string;
13
+ images?: string[];
13
14
  onOutput?: (chunk: string) => void;
14
15
  onInputNeeded?: (promptText: string) => Promise<string | null>;
15
16
  }): Promise<AgentResult>;
@@ -1 +1 @@
1
- {"version":3,"file":"custom.d.ts","sourceRoot":"","sources":["../../src/adapters/custom.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAIvD,qBAAa,aAAc,YAAW,YAAY;IAChD,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,MAAM,CAAc;gBAEhB,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW;IAKvC,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAYrC,OAAO,CAAC,IAAI,EAAE;QACZ,MAAM,EAAE,MAAM,CAAC;QACf,GAAG,EAAE,MAAM,CAAC;QACZ,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;QACnC,aAAa,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;KAChE,GAAG,OAAO,CAAC,WAAW,CAAC;CA0JzB"}
1
+ {"version":3,"file":"custom.d.ts","sourceRoot":"","sources":["../../src/adapters/custom.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC9D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAIvD,qBAAa,aAAc,YAAW,YAAY;IAChD,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,MAAM,CAAc;gBAEhB,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW;IAKvC,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAYrC,OAAO,CAAC,IAAI,EAAE;QACZ,MAAM,EAAE,MAAM,CAAC;QACf,GAAG,EAAE,MAAM,CAAC;QACZ,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAClB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;QACnC,aAAa,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;KAChE,GAAG,OAAO,CAAC,WAAW,CAAC;CA8KzB"}
@@ -1,4 +1,5 @@
1
1
  import { spawn, execFileSync } from 'child_process';
2
+ import { randomUUID } from 'crypto';
2
3
  import { writeFileSync, readFileSync, unlinkSync } from 'fs';
3
4
  import { join } from 'path';
4
5
  import { tmpdir } from 'os';
@@ -30,13 +31,18 @@ export class CustomAdapter {
30
31
  const outputFrom = this.config.output_from ?? 'stdout';
31
32
  return new Promise((resolve, reject) => {
32
33
  const args = [...(this.config.args ?? [])];
34
+ if (opts.images) {
35
+ for (const img of opts.images) {
36
+ args.push('--image', img);
37
+ }
38
+ }
33
39
  let promptFile;
34
40
  if (promptVia === 'arg') {
35
41
  args.push(opts.prompt);
36
42
  }
37
43
  else if (promptVia === 'file') {
38
- promptFile = join(tmpdir(), `sweteam-prompt-${Date.now()}.txt`);
39
- writeFileSync(promptFile, opts.prompt);
44
+ promptFile = join(tmpdir(), `sweteam-prompt-${randomUUID()}.txt`);
45
+ writeFileSync(promptFile, opts.prompt, { mode: 0o600 });
40
46
  args.push(promptFile);
41
47
  }
42
48
  const proc = spawn(this.config.command, args, {
@@ -44,17 +50,27 @@ export class CustomAdapter {
44
50
  stdio: ['pipe', 'pipe', 'pipe'],
45
51
  });
46
52
  trackProcess(proc, opts.sessionId);
53
+ const MAX_OUTPUT_SIZE = 10 * 1024 * 1024;
47
54
  let stdout = '';
48
55
  let stderr = '';
49
56
  let recentOutput = '';
50
57
  let debounceTimer = null;
51
58
  let waitingForInput = false;
52
59
  let settled = false;
53
- // Prevent EPIPE crashes
54
- proc.stdin.on('error', () => { });
60
+ // Silence EPIPE but log other stdin errors
61
+ proc.stdin.on('error', (err) => {
62
+ if (err.code !== 'EPIPE') {
63
+ console.error(`stdin error: ${err.message}`);
64
+ }
65
+ });
55
66
  proc.stdout.on('data', (chunk) => {
56
67
  const text = chunk.toString();
57
- stdout += text;
68
+ if (stdout.length + text.length > MAX_OUTPUT_SIZE) {
69
+ stdout = stdout.slice(stdout.length + text.length - MAX_OUTPUT_SIZE) + text;
70
+ }
71
+ else {
72
+ stdout += text;
73
+ }
58
74
  if (opts.onOutput) {
59
75
  opts.onOutput(text);
60
76
  }
@@ -69,26 +85,32 @@ export class CustomAdapter {
69
85
  debounceTimer = setTimeout(() => {
70
86
  if (waitingForInput || settled)
71
87
  return;
72
- if (detectInputPrompt(recentOutput)) {
88
+ const captured = recentOutput;
89
+ recentOutput = '';
90
+ if (detectInputPrompt(captured)) {
73
91
  waitingForInput = true;
74
- const promptText = extractPromptText(recentOutput);
92
+ const promptText = extractPromptText(captured);
75
93
  opts.onInputNeeded(promptText)
76
94
  .then((response) => {
77
95
  waitingForInput = false;
78
96
  if (response !== null && !proc.killed) {
79
97
  proc.stdin.write(response + '\n');
80
98
  }
81
- recentOutput = '';
82
99
  })
83
100
  .catch(() => {
84
101
  waitingForInput = false;
85
- recentOutput = '';
86
102
  });
87
103
  }
88
104
  }, 2000);
89
105
  });
90
106
  proc.stderr.on('data', (chunk) => {
91
- stderr += chunk.toString();
107
+ const errText = chunk.toString();
108
+ if (stderr.length + errText.length > MAX_OUTPUT_SIZE) {
109
+ stderr = stderr.slice(stderr.length + errText.length - MAX_OUTPUT_SIZE) + errText;
110
+ }
111
+ else {
112
+ stderr += errText;
113
+ }
92
114
  });
93
115
  const timer = timeout > 0
94
116
  ? setTimeout(() => {
@@ -118,6 +140,16 @@ export class CustomAdapter {
118
140
  return;
119
141
  }
120
142
  settled = true;
143
+ // Close stdin if it was kept open for interactive input
144
+ if (opts.onInputNeeded) {
145
+ try {
146
+ if (!proc.stdin.destroyed)
147
+ proc.stdin.end();
148
+ }
149
+ catch {
150
+ /* already closed */
151
+ }
152
+ }
121
153
  let output = stdout || stderr;
122
154
  if (outputFrom === 'file') {
123
155
  const outputFile = join(opts.cwd, '.sweteam-output.txt');
@@ -153,20 +185,9 @@ export class CustomAdapter {
153
185
  if (!opts.onInputNeeded) {
154
186
  proc.stdin.end();
155
187
  }
156
- else {
157
- proc.on('close', () => {
158
- try {
159
- if (!proc.stdin.destroyed)
160
- proc.stdin.end();
161
- }
162
- catch {
163
- /* already closed */
164
- }
165
- });
166
- }
167
188
  }
168
189
  else {
169
- // For arg/file prompt modes, close stdin immediately to prevent agent from blocking on stdin read
190
+ // For arg/file prompt modes, close stdin unless interactive input is expected
170
191
  if (!opts.onInputNeeded) {
171
192
  proc.stdin.end();
172
193
  }
@@ -1 +1 @@
1
- {"version":3,"file":"custom.js","sourceRoot":"","sources":["../../src/adapters/custom.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"custom.js","sourceRoot":"","sources":["../../src/adapters/custom.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,7 @@ export declare class OpenCodeAdapter implements AgentAdapter {
7
7
  cwd: string;
8
8
  timeout?: number;
9
9
  sessionId?: string;
10
+ images?: string[];
10
11
  onOutput?: (chunk: string) => void;
11
12
  onInputNeeded?: (promptText: string) => Promise<string | null>;
12
13
  }): Promise<AgentResult>;
@@ -1 +1 @@
1
- {"version":3,"file":"opencode.d.ts","sourceRoot":"","sources":["../../src/adapters/opencode.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAI9D,qBAAa,eAAgB,YAAW,YAAY;IAClD,IAAI,SAAc;IAEZ,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IASrC,OAAO,CAAC,IAAI,EAAE;QACZ,MAAM,EAAE,MAAM,CAAC;QACf,GAAG,EAAE,MAAM,CAAC;QACZ,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;QACnC,aAAa,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;KAChE,GAAG,OAAO,CAAC,WAAW,CAAC;CA2FzB"}
1
+ {"version":3,"file":"opencode.d.ts","sourceRoot":"","sources":["../../src/adapters/opencode.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAI9D,qBAAa,eAAgB,YAAW,YAAY;IAClD,IAAI,SAAc;IAEZ,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IASrC,OAAO,CAAC,IAAI,EAAE;QACZ,MAAM,EAAE,MAAM,CAAC;QACf,GAAG,EAAE,MAAM,CAAC;QACZ,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAClB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;QACnC,aAAa,CAAC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;KAChE,GAAG,OAAO,CAAC,WAAW,CAAC;CAgHzB"}