@sena-ai/runtime-claude 0.0.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.
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=mapper.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mapper.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/mapper.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,60 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import { mapSdkMessage } from '../mapper.js';
3
+ describe('mapSdkMessage', () => {
4
+ it('maps system init to session.init', () => {
5
+ const events = mapSdkMessage({
6
+ type: 'system',
7
+ subtype: 'init',
8
+ session_id: 'sess-123',
9
+ tools: [],
10
+ mcp_servers: [],
11
+ model: 'claude-sonnet-4-5',
12
+ });
13
+ expect(events).toEqual([{ type: 'session.init', sessionId: 'sess-123' }]);
14
+ });
15
+ it('maps assistant text to progress', () => {
16
+ const events = mapSdkMessage({
17
+ type: 'assistant',
18
+ message: {
19
+ content: [{ type: 'text', text: 'Hello world' }],
20
+ },
21
+ });
22
+ expect(events).toEqual([{ type: 'progress', text: 'Hello world' }]);
23
+ });
24
+ it('maps assistant tool_use to tool.start', () => {
25
+ const events = mapSdkMessage({
26
+ type: 'assistant',
27
+ message: {
28
+ content: [
29
+ { type: 'tool_use', name: 'Read' },
30
+ { type: 'text', text: 'Reading file...' },
31
+ ],
32
+ },
33
+ });
34
+ expect(events).toHaveLength(2);
35
+ expect(events[0]).toEqual({ type: 'tool.start', toolName: 'Read' });
36
+ expect(events[1]).toEqual({ type: 'progress', text: 'Reading file...' });
37
+ });
38
+ it('maps success result to result', () => {
39
+ const events = mapSdkMessage({
40
+ type: 'result',
41
+ subtype: 'success',
42
+ result: 'Final answer',
43
+ session_id: 'sess-123',
44
+ });
45
+ expect(events).toEqual([{ type: 'result', text: 'Final answer' }]);
46
+ });
47
+ it('maps error result to error', () => {
48
+ const events = mapSdkMessage({
49
+ type: 'result',
50
+ subtype: 'error_max_turns',
51
+ errors: ['Max turns reached'],
52
+ session_id: 'sess-123',
53
+ });
54
+ expect(events).toEqual([{ type: 'error', message: 'Max turns reached' }]);
55
+ });
56
+ it('returns empty array for unknown message types', () => {
57
+ expect(mapSdkMessage({ type: 'unknown' })).toEqual([]);
58
+ });
59
+ });
60
+ //# sourceMappingURL=mapper.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mapper.test.js","sourceRoot":"","sources":["../../src/__tests__/mapper.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export { claudeRuntime } from './runtime.js';
2
+ export type { ClaudeRuntimeOptions } from './runtime.js';
3
+ export { mapSdkMessage } from './mapper.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAC5C,YAAY,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA"}
package/dist/index.js ADDED
@@ -0,0 +1,3 @@
1
+ export { claudeRuntime } from './runtime.js';
2
+ export { mapSdkMessage } from './mapper.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAE5C,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA"}
@@ -0,0 +1,6 @@
1
+ import type { RuntimeEvent } from '@sena-ai/core';
2
+ /**
3
+ * Claude Agent SDK의 SDKMessage를 Sena RuntimeEvent 배열로 변환한다.
4
+ */
5
+ export declare function mapSdkMessage(msg: any): RuntimeEvent[];
6
+ //# sourceMappingURL=mapper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mapper.d.ts","sourceRoot":"","sources":["../src/mapper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAEjD;;GAEG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,GAAG,GAAG,YAAY,EAAE,CA0CtD"}
package/dist/mapper.js ADDED
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Claude Agent SDK의 SDKMessage를 Sena RuntimeEvent 배열로 변환한다.
3
+ */
4
+ export function mapSdkMessage(msg) {
5
+ const events = [];
6
+ switch (msg.type) {
7
+ case 'system':
8
+ if (msg.subtype === 'init' && msg.session_id) {
9
+ events.push({ type: 'session.init', sessionId: msg.session_id });
10
+ }
11
+ break;
12
+ case 'assistant': {
13
+ const content = msg.message?.content;
14
+ if (Array.isArray(content)) {
15
+ for (const block of content) {
16
+ if (block.type === 'tool_use') {
17
+ events.push({ type: 'tool.start', toolName: block.name ?? 'unknown' });
18
+ }
19
+ }
20
+ const text = content
21
+ .filter((b) => b.type === 'text')
22
+ .map((b) => b.text)
23
+ .join('');
24
+ if (text) {
25
+ events.push({ type: 'progress', text });
26
+ }
27
+ }
28
+ break;
29
+ }
30
+ case 'result': {
31
+ const text = msg.result ?? '';
32
+ if (msg.subtype === 'success') {
33
+ events.push({ type: 'result', text });
34
+ }
35
+ else {
36
+ const errorMsg = Array.isArray(msg.errors) ? msg.errors.join('; ') : 'Unknown error';
37
+ events.push({ type: 'error', message: errorMsg });
38
+ }
39
+ break;
40
+ }
41
+ }
42
+ return events;
43
+ }
44
+ //# sourceMappingURL=mapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mapper.js","sourceRoot":"","sources":["../src/mapper.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,GAAQ;IACpC,MAAM,MAAM,GAAmB,EAAE,CAAA;IAEjC,QAAQ,GAAG,CAAC,IAAI,EAAE,CAAC;QACjB,KAAK,QAAQ;YACX,IAAI,GAAG,CAAC,OAAO,KAAK,MAAM,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;gBAC7C,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,SAAS,EAAE,GAAG,CAAC,UAAU,EAAE,CAAC,CAAA;YAClE,CAAC;YACD,MAAK;QAEP,KAAK,WAAW,CAAC,CAAC,CAAC;YACjB,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,EAAE,OAAO,CAAA;YACpC,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC3B,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;oBAC5B,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;wBAC9B,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,KAAK,CAAC,IAAI,IAAI,SAAS,EAAE,CAAC,CAAA;oBACxE,CAAC;gBACH,CAAC;gBACD,MAAM,IAAI,GAAG,OAAO;qBACjB,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC;qBACrC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;qBACvB,IAAI,CAAC,EAAE,CAAC,CAAA;gBACX,IAAI,IAAI,EAAE,CAAC;oBACT,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAA;gBACzC,CAAC;YACH,CAAC;YACD,MAAK;QACP,CAAC;QAED,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,IAAI,EAAE,CAAA;YAC7B,IAAI,GAAG,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;gBAC9B,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAA;YACvC,CAAC;iBAAM,CAAC;gBACN,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,eAAe,CAAA;gBACpF,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAA;YACnD,CAAC;YACD,MAAK;QACP,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC"}
@@ -0,0 +1,9 @@
1
+ import type { Runtime } from '@sena-ai/core';
2
+ export type ClaudeRuntimeOptions = {
3
+ model?: string;
4
+ apiKey?: string;
5
+ maxTurns?: number;
6
+ permissionMode?: 'default' | 'acceptEdits' | 'bypassPermissions';
7
+ };
8
+ export declare function claudeRuntime(options?: ClaudeRuntimeOptions): Runtime;
9
+ //# sourceMappingURL=runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAA8E,MAAM,eAAe,CAAA;AAGxH,MAAM,MAAM,oBAAoB,GAAG;IACjC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,cAAc,CAAC,EAAE,SAAS,GAAG,aAAa,GAAG,mBAAmB,CAAA;CACjE,CAAA;AAED,wBAAgB,aAAa,CAAC,OAAO,GAAE,oBAAyB,GAAG,OAAO,CAsFzE"}
@@ -0,0 +1,83 @@
1
+ import { mapSdkMessage } from './mapper.js';
2
+ export function claudeRuntime(options = {}) {
3
+ const { model = 'claude-sonnet-4-5', apiKey, maxTurns = 100, permissionMode = 'bypassPermissions', } = options;
4
+ return {
5
+ name: 'claude',
6
+ async *createStream(streamOptions) {
7
+ const { query } = await import('@anthropic-ai/claude-agent-sdk');
8
+ const { contextFragments, prompt: promptIterable, tools, sessionId, cwd, env: envVars, abortSignal, } = streamOptions;
9
+ // Build system prompt from context fragments
10
+ const systemPrompt = buildSystemPrompt(contextFragments);
11
+ // Build MCP server config from tool ports
12
+ const runtimeInfo = { name: 'claude' };
13
+ const mcpServers = buildMcpServers(tools, runtimeInfo);
14
+ // Collect allowed tool patterns
15
+ const allowedTools = tools.map(t => `mcp__${t.name}__*`);
16
+ // Get first user message from prompt iterable
17
+ let userText = '';
18
+ for await (const msg of promptIterable) {
19
+ userText = msg.text;
20
+ break;
21
+ }
22
+ // Build SDK options
23
+ const sdkOptions = {
24
+ model: streamOptions.model || model,
25
+ maxTurns,
26
+ cwd: cwd || process.cwd(),
27
+ permissionMode,
28
+ allowDangerouslySkipPermissions: permissionMode === 'bypassPermissions',
29
+ systemPrompt,
30
+ settingSources: [],
31
+ };
32
+ // Create abort controller from signal
33
+ const controller = new AbortController();
34
+ if (abortSignal.aborted) {
35
+ controller.abort(abortSignal.reason);
36
+ }
37
+ else {
38
+ abortSignal.addEventListener('abort', () => controller.abort(abortSignal.reason), { once: true });
39
+ }
40
+ sdkOptions.abortController = controller;
41
+ if (apiKey) {
42
+ sdkOptions.env = { ...envVars, ANTHROPIC_API_KEY: apiKey };
43
+ }
44
+ else if (Object.keys(envVars).length > 0) {
45
+ sdkOptions.env = envVars;
46
+ }
47
+ if (Object.keys(mcpServers).length > 0) {
48
+ sdkOptions.mcpServers = mcpServers;
49
+ sdkOptions.allowedTools = allowedTools;
50
+ }
51
+ if (sessionId) {
52
+ sdkOptions.resume = sessionId;
53
+ }
54
+ const stream = query({ prompt: userText, options: sdkOptions });
55
+ for await (const msg of stream) {
56
+ const events = mapSdkMessage(msg);
57
+ for (const event of events) {
58
+ yield event;
59
+ }
60
+ }
61
+ },
62
+ };
63
+ }
64
+ function buildSystemPrompt(fragments) {
65
+ const systemFragments = fragments.filter(f => f.role === 'system');
66
+ const contextFragments = fragments.filter(f => f.role === 'context');
67
+ const parts = [];
68
+ for (const f of systemFragments) {
69
+ parts.push(`[${f.source}]\n${f.content}`);
70
+ }
71
+ for (const f of contextFragments) {
72
+ parts.push(`[${f.source}]\n${f.content}`);
73
+ }
74
+ return parts.join('\n\n');
75
+ }
76
+ function buildMcpServers(tools, runtimeInfo) {
77
+ const servers = {};
78
+ for (const tool of tools) {
79
+ servers[tool.name] = tool.toMcpConfig(runtimeInfo);
80
+ }
81
+ return servers;
82
+ }
83
+ //# sourceMappingURL=runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAS3C,MAAM,UAAU,aAAa,CAAC,UAAgC,EAAE;IAC9D,MAAM,EACJ,KAAK,GAAG,mBAAmB,EAC3B,MAAM,EACN,QAAQ,GAAG,GAAG,EACd,cAAc,GAAG,mBAAmB,GACrC,GAAG,OAAO,CAAA;IAEX,OAAO;QACL,IAAI,EAAE,QAAQ;QAEd,KAAK,CAAC,CAAC,YAAY,CAAC,aAAmC;YACrD,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,gCAAgC,CAAC,CAAA;YAEhE,MAAM,EACJ,gBAAgB,EAChB,MAAM,EAAE,cAAc,EACtB,KAAK,EACL,SAAS,EACT,GAAG,EACH,GAAG,EAAE,OAAO,EACZ,WAAW,GACZ,GAAG,aAAa,CAAA;YAEjB,6CAA6C;YAC7C,MAAM,YAAY,GAAG,iBAAiB,CAAC,gBAAgB,CAAC,CAAA;YAExD,0CAA0C;YAC1C,MAAM,WAAW,GAAgB,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAA;YACnD,MAAM,UAAU,GAAG,eAAe,CAAC,KAAK,EAAE,WAAW,CAAC,CAAA;YAEtD,gCAAgC;YAChC,MAAM,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,IAAI,KAAK,CAAC,CAAA;YAExD,8CAA8C;YAC9C,IAAI,QAAQ,GAAG,EAAE,CAAA;YACjB,IAAI,KAAK,EAAE,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;gBACvC,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAA;gBACnB,MAAK;YACP,CAAC;YAED,oBAAoB;YACpB,MAAM,UAAU,GAAwB;gBACtC,KAAK,EAAE,aAAa,CAAC,KAAK,IAAI,KAAK;gBACnC,QAAQ;gBACR,GAAG,EAAE,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE;gBACzB,cAAc;gBACd,+BAA+B,EAAE,cAAc,KAAK,mBAAmB;gBACvE,YAAY;gBACZ,cAAc,EAAE,EAAE;aACnB,CAAA;YAED,sCAAsC;YACtC,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAA;YACxC,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;gBACxB,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAA;YACtC,CAAC;iBAAM,CAAC;gBACN,WAAW,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;YACnG,CAAC;YACD,UAAU,CAAC,eAAe,GAAG,UAAU,CAAA;YAEvC,IAAI,MAAM,EAAE,CAAC;gBACX,UAAU,CAAC,GAAG,GAAG,EAAE,GAAG,OAAO,EAAE,iBAAiB,EAAE,MAAM,EAAE,CAAA;YAC5D,CAAC;iBAAM,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC3C,UAAU,CAAC,GAAG,GAAG,OAAO,CAAA;YAC1B,CAAC;YAED,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvC,UAAU,CAAC,UAAU,GAAG,UAAU,CAAA;gBAClC,UAAU,CAAC,YAAY,GAAG,YAAY,CAAA;YACxC,CAAC;YAED,IAAI,SAAS,EAAE,CAAC;gBACd,UAAU,CAAC,MAAM,GAAG,SAAS,CAAA;YAC/B,CAAC;YAED,MAAM,MAAM,GAAG,KAAK,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAA;YAE/D,IAAI,KAAK,EAAE,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;gBAC/B,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,CAAA;gBACjC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;oBAC3B,MAAM,KAAK,CAAA;gBACb,CAAC;YACH,CAAC;QACH,CAAC;KACF,CAAA;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,SAA4B;IACrD,MAAM,eAAe,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAA;IAClE,MAAM,gBAAgB,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,CAAA;IAEpE,MAAM,KAAK,GAAa,EAAE,CAAA;IAC1B,KAAK,MAAM,CAAC,IAAI,eAAe,EAAE,CAAC;QAChC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC,CAAA;IAC3C,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,gBAAgB,EAAE,CAAC;QACjC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC,CAAA;IAC3C,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;AAC3B,CAAC;AAED,SAAS,eAAe,CAAC,KAAiB,EAAE,WAAwB;IAClE,MAAM,OAAO,GAAwB,EAAE,CAAA;IACvC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAA;IACpD,CAAC;IACD,OAAO,OAAO,CAAA;AAChB,CAAC"}
package/package.json ADDED
@@ -0,0 +1,23 @@
1
+ {
2
+ "name": "@sena-ai/runtime-claude",
3
+ "version": "0.0.1",
4
+ "type": "module",
5
+ "exports": {
6
+ ".": {
7
+ "types": "./dist/index.d.ts",
8
+ "import": "./dist/index.js"
9
+ }
10
+ },
11
+ "files": ["dist"],
12
+ "scripts": {
13
+ "build": "tsc -b",
14
+ "dev": "tsc -b --watch"
15
+ },
16
+ "dependencies": {
17
+ "@sena-ai/core": "workspace:*",
18
+ "@anthropic-ai/claude-agent-sdk": "^0.2.0"
19
+ },
20
+ "devDependencies": {
21
+ "typescript": "^5.8.0"
22
+ }
23
+ }