agentinit 1.6.0 → 1.8.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/CHANGELOG.md +40 -0
- package/README.md +220 -114
- package/dist/agents/Agent.d.ts +44 -0
- package/dist/agents/Agent.d.ts.map +1 -1
- package/dist/agents/Agent.js +111 -22
- package/dist/agents/Agent.js.map +1 -1
- package/dist/agents/AiderAgent.d.ts +9 -0
- package/dist/agents/AiderAgent.d.ts.map +1 -0
- package/dist/agents/AiderAgent.js +135 -0
- package/dist/agents/AiderAgent.js.map +1 -0
- package/dist/agents/ClaudeAgent.d.ts +4 -0
- package/dist/agents/ClaudeAgent.d.ts.map +1 -1
- package/dist/agents/ClaudeAgent.js +33 -18
- package/dist/agents/ClaudeAgent.js.map +1 -1
- package/dist/agents/ClaudeDesktopAgent.d.ts +5 -0
- package/dist/agents/ClaudeDesktopAgent.d.ts.map +1 -1
- package/dist/agents/ClaudeDesktopAgent.js +31 -1
- package/dist/agents/ClaudeDesktopAgent.js.map +1 -1
- package/dist/agents/ClineAgent.d.ts +8 -0
- package/dist/agents/ClineAgent.d.ts.map +1 -0
- package/dist/agents/ClineAgent.js +42 -0
- package/dist/agents/ClineAgent.js.map +1 -0
- package/dist/agents/CodexCliAgent.d.ts +4 -0
- package/dist/agents/CodexCliAgent.d.ts.map +1 -1
- package/dist/agents/CodexCliAgent.js +38 -8
- package/dist/agents/CodexCliAgent.js.map +1 -1
- package/dist/agents/CopilotAgent.d.ts +9 -0
- package/dist/agents/CopilotAgent.d.ts.map +1 -0
- package/dist/agents/CopilotAgent.js +131 -0
- package/dist/agents/CopilotAgent.js.map +1 -0
- package/dist/agents/CursorAgent.d.ts +4 -4
- package/dist/agents/CursorAgent.d.ts.map +1 -1
- package/dist/agents/CursorAgent.js +32 -43
- package/dist/agents/CursorAgent.js.map +1 -1
- package/dist/agents/DroidAgent.d.ts +5 -0
- package/dist/agents/DroidAgent.d.ts.map +1 -1
- package/dist/agents/DroidAgent.js +37 -18
- package/dist/agents/DroidAgent.js.map +1 -1
- package/dist/agents/GeminiCliAgent.d.ts +4 -0
- package/dist/agents/GeminiCliAgent.d.ts.map +1 -1
- package/dist/agents/GeminiCliAgent.js +37 -8
- package/dist/agents/GeminiCliAgent.js.map +1 -1
- package/dist/agents/MarkdownRulesAgent.d.ts +13 -0
- package/dist/agents/MarkdownRulesAgent.d.ts.map +1 -0
- package/dist/agents/MarkdownRulesAgent.js +53 -0
- package/dist/agents/MarkdownRulesAgent.js.map +1 -0
- package/dist/agents/RooCodeAgent.d.ts +9 -0
- package/dist/agents/RooCodeAgent.d.ts.map +1 -0
- package/dist/agents/RooCodeAgent.js +131 -0
- package/dist/agents/RooCodeAgent.js.map +1 -0
- package/dist/agents/WindsurfAgent.d.ts +9 -0
- package/dist/agents/WindsurfAgent.d.ts.map +1 -0
- package/dist/agents/WindsurfAgent.js +127 -0
- package/dist/agents/WindsurfAgent.js.map +1 -0
- package/dist/agents/ZedAgent.d.ts +9 -0
- package/dist/agents/ZedAgent.d.ts.map +1 -0
- package/dist/agents/ZedAgent.js +127 -0
- package/dist/agents/ZedAgent.js.map +1 -0
- package/dist/cli.js +29992 -11107
- package/dist/cli.js.map +1 -1
- package/dist/commands/apply.d.ts +10 -0
- package/dist/commands/apply.d.ts.map +1 -1
- package/dist/commands/apply.js +136 -5
- package/dist/commands/apply.js.map +1 -1
- package/dist/commands/detect.d.ts.map +1 -1
- package/dist/commands/detect.js +25 -0
- package/dist/commands/detect.js.map +1 -1
- package/dist/commands/init.js +1 -1
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/mcp.d.ts +2 -7
- package/dist/commands/mcp.d.ts.map +1 -1
- package/dist/commands/mcp.js +541 -110
- package/dist/commands/mcp.js.map +1 -1
- package/dist/commands/plugins.d.ts +3 -0
- package/dist/commands/plugins.d.ts.map +1 -0
- package/dist/commands/plugins.js +309 -0
- package/dist/commands/plugins.js.map +1 -0
- package/dist/commands/revert.d.ts +7 -0
- package/dist/commands/revert.d.ts.map +1 -0
- package/dist/commands/revert.js +48 -0
- package/dist/commands/revert.js.map +1 -0
- package/dist/commands/rules.d.ts +3 -0
- package/dist/commands/rules.d.ts.map +1 -0
- package/dist/commands/rules.js +354 -0
- package/dist/commands/rules.js.map +1 -0
- package/dist/commands/skills.d.ts +3 -0
- package/dist/commands/skills.d.ts.map +1 -0
- package/dist/commands/skills.js +179 -0
- package/dist/commands/skills.js.map +1 -0
- package/dist/commands/sync.d.ts +1 -0
- package/dist/commands/sync.d.ts.map +1 -1
- package/dist/commands/sync.js +18 -1
- package/dist/commands/sync.js.map +1 -1
- package/dist/commands/verifyMcp.d.ts.map +1 -1
- package/dist/commands/verifyMcp.js +27 -5
- package/dist/commands/verifyMcp.js.map +1 -1
- package/dist/constants/index.d.ts +1 -1
- package/dist/constants/index.d.ts.map +1 -1
- package/dist/constants/index.js +1 -1
- package/dist/constants/index.js.map +1 -1
- package/dist/constants/mcp.d.ts +1 -0
- package/dist/constants/mcp.d.ts.map +1 -1
- package/dist/constants/mcp.js +2 -0
- package/dist/constants/mcp.js.map +1 -1
- package/dist/core/agentDetector.d.ts.map +1 -1
- package/dist/core/agentDetector.js +8 -2
- package/dist/core/agentDetector.js.map +1 -1
- package/dist/core/agentManager.d.ts.map +1 -1
- package/dist/core/agentManager.js +12 -0
- package/dist/core/agentManager.js.map +1 -1
- package/dist/core/gitignoreManager.d.ts +8 -0
- package/dist/core/gitignoreManager.d.ts.map +1 -0
- package/dist/core/gitignoreManager.js +114 -0
- package/dist/core/gitignoreManager.js.map +1 -0
- package/dist/core/managedState.d.ts +42 -0
- package/dist/core/managedState.d.ts.map +1 -0
- package/dist/core/managedState.js +194 -0
- package/dist/core/managedState.js.map +1 -0
- package/dist/core/mcpClient.d.ts +124 -6
- package/dist/core/mcpClient.d.ts.map +1 -1
- package/dist/core/mcpClient.js +385 -39
- package/dist/core/mcpClient.js.map +1 -1
- package/dist/core/pluginManager.d.ts +134 -0
- package/dist/core/pluginManager.d.ts.map +1 -0
- package/dist/core/pluginManager.js +845 -0
- package/dist/core/pluginManager.js.map +1 -0
- package/dist/core/projectSkills.d.ts +19 -0
- package/dist/core/projectSkills.d.ts.map +1 -0
- package/dist/core/projectSkills.js +105 -0
- package/dist/core/projectSkills.js.map +1 -0
- package/dist/core/propagator.d.ts +8 -1
- package/dist/core/propagator.d.ts.map +1 -1
- package/dist/core/propagator.js +179 -36
- package/dist/core/propagator.js.map +1 -1
- package/dist/core/rulesApplicator.d.ts +0 -4
- package/dist/core/rulesApplicator.d.ts.map +1 -1
- package/dist/core/rulesApplicator.js +8 -39
- package/dist/core/rulesApplicator.js.map +1 -1
- package/dist/core/rulesTemplateLoader.js +2 -2
- package/dist/core/rulesTemplateLoader.js.map +1 -1
- package/dist/core/skillsManager.d.ts +61 -0
- package/dist/core/skillsManager.d.ts.map +1 -0
- package/dist/core/skillsManager.js +407 -0
- package/dist/core/skillsManager.js.map +1 -0
- package/dist/lib/utils/index.d.ts +3 -1
- package/dist/lib/utils/index.d.ts.map +1 -1
- package/dist/lib/utils/index.js +4 -1
- package/dist/lib/utils/index.js.map +1 -1
- package/dist/types/index.d.ts +24 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/types/jsonSchema.d.ts +31 -0
- package/dist/types/jsonSchema.d.ts.map +1 -0
- package/dist/types/jsonSchema.js +6 -0
- package/dist/types/jsonSchema.js.map +1 -0
- package/dist/types/plugins.d.ts +161 -0
- package/dist/types/plugins.d.ts.map +1 -0
- package/dist/types/plugins.js +2 -0
- package/dist/types/plugins.js.map +1 -0
- package/dist/types/skills.d.ts +50 -0
- package/dist/types/skills.d.ts.map +1 -0
- package/dist/types/skills.js +2 -0
- package/dist/types/skills.js.map +1 -0
- package/dist/utils/packageVersion.d.ts +105 -0
- package/dist/utils/packageVersion.d.ts.map +1 -0
- package/dist/utils/packageVersion.js +219 -0
- package/dist/utils/packageVersion.js.map +1 -0
- package/package.json +7 -2
- package/dist/agentinit-1.6.0.tgz +0 -0
- package/dist/registry/mcpRegistry.d.ts +0 -12
- package/dist/registry/mcpRegistry.d.ts.map +0 -1
- package/dist/registry/mcpRegistry.js +0 -114
- package/dist/registry/mcpRegistry.js.map +0 -1
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import { MarkdownRulesAgent } from './MarkdownRulesAgent.js';
|
|
2
|
+
import { ensureDirectoryExists, readFileIfExists, writeFile } from '../utils/fs.js';
|
|
3
|
+
export class ZedAgent extends MarkdownRulesAgent {
|
|
4
|
+
constructor() {
|
|
5
|
+
const definition = {
|
|
6
|
+
id: 'zed',
|
|
7
|
+
name: 'Zed',
|
|
8
|
+
capabilities: {
|
|
9
|
+
mcp: {
|
|
10
|
+
stdio: true,
|
|
11
|
+
http: true,
|
|
12
|
+
sse: true,
|
|
13
|
+
},
|
|
14
|
+
rules: true,
|
|
15
|
+
hooks: false,
|
|
16
|
+
commands: false,
|
|
17
|
+
subagents: false,
|
|
18
|
+
statusline: false,
|
|
19
|
+
skills: false,
|
|
20
|
+
},
|
|
21
|
+
configFiles: [
|
|
22
|
+
{
|
|
23
|
+
path: 'AGENTS.md',
|
|
24
|
+
purpose: 'rules',
|
|
25
|
+
format: 'markdown',
|
|
26
|
+
type: 'file',
|
|
27
|
+
optional: true,
|
|
28
|
+
description: 'Zed project instructions',
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
path: '.zed/settings.json',
|
|
32
|
+
purpose: 'mcp',
|
|
33
|
+
format: 'json',
|
|
34
|
+
type: 'file',
|
|
35
|
+
optional: true,
|
|
36
|
+
description: 'Zed project settings',
|
|
37
|
+
},
|
|
38
|
+
],
|
|
39
|
+
nativeConfigPath: '.zed/settings.json',
|
|
40
|
+
rulesPath: 'AGENTS.md',
|
|
41
|
+
};
|
|
42
|
+
super(definition);
|
|
43
|
+
}
|
|
44
|
+
async applyMCPConfig(projectPath, servers) {
|
|
45
|
+
const configPath = this.getNativeMcpPath(projectPath);
|
|
46
|
+
await ensureDirectoryExists(configPath);
|
|
47
|
+
const existingContent = await readFileIfExists(configPath);
|
|
48
|
+
let existingConfig = { context_servers: {} };
|
|
49
|
+
if (existingContent) {
|
|
50
|
+
try {
|
|
51
|
+
existingConfig = JSON.parse(existingContent);
|
|
52
|
+
if (!existingConfig.context_servers) {
|
|
53
|
+
existingConfig.context_servers = {};
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
catch {
|
|
57
|
+
existingConfig = { context_servers: {} };
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
for (const server of servers) {
|
|
61
|
+
const nextServer = { source: 'custom' };
|
|
62
|
+
if (server.command)
|
|
63
|
+
nextServer.command = server.command;
|
|
64
|
+
if (server.args?.length)
|
|
65
|
+
nextServer.args = server.args;
|
|
66
|
+
if (server.env && Object.keys(server.env).length > 0)
|
|
67
|
+
nextServer.env = server.env;
|
|
68
|
+
if (server.url)
|
|
69
|
+
nextServer.url = server.url;
|
|
70
|
+
if (server.headers && Object.keys(server.headers).length > 0)
|
|
71
|
+
nextServer.headers = server.headers;
|
|
72
|
+
existingConfig.context_servers[server.name] = nextServer;
|
|
73
|
+
}
|
|
74
|
+
await writeFile(configPath, JSON.stringify(existingConfig, null, 2));
|
|
75
|
+
}
|
|
76
|
+
async removeMCPServer(projectPath, serverName) {
|
|
77
|
+
const configPath = this.getNativeMcpPath(projectPath);
|
|
78
|
+
const content = await readFileIfExists(configPath);
|
|
79
|
+
if (!content)
|
|
80
|
+
return false;
|
|
81
|
+
try {
|
|
82
|
+
const config = JSON.parse(content);
|
|
83
|
+
if (!config.context_servers || !(serverName in config.context_servers))
|
|
84
|
+
return false;
|
|
85
|
+
delete config.context_servers[serverName];
|
|
86
|
+
await writeFile(configPath, JSON.stringify(config, null, 2));
|
|
87
|
+
return true;
|
|
88
|
+
}
|
|
89
|
+
catch {
|
|
90
|
+
return false;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
async getMCPServers(projectPath) {
|
|
94
|
+
const configPath = this.getNativeMcpPath(projectPath);
|
|
95
|
+
const content = await readFileIfExists(configPath);
|
|
96
|
+
if (!content)
|
|
97
|
+
return [];
|
|
98
|
+
try {
|
|
99
|
+
const config = JSON.parse(content);
|
|
100
|
+
const servers = [];
|
|
101
|
+
if (config.context_servers) {
|
|
102
|
+
for (const [name, serverConfig] of Object.entries(config.context_servers)) {
|
|
103
|
+
const server = {
|
|
104
|
+
name,
|
|
105
|
+
type: (serverConfig.command ? 'stdio' : 'http'),
|
|
106
|
+
};
|
|
107
|
+
if (serverConfig.command)
|
|
108
|
+
server.command = serverConfig.command;
|
|
109
|
+
if (serverConfig.args)
|
|
110
|
+
server.args = serverConfig.args;
|
|
111
|
+
if (serverConfig.env)
|
|
112
|
+
server.env = serverConfig.env;
|
|
113
|
+
if (serverConfig.url)
|
|
114
|
+
server.url = serverConfig.url;
|
|
115
|
+
if (serverConfig.headers)
|
|
116
|
+
server.headers = serverConfig.headers;
|
|
117
|
+
servers.push(server);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
return servers;
|
|
121
|
+
}
|
|
122
|
+
catch {
|
|
123
|
+
return [];
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
//# sourceMappingURL=ZedAgent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ZedAgent.js","sourceRoot":"","sources":["../../src/agents/ZedAgent.ts"],"names":[],"mappings":"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"}
|