@takutakahashi/claude-agentapi 0.9.0
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/.claude/config.json.example +88 -0
- package/.env.example +97 -0
- package/LICENSE +21 -0
- package/README.md +815 -0
- package/bin/cli.js +78 -0
- package/dist/__tests__/routes/action.test.d.ts +2 -0
- package/dist/__tests__/routes/action.test.d.ts.map +1 -0
- package/dist/__tests__/routes/action.test.js +262 -0
- package/dist/__tests__/routes/action.test.js.map +1 -0
- package/dist/__tests__/routes/message.test.d.ts +2 -0
- package/dist/__tests__/routes/message.test.d.ts.map +1 -0
- package/dist/__tests__/routes/message.test.js +94 -0
- package/dist/__tests__/routes/message.test.js.map +1 -0
- package/dist/__tests__/routes/messages.test.d.ts +2 -0
- package/dist/__tests__/routes/messages.test.d.ts.map +1 -0
- package/dist/__tests__/routes/messages.test.js +105 -0
- package/dist/__tests__/routes/messages.test.js.map +1 -0
- package/dist/__tests__/routes/status.test.d.ts +2 -0
- package/dist/__tests__/routes/status.test.d.ts.map +1 -0
- package/dist/__tests__/routes/status.test.js +56 -0
- package/dist/__tests__/routes/status.test.js.map +1 -0
- package/dist/__tests__/routes/tool_status.test.d.ts +2 -0
- package/dist/__tests__/routes/tool_status.test.d.ts.map +1 -0
- package/dist/__tests__/routes/tool_status.test.js +93 -0
- package/dist/__tests__/routes/tool_status.test.js.map +1 -0
- package/dist/__tests__/services/session.test.d.ts +2 -0
- package/dist/__tests__/services/session.test.d.ts.map +1 -0
- package/dist/__tests__/services/session.test.js +121 -0
- package/dist/__tests__/services/session.test.js.map +1 -0
- package/dist/__tests__/types/api.test.d.ts +2 -0
- package/dist/__tests__/types/api.test.d.ts.map +1 -0
- package/dist/__tests__/types/api.test.js +256 -0
- package/dist/__tests__/types/api.test.js.map +1 -0
- package/dist/__tests__/utils/config.test.d.ts +2 -0
- package/dist/__tests__/utils/config.test.d.ts.map +1 -0
- package/dist/__tests__/utils/config.test.js +72 -0
- package/dist/__tests__/utils/config.test.js.map +1 -0
- package/dist/__tests__/utils/logger.test.d.ts +2 -0
- package/dist/__tests__/utils/logger.test.d.ts.map +1 -0
- package/dist/__tests__/utils/logger.test.js +56 -0
- package/dist/__tests__/utils/logger.test.js.map +1 -0
- package/dist/__tests__/utils/sse.test.d.ts +2 -0
- package/dist/__tests__/utils/sse.test.d.ts.map +1 -0
- package/dist/__tests__/utils/sse.test.js +76 -0
- package/dist/__tests__/utils/sse.test.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +69 -0
- package/dist/index.js.map +1 -0
- package/dist/routes/action.d.ts +3 -0
- package/dist/routes/action.d.ts.map +1 -0
- package/dist/routes/action.js +106 -0
- package/dist/routes/action.js.map +1 -0
- package/dist/routes/events.d.ts +3 -0
- package/dist/routes/events.d.ts.map +1 -0
- package/dist/routes/events.js +27 -0
- package/dist/routes/events.js.map +1 -0
- package/dist/routes/message.d.ts +3 -0
- package/dist/routes/message.d.ts.map +1 -0
- package/dist/routes/message.js +69 -0
- package/dist/routes/message.js.map +1 -0
- package/dist/routes/messages.d.ts +3 -0
- package/dist/routes/messages.d.ts.map +1 -0
- package/dist/routes/messages.js +15 -0
- package/dist/routes/messages.js.map +1 -0
- package/dist/routes/status.d.ts +3 -0
- package/dist/routes/status.d.ts.map +1 -0
- package/dist/routes/status.js +12 -0
- package/dist/routes/status.js.map +1 -0
- package/dist/routes/tool_status.d.ts +3 -0
- package/dist/routes/tool_status.d.ts.map +1 -0
- package/dist/routes/tool_status.js +14 -0
- package/dist/routes/tool_status.js.map +1 -0
- package/dist/server.d.ts +3 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +50 -0
- package/dist/server.js.map +1 -0
- package/dist/services/agent.d.ts +45 -0
- package/dist/services/agent.d.ts.map +1 -0
- package/dist/services/agent.js +910 -0
- package/dist/services/agent.js.map +1 -0
- package/dist/services/metrics.d.ts +74 -0
- package/dist/services/metrics.d.ts.map +1 -0
- package/dist/services/metrics.js +219 -0
- package/dist/services/metrics.js.map +1 -0
- package/dist/services/session.d.ts +14 -0
- package/dist/services/session.d.ts.map +1 -0
- package/dist/services/session.js +49 -0
- package/dist/services/session.js.map +1 -0
- package/dist/types/agent.d.ts +12 -0
- package/dist/types/agent.d.ts.map +1 -0
- package/dist/types/agent.js +2 -0
- package/dist/types/agent.js.map +1 -0
- package/dist/types/api.d.ts +161 -0
- package/dist/types/api.d.ts.map +1 -0
- package/dist/types/api.js +74 -0
- package/dist/types/api.js.map +1 -0
- package/dist/types/config.d.ts +164 -0
- package/dist/types/config.d.ts.map +1 -0
- package/dist/types/config.js +6 -0
- package/dist/types/config.js.map +1 -0
- package/dist/utils/config.d.ts +15 -0
- package/dist/utils/config.d.ts.map +1 -0
- package/dist/utils/config.js +350 -0
- package/dist/utils/config.js.map +1 -0
- package/dist/utils/logger.d.ts +10 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +22 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/sse.d.ts +12 -0
- package/dist/utils/sse.d.ts.map +1 -0
- package/dist/utils/sse.js +43 -0
- package/dist/utils/sse.js.map +1 -0
- package/dist/utils/telemetry.d.ts +20 -0
- package/dist/utils/telemetry.d.ts.map +1 -0
- package/dist/utils/telemetry.js +68 -0
- package/dist/utils/telemetry.js.map +1 -0
- package/package.json +81 -0
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
// API Types based on coder/agentapi specification
|
|
3
|
+
export const MessageSchema = z.object({
|
|
4
|
+
id: z.number(),
|
|
5
|
+
role: z.enum(['user', 'assistant', 'agent', 'tool_result']),
|
|
6
|
+
content: z.string(),
|
|
7
|
+
time: z.string(), // ISO 8601 timestamp
|
|
8
|
+
type: z.enum(['normal', 'question', 'plan']).optional(),
|
|
9
|
+
// Tool execution tracking fields
|
|
10
|
+
toolUseId: z.string().optional(), // ID of tool_use (for 'agent' role messages)
|
|
11
|
+
parentToolUseId: z.string().optional(), // ID of parent tool_use (for 'tool_result' role messages)
|
|
12
|
+
status: z.enum(['success', 'error']).optional(), // Execution status (for 'tool_result' role messages)
|
|
13
|
+
error: z.string().optional(), // Error message (for 'tool_result' role messages with status='error')
|
|
14
|
+
});
|
|
15
|
+
export const MessagesResponseBodySchema = z.object({
|
|
16
|
+
$schema: z.string().optional(),
|
|
17
|
+
messages: z.array(MessageSchema),
|
|
18
|
+
});
|
|
19
|
+
export const ToolStatusResponseBodySchema = z.object({
|
|
20
|
+
$schema: z.string().optional(),
|
|
21
|
+
messages: z.array(MessageSchema),
|
|
22
|
+
});
|
|
23
|
+
export const PostMessageRequestSchema = z.object({
|
|
24
|
+
content: z.string(),
|
|
25
|
+
type: z.enum(['user', 'raw']),
|
|
26
|
+
});
|
|
27
|
+
export const PostMessageResponseSchema = z.object({
|
|
28
|
+
ok: z.boolean(),
|
|
29
|
+
});
|
|
30
|
+
export const StatusResponseSchema = z.object({
|
|
31
|
+
agent_type: z.string(),
|
|
32
|
+
status: z.enum(['running', 'stable']),
|
|
33
|
+
});
|
|
34
|
+
export const UploadResponseSchema = z.object({
|
|
35
|
+
filePath: z.string(),
|
|
36
|
+
ok: z.boolean(),
|
|
37
|
+
});
|
|
38
|
+
// Problem+JSON format for error responses
|
|
39
|
+
export const ProblemJsonSchema = z.object({
|
|
40
|
+
type: z.string(),
|
|
41
|
+
title: z.string(),
|
|
42
|
+
status: z.number(),
|
|
43
|
+
detail: z.string().optional(),
|
|
44
|
+
instance: z.string().optional(),
|
|
45
|
+
});
|
|
46
|
+
// Action request schemas for various agent actions
|
|
47
|
+
export const AnswerQuestionActionSchema = z.object({
|
|
48
|
+
type: z.literal('answer_question'),
|
|
49
|
+
answers: z.record(z.string(), z.union([z.string(), z.array(z.string())])),
|
|
50
|
+
});
|
|
51
|
+
export const ApprovePlanActionSchema = z.object({
|
|
52
|
+
type: z.literal('approve_plan'),
|
|
53
|
+
approved: z.boolean(),
|
|
54
|
+
});
|
|
55
|
+
export const StopAgentActionSchema = z.object({
|
|
56
|
+
type: z.literal('stop_agent'),
|
|
57
|
+
});
|
|
58
|
+
export const PostActionRequestSchema = z.discriminatedUnion('type', [
|
|
59
|
+
AnswerQuestionActionSchema,
|
|
60
|
+
ApprovePlanActionSchema,
|
|
61
|
+
StopAgentActionSchema,
|
|
62
|
+
]);
|
|
63
|
+
export const PostActionResponseSchema = z.object({
|
|
64
|
+
ok: z.boolean(),
|
|
65
|
+
});
|
|
66
|
+
export const PendingActionSchema = z.object({
|
|
67
|
+
type: z.string(),
|
|
68
|
+
tool_use_id: z.string(),
|
|
69
|
+
content: z.unknown(),
|
|
70
|
+
});
|
|
71
|
+
export const GetActionResponseSchema = z.object({
|
|
72
|
+
pending_actions: z.array(PendingActionSchema),
|
|
73
|
+
});
|
|
74
|
+
//# sourceMappingURL=api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/types/api.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Claude Code compatible configuration types
|
|
3
|
+
* Based on the same structure used by Claude Code CLI
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* MCP Server configuration - stdio type
|
|
7
|
+
*/
|
|
8
|
+
export interface MCPServerStdioConfig {
|
|
9
|
+
/** Transport type */
|
|
10
|
+
type?: 'stdio';
|
|
11
|
+
/** Command to execute the MCP server */
|
|
12
|
+
command: string;
|
|
13
|
+
/** Arguments to pass to the command */
|
|
14
|
+
args?: string[];
|
|
15
|
+
/** Environment variables for the server process */
|
|
16
|
+
env?: Record<string, string>;
|
|
17
|
+
/** Whether the server is disabled */
|
|
18
|
+
disabled?: boolean;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* MCP Server configuration - HTTP type
|
|
22
|
+
*/
|
|
23
|
+
export interface MCPServerHttpConfig {
|
|
24
|
+
/** Transport type */
|
|
25
|
+
type: 'http' | 'sse';
|
|
26
|
+
/** Server URL */
|
|
27
|
+
url: string;
|
|
28
|
+
/** HTTP headers */
|
|
29
|
+
headers?: Record<string, string>;
|
|
30
|
+
/** Environment variables */
|
|
31
|
+
env?: Record<string, string>;
|
|
32
|
+
/** Whether the server is disabled */
|
|
33
|
+
disabled?: boolean;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* MCP Server configuration (union type)
|
|
37
|
+
*/
|
|
38
|
+
export type MCPServerConfig = MCPServerStdioConfig | MCPServerHttpConfig;
|
|
39
|
+
/**
|
|
40
|
+
* MCP Servers configuration map
|
|
41
|
+
*/
|
|
42
|
+
export type MCPServersConfig = Record<string, MCPServerConfig>;
|
|
43
|
+
/**
|
|
44
|
+
* Plugin configuration
|
|
45
|
+
*/
|
|
46
|
+
export interface PluginConfig {
|
|
47
|
+
/** Whether the plugin is enabled */
|
|
48
|
+
enabled?: boolean;
|
|
49
|
+
/** Plugin-specific configuration */
|
|
50
|
+
config?: Record<string, unknown>;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Plugins configuration map
|
|
54
|
+
*/
|
|
55
|
+
export type PluginsConfig = Record<string, PluginConfig>;
|
|
56
|
+
/**
|
|
57
|
+
* Hook configuration
|
|
58
|
+
*/
|
|
59
|
+
export interface HookConfig {
|
|
60
|
+
/** Command to execute */
|
|
61
|
+
command: string;
|
|
62
|
+
/** Arguments to pass to the command */
|
|
63
|
+
args?: string[];
|
|
64
|
+
/** Environment variables for the hook process */
|
|
65
|
+
env?: Record<string, string>;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Hooks configuration map
|
|
69
|
+
* Hooks are executed at specific events (e.g., user-prompt-submit-hook, tool-call-hook)
|
|
70
|
+
*/
|
|
71
|
+
export type HooksConfig = Record<string, HookConfig>;
|
|
72
|
+
/**
|
|
73
|
+
* Custom command configuration
|
|
74
|
+
*/
|
|
75
|
+
export interface CommandConfig {
|
|
76
|
+
/** Command to execute */
|
|
77
|
+
command: string;
|
|
78
|
+
/** Arguments to pass to the command */
|
|
79
|
+
args?: string[];
|
|
80
|
+
/** Environment variables for the command process */
|
|
81
|
+
env?: Record<string, string>;
|
|
82
|
+
/** Description of what the command does */
|
|
83
|
+
description?: string;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Commands configuration map
|
|
87
|
+
* Custom commands that can be invoked (e.g., /deploy, /test)
|
|
88
|
+
*/
|
|
89
|
+
export type CommandsConfig = Record<string, CommandConfig>;
|
|
90
|
+
/**
|
|
91
|
+
* Main Claude configuration structure
|
|
92
|
+
* Compatible with Claude Code's .claude/config.json
|
|
93
|
+
*/
|
|
94
|
+
export interface ClaudeConfig {
|
|
95
|
+
/** MCP server configurations */
|
|
96
|
+
mcpServers?: MCPServersConfig;
|
|
97
|
+
/** Plugin configurations */
|
|
98
|
+
plugins?: PluginsConfig;
|
|
99
|
+
/** Skills configurations (alias for plugins) */
|
|
100
|
+
skills?: PluginsConfig;
|
|
101
|
+
/** Hook configurations */
|
|
102
|
+
hooks?: HooksConfig;
|
|
103
|
+
/** Custom command configurations */
|
|
104
|
+
commands?: CommandsConfig;
|
|
105
|
+
/** Allowed tools (for MCP tool permissions) - supports wildcards like "mcp__servername__*" */
|
|
106
|
+
allowedTools?: string[];
|
|
107
|
+
/** Environment variables */
|
|
108
|
+
env?: Record<string, string>;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Claude Code settings.json structure
|
|
112
|
+
*/
|
|
113
|
+
export interface ClaudeSettings {
|
|
114
|
+
/** Enabled plugins map (name@marketplace -> boolean) */
|
|
115
|
+
enabledPlugins?: Record<string, boolean>;
|
|
116
|
+
/** Environment variables */
|
|
117
|
+
env?: Record<string, string>;
|
|
118
|
+
/** Extra known marketplaces configuration */
|
|
119
|
+
extraKnownMarketplaces?: Record<string, {
|
|
120
|
+
source: {
|
|
121
|
+
source: string;
|
|
122
|
+
path: string;
|
|
123
|
+
};
|
|
124
|
+
}>;
|
|
125
|
+
/** Other settings */
|
|
126
|
+
settings?: Record<string, unknown>;
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* SDK plugin configuration
|
|
130
|
+
*/
|
|
131
|
+
export interface SdkPluginConfig {
|
|
132
|
+
type: 'local';
|
|
133
|
+
path: string;
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Setting source type for loading settings and CLAUDE.md files
|
|
137
|
+
*/
|
|
138
|
+
export type SettingSource = 'user' | 'project' | 'local';
|
|
139
|
+
/**
|
|
140
|
+
* Merged configuration with environment variable overrides
|
|
141
|
+
*/
|
|
142
|
+
export interface ResolvedConfig {
|
|
143
|
+
/** Working directory for the agent */
|
|
144
|
+
workingDirectory: string;
|
|
145
|
+
/** Permission mode */
|
|
146
|
+
permissionMode: 'default' | 'acceptEdits' | 'bypassPermissions';
|
|
147
|
+
/** MCP servers to be passed to the Agent SDK */
|
|
148
|
+
mcpServers?: MCPServersConfig;
|
|
149
|
+
/** Plugins/skills configuration (from config.json) */
|
|
150
|
+
plugins?: PluginsConfig;
|
|
151
|
+
/** Resolved SDK plugins (from settings.json) */
|
|
152
|
+
sdkPlugins?: SdkPluginConfig[];
|
|
153
|
+
/** Hooks configuration */
|
|
154
|
+
hooks?: HooksConfig;
|
|
155
|
+
/** Custom commands configuration */
|
|
156
|
+
commands?: CommandsConfig;
|
|
157
|
+
/** Allowed tools (for MCP tool permissions) */
|
|
158
|
+
allowedTools?: string[];
|
|
159
|
+
/** Environment variables */
|
|
160
|
+
env?: Record<string, string>;
|
|
161
|
+
/** Setting sources for loading CLAUDE.md and settings files */
|
|
162
|
+
settingSources?: SettingSource[];
|
|
163
|
+
}
|
|
164
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/types/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/types/config.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { ClaudeConfig, ResolvedConfig } from '../types/config.js';
|
|
2
|
+
/**
|
|
3
|
+
* Load Claude configuration from .claude/config.json
|
|
4
|
+
* Checks in order:
|
|
5
|
+
* 1. Global config: ~/.claude/config.json
|
|
6
|
+
* 2. Project config: .claude/config.json (current working directory)
|
|
7
|
+
* 3. Working directory config: {workingDirectory}/.claude/config.json
|
|
8
|
+
* 4. --mcp-config option (highest priority)
|
|
9
|
+
*/
|
|
10
|
+
export declare function loadClaudeConfig(workingDirectory?: string): Promise<ClaudeConfig>;
|
|
11
|
+
/**
|
|
12
|
+
* Resolve final configuration with environment variable overrides
|
|
13
|
+
*/
|
|
14
|
+
export declare function resolveConfig(): Promise<ResolvedConfig>;
|
|
15
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAmF,MAAM,oBAAoB,CAAC;AAgCxJ;;;;;;;GAOG;AACH,wBAAsB,gBAAgB,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAyCvF;AAgMD;;GAEG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,cAAc,CAAC,CAiG7D"}
|
|
@@ -0,0 +1,350 @@
|
|
|
1
|
+
import { readFile, access, stat } from 'fs/promises';
|
|
2
|
+
import { join } from 'path';
|
|
3
|
+
import { homedir } from 'os';
|
|
4
|
+
import { logger } from './logger.js';
|
|
5
|
+
/**
|
|
6
|
+
* Load MCP config from --mcp-config option
|
|
7
|
+
* Supports both JSON string and file path
|
|
8
|
+
*/
|
|
9
|
+
async function loadMcpConfigFromOption() {
|
|
10
|
+
const mcpConfigOption = process.env.CLAUDE_MCP_CONFIG;
|
|
11
|
+
if (!mcpConfigOption) {
|
|
12
|
+
return null;
|
|
13
|
+
}
|
|
14
|
+
try {
|
|
15
|
+
// First, try to parse as JSON string
|
|
16
|
+
try {
|
|
17
|
+
const parsed = JSON.parse(mcpConfigOption);
|
|
18
|
+
logger.info('Loaded MCP config from --mcp-config (JSON string)');
|
|
19
|
+
return parsed;
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
// If not valid JSON, try as file path
|
|
23
|
+
const content = await readFile(mcpConfigOption, 'utf-8');
|
|
24
|
+
const parsed = JSON.parse(content);
|
|
25
|
+
logger.info(`Loaded MCP config from --mcp-config (file): ${mcpConfigOption}`);
|
|
26
|
+
return parsed;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
catch (error) {
|
|
30
|
+
logger.error(`Failed to load MCP config from --mcp-config: ${error}`);
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Load Claude configuration from .claude/config.json
|
|
36
|
+
* Checks in order:
|
|
37
|
+
* 1. Global config: ~/.claude/config.json
|
|
38
|
+
* 2. Project config: .claude/config.json (current working directory)
|
|
39
|
+
* 3. Working directory config: {workingDirectory}/.claude/config.json
|
|
40
|
+
* 4. --mcp-config option (highest priority)
|
|
41
|
+
*/
|
|
42
|
+
export async function loadClaudeConfig(workingDirectory) {
|
|
43
|
+
const configs = [];
|
|
44
|
+
// 1. Load global config
|
|
45
|
+
const globalConfigPath = join(homedir(), '.claude', 'config.json');
|
|
46
|
+
const globalConfig = await loadConfigFile(globalConfigPath);
|
|
47
|
+
if (globalConfig) {
|
|
48
|
+
configs.push(globalConfig);
|
|
49
|
+
logger.info(`Loaded global config from: ${globalConfigPath}`);
|
|
50
|
+
}
|
|
51
|
+
// 2. Load project config (from current working directory)
|
|
52
|
+
const projectConfigPath = join(process.cwd(), '.claude', 'config.json');
|
|
53
|
+
if (projectConfigPath !== globalConfigPath) {
|
|
54
|
+
const projectConfig = await loadConfigFile(projectConfigPath);
|
|
55
|
+
if (projectConfig) {
|
|
56
|
+
configs.push(projectConfig);
|
|
57
|
+
logger.info(`Loaded project config from: ${projectConfigPath}`);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
// 3. Load working directory config (if specified and different)
|
|
61
|
+
if (workingDirectory) {
|
|
62
|
+
const workingDirConfigPath = join(workingDirectory, '.claude', 'config.json');
|
|
63
|
+
if (workingDirConfigPath !== globalConfigPath && workingDirConfigPath !== projectConfigPath) {
|
|
64
|
+
const workingDirConfig = await loadConfigFile(workingDirConfigPath);
|
|
65
|
+
if (workingDirConfig) {
|
|
66
|
+
configs.push(workingDirConfig);
|
|
67
|
+
logger.info(`Loaded working directory config from: ${workingDirConfigPath}`);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
// 4. Load MCP config from --mcp-config option (highest priority)
|
|
72
|
+
const mcpConfigFromOption = await loadMcpConfigFromOption();
|
|
73
|
+
if (mcpConfigFromOption) {
|
|
74
|
+
configs.push(mcpConfigFromOption);
|
|
75
|
+
}
|
|
76
|
+
// Merge all configs (later configs override earlier ones)
|
|
77
|
+
return mergeConfigs(configs);
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Load a single config file
|
|
81
|
+
*/
|
|
82
|
+
async function loadConfigFile(path) {
|
|
83
|
+
try {
|
|
84
|
+
// Check if file exists
|
|
85
|
+
await access(path);
|
|
86
|
+
const content = await readFile(path, 'utf-8');
|
|
87
|
+
const config = JSON.parse(content);
|
|
88
|
+
return config;
|
|
89
|
+
}
|
|
90
|
+
catch (error) {
|
|
91
|
+
// File doesn't exist or can't be read - this is not an error
|
|
92
|
+
if (error.code === 'ENOENT') {
|
|
93
|
+
logger.debug(`Config file not found: ${path}`);
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
logger.warn(`Failed to load config from ${path}:`, error);
|
|
97
|
+
}
|
|
98
|
+
return null;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Merge multiple config objects
|
|
103
|
+
* Later configs override earlier ones
|
|
104
|
+
*/
|
|
105
|
+
function mergeConfigs(configs) {
|
|
106
|
+
const merged = {};
|
|
107
|
+
for (const config of configs) {
|
|
108
|
+
// Merge mcpServers
|
|
109
|
+
if (config.mcpServers) {
|
|
110
|
+
merged.mcpServers = {
|
|
111
|
+
...merged.mcpServers,
|
|
112
|
+
...config.mcpServers,
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
// Merge plugins
|
|
116
|
+
if (config.plugins) {
|
|
117
|
+
merged.plugins = {
|
|
118
|
+
...merged.plugins,
|
|
119
|
+
...config.plugins,
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
// Merge skills (alias for plugins)
|
|
123
|
+
if (config.skills) {
|
|
124
|
+
merged.skills = {
|
|
125
|
+
...merged.skills,
|
|
126
|
+
...config.skills,
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
// Merge hooks
|
|
130
|
+
if (config.hooks) {
|
|
131
|
+
merged.hooks = {
|
|
132
|
+
...merged.hooks,
|
|
133
|
+
...config.hooks,
|
|
134
|
+
};
|
|
135
|
+
}
|
|
136
|
+
// Merge commands
|
|
137
|
+
if (config.commands) {
|
|
138
|
+
merged.commands = {
|
|
139
|
+
...merged.commands,
|
|
140
|
+
...config.commands,
|
|
141
|
+
};
|
|
142
|
+
}
|
|
143
|
+
// Merge allowedTools (concatenate arrays)
|
|
144
|
+
if (config.allowedTools) {
|
|
145
|
+
merged.allowedTools = [
|
|
146
|
+
...(merged.allowedTools || []),
|
|
147
|
+
...config.allowedTools,
|
|
148
|
+
];
|
|
149
|
+
}
|
|
150
|
+
// Merge env
|
|
151
|
+
if (config.env) {
|
|
152
|
+
merged.env = {
|
|
153
|
+
...merged.env,
|
|
154
|
+
...config.env,
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
return merged;
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Load Claude settings from ~/.claude/settings.json
|
|
162
|
+
*/
|
|
163
|
+
async function loadClaudeSettings() {
|
|
164
|
+
const settingsPath = join(homedir(), '.claude', 'settings.json');
|
|
165
|
+
try {
|
|
166
|
+
await access(settingsPath);
|
|
167
|
+
const content = await readFile(settingsPath, 'utf-8');
|
|
168
|
+
const settings = JSON.parse(content);
|
|
169
|
+
logger.debug(`Loaded settings from: ${settingsPath}`);
|
|
170
|
+
return settings;
|
|
171
|
+
}
|
|
172
|
+
catch (error) {
|
|
173
|
+
if (error.code === 'ENOENT') {
|
|
174
|
+
logger.debug(`Settings file not found: ${settingsPath}`);
|
|
175
|
+
}
|
|
176
|
+
else {
|
|
177
|
+
logger.warn(`Failed to load settings from ${settingsPath}:`, error);
|
|
178
|
+
}
|
|
179
|
+
return null;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Resolve plugin path from marketplace
|
|
184
|
+
*/
|
|
185
|
+
async function resolvePluginPath(pluginName, marketplace, settings) {
|
|
186
|
+
// Get marketplace path
|
|
187
|
+
let marketplacePath;
|
|
188
|
+
if (settings?.extraKnownMarketplaces?.[marketplace]) {
|
|
189
|
+
// Use custom marketplace path from settings
|
|
190
|
+
marketplacePath = settings.extraKnownMarketplaces[marketplace].source.path;
|
|
191
|
+
}
|
|
192
|
+
else {
|
|
193
|
+
// Use default marketplace path
|
|
194
|
+
marketplacePath = join(homedir(), '.claude', 'plugins', 'marketplaces', marketplace);
|
|
195
|
+
}
|
|
196
|
+
// Construct plugin path
|
|
197
|
+
const pluginPath = join(marketplacePath, 'plugins', pluginName);
|
|
198
|
+
// Check if plugin directory exists
|
|
199
|
+
try {
|
|
200
|
+
const stats = await stat(pluginPath);
|
|
201
|
+
if (stats.isDirectory()) {
|
|
202
|
+
logger.debug(`Resolved plugin ${pluginName}@${marketplace} to: ${pluginPath}`);
|
|
203
|
+
return pluginPath;
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
catch (error) {
|
|
207
|
+
logger.debug(`Plugin not found: ${pluginPath}`);
|
|
208
|
+
}
|
|
209
|
+
return null;
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Convert enabled plugins from settings.json to SDK format
|
|
213
|
+
*/
|
|
214
|
+
async function resolvePluginsFromSettings(settings) {
|
|
215
|
+
if (!settings?.enabledPlugins) {
|
|
216
|
+
return [];
|
|
217
|
+
}
|
|
218
|
+
const sdkPlugins = [];
|
|
219
|
+
for (const [fullName, enabled] of Object.entries(settings.enabledPlugins)) {
|
|
220
|
+
if (!enabled) {
|
|
221
|
+
continue;
|
|
222
|
+
}
|
|
223
|
+
// Parse plugin name: "name@marketplace" or just "name"
|
|
224
|
+
const [pluginName, marketplace = 'claude-plugins-official'] = fullName.split('@');
|
|
225
|
+
// Resolve plugin path
|
|
226
|
+
const pluginPath = await resolvePluginPath(pluginName, marketplace, settings);
|
|
227
|
+
if (pluginPath) {
|
|
228
|
+
sdkPlugins.push({
|
|
229
|
+
type: 'local',
|
|
230
|
+
path: pluginPath,
|
|
231
|
+
});
|
|
232
|
+
logger.debug(`Added plugin: ${fullName} from ${pluginPath}`);
|
|
233
|
+
}
|
|
234
|
+
else {
|
|
235
|
+
logger.warn(`Plugin ${fullName} not found, skipping`);
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
return sdkPlugins;
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* Resolve final configuration with environment variable overrides
|
|
242
|
+
*/
|
|
243
|
+
export async function resolveConfig() {
|
|
244
|
+
// Get working directory from env or default to current directory
|
|
245
|
+
const workingDirectory = process.env.CLAUDE_WORKING_DIRECTORY || process.cwd();
|
|
246
|
+
// Load Claude config files
|
|
247
|
+
const claudeConfig = await loadClaudeConfig(workingDirectory);
|
|
248
|
+
// Load Claude settings
|
|
249
|
+
const settings = await loadClaudeSettings();
|
|
250
|
+
// Determine permission mode
|
|
251
|
+
let permissionMode = 'default';
|
|
252
|
+
if (process.env.DANGEROUSLY_SKIP_PERMISSIONS === 'true') {
|
|
253
|
+
permissionMode = 'bypassPermissions';
|
|
254
|
+
logger.warn('⚠️ WARNING: All permission checks are disabled (bypassPermissions mode)');
|
|
255
|
+
}
|
|
256
|
+
else if (process.env.CLAUDE_PERMISSION_MODE) {
|
|
257
|
+
const mode = process.env.CLAUDE_PERMISSION_MODE;
|
|
258
|
+
if (mode === 'default' || mode === 'acceptEdits' || mode === 'bypassPermissions') {
|
|
259
|
+
permissionMode = mode;
|
|
260
|
+
}
|
|
261
|
+
else {
|
|
262
|
+
logger.warn(`Invalid permission mode: ${mode}. Using default.`);
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
// Filter out disabled MCP servers
|
|
266
|
+
const mcpServers = filterEnabledMCPServers(claudeConfig.mcpServers);
|
|
267
|
+
// Merge plugins and skills
|
|
268
|
+
const plugins = {
|
|
269
|
+
...claudeConfig.skills,
|
|
270
|
+
...claudeConfig.plugins,
|
|
271
|
+
};
|
|
272
|
+
// Resolve SDK plugins from settings.json
|
|
273
|
+
const sdkPlugins = await resolvePluginsFromSettings(settings);
|
|
274
|
+
// Determine setting sources for loading CLAUDE.md files
|
|
275
|
+
// Default: ['user', 'project'] to enable CLAUDE.md loading
|
|
276
|
+
let settingSources = ['user', 'project'];
|
|
277
|
+
// Allow override via environment variable (comma-separated)
|
|
278
|
+
if (process.env.CLAUDE_SETTING_SOURCES) {
|
|
279
|
+
const sources = process.env.CLAUDE_SETTING_SOURCES.split(',').map(s => s.trim());
|
|
280
|
+
// Validate sources
|
|
281
|
+
const validSources = sources.filter(s => ['user', 'project', 'local'].includes(s));
|
|
282
|
+
if (validSources.length > 0) {
|
|
283
|
+
settingSources = validSources;
|
|
284
|
+
}
|
|
285
|
+
else {
|
|
286
|
+
logger.warn(`Invalid CLAUDE_SETTING_SOURCES: ${process.env.CLAUDE_SETTING_SOURCES}. Using default: user,project`);
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
const resolved = {
|
|
290
|
+
workingDirectory,
|
|
291
|
+
permissionMode,
|
|
292
|
+
mcpServers,
|
|
293
|
+
plugins,
|
|
294
|
+
sdkPlugins: sdkPlugins.length > 0 ? sdkPlugins : undefined,
|
|
295
|
+
hooks: claudeConfig.hooks,
|
|
296
|
+
commands: claudeConfig.commands,
|
|
297
|
+
allowedTools: claudeConfig.allowedTools,
|
|
298
|
+
env: claudeConfig.env,
|
|
299
|
+
settingSources,
|
|
300
|
+
};
|
|
301
|
+
// Log configuration summary
|
|
302
|
+
logger.info('Configuration resolved:');
|
|
303
|
+
logger.info(` Working directory: ${resolved.workingDirectory}`);
|
|
304
|
+
logger.info(` Permission mode: ${resolved.permissionMode}`);
|
|
305
|
+
logger.info(` Setting sources: ${resolved.settingSources?.join(', ') || 'none'} (CLAUDE.md enabled: ${resolved.settingSources?.includes('project') ? 'yes' : 'no'})`);
|
|
306
|
+
if (mcpServers && Object.keys(mcpServers).length > 0) {
|
|
307
|
+
logger.info(` MCP servers: ${Object.keys(mcpServers).join(', ')}`);
|
|
308
|
+
}
|
|
309
|
+
else {
|
|
310
|
+
logger.info(' MCP servers: none');
|
|
311
|
+
}
|
|
312
|
+
if (sdkPlugins.length > 0) {
|
|
313
|
+
logger.info(` SDK Plugins: ${sdkPlugins.length} plugin(s) loaded from settings.json`);
|
|
314
|
+
}
|
|
315
|
+
else {
|
|
316
|
+
logger.info(' SDK Plugins: none');
|
|
317
|
+
}
|
|
318
|
+
if (resolved.hooks && Object.keys(resolved.hooks).length > 0) {
|
|
319
|
+
logger.info(` Hooks: ${Object.keys(resolved.hooks).join(', ')}`);
|
|
320
|
+
}
|
|
321
|
+
else {
|
|
322
|
+
logger.info(' Hooks: none');
|
|
323
|
+
}
|
|
324
|
+
if (resolved.commands && Object.keys(resolved.commands).length > 0) {
|
|
325
|
+
logger.info(` Commands: ${Object.keys(resolved.commands).join(', ')}`);
|
|
326
|
+
}
|
|
327
|
+
else {
|
|
328
|
+
logger.info(' Commands: none');
|
|
329
|
+
}
|
|
330
|
+
return resolved;
|
|
331
|
+
}
|
|
332
|
+
/**
|
|
333
|
+
* Filter out disabled MCP servers
|
|
334
|
+
*/
|
|
335
|
+
function filterEnabledMCPServers(servers) {
|
|
336
|
+
if (!servers) {
|
|
337
|
+
return undefined;
|
|
338
|
+
}
|
|
339
|
+
const enabled = {};
|
|
340
|
+
for (const [name, config] of Object.entries(servers)) {
|
|
341
|
+
if (!config.disabled) {
|
|
342
|
+
enabled[name] = config;
|
|
343
|
+
}
|
|
344
|
+
else {
|
|
345
|
+
logger.info(`MCP server '${name}' is disabled, skipping`);
|
|
346
|
+
}
|
|
347
|
+
}
|
|
348
|
+
return Object.keys(enabled).length > 0 ? enabled : undefined;
|
|
349
|
+
}
|
|
350
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
declare class Logger {
|
|
2
|
+
private formatMessage;
|
|
3
|
+
info(message: string, ...args: unknown[]): void;
|
|
4
|
+
warn(message: string, ...args: unknown[]): void;
|
|
5
|
+
error(message: string, ...args: unknown[]): void;
|
|
6
|
+
debug(message: string, ...args: unknown[]): void;
|
|
7
|
+
}
|
|
8
|
+
export declare const logger: Logger;
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"AAEA,cAAM,MAAM;IACV,OAAO,CAAC,aAAa;IAKrB,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAI/C,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAI/C,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAIhD,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;CAKjD;AAED,eAAO,MAAM,MAAM,QAAe,CAAC"}
|