@tagma/driver-claude-code 0.3.4 → 0.3.6
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 +4 -4
- package/dist/index.d.ts +10 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +15 -8
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
- package/src/index.test.ts +10 -8
- package/src/index.ts +16 -8
package/README.md
CHANGED
|
@@ -34,10 +34,10 @@ pipeline:
|
|
|
34
34
|
Or load it programmatically:
|
|
35
35
|
|
|
36
36
|
```ts
|
|
37
|
-
import {
|
|
37
|
+
import { createTagma } from '@tagma/sdk';
|
|
38
38
|
|
|
39
|
-
|
|
40
|
-
await loadPlugins(['@tagma/driver-claude-code']);
|
|
39
|
+
const tagma = createTagma();
|
|
40
|
+
await tagma.registry.loadPlugins(['@tagma/driver-claude-code'], process.cwd());
|
|
41
41
|
```
|
|
42
42
|
|
|
43
43
|
## Behavior
|
|
@@ -47,7 +47,7 @@ await loadPlugins(['@tagma/driver-claude-code']);
|
|
|
47
47
|
- **Session resume**: native support via `--resume <session_id>` when `continue_from` references a task with a known session ID
|
|
48
48
|
- **System prompt**: supported via `--append-system-prompt` (driven by `agent_profile`)
|
|
49
49
|
- **Permissions**: mapped to `--permission-mode` (`bypassPermissions` when `execute: true`, otherwise `dontAsk` with an explicit `--allowedTools` whitelist)
|
|
50
|
-
- **Reasoning effort**: passed through via `--effort` (accepts `low|medium|high
|
|
50
|
+
- **Reasoning effort**: passed through via `--effort` (accepts `low|medium|high` — tagma's canonical vocabulary)
|
|
51
51
|
- **Windows**: auto-discovers Git Bash and sets `CLAUDE_CODE_GIT_BASH_PATH` when needed
|
|
52
52
|
|
|
53
53
|
## License
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
import type { DriverPlugin } from '@tagma/types';
|
|
2
|
-
declare const ClaudeCodeDriver: DriverPlugin;
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
2
|
+
export declare const ClaudeCodeDriver: DriverPlugin;
|
|
3
|
+
declare const _default: {
|
|
4
|
+
name: string;
|
|
5
|
+
capabilities: {
|
|
6
|
+
drivers: {
|
|
7
|
+
'claude-code': DriverPlugin;
|
|
8
|
+
};
|
|
9
|
+
};
|
|
10
|
+
};
|
|
11
|
+
export default _default;
|
|
6
12
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,YAAY,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,YAAY,EASb,MAAM,cAAc,CAAC;AAqItB,eAAO,MAAM,gBAAgB,EAAE,YA2G9B,CAAC;;;;;;;;;AAEF,wBAOwB"}
|
package/dist/index.js
CHANGED
|
@@ -2,10 +2,12 @@ import { existsSync } from 'node:fs';
|
|
|
2
2
|
import { isAbsolute, relative, dirname, join } from 'node:path';
|
|
3
3
|
// Claude Code CLI reference: https://code.claude.com/docs/en/cli-reference
|
|
4
4
|
const DEFAULT_MODEL = 'sonnet';
|
|
5
|
-
//
|
|
6
|
-
//
|
|
7
|
-
//
|
|
8
|
-
|
|
5
|
+
// Tagma's canonical reasoning_effort vocabulary is low|medium|high (enforced
|
|
6
|
+
// by validate-raw.ts in the SDK). Claude Code CLI also exposes a "max" tier,
|
|
7
|
+
// but accepting it here would diverge from the SDK validator — users who set
|
|
8
|
+
// `reasoning_effort: max` in YAML would see an editor-side validation error
|
|
9
|
+
// even though the driver tolerates it. Stay in sync with the SDK instead.
|
|
10
|
+
const VALID_EFFORT = new Set(['low', 'medium', 'high']);
|
|
9
11
|
function resolveModel() {
|
|
10
12
|
return DEFAULT_MODEL;
|
|
11
13
|
}
|
|
@@ -126,7 +128,7 @@ function findExeInPath(exe) {
|
|
|
126
128
|
}
|
|
127
129
|
return null;
|
|
128
130
|
}
|
|
129
|
-
const ClaudeCodeDriver = {
|
|
131
|
+
export const ClaudeCodeDriver = {
|
|
130
132
|
name: 'claude-code',
|
|
131
133
|
capabilities: {
|
|
132
134
|
sessionResume: true,
|
|
@@ -222,7 +224,12 @@ const ClaudeCodeDriver = {
|
|
|
222
224
|
}
|
|
223
225
|
},
|
|
224
226
|
};
|
|
225
|
-
export
|
|
226
|
-
|
|
227
|
-
|
|
227
|
+
export default {
|
|
228
|
+
name: '@tagma/driver-claude-code',
|
|
229
|
+
capabilities: {
|
|
230
|
+
drivers: {
|
|
231
|
+
'claude-code': ClaudeCodeDriver,
|
|
232
|
+
},
|
|
233
|
+
},
|
|
234
|
+
};
|
|
228
235
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tagma/driver-claude-code",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.6",
|
|
4
4
|
"description": "Claude Code CLI driver for tagma-sdk pipelines",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -48,6 +48,6 @@
|
|
|
48
48
|
"prepublishOnly": "bun run build"
|
|
49
49
|
},
|
|
50
50
|
"peerDependencies": {
|
|
51
|
-
"@tagma/types": "0.4.
|
|
51
|
+
"@tagma/types": "0.4.11"
|
|
52
52
|
}
|
|
53
53
|
}
|
package/src/index.test.ts
CHANGED
|
@@ -1,22 +1,24 @@
|
|
|
1
1
|
import { describe, expect, test } from 'bun:test';
|
|
2
|
-
import plugin from './index';
|
|
2
|
+
import plugin, { ClaudeCodeDriver } from './index';
|
|
3
3
|
import manifest from '../package.json' with { type: 'json' };
|
|
4
4
|
|
|
5
5
|
describe('driver-claude-code plugin shape', () => {
|
|
6
|
-
test('
|
|
6
|
+
test('default export is a capability plugin matching package manifest', () => {
|
|
7
7
|
expect(manifest.tagmaPlugin.category).toBe('drivers');
|
|
8
8
|
expect(manifest.tagmaPlugin.type).toBe('claude-code');
|
|
9
|
-
expect(plugin.name).toBe(manifest.
|
|
9
|
+
expect(plugin.name).toBe(manifest.name);
|
|
10
|
+
expect(plugin.capabilities?.drivers?.[manifest.tagmaPlugin.type]).toBe(ClaudeCodeDriver);
|
|
10
11
|
});
|
|
11
12
|
|
|
12
13
|
test('capabilities exposes three boolean flags', () => {
|
|
13
|
-
|
|
14
|
-
expect(typeof
|
|
15
|
-
expect(typeof
|
|
14
|
+
const driver = plugin.capabilities!.drivers!['claude-code'];
|
|
15
|
+
expect(typeof driver.capabilities.sessionResume).toBe('boolean');
|
|
16
|
+
expect(typeof driver.capabilities.systemPrompt).toBe('boolean');
|
|
17
|
+
expect(typeof driver.capabilities.outputFormat).toBe('boolean');
|
|
16
18
|
});
|
|
17
19
|
|
|
18
20
|
test('buildCommand is a function', () => {
|
|
19
|
-
expect(typeof plugin.buildCommand).toBe('function');
|
|
21
|
+
expect(typeof plugin.capabilities!.drivers!['claude-code'].buildCommand).toBe('function');
|
|
20
22
|
});
|
|
21
23
|
|
|
22
24
|
test('buildCommand returns a SpawnSpec-shaped object', async () => {
|
|
@@ -29,7 +31,7 @@ describe('driver-claude-code plugin shape', () => {
|
|
|
29
31
|
const track = { id: 'k', name: 'k', tasks: [] } as unknown as Parameters<typeof plugin.buildCommand>[1];
|
|
30
32
|
const ctx = { workDir: process.cwd(), normalizedMap: new Map(), sessionMap: new Map() } as unknown as Parameters<typeof plugin.buildCommand>[2];
|
|
31
33
|
try {
|
|
32
|
-
const spec = await
|
|
34
|
+
const spec = await ClaudeCodeDriver.buildCommand(task, track, ctx);
|
|
33
35
|
expect(Array.isArray(spec.args)).toBe(true);
|
|
34
36
|
} catch (err) {
|
|
35
37
|
expect(String(err)).toMatch(/claude/i);
|
package/src/index.ts
CHANGED
|
@@ -9,16 +9,19 @@ import type {
|
|
|
9
9
|
DriverContext,
|
|
10
10
|
SpawnSpec,
|
|
11
11
|
Permissions,
|
|
12
|
+
TagmaPlugin,
|
|
12
13
|
} from '@tagma/types';
|
|
13
14
|
|
|
14
15
|
// Claude Code CLI reference: https://code.claude.com/docs/en/cli-reference
|
|
15
16
|
|
|
16
17
|
const DEFAULT_MODEL = 'sonnet';
|
|
17
18
|
|
|
18
|
-
//
|
|
19
|
-
//
|
|
20
|
-
//
|
|
21
|
-
|
|
19
|
+
// Tagma's canonical reasoning_effort vocabulary is low|medium|high (enforced
|
|
20
|
+
// by validate-raw.ts in the SDK). Claude Code CLI also exposes a "max" tier,
|
|
21
|
+
// but accepting it here would diverge from the SDK validator — users who set
|
|
22
|
+
// `reasoning_effort: max` in YAML would see an editor-side validation error
|
|
23
|
+
// even though the driver tolerates it. Stay in sync with the SDK instead.
|
|
24
|
+
const VALID_EFFORT = new Set(['low', 'medium', 'high']);
|
|
22
25
|
|
|
23
26
|
function resolveModel(): string {
|
|
24
27
|
return DEFAULT_MODEL;
|
|
@@ -140,7 +143,7 @@ function findExeInPath(exe: string): string | null {
|
|
|
140
143
|
return null;
|
|
141
144
|
}
|
|
142
145
|
|
|
143
|
-
const ClaudeCodeDriver: DriverPlugin = {
|
|
146
|
+
export const ClaudeCodeDriver: DriverPlugin = {
|
|
144
147
|
name: 'claude-code',
|
|
145
148
|
|
|
146
149
|
capabilities: {
|
|
@@ -249,6 +252,11 @@ const ClaudeCodeDriver: DriverPlugin = {
|
|
|
249
252
|
},
|
|
250
253
|
};
|
|
251
254
|
|
|
252
|
-
export
|
|
253
|
-
|
|
254
|
-
|
|
255
|
+
export default {
|
|
256
|
+
name: '@tagma/driver-claude-code',
|
|
257
|
+
capabilities: {
|
|
258
|
+
drivers: {
|
|
259
|
+
'claude-code': ClaudeCodeDriver,
|
|
260
|
+
},
|
|
261
|
+
},
|
|
262
|
+
} satisfies TagmaPlugin;
|