claude-teammate 0.1.24 → 0.1.26
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/README.md +2 -2
- package/package.json +1 -1
- package/src/claude.js +20 -9
package/README.md
CHANGED
|
@@ -17,8 +17,6 @@
|
|
|
17
17
|
<a href="https://github.com/ignify-rd/claude-teammate/blob/main/LICENSE"><img src="https://img.shields.io/badge/license-MIT-blue" alt="MIT License" /></a>
|
|
18
18
|
</p>
|
|
19
19
|
|
|
20
|
-
<br/>
|
|
21
|
-
|
|
22
20
|
# An autonomous software engineer that lives in your Jira and GitHub
|
|
23
21
|
|
|
24
22
|
Claude Teammate is an AI bot that works around the clock - picking up tickets, writing plans, opening PRs, acting on feedback, and reviewing code. No stand-ups. No Slack pings. No passive-aggressive "per my last email." Just like your best teammate, minus the coffee breath.
|
|
@@ -32,6 +30,8 @@ Assign it tickets. It ships.
|
|
|
32
30
|
| **03** | It ships | Opens a PR. Responds to feedback. Keeps going until it's merged. |
|
|
33
31
|
| **04** | It remembers | Retains build commands, known pitfalls, and lessons from every task it has shipped - so the next ticket in the same epic starts smarter. |
|
|
34
32
|
|
|
33
|
+

