@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.
Files changed (152) hide show
  1. package/AGENTS.md +400 -0
  2. package/CHANGELOG.md +297 -0
  3. package/CONTRIBUTING.md +164 -0
  4. package/LICENSE +21 -0
  5. package/README.md +117 -0
  6. package/bin/agents +24 -0
  7. package/dist/cli.d.ts +1 -0
  8. package/dist/cli.js +282 -0
  9. package/dist/cli.js.map +1 -0
  10. package/dist/commands/connect.d.ts +7 -0
  11. package/dist/commands/connect.js +48 -0
  12. package/dist/commands/connect.js.map +1 -0
  13. package/dist/commands/disconnect.d.ts +7 -0
  14. package/dist/commands/disconnect.js +47 -0
  15. package/dist/commands/disconnect.js.map +1 -0
  16. package/dist/commands/doctor.d.ts +6 -0
  17. package/dist/commands/doctor.js +430 -0
  18. package/dist/commands/doctor.js.map +1 -0
  19. package/dist/commands/init.d.ts +5 -0
  20. package/dist/commands/init.js +24 -0
  21. package/dist/commands/init.js.map +1 -0
  22. package/dist/commands/mcp-add.d.ts +20 -0
  23. package/dist/commands/mcp-add.js +250 -0
  24. package/dist/commands/mcp-add.js.map +1 -0
  25. package/dist/commands/mcp-import.d.ts +13 -0
  26. package/dist/commands/mcp-import.js +207 -0
  27. package/dist/commands/mcp-import.js.map +1 -0
  28. package/dist/commands/mcp-list.d.ts +5 -0
  29. package/dist/commands/mcp-list.js +34 -0
  30. package/dist/commands/mcp-list.js.map +1 -0
  31. package/dist/commands/mcp-remove.d.ts +7 -0
  32. package/dist/commands/mcp-remove.js +34 -0
  33. package/dist/commands/mcp-remove.js.map +1 -0
  34. package/dist/commands/mcp-test.d.ts +8 -0
  35. package/dist/commands/mcp-test.js +402 -0
  36. package/dist/commands/mcp-test.js.map +1 -0
  37. package/dist/commands/reset.d.ts +6 -0
  38. package/dist/commands/reset.js +76 -0
  39. package/dist/commands/reset.js.map +1 -0
  40. package/dist/commands/start.d.ts +6 -0
  41. package/dist/commands/start.js +292 -0
  42. package/dist/commands/start.js.map +1 -0
  43. package/dist/commands/status.d.ts +7 -0
  44. package/dist/commands/status.js +278 -0
  45. package/dist/commands/status.js.map +1 -0
  46. package/dist/commands/sync.d.ts +6 -0
  47. package/dist/commands/sync.js +22 -0
  48. package/dist/commands/sync.js.map +1 -0
  49. package/dist/commands/watch.d.ts +7 -0
  50. package/dist/commands/watch.js +117 -0
  51. package/dist/commands/watch.js.map +1 -0
  52. package/dist/core/claudeCli.d.ts +7 -0
  53. package/dist/core/claudeCli.js +35 -0
  54. package/dist/core/claudeCli.js.map +1 -0
  55. package/dist/core/config.d.ts +17 -0
  56. package/dist/core/config.js +121 -0
  57. package/dist/core/config.js.map +1 -0
  58. package/dist/core/cursorCli.d.ts +9 -0
  59. package/dist/core/cursorCli.js +60 -0
  60. package/dist/core/cursorCli.js.map +1 -0
  61. package/dist/core/fs.d.ts +11 -0
  62. package/dist/core/fs.js +76 -0
  63. package/dist/core/fs.js.map +1 -0
  64. package/dist/core/gitignore.d.ts +3 -0
  65. package/dist/core/gitignore.js +54 -0
  66. package/dist/core/gitignore.js.map +1 -0
  67. package/dist/core/mcp.d.ts +8 -0
  68. package/dist/core/mcp.js +134 -0
  69. package/dist/core/mcp.js.map +1 -0
  70. package/dist/core/mcpCrud.d.ts +34 -0
  71. package/dist/core/mcpCrud.js +105 -0
  72. package/dist/core/mcpCrud.js.map +1 -0
  73. package/dist/core/mcpImport.d.ts +14 -0
  74. package/dist/core/mcpImport.js +507 -0
  75. package/dist/core/mcpImport.js.map +1 -0
  76. package/dist/core/mcpSecrets.d.ts +27 -0
  77. package/dist/core/mcpSecrets.js +144 -0
  78. package/dist/core/mcpSecrets.js.map +1 -0
  79. package/dist/core/mcpValidation.d.ts +19 -0
  80. package/dist/core/mcpValidation.js +78 -0
  81. package/dist/core/mcpValidation.js.map +1 -0
  82. package/dist/core/paths.d.ts +37 -0
  83. package/dist/core/paths.js +43 -0
  84. package/dist/core/paths.js.map +1 -0
  85. package/dist/core/project.d.ts +16 -0
  86. package/dist/core/project.js +34 -0
  87. package/dist/core/project.js.map +1 -0
  88. package/dist/core/renderers.d.ts +14 -0
  89. package/dist/core/renderers.js +113 -0
  90. package/dist/core/renderers.js.map +1 -0
  91. package/dist/core/shell.d.ts +8 -0
  92. package/dist/core/shell.js +21 -0
  93. package/dist/core/shell.js.map +1 -0
  94. package/dist/core/shellWords.d.ts +1 -0
  95. package/dist/core/shellWords.js +84 -0
  96. package/dist/core/shellWords.js.map +1 -0
  97. package/dist/core/skills.d.ts +8 -0
  98. package/dist/core/skills.js +150 -0
  99. package/dist/core/skills.js.map +1 -0
  100. package/dist/core/skillsValidation.d.ts +1 -0
  101. package/dist/core/skillsValidation.js +68 -0
  102. package/dist/core/skillsValidation.js.map +1 -0
  103. package/dist/core/sync.d.ts +2 -0
  104. package/dist/core/sync.js +427 -0
  105. package/dist/core/sync.js.map +1 -0
  106. package/dist/core/syncLock.d.ts +1 -0
  107. package/dist/core/syncLock.js +84 -0
  108. package/dist/core/syncLock.js.map +1 -0
  109. package/dist/core/templates.d.ts +1 -0
  110. package/dist/core/templates.js +38 -0
  111. package/dist/core/templates.js.map +1 -0
  112. package/dist/core/trust.d.ts +7 -0
  113. package/dist/core/trust.js +51 -0
  114. package/dist/core/trust.js.map +1 -0
  115. package/dist/core/vscodeSettings.d.ts +17 -0
  116. package/dist/core/vscodeSettings.js +212 -0
  117. package/dist/core/vscodeSettings.js.map +1 -0
  118. package/dist/core/warnings.d.ts +2 -0
  119. package/dist/core/warnings.js +26 -0
  120. package/dist/core/warnings.js.map +1 -0
  121. package/dist/integrations/antigravity.d.ts +9 -0
  122. package/dist/integrations/antigravity.js +13 -0
  123. package/dist/integrations/antigravity.js.map +1 -0
  124. package/dist/integrations/claude.d.ts +1 -0
  125. package/dist/integrations/claude.js +4 -0
  126. package/dist/integrations/claude.js.map +1 -0
  127. package/dist/integrations/codex.d.ts +5 -0
  128. package/dist/integrations/codex.js +5 -0
  129. package/dist/integrations/codex.js.map +1 -0
  130. package/dist/integrations/copilotVscode.d.ts +7 -0
  131. package/dist/integrations/copilotVscode.js +9 -0
  132. package/dist/integrations/copilotVscode.js.map +1 -0
  133. package/dist/integrations/cursor.d.ts +7 -0
  134. package/dist/integrations/cursor.js +9 -0
  135. package/dist/integrations/cursor.js.map +1 -0
  136. package/dist/integrations/gemini.d.ts +12 -0
  137. package/dist/integrations/gemini.js +15 -0
  138. package/dist/integrations/gemini.js.map +1 -0
  139. package/dist/integrations/registry.d.ts +9 -0
  140. package/dist/integrations/registry.js +21 -0
  141. package/dist/integrations/registry.js.map +1 -0
  142. package/dist/types.d.ts +85 -0
  143. package/dist/types.js +2 -0
  144. package/dist/types.js.map +1 -0
  145. package/docs/EXAMPLES.md +211 -0
  146. package/docs/README.md +26 -0
  147. package/docs/agents-system.md +178 -0
  148. package/package.json +77 -0
  149. package/templates/agents/AGENTS.md +23 -0
  150. package/templates/agents/README.md +25 -0
  151. package/templates/agents/skills/README.md +27 -0
  152. package/templates/agents/skills/skill-guide/SKILL.md +29 -0
