agentinit 1.5.0 → 1.6.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 CHANGED
@@ -1,3 +1,10 @@
1
+ # [1.6.0](https://github.com/agentinit/agentinit/compare/v1.5.0...v1.6.0) (2025-10-10)
2
+
3
+
4
+ ### Features
5
+
6
+ * **agents:** add Droid (Factory AI) agent support ([73e5529](https://github.com/agentinit/agentinit/commit/73e5529703af36781c06e840faf38227d2ce79ac))
7
+
1
8
  # [1.5.0](https://github.com/agentinit/agentinit/compare/v1.4.1...v1.5.0) (2025-10-01)
2
9
 
3
10
 
Binary file
@@ -0,0 +1,52 @@
1
+ import { Agent } from './Agent.js';
2
+ import type { MCPServerConfig } from '../types/index.js';
3
+ import type { AppliedRules, RuleSection } from '../types/rules.js';
4
+ /**
5
+ * Droid (Factory) agent implementation
6
+ * Supports stdio MCP servers
7
+ * Uses ~/.factory for global configuration
8
+ * MCP config: ~/.factory/mcp.json
9
+ * Rules: AGENTS.md in project root
10
+ */
11
+ export declare class DroidAgent extends Agent {
12
+ constructor();
13
+ /**
14
+ * Apply MCP configuration to Droid's ~/.factory/mcp.json format
15
+ * Droid stores configs globally regardless of project-level or global flag
16
+ */
17
+ applyMCPConfig(projectPath: string, servers: MCPServerConfig[]): Promise<void>;
18
+ /**
19
+ * Apply MCP configuration to Droid's global ~/.factory/mcp.json format
20
+ */
21
+ applyGlobalMCPConfig(servers: MCPServerConfig[]): Promise<void>;
22
+ /**
23
+ * Filter out non-stdio servers since Droid only supports stdio
24
+ */
25
+ filterMCPServers(servers: MCPServerConfig[]): MCPServerConfig[];
26
+ /**
27
+ * Droid doesn't need any transformations for stdio servers
28
+ */
29
+ transformMCPServers(servers: MCPServerConfig[]): MCPServerConfig[];
30
+ /**
31
+ * Apply rules configuration to AGENTS.md
32
+ */
33
+ applyRulesConfig(configPath: string, rules: AppliedRules, existingContent: string): Promise<string>;
34
+ /**
35
+ * Extract existing rule texts from AGENTS.md content
36
+ */
37
+ extractExistingRules(content: string): string[];
38
+ /**
39
+ * Extract existing rule sections from AGENTS.md content using ## headers
40
+ */
41
+ extractExistingSections(content: string): RuleSection[];
42
+ /**
43
+ * Generate rules content in AGENTS.md markdown format
44
+ */
45
+ generateRulesContent(sections: RuleSection[]): string;
46
+ /**
47
+ * Get existing MCP servers from Droid's ~/.factory/mcp.json configuration
48
+ * Droid uses global configuration, so we read from the global path
49
+ */
50
+ getMCPServers(projectPath: string): Promise<MCPServerConfig[]>;
51
+ }
52
+ //# sourceMappingURL=DroidAgent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DroidAgent.d.ts","sourceRoot":"","sources":["../../src/agents/DroidAgent.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC,OAAO,KAAK,EAAE,eAAe,EAAkC,MAAM,mBAAmB,CAAC;AACzF,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEnE;;;;;;GAMG;AACH,qBAAa,UAAW,SAAQ,KAAK;;IAmCnC;;;OAGG;IACG,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAKpF;;OAEG;IACG,oBAAoB,CAAC,OAAO,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAsDrE;;OAEG;IACH,gBAAgB,CAAC,OAAO,EAAE,eAAe,EAAE,GAAG,eAAe,EAAE;IAI/D;;OAEG;IACH,mBAAmB,CAAC,OAAO,EAAE,eAAe,EAAE,GAAG,eAAe,EAAE;IAIlE;;OAEG;IACG,gBAAgB,CACpB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,YAAY,EACnB,eAAe,EAAE,MAAM,GACtB,OAAO,CAAC,MAAM,CAAC;IAiBlB;;OAEG;IACH,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE;IAM/C;;OAEG;IACH,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,EAAE;IAmCvD;;OAEG;IACH,oBAAoB,CAAC,QAAQ,EAAE,WAAW,EAAE,GAAG,MAAM;IAiBrD;;;OAGG;IACG,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;CA4CrE"}
@@ -0,0 +1,228 @@
1
+ import { Agent } from './Agent.js';
2
+ import { readFileIfExists, writeFile, ensureDirectoryExists } from '../utils/fs.js';
3
+ /**
4
+ * Droid (Factory) agent implementation
5
+ * Supports stdio MCP servers
6
+ * Uses ~/.factory for global configuration
7
+ * MCP config: ~/.factory/mcp.json
8
+ * Rules: AGENTS.md in project root
9
+ */
10
+ export class DroidAgent extends Agent {
11
+ constructor() {
12
+ const definition = {
13
+ id: 'droid',
14
+ name: 'Droid (Factory)',
15
+ url: 'https://factory.ai',
16
+ capabilities: {
17
+ mcp: {
18
+ stdio: true,
19
+ http: false,
20
+ sse: false
21
+ },
22
+ rules: true,
23
+ hooks: false,
24
+ commands: false,
25
+ subagents: false,
26
+ statusline: false
27
+ },
28
+ configFiles: [
29
+ {
30
+ path: 'AGENTS.md',
31
+ purpose: 'rules',
32
+ format: 'markdown',
33
+ type: 'file',
34
+ optional: true,
35
+ description: 'Agent instructions and rules in markdown format'
36
+ }
37
+ ],
38
+ nativeConfigPath: '.factory/mcp.json',
39
+ globalConfigPath: '~/.factory/mcp.json'
40
+ };
41
+ super(definition);
42
+ }
43
+ /**
44
+ * Apply MCP configuration to Droid's ~/.factory/mcp.json format
45
+ * Droid stores configs globally regardless of project-level or global flag
46
+ */
47
+ async applyMCPConfig(projectPath, servers) {
48
+ // Delegate to global config application since Droid uses global config
49
+ await this.applyGlobalMCPConfig(servers);
50
+ }
51
+ /**
52
+ * Apply MCP configuration to Droid's global ~/.factory/mcp.json format
53
+ */
54
+ async applyGlobalMCPConfig(servers) {
55
+ const globalPath = this.getGlobalMcpPath();
56
+ if (!globalPath) {
57
+ throw new Error(`Droid global configuration path could not be determined`);
58
+ }
59
+ // Ensure the directory exists
60
+ await ensureDirectoryExists(globalPath);
61
+ // Read existing configuration
62
+ const existingContent = await readFileIfExists(globalPath);
63
+ let existingConfig = { mcpServers: {} };
64
+ if (existingContent) {
65
+ try {
66
+ existingConfig = JSON.parse(existingContent);
67
+ if (!existingConfig.mcpServers) {
68
+ existingConfig.mcpServers = {};
69
+ }
70
+ }
71
+ catch (error) {
72
+ console.warn('Warning: Existing ~/.factory/mcp.json is invalid, creating new configuration');
73
+ existingConfig = { mcpServers: {} };
74
+ }
75
+ }
76
+ // Convert our MCP server configs to Droid's format
77
+ for (const server of servers) {
78
+ const droidServer = {
79
+ type: 'stdio'
80
+ };
81
+ if (server.command) {
82
+ droidServer.command = server.command;
83
+ }
84
+ if (server.args && server.args.length > 0) {
85
+ droidServer.args = server.args;
86
+ }
87
+ if (server.env && Object.keys(server.env).length > 0) {
88
+ droidServer.env = server.env;
89
+ }
90
+ // Add disabled flag (default false)
91
+ droidServer.disabled = false;
92
+ // Add or update the server in the config
93
+ existingConfig.mcpServers[server.name] = droidServer;
94
+ }
95
+ // Write the updated configuration
96
+ const configJson = JSON.stringify(existingConfig, null, 2);
97
+ await writeFile(globalPath, configJson);
98
+ }
99
+ /**
100
+ * Filter out non-stdio servers since Droid only supports stdio
101
+ */
102
+ filterMCPServers(servers) {
103
+ return servers.filter(server => server.type === 'stdio');
104
+ }
105
+ /**
106
+ * Droid doesn't need any transformations for stdio servers
107
+ */
108
+ transformMCPServers(servers) {
109
+ return servers;
110
+ }
111
+ /**
112
+ * Apply rules configuration to AGENTS.md
113
+ */
114
+ async applyRulesConfig(configPath, rules, existingContent) {
115
+ const rulesSection = this.generateRulesContent(rules.sections);
116
+ let content = existingContent;
117
+ // For markdown, we'll append rules directly
118
+ if (content && !content.endsWith('\n')) {
119
+ content += '\n';
120
+ }
121
+ if (content) {
122
+ content += '\n';
123
+ }
124
+ content += rulesSection;
125
+ return content.trim() + '\n';
126
+ }
127
+ /**
128
+ * Extract existing rule texts from AGENTS.md content
129
+ */
130
+ extractExistingRules(content) {
131
+ // Extract rules from markdown format - look for lines starting with "- "
132
+ const ruleLines = content.split('\n').filter(line => line.trim().startsWith('- '));
133
+ return ruleLines.map(line => line.replace(/^- /, '').trim()).filter(rule => rule.length > 0);
134
+ }
135
+ /**
136
+ * Extract existing rule sections from AGENTS.md content using ## headers
137
+ */
138
+ extractExistingSections(content) {
139
+ const lines = content.split('\n');
140
+ const sections = [];
141
+ let currentSection = null;
142
+ for (const line of lines) {
143
+ const trimmed = line.trim();
144
+ // Check if it's a section header
145
+ if (trimmed.startsWith('## ') && trimmed.includes(' ')) {
146
+ // Start new section
147
+ if (currentSection) {
148
+ sections.push(currentSection);
149
+ }
150
+ const sectionName = trimmed.replace(/^##\s*/, '');
151
+ currentSection = {
152
+ templateId: sectionName.toLowerCase().replace(/\s+/g, '_'),
153
+ templateName: sectionName,
154
+ rules: []
155
+ };
156
+ }
157
+ else if (currentSection && trimmed.startsWith('- ')) {
158
+ // Add rule to current section
159
+ const rule = trimmed.replace(/^- /, '');
160
+ currentSection.rules.push(rule);
161
+ }
162
+ }
163
+ // Add the last section
164
+ if (currentSection) {
165
+ sections.push(currentSection);
166
+ }
167
+ return sections;
168
+ }
169
+ /**
170
+ * Generate rules content in AGENTS.md markdown format
171
+ */
172
+ generateRulesContent(sections) {
173
+ let content = '';
174
+ if (sections && sections.length > 0) {
175
+ // Group rules by sections
176
+ for (const ruleSection of sections) {
177
+ content += `## ${ruleSection.templateName}\n\n`;
178
+ for (const rule of ruleSection.rules) {
179
+ content += `- ${rule}\n`;
180
+ }
181
+ content += '\n';
182
+ }
183
+ }
184
+ return content;
185
+ }
186
+ /**
187
+ * Get existing MCP servers from Droid's ~/.factory/mcp.json configuration
188
+ * Droid uses global configuration, so we read from the global path
189
+ */
190
+ async getMCPServers(projectPath) {
191
+ const globalPath = this.getGlobalMcpPath();
192
+ if (!globalPath) {
193
+ return [];
194
+ }
195
+ const configContent = await readFileIfExists(globalPath);
196
+ if (!configContent) {
197
+ return [];
198
+ }
199
+ try {
200
+ const config = JSON.parse(configContent);
201
+ const servers = [];
202
+ if (config.mcpServers) {
203
+ for (const [name, serverConfig] of Object.entries(config.mcpServers)) {
204
+ const server = {
205
+ name,
206
+ type: 'stdio',
207
+ };
208
+ if (serverConfig.command) {
209
+ server.command = serverConfig.command;
210
+ }
211
+ if (serverConfig.args) {
212
+ server.args = serverConfig.args;
213
+ }
214
+ if (serverConfig.env) {
215
+ server.env = serverConfig.env;
216
+ }
217
+ servers.push(server);
218
+ }
219
+ }
220
+ return servers;
221
+ }
222
+ catch (error) {
223
+ // Invalid JSON or missing mcpServers property
224
+ return [];
225
+ }
226
+ }
227
+ }
228
+ //# sourceMappingURL=DroidAgent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DroidAgent.js","sourceRoot":"","sources":["../../src/agents/DroidAgent.ts"],"names":[],"mappings":"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"}
package/dist/cli.js CHANGED
@@ -19950,27 +19950,27 @@ var require_windows = __commonJS((exports, module) => {
19950
19950
  return checkPathExt(path, options2);
19951
19951
  };
19952
19952
  var isexe = function(path, options2, cb) {
19953
- fs14.stat(path, function(er, stat) {
19953
+ fs15.stat(path, function(er, stat) {
19954
19954
  cb(er, er ? false : checkStat(stat, path, options2));
19955
19955
  });
19956
19956
  };
19957
19957
  var sync = function(path, options2) {
19958
- return checkStat(fs14.statSync(path), path, options2);
19958
+ return checkStat(fs15.statSync(path), path, options2);
19959
19959
  };
19960
19960
  module.exports = isexe;
19961
19961
  isexe.sync = sync;
19962
- var fs14 = __require("fs");
19962
+ var fs15 = __require("fs");
19963
19963
  });
19964
19964
 
19965
19965
  // node_modules/isexe/mode.js
19966
19966
  var require_mode = __commonJS((exports, module) => {
19967
19967
  var isexe = function(path, options2, cb) {
19968
- fs14.stat(path, function(er, stat) {
19968
+ fs15.stat(path, function(er, stat) {
19969
19969
  cb(er, er ? false : checkStat(stat, options2));
19970
19970
  });
19971
19971
  };
19972
19972
  var sync = function(path, options2) {
19973
- return checkStat(fs14.statSync(path), options2);
19973
+ return checkStat(fs15.statSync(path), options2);
19974
19974
  };
19975
19975
  var checkStat = function(stat, options2) {
19976
19976
  return stat.isFile() && checkMode(stat, options2);
@@ -19990,7 +19990,7 @@ var require_mode = __commonJS((exports, module) => {
19990
19990
  };
19991
19991
  module.exports = isexe;
19992
19992
  isexe.sync = sync;
19993
- var fs14 = __require("fs");
19993
+ var fs15 = __require("fs");
19994
19994
  });
19995
19995
 
19996
19996
  // node_modules/isexe/index.js
@@ -20035,7 +20035,7 @@ var require_isexe = __commonJS((exports, module) => {
20035
20035
  }
20036
20036
  }
20037
20037
  };
20038
- var fs14 = __require("fs");
20038
+ var fs15 = __require("fs");
20039
20039
  var core;
20040
20040
  if (process.platform === "win32" || global.TESTING_WINDOWS) {
20041
20041
  core = require_windows();
@@ -20242,14 +20242,14 @@ var require_readShebang = __commonJS((exports, module) => {
20242
20242
  const buffer = Buffer.alloc(size);
20243
20243
  let fd;
20244
20244
  try {
20245
- fd = fs14.openSync(command, "r");
20246
- fs14.readSync(fd, buffer, 0, size, 0);
20247
- fs14.closeSync(fd);
20245
+ fd = fs15.openSync(command, "r");
20246
+ fs15.readSync(fd, buffer, 0, size, 0);
20247
+ fs15.closeSync(fd);
20248
20248
  } catch (e) {
20249
20249
  }
20250
20250
  return shebangCommand(buffer.toString());
20251
20251
  };
20252
- var fs14 = __require("fs");
20252
+ var fs15 = __require("fs");
20253
20253
  var shebangCommand = require_shebang_command();
20254
20254
  module.exports = readShebang;
20255
20255
  });
@@ -24862,6 +24862,179 @@ class CursorAgent extends Agent {
24862
24862
  }
24863
24863
  }
24864
24864
 
24865
+ // dist/agents/DroidAgent.js
24866
+ class DroidAgent extends Agent {
24867
+ constructor() {
24868
+ const definition = {
24869
+ id: "droid",
24870
+ name: "Droid (Factory)",
24871
+ url: "https://factory.ai",
24872
+ capabilities: {
24873
+ mcp: {
24874
+ stdio: true,
24875
+ http: false,
24876
+ sse: false
24877
+ },
24878
+ rules: true,
24879
+ hooks: false,
24880
+ commands: false,
24881
+ subagents: false,
24882
+ statusline: false
24883
+ },
24884
+ configFiles: [
24885
+ {
24886
+ path: "AGENTS.md",
24887
+ purpose: "rules",
24888
+ format: "markdown",
24889
+ type: "file",
24890
+ optional: true,
24891
+ description: "Agent instructions and rules in markdown format"
24892
+ }
24893
+ ],
24894
+ nativeConfigPath: ".factory/mcp.json",
24895
+ globalConfigPath: "~/.factory/mcp.json"
24896
+ };
24897
+ super(definition);
24898
+ }
24899
+ async applyMCPConfig(projectPath, servers) {
24900
+ await this.applyGlobalMCPConfig(servers);
24901
+ }
24902
+ async applyGlobalMCPConfig(servers) {
24903
+ const globalPath = this.getGlobalMcpPath();
24904
+ if (!globalPath) {
24905
+ throw new Error(`Droid global configuration path could not be determined`);
24906
+ }
24907
+ await ensureDirectoryExists(globalPath);
24908
+ const existingContent = await readFileIfExists(globalPath);
24909
+ let existingConfig = { mcpServers: {} };
24910
+ if (existingContent) {
24911
+ try {
24912
+ existingConfig = JSON.parse(existingContent);
24913
+ if (!existingConfig.mcpServers) {
24914
+ existingConfig.mcpServers = {};
24915
+ }
24916
+ } catch (error) {
24917
+ console.warn("Warning: Existing ~/.factory/mcp.json is invalid, creating new configuration");
24918
+ existingConfig = { mcpServers: {} };
24919
+ }
24920
+ }
24921
+ for (const server of servers) {
24922
+ const droidServer = {
24923
+ type: "stdio"
24924
+ };
24925
+ if (server.command) {
24926
+ droidServer.command = server.command;
24927
+ }
24928
+ if (server.args && server.args.length > 0) {
24929
+ droidServer.args = server.args;
24930
+ }
24931
+ if (server.env && Object.keys(server.env).length > 0) {
24932
+ droidServer.env = server.env;
24933
+ }
24934
+ droidServer.disabled = false;
24935
+ existingConfig.mcpServers[server.name] = droidServer;
24936
+ }
24937
+ const configJson = JSON.stringify(existingConfig, null, 2);
24938
+ await writeFile(globalPath, configJson);
24939
+ }
24940
+ filterMCPServers(servers) {
24941
+ return servers.filter((server) => server.type === "stdio");
24942
+ }
24943
+ transformMCPServers(servers) {
24944
+ return servers;
24945
+ }
24946
+ async applyRulesConfig(configPath, rules, existingContent) {
24947
+ const rulesSection = this.generateRulesContent(rules.sections);
24948
+ let content = existingContent;
24949
+ if (content && !content.endsWith("\n")) {
24950
+ content += "\n";
24951
+ }
24952
+ if (content) {
24953
+ content += "\n";
24954
+ }
24955
+ content += rulesSection;
24956
+ return content.trim() + "\n";
24957
+ }
24958
+ extractExistingRules(content) {
24959
+ const ruleLines = content.split("\n").filter((line) => line.trim().startsWith("- "));
24960
+ return ruleLines.map((line) => line.replace(/^- /, "").trim()).filter((rule) => rule.length > 0);
24961
+ }
24962
+ extractExistingSections(content) {
24963
+ const lines = content.split("\n");
24964
+ const sections = [];
24965
+ let currentSection = null;
24966
+ for (const line of lines) {
24967
+ const trimmed = line.trim();
24968
+ if (trimmed.startsWith("## ") && trimmed.includes(" ")) {
24969
+ if (currentSection) {
24970
+ sections.push(currentSection);
24971
+ }
24972
+ const sectionName = trimmed.replace(/^##\s*/, "");
24973
+ currentSection = {
24974
+ templateId: sectionName.toLowerCase().replace(/\s+/g, "_"),
24975
+ templateName: sectionName,
24976
+ rules: []
24977
+ };
24978
+ } else if (currentSection && trimmed.startsWith("- ")) {
24979
+ const rule = trimmed.replace(/^- /, "");
24980
+ currentSection.rules.push(rule);
24981
+ }
24982
+ }
24983
+ if (currentSection) {
24984
+ sections.push(currentSection);
24985
+ }
24986
+ return sections;
24987
+ }
24988
+ generateRulesContent(sections) {
24989
+ let content = "";
24990
+ if (sections && sections.length > 0) {
24991
+ for (const ruleSection of sections) {
24992
+ content += `## ${ruleSection.templateName}\n\n`;
24993
+ for (const rule of ruleSection.rules) {
24994
+ content += `- ${rule}\n`;
24995
+ }
24996
+ content += "\n";
24997
+ }
24998
+ }
24999
+ return content;
25000
+ }
25001
+ async getMCPServers(projectPath) {
25002
+ const globalPath = this.getGlobalMcpPath();
25003
+ if (!globalPath) {
25004
+ return [];
25005
+ }
25006
+ const configContent = await readFileIfExists(globalPath);
25007
+ if (!configContent) {
25008
+ return [];
25009
+ }
25010
+ try {
25011
+ const config = JSON.parse(configContent);
25012
+ const servers = [];
25013
+ if (config.mcpServers) {
25014
+ for (const [name, serverConfig] of Object.entries(config.mcpServers)) {
25015
+ const server = {
25016
+ name,
25017
+ type: "stdio"
25018
+ };
25019
+ if (serverConfig.command) {
25020
+ server.command = serverConfig.command;
25021
+ }
25022
+ if (serverConfig.args) {
25023
+ server.args = serverConfig.args;
25024
+ }
25025
+ if (serverConfig.env) {
25026
+ server.env = serverConfig.env;
25027
+ }
25028
+ servers.push(server);
25029
+ }
25030
+ }
25031
+ return servers;
25032
+ } catch (error) {
25033
+ return [];
25034
+ }
25035
+ }
25036
+ }
25037
+
24865
25038
  // dist/core/agentManager.js
24866
25039
  class AgentManager {
24867
25040
  agents = [];
@@ -24874,7 +25047,8 @@ class AgentManager {
24874
25047
  new ClaudeDesktopAgent,
24875
25048
  new CodexCliAgent,
24876
25049
  new GeminiCliAgent,
24877
- new CursorAgent
25050
+ new CursorAgent,
25051
+ new DroidAgent
24878
25052
  ];
24879
25053
  }
24880
25054
  getAllAgents() {
@@ -1 +1 @@
1
- {"version":3,"file":"agentManager.d.ts","sourceRoot":"","sources":["../../src/core/agentManager.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAE9D;;;GAGG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAe;;IAM7B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAU7B;;OAEG;IACH,YAAY,IAAI,KAAK,EAAE;IAIvB;;OAEG;IACH,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS;IAI3C;;OAEG;IACH,oBAAoB,IAAI,MAAM,EAAE;IAIhC;;OAEG;IACG,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAaxE;;OAEG;IACG,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC;IASjG;;OAEG;IACG,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC;IAKhF;;OAEG;IACH,aAAa,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAMjC;;OAEG;IACG,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKzD;;OAEG;IACG,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAW/D;;OAEG;IACH,qBAAqB,CAAC,UAAU,EAAE,MAAM,KAAK,CAAC,cAAc,CAAC,GAAG,KAAK,EAAE;CAMxE"}
1
+ {"version":3,"file":"agentManager.d.ts","sourceRoot":"","sources":["../../src/core/agentManager.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAE9D;;;GAGG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAe;;IAM7B;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAW7B;;OAEG;IACH,YAAY,IAAI,KAAK,EAAE;IAIvB;;OAEG;IACH,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS;IAI3C;;OAEG;IACH,oBAAoB,IAAI,MAAM,EAAE;IAIhC;;OAEG;IACG,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAaxE;;OAEG;IACG,eAAe,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC;IASjG;;OAEG;IACG,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC;IAKhF;;OAEG;IACH,aAAa,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAMjC;;OAEG;IACG,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKzD;;OAEG;IACG,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAW/D;;OAEG;IACH,qBAAqB,CAAC,UAAU,EAAE,MAAM,KAAK,CAAC,cAAc,CAAC,GAAG,KAAK,EAAE;CAMxE"}
@@ -3,6 +3,7 @@ import { ClaudeDesktopAgent } from '../agents/ClaudeDesktopAgent.js';
3
3
  import { CodexCliAgent } from '../agents/CodexCliAgent.js';
4
4
  import { GeminiCliAgent } from '../agents/GeminiCliAgent.js';
5
5
  import { CursorAgent } from '../agents/CursorAgent.js';
6
+ import { DroidAgent } from '../agents/DroidAgent.js';
6
7
  /**
7
8
  * Manager class for AI coding agents
8
9
  * Handles agent registration, detection, and selection
@@ -21,7 +22,8 @@ export class AgentManager {
21
22
  new ClaudeDesktopAgent(),
22
23
  new CodexCliAgent(),
23
24
  new GeminiCliAgent(),
24
- new CursorAgent()
25
+ new CursorAgent(),
26
+ new DroidAgent()
25
27
  ];
26
28
  }
27
29
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"agentManager.js","sourceRoot":"","sources":["../../src/core/agentManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agentManager.js","sourceRoot":"","sources":["../../src/core/agentManager.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agentinit",
3
- "version": "1.5.0",
3
+ "version": "1.6.0",
4
4
  "description": "CLI tool and library for managing AI coding agents and verifying MCP servers",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
Binary file