|
|
34
|
+
|
|
35
35
|
<br/>
|
|
36
36
|
|
|
37
37
|
## Claude Teammate is right for you if
|
package/package.json
CHANGED
package/src/claude.js
CHANGED
|
@@ -6,6 +6,7 @@ const DEFAULT_TIMEOUT_MS = 5 * 60 * 1000;
|
|
|
6
6
|
const STARTUP_CHECK_TIMEOUT_MS = 15 * 1000;
|
|
7
7
|
const CHILD_CLEANUP_WAIT_MS = 1_000;
|
|
8
8
|
const CLAUDE_RETRY_DELAY_MS = 5 * 60 * 1000;
|
|
9
|
+
const DEFAULT_CLAUDE_PERMISSION_MODE = "bypassPermissions";
|
|
9
10
|
const activeClaudeChildren = new Set();
|
|
10
11
|
const DEFAULT_MODEL = "sonnet";
|
|
11
12
|
const PLAYWRIGHT_MCP_NAME = "playwright";
|
|
@@ -172,7 +173,7 @@ export async function runClaudeClarification(input) {
|
|
|
172
173
|
"--model",
|
|
173
174
|
input.model || DEFAULT_MODEL,
|
|
174
175
|
"--permission-mode",
|
|
175
|
-
input.permissionMode
|
|
176
|
+
resolveClaudePermissionMode(input.permissionMode),
|
|
176
177
|
"--effort",
|
|
177
178
|
"low",
|
|
178
179
|
"--output-format",
|
|
@@ -206,6 +207,8 @@ export async function runClaudeClarification(input) {
|
|
|
206
207
|
|
|
207
208
|
export async function verifyClaudeCli(input = {}) {
|
|
208
209
|
const args = [
|
|
210
|
+
"--permission-mode",
|
|
211
|
+
resolveClaudePermissionMode(input.permissionMode),
|
|
209
212
|
"--print",
|
|
210
213
|
"--output-format",
|
|
211
214
|
"text",
|
|
@@ -245,7 +248,7 @@ export async function ensurePlaywrightMcpAvailable(input = {}) {
|
|
|
245
248
|
|
|
246
249
|
if (existingConfig) {
|
|
247
250
|
try {
|
|
248
|
-
await runClaudeCommand("claude", ["mcp", "remove", "--scope", scope, PLAYWRIGHT_MCP_NAME], {
|
|
251
|
+
await runClaudeCommand("claude", buildClaudeArgs(["mcp", "remove", "--scope", scope, PLAYWRIGHT_MCP_NAME], input.permissionMode), {
|
|
249
252
|
cwd: input.cwd,
|
|
250
253
|
maxBuffer: 1024 * 1024,
|
|
251
254
|
timeout: timeoutMs
|
|
@@ -258,7 +261,7 @@ export async function ensurePlaywrightMcpAvailable(input = {}) {
|
|
|
258
261
|
const addArgs = ["mcp", "add", "--scope", scope, PLAYWRIGHT_MCP_NAME, "--", PLAYWRIGHT_MCP_COMMAND, ...PLAYWRIGHT_MCP_ARGS];
|
|
259
262
|
|
|
260
263
|
try {
|
|
261
|
-
await runClaudeCommand("claude", addArgs, {
|
|
264
|
+
await runClaudeCommand("claude", buildClaudeArgs(addArgs, input.permissionMode), {
|
|
262
265
|
cwd: input.cwd,
|
|
263
266
|
maxBuffer: 1024 * 1024,
|
|
264
267
|
timeout: input.installTimeoutMs || 60_000
|
|
@@ -309,7 +312,7 @@ export async function runClaudeGitHubIssueReview(input) {
|
|
|
309
312
|
"--model",
|
|
310
313
|
input.model || DEFAULT_MODEL,
|
|
311
314
|
"--permission-mode",
|
|
312
|
-
input.permissionMode
|
|
315
|
+
resolveClaudePermissionMode(input.permissionMode),
|
|
313
316
|
"--effort",
|
|
314
317
|
"low",
|
|
315
318
|
"--output-format",
|
|
@@ -347,7 +350,7 @@ export async function runClaudeEpicMemoryCleanup(input) {
|
|
|
347
350
|
"--model",
|
|
348
351
|
input.model || DEFAULT_MODEL,
|
|
349
352
|
"--permission-mode",
|
|
350
|
-
input.permissionMode
|
|
353
|
+
resolveClaudePermissionMode(input.permissionMode),
|
|
351
354
|
"--effort",
|
|
352
355
|
"low",
|
|
353
356
|
"--output-format",
|
|
@@ -385,7 +388,7 @@ export async function runClaudeEpicMemorySummarize(input) {
|
|
|
385
388
|
"--model",
|
|
386
389
|
input.model || DEFAULT_MODEL,
|
|
387
390
|
"--permission-mode",
|
|
388
|
-
input.permissionMode
|
|
391
|
+
resolveClaudePermissionMode(input.permissionMode),
|
|
389
392
|
"--effort",
|
|
390
393
|
"low",
|
|
391
394
|
"--output-format",
|
|
@@ -425,7 +428,7 @@ export async function runClaudeImplementation(input) {
|
|
|
425
428
|
"--model",
|
|
426
429
|
input.model || DEFAULT_MODEL,
|
|
427
430
|
"--permission-mode",
|
|
428
|
-
input.permissionMode
|
|
431
|
+
resolveClaudePermissionMode(input.permissionMode),
|
|
429
432
|
"--tools",
|
|
430
433
|
"Bash,Read,Grep,Glob,Edit,Write",
|
|
431
434
|
"--effort",
|
|
@@ -468,7 +471,7 @@ export async function runClaudePullRequestCommentReview(input) {
|
|
|
468
471
|
"--model",
|
|
469
472
|
input.model || DEFAULT_MODEL,
|
|
470
473
|
"--permission-mode",
|
|
471
|
-
input.permissionMode
|
|
474
|
+
resolveClaudePermissionMode(input.permissionMode),
|
|
472
475
|
"--strict-mcp-config",
|
|
473
476
|
"--tools",
|
|
474
477
|
"Read,Grep,Glob",
|
|
@@ -655,6 +658,14 @@ function formatClaudeInvocationError(error, timeoutMs) {
|
|
|
655
658
|
return `Claude CLI invocation failed${timeout ? ` after ${timeoutMs}ms` : ""}${signal ? ` (${signal})` : ""}${details ? `: ${details}` : "."}`;
|
|
656
659
|
}
|
|
657
660
|
|
|
661
|
+
function resolveClaudePermissionMode(permissionMode) {
|
|
662
|
+
return permissionMode || DEFAULT_CLAUDE_PERMISSION_MODE;
|
|
663
|
+
}
|
|
664
|
+
|
|
665
|
+
function buildClaudeArgs(args, permissionMode) {
|
|
666
|
+
return ["--permission-mode", resolveClaudePermissionMode(permissionMode), ...args];
|
|
667
|
+
}
|
|
668
|
+
|
|
658
669
|
async function runClaudeCommand(command, args, options) {
|
|
659
670
|
for (;;) {
|
|
660
671
|
try {
|
|
@@ -838,7 +849,7 @@ async function clearLocalPlaywrightMcpConfig(cwd) {
|
|
|
838
849
|
}
|
|
839
850
|
|
|
840
851
|
try {
|
|
841
|
-
await runClaudeCommand("claude", ["mcp", "remove", "--scope", "local", PLAYWRIGHT_MCP_NAME], {
|
|
852
|
+
await runClaudeCommand("claude", buildClaudeArgs(["mcp", "remove", "--scope", "local", PLAYWRIGHT_MCP_NAME]), {
|
|
842
853
|
cwd,
|
|
843
854
|
maxBuffer: 1024 * 1024,
|
|
844
855
|
timeout: timeoutMs
|