@agents-dev/cli 0.7.7
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/AGENTS.md +400 -0
- package/CHANGELOG.md +297 -0
- package/CONTRIBUTING.md +164 -0
- package/LICENSE +21 -0
- package/README.md +117 -0
- package/bin/agents +24 -0
- package/dist/cli.d.ts +1 -0
- package/dist/cli.js +282 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/connect.d.ts +7 -0
- package/dist/commands/connect.js +48 -0
- package/dist/commands/connect.js.map +1 -0
- package/dist/commands/disconnect.d.ts +7 -0
- package/dist/commands/disconnect.js +47 -0
- package/dist/commands/disconnect.js.map +1 -0
- package/dist/commands/doctor.d.ts +6 -0
- package/dist/commands/doctor.js +430 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/init.d.ts +5 -0
- package/dist/commands/init.js +24 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/mcp-add.d.ts +20 -0
- package/dist/commands/mcp-add.js +250 -0
- package/dist/commands/mcp-add.js.map +1 -0
- package/dist/commands/mcp-import.d.ts +13 -0
- package/dist/commands/mcp-import.js +207 -0
- package/dist/commands/mcp-import.js.map +1 -0
- package/dist/commands/mcp-list.d.ts +5 -0
- package/dist/commands/mcp-list.js +34 -0
- package/dist/commands/mcp-list.js.map +1 -0
- package/dist/commands/mcp-remove.d.ts +7 -0
- package/dist/commands/mcp-remove.js +34 -0
- package/dist/commands/mcp-remove.js.map +1 -0
- package/dist/commands/mcp-test.d.ts +8 -0
- package/dist/commands/mcp-test.js +402 -0
- package/dist/commands/mcp-test.js.map +1 -0
- package/dist/commands/reset.d.ts +6 -0
- package/dist/commands/reset.js +76 -0
- package/dist/commands/reset.js.map +1 -0
- package/dist/commands/start.d.ts +6 -0
- package/dist/commands/start.js +292 -0
- package/dist/commands/start.js.map +1 -0
- package/dist/commands/status.d.ts +7 -0
- package/dist/commands/status.js +278 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/sync.d.ts +6 -0
- package/dist/commands/sync.js +22 -0
- package/dist/commands/sync.js.map +1 -0
- package/dist/commands/watch.d.ts +7 -0
- package/dist/commands/watch.js +117 -0
- package/dist/commands/watch.js.map +1 -0
- package/dist/core/claudeCli.d.ts +7 -0
- package/dist/core/claudeCli.js +35 -0
- package/dist/core/claudeCli.js.map +1 -0
- package/dist/core/config.d.ts +17 -0
- package/dist/core/config.js +121 -0
- package/dist/core/config.js.map +1 -0
- package/dist/core/cursorCli.d.ts +9 -0
- package/dist/core/cursorCli.js +60 -0
- package/dist/core/cursorCli.js.map +1 -0
- package/dist/core/fs.d.ts +11 -0
- package/dist/core/fs.js +76 -0
- package/dist/core/fs.js.map +1 -0
- package/dist/core/gitignore.d.ts +3 -0
- package/dist/core/gitignore.js +54 -0
- package/dist/core/gitignore.js.map +1 -0
- package/dist/core/mcp.d.ts +8 -0
- package/dist/core/mcp.js +134 -0
- package/dist/core/mcp.js.map +1 -0
- package/dist/core/mcpCrud.d.ts +34 -0
- package/dist/core/mcpCrud.js +105 -0
- package/dist/core/mcpCrud.js.map +1 -0
- package/dist/core/mcpImport.d.ts +14 -0
- package/dist/core/mcpImport.js +507 -0
- package/dist/core/mcpImport.js.map +1 -0
- package/dist/core/mcpSecrets.d.ts +27 -0
- package/dist/core/mcpSecrets.js +144 -0
- package/dist/core/mcpSecrets.js.map +1 -0
- package/dist/core/mcpValidation.d.ts +19 -0
- package/dist/core/mcpValidation.js +78 -0
- package/dist/core/mcpValidation.js.map +1 -0
- package/dist/core/paths.d.ts +37 -0
- package/dist/core/paths.js +43 -0
- package/dist/core/paths.js.map +1 -0
- package/dist/core/project.d.ts +16 -0
- package/dist/core/project.js +34 -0
- package/dist/core/project.js.map +1 -0
- package/dist/core/renderers.d.ts +14 -0
- package/dist/core/renderers.js +113 -0
- package/dist/core/renderers.js.map +1 -0
- package/dist/core/shell.d.ts +8 -0
- package/dist/core/shell.js +21 -0
- package/dist/core/shell.js.map +1 -0
- package/dist/core/shellWords.d.ts +1 -0
- package/dist/core/shellWords.js +84 -0
- package/dist/core/shellWords.js.map +1 -0
- package/dist/core/skills.d.ts +8 -0
- package/dist/core/skills.js +150 -0
- package/dist/core/skills.js.map +1 -0
- package/dist/core/skillsValidation.d.ts +1 -0
- package/dist/core/skillsValidation.js +68 -0
- package/dist/core/skillsValidation.js.map +1 -0
- package/dist/core/sync.d.ts +2 -0
- package/dist/core/sync.js +427 -0
- package/dist/core/sync.js.map +1 -0
- package/dist/core/syncLock.d.ts +1 -0
- package/dist/core/syncLock.js +84 -0
- package/dist/core/syncLock.js.map +1 -0
- package/dist/core/templates.d.ts +1 -0
- package/dist/core/templates.js +38 -0
- package/dist/core/templates.js.map +1 -0
- package/dist/core/trust.d.ts +7 -0
- package/dist/core/trust.js +51 -0
- package/dist/core/trust.js.map +1 -0
- package/dist/core/vscodeSettings.d.ts +17 -0
- package/dist/core/vscodeSettings.js +212 -0
- package/dist/core/vscodeSettings.js.map +1 -0
- package/dist/core/warnings.d.ts +2 -0
- package/dist/core/warnings.js +26 -0
- package/dist/core/warnings.js.map +1 -0
- package/dist/integrations/antigravity.d.ts +9 -0
- package/dist/integrations/antigravity.js +13 -0
- package/dist/integrations/antigravity.js.map +1 -0
- package/dist/integrations/claude.d.ts +1 -0
- package/dist/integrations/claude.js +4 -0
- package/dist/integrations/claude.js.map +1 -0
- package/dist/integrations/codex.d.ts +5 -0
- package/dist/integrations/codex.js +5 -0
- package/dist/integrations/codex.js.map +1 -0
- package/dist/integrations/copilotVscode.d.ts +7 -0
- package/dist/integrations/copilotVscode.js +9 -0
- package/dist/integrations/copilotVscode.js.map +1 -0
- package/dist/integrations/cursor.d.ts +7 -0
- package/dist/integrations/cursor.js +9 -0
- package/dist/integrations/cursor.js.map +1 -0
- package/dist/integrations/gemini.d.ts +12 -0
- package/dist/integrations/gemini.js +15 -0
- package/dist/integrations/gemini.js.map +1 -0
- package/dist/integrations/registry.d.ts +9 -0
- package/dist/integrations/registry.js +21 -0
- package/dist/integrations/registry.js.map +1 -0
- package/dist/types.d.ts +85 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/docs/EXAMPLES.md +211 -0
- package/docs/README.md +26 -0
- package/docs/agents-system.md +178 -0
- package/package.json +77 -0
- package/templates/agents/AGENTS.md +23 -0
- package/templates/agents/README.md +25 -0
- package/templates/agents/skills/README.md +27 -0
- package/templates/agents/skills/skill-guide/SKILL.md +29 -0
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import os from 'node:os';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import TOML from '@iarna/toml';
|
|
4
|
+
import { ensureDir, pathExists, readTextOrEmpty, writeTextAtomic } from './fs.js';
|
|
5
|
+
export function getCodexConfigPath() {
|
|
6
|
+
const override = process.env.AGENTS_CODEX_CONFIG_PATH;
|
|
7
|
+
if (override && override.trim().length > 0) {
|
|
8
|
+
return path.resolve(override);
|
|
9
|
+
}
|
|
10
|
+
return path.join(os.homedir(), '.codex', 'config.toml');
|
|
11
|
+
}
|
|
12
|
+
export async function getCodexTrustState(projectRoot) {
|
|
13
|
+
const configPath = getCodexConfigPath();
|
|
14
|
+
if (!(await pathExists(configPath)))
|
|
15
|
+
return 'untrusted';
|
|
16
|
+
const raw = await readTextOrEmpty(configPath);
|
|
17
|
+
if (raw.trim().length === 0)
|
|
18
|
+
return 'untrusted';
|
|
19
|
+
let parsed;
|
|
20
|
+
try {
|
|
21
|
+
parsed = TOML.parse(raw);
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
return 'untrusted';
|
|
25
|
+
}
|
|
26
|
+
const projectKey = path.resolve(projectRoot);
|
|
27
|
+
const trustLevel = parsed.projects?.[projectKey]?.trust_level;
|
|
28
|
+
return trustLevel === 'trusted' ? 'trusted' : 'untrusted';
|
|
29
|
+
}
|
|
30
|
+
export async function ensureCodexProjectTrusted(projectRoot) {
|
|
31
|
+
const configPath = getCodexConfigPath();
|
|
32
|
+
const projectKey = path.resolve(projectRoot);
|
|
33
|
+
const raw = await readTextOrEmpty(configPath);
|
|
34
|
+
let parsed = {};
|
|
35
|
+
if (raw.trim().length > 0) {
|
|
36
|
+
parsed = TOML.parse(raw);
|
|
37
|
+
}
|
|
38
|
+
const current = parsed.projects?.[projectKey]?.trust_level;
|
|
39
|
+
if (current === 'trusted') {
|
|
40
|
+
return { changed: false, path: configPath };
|
|
41
|
+
}
|
|
42
|
+
const projects = parsed.projects ?? {};
|
|
43
|
+
const existing = projects[projectKey] ?? {};
|
|
44
|
+
projects[projectKey] = { ...existing, trust_level: 'trusted' };
|
|
45
|
+
parsed.projects = projects;
|
|
46
|
+
const rendered = TOML.stringify(parsed);
|
|
47
|
+
await ensureDir(path.dirname(configPath));
|
|
48
|
+
await writeTextAtomic(configPath, rendered);
|
|
49
|
+
return { changed: true, path: configPath };
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=trust.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trust.js","sourceRoot":"","sources":["../../src/core/trust.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { VscodeSettingsState } from '../types.js';
|
|
2
|
+
export declare function syncVscodeSettings(args: {
|
|
3
|
+
settingsPath: string;
|
|
4
|
+
statePath: string;
|
|
5
|
+
hiddenPaths: string[];
|
|
6
|
+
hideGenerated: boolean;
|
|
7
|
+
check: boolean;
|
|
8
|
+
changed: string[];
|
|
9
|
+
warnings: string[];
|
|
10
|
+
projectRoot: string;
|
|
11
|
+
}): Promise<void>;
|
|
12
|
+
export declare function loadVscodeSettingsState(statePath: string): Promise<VscodeSettingsState>;
|
|
13
|
+
export declare function cleanupVscodeSettingsIfManaged(args: {
|
|
14
|
+
settingsPath: string;
|
|
15
|
+
statePath: string;
|
|
16
|
+
}): Promise<boolean>;
|
|
17
|
+
export declare function validateVscodeSettingsParse(settingsPath: string): Promise<boolean>;
|
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import { readFile } from 'node:fs/promises';
|
|
3
|
+
import { applyEdits, modify, parse } from 'jsonc-parser';
|
|
4
|
+
import { pathExists, readJson, removeIfExists, writeJsonAtomic, writeTextAtomic } from './fs.js';
|
|
5
|
+
const DEFAULT_STATE = {
|
|
6
|
+
managedPaths: []
|
|
7
|
+
};
|
|
8
|
+
export async function syncVscodeSettings(args) {
|
|
9
|
+
const { settingsPath, statePath, hiddenPaths, hideGenerated, check, changed, warnings, projectRoot } = args;
|
|
10
|
+
const hasSettings = await pathExists(settingsPath);
|
|
11
|
+
const raw = hasSettings ? await readFile(settingsPath, 'utf8') : '{}\n';
|
|
12
|
+
const state = await loadState(statePath, warnings);
|
|
13
|
+
const managedSet = new Set(state.managedPaths);
|
|
14
|
+
const parseErrors = [];
|
|
15
|
+
const parsed = parse(raw, parseErrors, {
|
|
16
|
+
allowTrailingComma: true,
|
|
17
|
+
disallowComments: false
|
|
18
|
+
});
|
|
19
|
+
if (parseErrors.length > 0 || !isObject(parsed)) {
|
|
20
|
+
if (hasSettings) {
|
|
21
|
+
warnings.push('Cannot parse .vscode/settings.json (JSONC). Skipped VS Code hide sync.');
|
|
22
|
+
}
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
let text = raw;
|
|
26
|
+
let settingsChanged = false;
|
|
27
|
+
if (hideGenerated) {
|
|
28
|
+
const normalized = [...new Set(hiddenPaths.filter((item) => item.trim().length > 0))];
|
|
29
|
+
const filesExclude = asObject(parsed['files.exclude']);
|
|
30
|
+
const searchExclude = asObject(parsed['search.exclude']);
|
|
31
|
+
const newlyManaged = new Set();
|
|
32
|
+
for (const target of normalized) {
|
|
33
|
+
if (!(target in filesExclude)) {
|
|
34
|
+
text = applyModify(text, ['files.exclude', target], true);
|
|
35
|
+
settingsChanged = true;
|
|
36
|
+
newlyManaged.add(target);
|
|
37
|
+
}
|
|
38
|
+
if (!(target in searchExclude)) {
|
|
39
|
+
text = applyModify(text, ['search.exclude', target], true);
|
|
40
|
+
settingsChanged = true;
|
|
41
|
+
newlyManaged.add(target);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
for (const target of newlyManaged) {
|
|
45
|
+
managedSet.add(target);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
else if (managedSet.size > 0) {
|
|
49
|
+
for (const target of [...managedSet]) {
|
|
50
|
+
const before = text;
|
|
51
|
+
text = applyModify(text, ['files.exclude', target], undefined);
|
|
52
|
+
text = applyModify(text, ['search.exclude', target], undefined);
|
|
53
|
+
if (text !== before) {
|
|
54
|
+
settingsChanged = true;
|
|
55
|
+
}
|
|
56
|
+
managedSet.delete(target);
|
|
57
|
+
}
|
|
58
|
+
text = cleanupEmptyObject(text, 'files.exclude');
|
|
59
|
+
text = cleanupEmptyObject(text, 'search.exclude');
|
|
60
|
+
}
|
|
61
|
+
if (settingsChanged) {
|
|
62
|
+
changed.push(relativePath(projectRoot, settingsPath));
|
|
63
|
+
if (!check) {
|
|
64
|
+
await writeTextAtomic(settingsPath, ensureTrailingNewline(text));
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
const nextState = {
|
|
68
|
+
managedPaths: [...managedSet].sort((a, b) => a.localeCompare(b))
|
|
69
|
+
};
|
|
70
|
+
if (!equalState(state, nextState)) {
|
|
71
|
+
changed.push(relativePath(projectRoot, statePath));
|
|
72
|
+
if (!check) {
|
|
73
|
+
await writeJsonAtomic(statePath, nextState);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
export async function loadVscodeSettingsState(statePath) {
|
|
78
|
+
if (!(await pathExists(statePath))) {
|
|
79
|
+
return DEFAULT_STATE;
|
|
80
|
+
}
|
|
81
|
+
try {
|
|
82
|
+
const parsed = await readJson(statePath);
|
|
83
|
+
return {
|
|
84
|
+
managedPaths: Array.isArray(parsed.managedPaths) ? [...new Set(parsed.managedPaths)] : []
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
catch {
|
|
88
|
+
return DEFAULT_STATE;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
export async function cleanupVscodeSettingsIfManaged(args) {
|
|
92
|
+
const { settingsPath, statePath } = args;
|
|
93
|
+
const state = await loadVscodeSettingsState(statePath);
|
|
94
|
+
if (state.managedPaths.length === 0) {
|
|
95
|
+
return false;
|
|
96
|
+
}
|
|
97
|
+
if (!(await pathExists(settingsPath))) {
|
|
98
|
+
await removeIfExists(statePath);
|
|
99
|
+
return false;
|
|
100
|
+
}
|
|
101
|
+
const raw = await readFile(settingsPath, 'utf8');
|
|
102
|
+
const parseErrors = [];
|
|
103
|
+
const parsed = parse(raw, parseErrors, {
|
|
104
|
+
allowTrailingComma: true,
|
|
105
|
+
disallowComments: false
|
|
106
|
+
});
|
|
107
|
+
if (parseErrors.length > 0 || !isObject(parsed)) {
|
|
108
|
+
return false;
|
|
109
|
+
}
|
|
110
|
+
if (!hasOnlyManagedExcludes(parsed, new Set(state.managedPaths))) {
|
|
111
|
+
return false;
|
|
112
|
+
}
|
|
113
|
+
await removeIfExists(settingsPath);
|
|
114
|
+
await removeIfExists(statePath);
|
|
115
|
+
return true;
|
|
116
|
+
}
|
|
117
|
+
export async function validateVscodeSettingsParse(settingsPath) {
|
|
118
|
+
if (!(await pathExists(settingsPath))) {
|
|
119
|
+
return true;
|
|
120
|
+
}
|
|
121
|
+
const raw = await readFile(settingsPath, 'utf8');
|
|
122
|
+
const parseErrors = [];
|
|
123
|
+
parse(raw, parseErrors, {
|
|
124
|
+
allowTrailingComma: true,
|
|
125
|
+
disallowComments: false
|
|
126
|
+
});
|
|
127
|
+
return parseErrors.length === 0;
|
|
128
|
+
}
|
|
129
|
+
async function loadState(statePath, warnings) {
|
|
130
|
+
if (!(await pathExists(statePath))) {
|
|
131
|
+
return DEFAULT_STATE;
|
|
132
|
+
}
|
|
133
|
+
try {
|
|
134
|
+
const parsed = await readJson(statePath);
|
|
135
|
+
return {
|
|
136
|
+
managedPaths: Array.isArray(parsed.managedPaths) ? [...new Set(parsed.managedPaths)] : []
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
catch {
|
|
140
|
+
warnings.push('Invalid VS Code settings state file, recreating.');
|
|
141
|
+
return DEFAULT_STATE;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
function applyModify(text, path, value) {
|
|
145
|
+
const edits = modify(text, path, value, {
|
|
146
|
+
formattingOptions: {
|
|
147
|
+
insertSpaces: true,
|
|
148
|
+
tabSize: 2
|
|
149
|
+
}
|
|
150
|
+
});
|
|
151
|
+
return edits.length === 0 ? text : applyEdits(text, edits);
|
|
152
|
+
}
|
|
153
|
+
function cleanupEmptyObject(text, key) {
|
|
154
|
+
const parseErrors = [];
|
|
155
|
+
const parsed = parse(text, parseErrors, {
|
|
156
|
+
allowTrailingComma: true,
|
|
157
|
+
disallowComments: false
|
|
158
|
+
});
|
|
159
|
+
if (parseErrors.length > 0 || !isObject(parsed)) {
|
|
160
|
+
return text;
|
|
161
|
+
}
|
|
162
|
+
const value = parsed[key];
|
|
163
|
+
if (isObject(value) && Object.keys(value).length === 0) {
|
|
164
|
+
return applyModify(text, [key], undefined);
|
|
165
|
+
}
|
|
166
|
+
return text;
|
|
167
|
+
}
|
|
168
|
+
function asObject(value) {
|
|
169
|
+
return isObject(value) ? value : {};
|
|
170
|
+
}
|
|
171
|
+
function isObject(value) {
|
|
172
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
173
|
+
}
|
|
174
|
+
function hasOnlyManagedExcludes(settings, managed) {
|
|
175
|
+
const allowedTopLevel = new Set(['files.exclude', 'search.exclude']);
|
|
176
|
+
const topLevelKeys = Object.keys(settings);
|
|
177
|
+
for (const key of topLevelKeys) {
|
|
178
|
+
if (!allowedTopLevel.has(key))
|
|
179
|
+
return false;
|
|
180
|
+
}
|
|
181
|
+
for (const field of ['files.exclude', 'search.exclude']) {
|
|
182
|
+
const value = settings[field];
|
|
183
|
+
if (!isObject(value)) {
|
|
184
|
+
if (value === undefined)
|
|
185
|
+
continue;
|
|
186
|
+
return false;
|
|
187
|
+
}
|
|
188
|
+
for (const [key, entry] of Object.entries(value)) {
|
|
189
|
+
if (!managed.has(key))
|
|
190
|
+
return false;
|
|
191
|
+
if (entry !== true)
|
|
192
|
+
return false;
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
return true;
|
|
196
|
+
}
|
|
197
|
+
function ensureTrailingNewline(text) {
|
|
198
|
+
return text.endsWith('\n') ? text : `${text}\n`;
|
|
199
|
+
}
|
|
200
|
+
function equalState(a, b) {
|
|
201
|
+
if (a.managedPaths.length !== b.managedPaths.length)
|
|
202
|
+
return false;
|
|
203
|
+
for (let i = 0; i < a.managedPaths.length; i += 1) {
|
|
204
|
+
if (a.managedPaths[i] !== b.managedPaths[i])
|
|
205
|
+
return false;
|
|
206
|
+
}
|
|
207
|
+
return true;
|
|
208
|
+
}
|
|
209
|
+
function relativePath(projectRoot, absolutePath) {
|
|
210
|
+
return path.relative(projectRoot, absolutePath) || absolutePath;
|
|
211
|
+
}
|
|
212
|
+
//# sourceMappingURL=vscodeSettings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vscodeSettings.js","sourceRoot":"","sources":["../../src/core/vscodeSettings.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
export function normalizeWarnings(warnings) {
|
|
2
|
+
const seen = new Set();
|
|
3
|
+
const out = [];
|
|
4
|
+
for (const warning of warnings) {
|
|
5
|
+
const compact = warning.trim();
|
|
6
|
+
if (!compact)
|
|
7
|
+
continue;
|
|
8
|
+
if (seen.has(compact))
|
|
9
|
+
continue;
|
|
10
|
+
seen.add(compact);
|
|
11
|
+
out.push(compact);
|
|
12
|
+
}
|
|
13
|
+
return out;
|
|
14
|
+
}
|
|
15
|
+
export function formatWarnings(warnings, maxItems = 5) {
|
|
16
|
+
const normalized = normalizeWarnings(warnings);
|
|
17
|
+
if (normalized.length === 0)
|
|
18
|
+
return null;
|
|
19
|
+
const visible = normalized.slice(0, maxItems);
|
|
20
|
+
const hidden = normalized.length - visible.length;
|
|
21
|
+
if (hidden <= 0) {
|
|
22
|
+
return `Warnings:\n- ${visible.join('\n- ')}\n`;
|
|
23
|
+
}
|
|
24
|
+
return `Warnings:\n- ${visible.join('\n- ')}\n- ... and ${String(hidden)} more warning(s)\n`;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=warnings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"warnings.js","sourceRoot":"","sources":["../../src/core/warnings.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,iBAAiB,CAAC,QAAkB;IAClD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAA;IAC9B,MAAM,GAAG,GAAa,EAAE,CAAA;IACxB,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,OAAO,GAAG,OAAO,CAAC,IAAI,EAAE,CAAA;QAC9B,IAAI,CAAC,OAAO;YAAE,SAAQ;QACtB,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC;YAAE,SAAQ;QAC/B,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;QACjB,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACnB,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,QAAkB,EAAE,QAAQ,GAAG,CAAC;IAC7D,MAAM,UAAU,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAA;IAC9C,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IAExC,MAAM,OAAO,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAA;IAC7C,MAAM,MAAM,GAAG,UAAU,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAA;IAEjD,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;QAChB,OAAO,gBAAgB,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAA;IACjD,CAAC;IAED,OAAO,gBAAgB,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,MAAM,CAAC,MAAM,CAAC,oBAAoB,CAAA;AAC9F,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ResolvedMcpServer } from '../types.js';
|
|
2
|
+
export declare function buildAntigravityPayload(servers: ResolvedMcpServer[]): {
|
|
3
|
+
payload: {
|
|
4
|
+
servers: Record<string, unknown>;
|
|
5
|
+
mcpServers: Record<string, unknown>;
|
|
6
|
+
inputs: unknown[];
|
|
7
|
+
};
|
|
8
|
+
warnings: string[];
|
|
9
|
+
};
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { renderVscodeMcp } from '../core/renderers.js';
|
|
2
|
+
export function buildAntigravityPayload(servers) {
|
|
3
|
+
const rendered = renderVscodeMcp(servers);
|
|
4
|
+
return {
|
|
5
|
+
payload: {
|
|
6
|
+
servers: rendered.servers,
|
|
7
|
+
mcpServers: rendered.servers,
|
|
8
|
+
inputs: []
|
|
9
|
+
},
|
|
10
|
+
warnings: rendered.warnings
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=antigravity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"antigravity.js","sourceRoot":"","sources":["../../src/integrations/antigravity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAGtD,MAAM,UAAU,uBAAuB,CAAC,OAA4B;IAIlE,MAAM,QAAQ,GAAG,eAAe,CAAC,OAAO,CAAC,CAAA;IACzC,OAAO;QACL,OAAO,EAAE;YACP,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,UAAU,EAAE,QAAQ,CAAC,OAAO;YAC5B,MAAM,EAAE,EAAE;SACX;QACD,QAAQ,EAAE,QAAQ,CAAC,QAAQ;KAC5B,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function toManagedClaudeName(serverName: string): string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude.js","sourceRoot":"","sources":["../../src/integrations/claude.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,mBAAmB,CAAC,UAAkB;IACpD,OAAO,WAAW,UAAU,EAAE,CAAA;AAChC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codex.js","sourceRoot":"","sources":["../../src/integrations/codex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAGtD,MAAM,UAAU,gBAAgB,CAAC,OAA4B;IAC3D,OAAO,eAAe,CAAC,OAAO,CAAC,CAAA;AACjC,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { renderVscodeMcp } from '../core/renderers.js';
|
|
2
|
+
export function buildVscodeMcpPayload(servers) {
|
|
3
|
+
const rendered = renderVscodeMcp(servers);
|
|
4
|
+
return {
|
|
5
|
+
payload: { servers: rendered.servers },
|
|
6
|
+
warnings: rendered.warnings
|
|
7
|
+
};
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=copilotVscode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"copilotVscode.js","sourceRoot":"","sources":["../../src/integrations/copilotVscode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAGtD,MAAM,UAAU,qBAAqB,CAAC,OAA4B;IAIhE,MAAM,QAAQ,GAAG,eAAe,CAAC,OAAO,CAAC,CAAA;IACzC,OAAO;QACL,OAAO,EAAE,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE;QACtC,QAAQ,EAAE,QAAQ,CAAC,QAAQ;KAC5B,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { renderVscodeMcp } from '../core/renderers.js';
|
|
2
|
+
export function buildCursorPayload(servers) {
|
|
3
|
+
const rendered = renderVscodeMcp(servers);
|
|
4
|
+
return {
|
|
5
|
+
payload: { mcpServers: rendered.servers },
|
|
6
|
+
warnings: rendered.warnings
|
|
7
|
+
};
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=cursor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cursor.js","sourceRoot":"","sources":["../../src/integrations/cursor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AAGtD,MAAM,UAAU,kBAAkB,CAAC,OAA4B;IAI7D,MAAM,QAAQ,GAAG,eAAe,CAAC,OAAO,CAAC,CAAA;IACzC,OAAO;QACL,OAAO,EAAE,EAAE,UAAU,EAAE,QAAQ,CAAC,OAAO,EAAE;QACzC,QAAQ,EAAE,QAAQ,CAAC,QAAQ;KAC5B,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { ResolvedMcpServer } from '../types.js';
|
|
2
|
+
export interface GeminiPayload {
|
|
3
|
+
context: {
|
|
4
|
+
fileName: string;
|
|
5
|
+
};
|
|
6
|
+
contextFileName: string;
|
|
7
|
+
mcpServers: Record<string, unknown>;
|
|
8
|
+
}
|
|
9
|
+
export declare function buildGeminiPayload(servers: ResolvedMcpServer[]): {
|
|
10
|
+
payload: GeminiPayload;
|
|
11
|
+
warnings: string[];
|
|
12
|
+
};
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { renderGeminiServers } from '../core/renderers.js';
|
|
2
|
+
export function buildGeminiPayload(servers) {
|
|
3
|
+
const rendered = renderGeminiServers(servers);
|
|
4
|
+
return {
|
|
5
|
+
payload: {
|
|
6
|
+
context: {
|
|
7
|
+
fileName: 'AGENTS.md'
|
|
8
|
+
},
|
|
9
|
+
contextFileName: 'AGENTS.md',
|
|
10
|
+
mcpServers: rendered.mcpServers
|
|
11
|
+
},
|
|
12
|
+
warnings: rendered.warnings
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=gemini.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../src/integrations/gemini.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAW1D,MAAM,UAAU,kBAAkB,CAAC,OAA4B;IAI7D,MAAM,QAAQ,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAA;IAC7C,OAAO;QACL,OAAO,EAAE;YACP,OAAO,EAAE;gBACP,QAAQ,EAAE,WAAW;aACtB;YACD,eAAe,EAAE,WAAW;YAC5B,UAAU,EAAE,QAAQ,CAAC,UAAU;SAChC;QACD,QAAQ,EAAE,QAAQ,CAAC,QAAQ;KAC5B,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { IntegrationName } from '../types.js';
|
|
2
|
+
export interface IntegrationDefinition {
|
|
3
|
+
id: IntegrationName;
|
|
4
|
+
label: string;
|
|
5
|
+
requiredBinary?: string;
|
|
6
|
+
}
|
|
7
|
+
export declare const INTEGRATIONS: IntegrationDefinition[];
|
|
8
|
+
export declare const INTEGRATION_IDS: IntegrationName[];
|
|
9
|
+
export declare function parseIntegrationList(input: string): IntegrationName[];
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export const INTEGRATIONS = [
|
|
2
|
+
{ id: 'codex', label: 'Codex', requiredBinary: 'codex' },
|
|
3
|
+
{ id: 'claude', label: 'Claude Code', requiredBinary: 'claude' },
|
|
4
|
+
{ id: 'gemini', label: 'Gemini CLI', requiredBinary: 'gemini' },
|
|
5
|
+
{ id: 'copilot_vscode', label: 'Copilot VS Code', requiredBinary: 'code' },
|
|
6
|
+
{ id: 'cursor', label: 'Cursor', requiredBinary: 'cursor-agent' },
|
|
7
|
+
{ id: 'antigravity', label: 'Antigravity', requiredBinary: 'antigravity' }
|
|
8
|
+
];
|
|
9
|
+
export const INTEGRATION_IDS = INTEGRATIONS.map((item) => item.id);
|
|
10
|
+
export function parseIntegrationList(input) {
|
|
11
|
+
const parsed = input
|
|
12
|
+
.split(',')
|
|
13
|
+
.map((item) => item.trim())
|
|
14
|
+
.filter(Boolean);
|
|
15
|
+
const invalid = parsed.filter((item) => !INTEGRATION_IDS.includes(item));
|
|
16
|
+
if (invalid.length > 0) {
|
|
17
|
+
throw new Error(`Unknown integrations: ${invalid.join(', ')}. Allowed: ${INTEGRATION_IDS.join(', ')}`);
|
|
18
|
+
}
|
|
19
|
+
return [...new Set(parsed)];
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/integrations/registry.ts"],"names":[],"mappings":"AAQA,MAAM,CAAC,MAAM,YAAY,GAA4B;IACnD,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE;IACxD,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,QAAQ,EAAE;IAChE,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,QAAQ,EAAE;IAC/D,EAAE,EAAE,EAAE,gBAAgB,EAAE,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,EAAE;IAC1E,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,cAAc,EAAE;IACjE,EAAE,EAAE,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,aAAa,EAAE;CAC3E,CAAA;AAED,MAAM,CAAC,MAAM,eAAe,GAAsB,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;AAErF,MAAM,UAAU,oBAAoB,CAAC,KAAa;IAChD,MAAM,MAAM,GAAG,KAAK;SACjB,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;SAC1B,MAAM,CAAC,OAAO,CAAC,CAAA;IAElB,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAuB,CAAC,CAAC,CAAA;IAC3F,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,yBAAyB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACxG,CAAC;IAED,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,MAA2B,CAAC,CAAC,CAAA;AAClD,CAAC"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
export declare const AGENTS_SCHEMA_VERSION = 3;
|
|
2
|
+
export type IntegrationName = 'codex' | 'claude' | 'gemini' | 'copilot_vscode' | 'cursor' | 'antigravity';
|
|
3
|
+
export type SyncMode = 'source-only' | 'commit-generated';
|
|
4
|
+
export type McpTransportType = 'stdio' | 'http' | 'sse';
|
|
5
|
+
export interface AgentsConfig {
|
|
6
|
+
schemaVersion: number;
|
|
7
|
+
instructions: {
|
|
8
|
+
path: string;
|
|
9
|
+
};
|
|
10
|
+
integrations: {
|
|
11
|
+
enabled: IntegrationName[];
|
|
12
|
+
options: {
|
|
13
|
+
cursorAutoApprove: boolean;
|
|
14
|
+
antigravityGlobalSync: boolean;
|
|
15
|
+
};
|
|
16
|
+
};
|
|
17
|
+
syncMode: SyncMode;
|
|
18
|
+
mcp: {
|
|
19
|
+
servers: Record<string, McpServerDefinition>;
|
|
20
|
+
};
|
|
21
|
+
workspace: {
|
|
22
|
+
vscode: {
|
|
23
|
+
hideGenerated: boolean;
|
|
24
|
+
hiddenPaths: string[];
|
|
25
|
+
};
|
|
26
|
+
};
|
|
27
|
+
lastSync: string | null;
|
|
28
|
+
}
|
|
29
|
+
export interface McpServerDefinition {
|
|
30
|
+
label?: string;
|
|
31
|
+
description?: string;
|
|
32
|
+
transport: McpTransportType;
|
|
33
|
+
command?: string;
|
|
34
|
+
args?: string[];
|
|
35
|
+
url?: string;
|
|
36
|
+
headers?: Record<string, string>;
|
|
37
|
+
env?: Record<string, string>;
|
|
38
|
+
cwd?: string;
|
|
39
|
+
requiredEnv?: string[];
|
|
40
|
+
targets?: IntegrationName[];
|
|
41
|
+
enabled?: boolean;
|
|
42
|
+
}
|
|
43
|
+
export interface LocalOverridesFile {
|
|
44
|
+
mcpServers: Record<string, Partial<McpServerDefinition>>;
|
|
45
|
+
}
|
|
46
|
+
export interface VscodeSettingsState {
|
|
47
|
+
managedPaths: string[];
|
|
48
|
+
}
|
|
49
|
+
export interface LegacyProjectConfig {
|
|
50
|
+
schemaVersion: number;
|
|
51
|
+
projectRoot: string;
|
|
52
|
+
agentsMdPath: string;
|
|
53
|
+
enabledIntegrations: IntegrationName[];
|
|
54
|
+
integrationOptions: {
|
|
55
|
+
cursorAutoApprove: boolean;
|
|
56
|
+
antigravityGlobalSync: boolean;
|
|
57
|
+
};
|
|
58
|
+
syncMode: SyncMode;
|
|
59
|
+
lastSync: string | null;
|
|
60
|
+
}
|
|
61
|
+
export interface ResolvedMcpServer {
|
|
62
|
+
name: string;
|
|
63
|
+
transport: McpTransportType;
|
|
64
|
+
command?: string;
|
|
65
|
+
args?: string[];
|
|
66
|
+
url?: string;
|
|
67
|
+
headers?: Record<string, string>;
|
|
68
|
+
env?: Record<string, string>;
|
|
69
|
+
cwd?: string;
|
|
70
|
+
}
|
|
71
|
+
export interface ResolvedRegistry {
|
|
72
|
+
serversByTarget: Record<IntegrationName, ResolvedMcpServer[]>;
|
|
73
|
+
warnings: string[];
|
|
74
|
+
missingRequiredEnv: string[];
|
|
75
|
+
selectedServerNames: string[];
|
|
76
|
+
}
|
|
77
|
+
export interface SyncOptions {
|
|
78
|
+
projectRoot: string;
|
|
79
|
+
check: boolean;
|
|
80
|
+
verbose: boolean;
|
|
81
|
+
}
|
|
82
|
+
export interface SyncResult {
|
|
83
|
+
changed: string[];
|
|
84
|
+
warnings: string[];
|
|
85
|
+
}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAA"}
|