@@ -0,0 +1,292 @@
1
+ import path from 'node:path';
2
+ import * as clack from '@clack/prompts';
3
+ import color from 'picocolors';
4
+ import { pathExists } from '../core/fs.js';
5
+ import { ensureProjectGitignore } from '../core/gitignore.js';
6
+ import { initializeProjectSkeleton } from '../core/project.js';
7
+ import { performSync } from '../core/sync.js';
8
+ import { commandExists } from '../core/shell.js';
9
+ import { INTEGRATIONS } from '../integrations/registry.js';
10
+ import { getProjectPaths } from '../core/paths.js';
11
+ import { runReset } from './reset.js';
12
+ import { ensureCodexProjectTrusted, getCodexTrustState } from '../core/trust.js';
13
+ import { formatWarnings, normalizeWarnings } from '../core/warnings.js';
14
+ export async function runStart(options) {
15
+ const projectRoot = path.resolve(options.projectRoot);
16
+ if (!(await pathExists(projectRoot))) {
17
+ throw new Error(`Project path does not exist: ${projectRoot}`);
18
+ }
19
+ const interactive = !options.nonInteractive && !options.yes;
20
+ if (interactive) {
21
+ clack.intro(color.cyan('agents start'));
22
+ clack.note('One command setup for AGENTS.md + LLM integrations + MCP + SKILLS.', 'Welcome');
23
+ }
24
+ const preflight = collectPreflight();
25
+ const missingPreflight = preflight.filter((item) => !item.ok);
26
+ if (interactive && missingPreflight.length > 0) {
27
+ clack.note(renderPreflight(missingPreflight), 'Preflight warnings');
28
+ }
29
+ if (interactive && (await shouldOfferCleanup(projectRoot))) {
30
+ const doCleanup = await confirmOrCancel({
31
+ message: 'Found local generated files. Cleanup before setup?',
32
+ initialValue: true
33
+ });
34
+ if (doCleanup) {
35
+ await runReset({ projectRoot, localOnly: false, hard: false });
36
+ }
37
+ }
38
+ const defaults = getDefaults();
39
+ const selectedIntegrations = interactive
40
+ ? await selectIntegrations(defaults.integrationDefaults)
41
+ : defaults.integrationDefaults;
42
+ const access = await resolveIntegrationAccess({
43
+ projectRoot,
44
+ selectedIntegrations,
45
+ interactive,
46
+ autoApprove: options.yes || options.nonInteractive
47
+ });
48
+ const hideGeneratedInVscode = interactive
49
+ ? await selectVscodeHideDefaults(defaults.hideGeneratedInVscode)
50
+ : defaults.hideGeneratedInVscode;
51
+ const syncMode = interactive
52
+ ? await selectSyncMode(defaults.syncMode)
53
+ : defaults.syncMode;
54
+ if (interactive) {
55
+ const proceed = await confirmOrCancel({
56
+ message: 'Apply this setup now?',
57
+ initialValue: true
58
+ });
59
+ if (!proceed) {
60
+ clack.outro('Setup canceled.');
61
+ return;
62
+ }
63
+ }
64
+ const spin = interactive ? clack.spinner() : null;
65
+ spin?.start('Applying project setup...');
66
+ const init = await initializeProjectSkeleton({
67
+ projectRoot,
68
+ force: true,
69
+ integrations: selectedIntegrations,
70
+ integrationOptions: access.integrationOptions,
71
+ syncMode,
72
+ hideGeneratedInVscode
73
+ });
74
+ await ensureProjectGitignore(projectRoot, syncMode);
75
+ const sync = await performSync({
76
+ projectRoot,
77
+ check: false,
78
+ verbose: false
79
+ });
80
+ spin?.stop('Setup complete.');
81
+ const summaryLines = [
82
+ `Project: ${projectRoot}`,
83
+ `Integrations: ${selectedIntegrations.join(', ') || '(none)'}`,
84
+ `Sync mode: ${syncMode}`,
85
+ `VS Code hide tool dirs: ${hideGeneratedInVscode ? 'enabled' : 'disabled'}`,
86
+ `Codex trust: ${access.summaries.codex}`,
87
+ `Cursor approval: ${access.summaries.cursor}`,
88
+ `Antigravity sync: ${access.summaries.antigravity}`,
89
+ `Created/updated: ${init.changed.length}`
90
+ ];
91
+ const normalizedWarnings = normalizeWarnings(sync.warnings);
92
+ if (normalizedWarnings.length > 0) {
93
+ summaryLines.push(`Warnings: ${normalizedWarnings.length}`);
94
+ }
95
+ if (interactive) {
96
+ clack.note(summaryLines.join('\n'), 'Summary');
97
+ const warningBlock = formatWarnings(normalizedWarnings, 4);
98
+ if (warningBlock) {
99
+ clack.note(warningBlock.replace(/^Warnings:\n/, '').trim(), 'Warnings');
100
+ }
101
+ clack.outro([
102
+ color.green('Next steps:'),
103
+ '1) agents status',
104
+ '2) agents doctor',
105
+ '3) agents sync --check'
106
+ ].join('\n'));
107
+ return;
108
+ }
109
+ process.stdout.write(`Setup complete for ${projectRoot}\n`);
110
+ process.stdout.write(`${summaryLines.join('\n')}\n`);
111
+ const warningBlock = formatWarnings(normalizedWarnings, 4);
112
+ if (warningBlock) {
113
+ process.stdout.write(warningBlock);
114
+ }
115
+ }
116
+ async function resolveIntegrationAccess(args) {
117
+ const { projectRoot, selectedIntegrations, interactive, autoApprove } = args;
118
+ const summaries = {
119
+ codex: 'not required',
120
+ cursor: 'not required',
121
+ antigravity: 'not required'
122
+ };
123
+ const integrationOptions = {
124
+ cursorAutoApprove: true,
125
+ antigravityGlobalSync: false
126
+ };
127
+ if (selectedIntegrations.includes('codex')) {
128
+ const state = await getCodexTrustState(projectRoot);
129
+ if (state === 'trusted') {
130
+ summaries.codex = 'already trusted';
131
+ }
132
+ else {
133
+ let approve = autoApprove;
134
+ if (interactive) {
135
+ clack.note([
136
+ 'Codex reads project .codex/config.toml only for trusted projects.',
137
+ 'Without trust, MCP from this project may not appear in codex mcp list.'
138
+ ].join('\n'), 'Codex trust required');
139
+ approve = await confirmOrCancel({
140
+ message: 'Trust this project in Codex now?',
141
+ initialValue: true
142
+ });
143
+ }
144
+ if (!approve) {
145
+ summaries.codex = 'skipped (project may stay untrusted)';
146
+ }
147
+ else {
148
+ const result = await ensureCodexProjectTrusted(projectRoot);
149
+ summaries.codex = result.changed ? `trusted (updated ${result.path})` : 'already trusted';
150
+ }
151
+ }
152
+ }
153
+ if (selectedIntegrations.includes('cursor')) {
154
+ let approve = autoApprove;
155
+ if (interactive) {
156
+ clack.note([
157
+ 'Cursor MCP servers require approval before they are loaded.',
158
+ 'agents can auto-approve project-selected MCP servers via cursor-agent.'
159
+ ].join('\n'), 'Cursor MCP approval');
160
+ approve = await confirmOrCancel({
161
+ message: 'Auto-approve selected MCP servers in Cursor?',
162
+ initialValue: true
163
+ });
164
+ }
165
+ integrationOptions.cursorAutoApprove = approve;
166
+ summaries.cursor = approve ? 'enabled' : 'disabled';
167
+ }
168
+ if (selectedIntegrations.includes('antigravity')) {
169
+ integrationOptions.antigravityGlobalSync = false;
170
+ summaries.antigravity = 'project-local';
171
+ }
172
+ return {
173
+ integrationOptions,
174
+ summaries
175
+ };
176
+ }
177
+ function collectPreflight() {
178
+ return INTEGRATIONS.map((integration) => {
179
+ if (!integration.requiredBinary) {
180
+ return { label: integration.label, ok: true, detail: 'no binary required' };
181
+ }
182
+ const ok = commandExists(integration.requiredBinary);
183
+ return {
184
+ label: integration.label,
185
+ ok,
186
+ detail: ok ? `${integration.requiredBinary} found` : `${integration.requiredBinary} missing`
187
+ };
188
+ });
189
+ }
190
+ function renderPreflight(items) {
191
+ return items
192
+ .map((item) => `${item.ok ? color.green('OK') : color.yellow('WARN')} ${item.label}: ${item.detail}`)
193
+ .join('\n');
194
+ }
195
+ async function shouldOfferCleanup(projectRoot) {
196
+ const paths = getProjectPaths(projectRoot);
197
+ const legacyAgentDir = path.join(projectRoot, '.agent');
198
+ const candidates = [
199
+ paths.generatedDir,
200
+ paths.codexDir,
201
+ paths.geminiDir,
202
+ paths.cursorDir,
203
+ paths.antigravityDir,
204
+ legacyAgentDir,
205
+ paths.vscodeMcp,
206
+ paths.claudeSkillsBridge,
207
+ paths.cursorSkillsBridge,
208
+ paths.geminiSkillsBridge
209
+ ];
210
+ for (const candidate of candidates) {
211
+ if (await pathExists(candidate))
212
+ return true;
213
+ }
214
+ return false;
215
+ }
216
+ function getDefaults() {
217
+ const available = INTEGRATIONS.filter((integration) => {
218
+ if (!integration.requiredBinary)
219
+ return true;
220
+ return commandExists(integration.requiredBinary);
221
+ }).map((integration) => integration.id);
222
+ const integrationDefaults = available.includes('codex')
223
+ ? ['codex']
224
+ : available.length > 0
225
+ ? [available[0]]
226
+ : ['codex'];
227
+ return {
228
+ integrationDefaults,
229
+ syncMode: 'source-only',
230
+ hideGeneratedInVscode: true
231
+ };
232
+ }
233
+ async function selectIntegrations(defaults) {
234
+ const value = await clack.multiselect({
235
+ message: 'Choose LLM integrations',
236
+ required: false,
237
+ options: INTEGRATIONS.map((integration) => ({
238
+ value: integration.id,
239
+ label: integration.label,
240
+ hint: integration.requiredBinary ? integration.requiredBinary : 'built-in'
241
+ })),
242
+ initialValues: defaults
243
+ });
244
+ if (clack.isCancel(value)) {
245
+ clack.cancel('Setup canceled.');
246
+ process.exit(1);
247
+ }
248
+ return value ?? [];
249
+ }
250
+ async function selectVscodeHideDefaults(defaultValue) {
251
+ const value = await clack.confirm({
252
+ message: 'Hide tool directories in VS Code explorer/search by default?',
253
+ initialValue: defaultValue
254
+ });
255
+ if (clack.isCancel(value)) {
256
+ clack.cancel('Setup canceled.');
257
+ process.exit(1);
258
+ }
259
+ return Boolean(value);
260
+ }
261
+ async function selectSyncMode(defaultSyncMode) {
262
+ const value = await clack.select({
263
+ message: 'Choose sync mode',
264
+ initialValue: defaultSyncMode,
265
+ options: [
266
+ {
267
+ value: 'source-only',
268
+ label: 'Source-only (recommended)',
269
+ hint: 'Keep only .agents source files in git, generate client configs locally'
270
+ },
271
+ {
272
+ value: 'commit-generated',
273
+ label: 'Commit generated client configs',
274
+ hint: 'Track .codex/.gemini/.vscode outputs in git'
275
+ }
276
+ ]
277
+ });
278
+ if (clack.isCancel(value)) {
279
+ clack.cancel('Setup canceled.');
280
+ process.exit(1);
281
+ }
282
+ return value;
283
+ }
284
+ async function confirmOrCancel(args) {
285
+ const value = await clack.confirm(args);
286
+ if (clack.isCancel(value)) {
287
+ clack.cancel('Setup canceled.');
288
+ process.exit(1);
289
+ }
290
+ return Boolean(value);
291
+ }
292
+ //# sourceMappingURL=start.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/commands/start.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export interface StatusOptions {
2
+ projectRoot: string;
3
+ json: boolean;
4
+ verbose: boolean;
5
+ fast: boolean;
6
+ }
7
+ export declare function runStatus(options: StatusOptions): Promise<void>;
@@ -0,0 +1,278 @@
1
+ import path from 'node:path';
2
+ import { readFile } from 'node:fs/promises';
3
+ import { parse } from 'jsonc-parser';
4
+ import { loadAgentsConfig } from '../core/config.js';
5
+ import { listDirNames, pathExists, readJson } from '../core/fs.js';
6
+ import { loadResolvedRegistry } from '../core/mcp.js';
7
+ import { getProjectPaths } from '../core/paths.js';
8
+ import { commandExists, runCommand } from '../core/shell.js';
9
+ import { getCodexTrustState } from '../core/trust.js';
10
+ import { listMcpEntries, loadMcpState } from '../core/mcpCrud.js';
11
+ import { listCursorMcpStatuses, sanitizeTerminalOutput } from '../core/cursorCli.js';
12
+ export async function runStatus(options) {
13
+ const config = await loadAgentsConfig(options.projectRoot);
14
+ const resolved = await loadResolvedRegistry(options.projectRoot);
15
+ const mcpState = await loadMcpState(options.projectRoot);
16
+ const mcpEntries = listMcpEntries(mcpState);
17
+ const paths = getProjectPaths(options.projectRoot);
18
+ const expectedCodexServers = resolved.serversByTarget.codex.map((server) => server.name);
19
+ const expectedCursorServers = resolved.serversByTarget.cursor.map((server) => server.name);
20
+ const files = {
21
+ '.agents/agents.json': await pathExists(paths.agentsConfig),
22
+ '.agents/local.json': await pathExists(paths.agentsLocal),
23
+ '.agents/skills/': await pathExists(paths.agentsSkillsDir),
24
+ 'AGENTS.md': await pathExists(paths.rootAgentsMd),
25
+ '.codex/config.toml': await pathExists(paths.codexConfig),
26
+ '.gemini/settings.json': await pathExists(paths.geminiSettings),
27
+ '.vscode/mcp.json': await pathExists(paths.vscodeMcp),
28
+ '.vscode/settings.json': await pathExists(paths.vscodeSettings),
29
+ '.cursor/mcp.json': await pathExists(paths.cursorMcp),
30
+ '.antigravity/mcp.json': await pathExists(paths.antigravityProjectMcp)
31
+ };
32
+ if (config.integrations.enabled.includes('claude')) {
33
+ files['.claude/skills'] = await pathExists(paths.claudeSkillsBridge);
34
+ }
35
+ if (config.integrations.enabled.includes('cursor')) {
36
+ files['.cursor/skills'] = await pathExists(paths.cursorSkillsBridge);
37
+ }
38
+ if (config.integrations.enabled.includes('gemini')) {
39
+ files['.gemini/skills'] = await pathExists(paths.geminiSkillsBridge);
40
+ }
41
+ const probes = {};
42
+ if (!options.fast) {
43
+ if (config.integrations.enabled.includes('codex'))
44
+ probes.codex = probeCodex(options.projectRoot, expectedCodexServers);
45
+ if (config.integrations.enabled.includes('codex'))
46
+ probes.codex_trust = await probeCodexTrust(options.projectRoot);
47
+ if (config.integrations.enabled.includes('claude'))
48
+ probes.claude = probeClaude(options.projectRoot);
49
+ if (config.integrations.enabled.includes('gemini'))
50
+ probes.gemini = probeGemini(options.projectRoot);
51
+ if (config.integrations.enabled.includes('copilot_vscode'))
52
+ probes.copilot_vscode = await probeCopilot(paths.vscodeMcp);
53
+ if (config.integrations.enabled.includes('cursor'))
54
+ probes.cursor = probeCursor(options.projectRoot, expectedCursorServers);
55
+ if (config.integrations.enabled.includes('antigravity')) {
56
+ probes.antigravity = await probeAntigravity(paths.antigravityProjectMcp);
57
+ }
58
+ probes.skills = await probeSkills(paths.agentsSkillsDir);
59
+ probes.vscode_hidden = await probeVscodeHidden(paths.vscodeSettings);
60
+ }
61
+ if (resolved.missingRequiredEnv.length > 0) {
62
+ probes.env = `missing required env: ${resolved.missingRequiredEnv.join('; ')}`;
63
+ }
64
+ const output = {
65
+ projectRoot: path.resolve(options.projectRoot),
66
+ mcpSource: {
67
+ config: '.agents/agents.json',
68
+ localOverride: '.agents/local.json'
69
+ },
70
+ enabledIntegrations: config.integrations.enabled,
71
+ syncMode: config.syncMode,
72
+ selectedMcpServers: resolved.selectedServerNames,
73
+ mcp: {
74
+ configured: mcpEntries.length,
75
+ localOverrides: mcpEntries.filter((entry) => entry.hasLocalOverride).length
76
+ },
77
+ vscode: {
78
+ hideGenerated: config.workspace.vscode.hideGenerated,
79
+ hiddenPaths: config.workspace.vscode.hiddenPaths
80
+ },
81
+ files,
82
+ probes,
83
+ probesSkipped: options.fast
84
+ };
85
+ if (options.json) {
86
+ process.stdout.write(`${JSON.stringify(output, null, 2)}\n`);
87
+ return;
88
+ }
89
+ if (!options.verbose) {
90
+ process.stdout.write(`Project: ${output.projectRoot}\n`);
91
+ process.stdout.write(`Integrations: ${output.enabledIntegrations.join(', ') || '(none)'}\n`);
92
+ process.stdout.write(`Sync mode: ${output.syncMode}\n`);
93
+ process.stdout.write(`MCP: ${String(output.mcp.configured)} configured, ${String(output.mcp.localOverrides)} local override(s)\n`);
94
+ process.stdout.write(`Selected MCP: ${output.selectedMcpServers.join(', ') || '(none)'}\n`);
95
+ const compactProbeOrder = ['codex', 'claude', 'gemini', 'copilot_vscode', 'cursor', 'antigravity'];
96
+ const compactProbes = compactProbeOrder
97
+ .filter((name) => Boolean(output.probes[name]))
98
+ .map((name) => `${name}: ${output.probes[name]}`);
99
+ if (output.probesSkipped) {
100
+ process.stdout.write('Probes: skipped (--fast)\n');
101
+ }
102
+ else if (compactProbes.length > 0) {
103
+ process.stdout.write(`Probes: ${compactProbes.join(' | ')}\n`);
104
+ }
105
+ process.stdout.write('Hint: run "agents status --verbose" for files/probes breakdown.\n');
106
+ return;
107
+ }
108
+ process.stdout.write(`Project: ${output.projectRoot}\n`);
109
+ process.stdout.write(`MCP source: ${output.mcpSource.config} + ${output.mcpSource.localOverride}\n`);
110
+ process.stdout.write(`Enabled integrations: ${output.enabledIntegrations.join(', ') || '(none)'}\n`);
111
+ process.stdout.write(`Sync mode: ${output.syncMode}\n`);
112
+ process.stdout.write(`Selected MCP: ${output.selectedMcpServers.join(', ') || '(none)'}\n`);
113
+ process.stdout.write(`MCP totals: ${String(output.mcp.configured)} configured, ${String(output.mcp.localOverrides)} with local overrides\n`);
114
+ process.stdout.write(`VS Code hide generated: ${output.vscode.hideGenerated ? 'enabled' : 'disabled'} (${output.vscode.hiddenPaths.length} path(s))\n`);
115
+ process.stdout.write('Files:\n');
116
+ for (const [file, exists] of Object.entries(output.files)) {
117
+ process.stdout.write(`- ${file}: ${exists ? 'ok' : 'missing'}\n`);
118
+ }
119
+ process.stdout.write('Probes:\n');
120
+ if (output.probesSkipped) {
121
+ process.stdout.write('- skipped (--fast)\n');
122
+ }
123
+ else {
124
+ for (const [name, result] of Object.entries(output.probes)) {
125
+ process.stdout.write(`- ${name}: ${result}\n`);
126
+ }
127
+ }
128
+ }
129
+ function probeCodex(projectRoot, expectedServerNames) {
130
+ if (!commandExists('codex'))
131
+ return 'codex CLI not found';
132
+ const result = runCommand('codex', ['mcp', 'list', '--json'], projectRoot);
133
+ if (!result.ok)
134
+ return `failed (${compact(result.stderr)})`;
135
+ try {
136
+ const parsed = JSON.parse(result.stdout);
137
+ const visible = extractCodexServerNames(parsed);
138
+ const missing = expectedServerNames.filter((name) => !visible.includes(name));
139
+ if (missing.length > 0) {
140
+ return `${visible.length} visible in codex mcp list (${visible.join(', ') || 'none'}); project-selected not in list (${missing.join(', ')}).`;
141
+ }
142
+ return `${visible.length} MCP server(s) visible (${visible.join(', ') || 'none'})`;
143
+ }
144
+ catch {
145
+ return 'ok (unparsed output)';
146
+ }
147
+ }
148
+ function probeClaude(projectRoot) {
149
+ if (!commandExists('claude'))
150
+ return 'claude CLI not found';
151
+ const result = runCommand('claude', ['mcp', 'list'], projectRoot);
152
+ if (!result.ok)
153
+ return `failed (${compact(result.stderr)})`;
154
+ const lines = sanitizeTerminalOutput(result.stdout)
155
+ .split('\n')
156
+ .map((line) => line.trim());
157
+ const managedLines = lines.filter((line) => line.startsWith('agents__'));
158
+ const managed = managedLines.length;
159
+ const unhealthy = managedLines.filter((line) => line.includes('✗') || line.toLowerCase().includes('failed')).length;
160
+ if (unhealthy > 0) {
161
+ return `${managed} managed MCP server(s), ${unhealthy} unhealthy`;
162
+ }
163
+ return `${managed} managed MCP server(s) detected`;
164
+ }
165
+ function probeGemini(projectRoot) {
166
+ if (!commandExists('gemini'))
167
+ return 'gemini CLI not found';
168
+ const result = runCommand('gemini', ['mcp', 'list'], projectRoot);
169
+ const output = sanitizeTerminalOutput(`${result.stdout}\n${result.stderr}`);
170
+ if (!result.ok)
171
+ return `failed (${compact(result.stderr)})`;
172
+ if (output.includes('Invalid configuration'))
173
+ return 'invalid Gemini config detected';
174
+ const lines = output
175
+ .split('\n')
176
+ .map((line) => line.trim())
177
+ .filter(Boolean);
178
+ const disconnected = lines.filter((line) => line.includes('✗') || line.toLowerCase().includes('disconnected'));
179
+ if (disconnected.length > 0) {
180
+ return `gemini has ${disconnected.length} disconnected server(s)`;
181
+ }
182
+ return 'gemini mcp list succeeded';
183
+ }
184
+ async function probeCopilot(vscodeMcpPath) {
185
+ if (!(await pathExists(vscodeMcpPath)))
186
+ return 'missing .vscode/mcp.json';
187
+ try {
188
+ const parsed = await readJson(vscodeMcpPath);
189
+ const count = Object.keys(parsed.servers ?? {}).length;
190
+ return `${count} server(s) configured`;
191
+ }
192
+ catch {
193
+ return 'invalid JSON';
194
+ }
195
+ }
196
+ function probeCursor(projectRoot, expectedServerNames) {
197
+ if (!commandExists('cursor-agent'))
198
+ return 'cursor-agent CLI not found';
199
+ const listed = listCursorMcpStatuses(projectRoot);
200
+ if (!listed.ok)
201
+ return `failed (${compact(listed.stderr)})`;
202
+ const entries = Object.entries(listed.statuses);
203
+ const loaded = entries.filter(([, status]) => status === 'ready').length;
204
+ const notApproved = entries.filter(([, status]) => status === 'needs-approval').length;
205
+ const disabled = entries.filter(([, status]) => status === 'disabled').length;
206
+ const unknown = entries.filter(([, status]) => status === 'unknown').length;
207
+ const missing = expectedServerNames.filter((name) => !Object.prototype.hasOwnProperty.call(listed.statuses, name));
208
+ const parts = [`${loaded} ready`];
209
+ if (notApproved > 0)
210
+ parts.push(`${notApproved} need approval`);
211
+ if (disabled > 0)
212
+ parts.push(`${disabled} disabled`);
213
+ if (unknown > 0)
214
+ parts.push(`${unknown} unknown`);
215
+ if (missing.length > 0)
216
+ parts.push(`missing in list: ${missing.join(', ')}`);
217
+ return parts.join(', ');
218
+ }
219
+ async function probeAntigravity(projectPath) {
220
+ if (!(await pathExists(projectPath)))
221
+ return 'missing .antigravity/mcp.json';
222
+ try {
223
+ const parsed = await readJson(projectPath);
224
+ const count = Object.keys(parsed.servers ?? parsed.mcpServers ?? {}).length;
225
+ return `${count} server(s) configured (runtime state visible only in Antigravity UI)`;
226
+ }
227
+ catch {
228
+ return 'invalid .antigravity/mcp.json';
229
+ }
230
+ }
231
+ async function probeSkills(skillsDir) {
232
+ if (!(await pathExists(skillsDir)))
233
+ return 'skills directory missing';
234
+ const existing = await listDirNames(skillsDir);
235
+ return `${existing.length} skill folder(s) present`;
236
+ }
237
+ async function probeVscodeHidden(settingsPath) {
238
+ if (!(await pathExists(settingsPath)))
239
+ return 'settings file missing';
240
+ try {
241
+ const raw = await readFile(settingsPath, 'utf8');
242
+ const errors = [];
243
+ const parsed = parse(raw, errors, {
244
+ allowTrailingComma: true,
245
+ disallowComments: false
246
+ });
247
+ if (errors.length > 0) {
248
+ return 'invalid JSONC';
249
+ }
250
+ const filesExclude = parsed['files.exclude'];
251
+ const searchExclude = parsed['search.exclude'];
252
+ const filesCount = typeof filesExclude === 'object' && filesExclude !== null ? Object.keys(filesExclude).length : 0;
253
+ const searchCount = typeof searchExclude === 'object' && searchExclude !== null ? Object.keys(searchExclude).length : 0;
254
+ return `${filesCount} files.exclude, ${searchCount} search.exclude`;
255
+ }
256
+ catch {
257
+ return 'invalid JSONC';
258
+ }
259
+ }
260
+ function compact(input) {
261
+ return input.trim().split('\n').at(-1) ?? 'unknown';
262
+ }
263
+ async function probeCodexTrust(projectRoot) {
264
+ const state = await getCodexTrustState(projectRoot);
265
+ return state === 'trusted' ? 'trusted' : 'untrusted';
266
+ }
267
+ function extractCodexServerNames(entries) {
268
+ const names = [];
269
+ for (const entry of entries) {
270
+ const candidates = [entry.name, entry.id, entry.server, entry.server_label, entry.Name];
271
+ const match = candidates.find((candidate) => typeof candidate === 'string');
272
+ if (typeof match === 'string') {
273
+ names.push(match);
274
+ }
275
+ }
276
+ return [...new Set(names)].sort((a, b) => a.localeCompare(b));
277
+ }
278
+ //# sourceMappingURL=status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/commands/status.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export interface SyncCommandOptions {
2
+ projectRoot: string;
3
+ check: boolean;
4
+ verbose: boolean;
5
+ }
6
+ export declare function runSync(options: SyncCommandOptions): Promise<void>;
@@ -0,0 +1,22 @@
1
+ import { performSync } from '../core/sync.js';
2
+ import { formatWarnings } from '../core/warnings.js';
3
+ export async function runSync(options) {
4
+ const result = await performSync({
5
+ projectRoot: options.projectRoot,
6
+ check: options.check,
7
+ verbose: options.verbose
8
+ });
9
+ const warningBlock = formatWarnings(result.warnings, 5);
10
+ if (warningBlock) {
11
+ process.stdout.write(warningBlock);
12
+ }
13
+ if (result.changed.length === 0) {
14
+ process.stdout.write(options.check ? 'OK: no changes needed.\n' : 'No changes.\n');
15
+ return;
16
+ }
17
+ process.stdout.write(`${options.check ? 'Would update' : 'Updated'} ${result.changed.length} item(s):\n- ${result.changed.join('\n- ')}\n`);
18
+ if (options.check) {
19
+ process.exitCode = 2;
20
+ }
21
+ }
22
+ //# sourceMappingURL=sync.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sync.js","sourceRoot":"","sources":["../../src/commands/sync.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAQpD,MAAM,CAAC,KAAK,UAAU,OAAO,CAAC,OAA2B;IACvD,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC;QAC/B,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,OAAO,EAAE,OAAO,CAAC,OAAO;KACzB,CAAC,CAAA;IAEF,MAAM,YAAY,GAAG,cAAc,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAA;IACvD,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;IACpC,CAAC;IAED,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,eAAe,CAAC,CAAA;QAClF,OAAM;IACR,CAAC;IAED,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,gBAAgB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CACtH,CAAA;IAED,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAA;IACtB,CAAC;AACH,CAAC"}