{"version":3,"file":"antigravity.cjs","names":["path","readJson","MCP_SERVERS_KEY","isRecord","mcpProxyArguments","ANTIGRAVITY_MCP_PROXY_PACKAGE","PLUGINS_DIRECTORY","fs","AGIFLOW_PROXY_SERVER_NAME","PLUGIN_MANIFEST_FILENAME","SKILLS_DIRECTORY","pathInside","CORE_PLUGIN_NAME","SKIP_PERMISSIONS_OPTION","additionalDirectoryArgs","acquireDirectoryLock","runInteractive"],"sources":["../../../../../src/cli/commands/compat/providers/antigravity.ts"],"sourcesContent":["import fs from 'node:fs';\nimport path from 'node:path';\n\nimport { isRecord, readJson, writeFileAtomic, writeJson } from '@agimon-ai/doompi-core/runtime-json';\nimport type { JsonObject } from '@agimon-ai/doompi-core/runtime-json';\n\nimport type { CompatibilityContext } from '../context';\nimport { acquireDirectoryLock, pathInside, runInteractive } from './process';\nimport {\n  AGIFLOW_PROXY_SERVER_NAME,\n  ANTIGRAVITY_MCP_PROXY_PACKAGE,\n  additionalDirectoryArgs,\n  CORE_PLUGIN_NAME,\n  MCP_SERVERS_KEY,\n  mcpProxyArguments,\n  NPX_COMMAND,\n  PLUGIN_MANIFEST_FILENAME,\n  PLUGINS_DIRECTORY,\n  SKILLS_DIRECTORY,\n  SKIP_PERMISSIONS_OPTION,\n} from './shared';\n\n/**\n * Antigravity state synchronisation.\n *\n * Antigravity reads its configuration from the workspace and from the user's\n * home directory rather than from arguments, so every selection has to be\n * written to disk before launch and reverted when it is no longer selected.\n * Everything the harness writes is tracked in a managed-state file so a file\n * the user created by hand is never silently replaced.\n */\n\nconst ANTIGRAVITY_PROVIDER = 'agy';\nconst AGY_MANAGED_STATE = '.doom-pi-managed.json';\nconst ANTIGRAVITY_PROXY_SERVER_NAME = 'mcp-proxy';\nconst PROJECT_MCP_SERVER_NAME = 'project-mcp';\nconst PENCIL_SERVER_NAME = 'pencil';\nconst ANTIGRAVITY_SYNC_LOCK = '.doom-pi-sync.lock';\nconst AGENTS_DIRECTORY = '.agents';\nconst GENERATED_AGENTS_DIRECTORY = '_agents';\nconst CODEX_PLUGIN_DIRECTORY = '.codex-plugin';\nconst MCP_CONFIG_FILENAME = 'mcp_config.json';\nconst HOOKS_CONFIG_FILENAME = 'hooks.json';\nconst MANAGED_PLUGINS_KEY = 'plugins';\nconst MCP_PROXY_TIMEOUT_MS = 1_200_000;\nconst GEMINI_DIRECTORY = '.gemini';\nconst ANTIGRAVITY_CLI_DIRECTORY = 'antigravity-cli';\nconst ANTIGRAVITY_SETTINGS_FILENAME = 'settings.json';\nconst ANTIGRAVITY_LOCAL_DIRECTORY = '.antigravity-local';\nconst CLAUDE_DIRECTORY = '.claude';\nconst DEFAULT_ANTIGRAVITY_MODEL = 'Gemini 3.5 Flash';\nconst REPO_ROOT_PLACEHOLDER = '$AGY_REPO_ROOT';\n\n/** Rewrites one MCP server definition into the shape Antigravity expects. */\nexport function adaptAntigravityMcpDefinition(definition: JsonObject, repoRoot: string): JsonObject | undefined {\n  if (typeof definition.command === 'string') {\n    const adapted: JsonObject = {\n      ...definition,\n      command: definition.command,\n      args: Array.isArray(definition.args) ? definition.args.map(String) : [],\n      cwd: typeof definition.cwd === 'string' ? definition.cwd : repoRoot,\n    };\n    delete adapted.type;\n    return adapted;\n  }\n  const url = typeof definition.url === 'string' ? definition.url : undefined;\n  if (!url) return undefined;\n  const adapted: JsonObject = { ...definition, serverUrl: url };\n  delete adapted.type;\n  delete adapted.url;\n  return adapted;\n}\n\nfunction syncAntigravityMcp(context: CompatibilityContext): void {\n  const repoRoot = context.options.repoRoot;\n  const workspacePath = path.join(repoRoot, AGENTS_DIRECTORY, MCP_CONFIG_FILENAME);\n  const managedPath = path.join(repoRoot, AGENTS_DIRECTORY, AGY_MANAGED_STATE);\n  const workspace = readJson(workspacePath);\n  const workspaceMcpServers = workspace[MCP_SERVERS_KEY];\n  const workspaceServers = isRecord(workspaceMcpServers) ? { ...workspaceMcpServers } : {};\n  const previousManaged = readJson(managedPath);\n  const previousMcpServers = previousManaged[MCP_SERVERS_KEY];\n  const previousNames = Array.isArray(previousMcpServers) ? previousMcpServers.map(String) : [];\n  for (const name of new Set([\n    ...previousNames,\n    ANTIGRAVITY_PROXY_SERVER_NAME,\n    PROJECT_MCP_SERVER_NAME,\n    PENCIL_SERVER_NAME,\n  ])) {\n    delete workspaceServers[name];\n  }\n\n  const selectedConfig = readJson(context.mcpConfigPath);\n  const selectedMcpServers = selectedConfig[MCP_SERVERS_KEY];\n  const selectedServers = isRecord(selectedMcpServers) ? selectedMcpServers : {};\n  const allowed = context.mcpAllowlist?.servers;\n  const keeps = (name: string): boolean => !allowed || allowed.length === 0 || allowed.includes(name);\n  const managedNames: string[] = [];\n\n  if (keeps(AGIFLOW_PROXY_SERVER_NAME)) {\n    workspaceServers[ANTIGRAVITY_PROXY_SERVER_NAME] = {\n      command: NPX_COMMAND,\n      args: mcpProxyArguments(ANTIGRAVITY_MCP_PROXY_PACKAGE, context.proxyConfigPath, true),\n      cwd: repoRoot,\n      timeout: MCP_PROXY_TIMEOUT_MS,\n    };\n    managedNames.push(ANTIGRAVITY_PROXY_SERVER_NAME);\n  }\n\n  const directNames = context.mcpAllowlist ? (allowed ?? []) : [PROJECT_MCP_SERVER_NAME, PENCIL_SERVER_NAME];\n  for (const name of directNames) {\n    if (name === AGIFLOW_PROXY_SERVER_NAME) continue;\n    const definition = selectedServers[name];\n    if (!isRecord(definition)) continue;\n    const adapted = adaptAntigravityMcpDefinition(definition, repoRoot);\n    if (!adapted) continue;\n    workspaceServers[name] = adapted;\n    managedNames.push(name);\n  }\n\n  writeJson(workspacePath, { ...workspace, [MCP_SERVERS_KEY]: workspaceServers });\n  writeJson(managedPath, { ...previousManaged, [MCP_SERVERS_KEY]: managedNames });\n\n  const home = context.environment.HOME;\n  if (!home) return;\n  // Earlier releases wrote these servers into the Gemini config. Leaving them\n  // there would double every tool, so they are removed wherever they are found.\n  for (const legacyPath of [\n    path.join(home, GEMINI_DIRECTORY, 'config', MCP_CONFIG_FILENAME),\n    path.join(home, GEMINI_DIRECTORY, 'config', PLUGINS_DIRECTORY, 'shared', MCP_CONFIG_FILENAME),\n  ]) {\n    if (!fs.existsSync(legacyPath)) continue;\n    const legacy = readJson(legacyPath);\n    const legacyMcpServers = legacy[MCP_SERVERS_KEY];\n    const servers = isRecord(legacyMcpServers) ? { ...legacyMcpServers } : {};\n    for (const name of [\n      ANTIGRAVITY_PROXY_SERVER_NAME,\n      AGIFLOW_PROXY_SERVER_NAME,\n      PROJECT_MCP_SERVER_NAME,\n      PENCIL_SERVER_NAME,\n    ]) {\n      delete servers[name];\n    }\n    writeJson(legacyPath, { ...legacy, [MCP_SERVERS_KEY]: servers });\n  }\n}\n\nfunction antigravitySettingsPath(home: string): string {\n  return path.join(home, GEMINI_DIRECTORY, ANTIGRAVITY_CLI_DIRECTORY, ANTIGRAVITY_SETTINGS_FILENAME);\n}\n\nfunction syncAntigravityModel(context: CompatibilityContext): void {\n  const home = context.environment.HOME;\n  if (!home) throw new Error('HOME is required for Antigravity compatibility');\n  const settingsPath = antigravitySettingsPath(home);\n  const settings = readJson(settingsPath);\n  if (!settings.model) settings.model = context.environment.AGY_MODEL ?? DEFAULT_ANTIGRAVITY_MODEL;\n  const trusted = Array.isArray(settings.trustedWorkspaces) ? settings.trustedWorkspaces.map(String) : [];\n  // Trusting a workspace outlives the run that added it, and this file belongs\n  // to Antigravity rather than to DoomPi, so say which file gained the entry.\n  if (!trusted.includes(context.options.repoRoot)) {\n    trusted.push(context.options.repoRoot);\n    process.stderr.write(`[doompi] trusting ${context.options.repoRoot} in ${settingsPath}\\n`);\n  }\n  settings.trustedWorkspaces = trusted;\n  writeJson(settingsPath, settings);\n}\n\nfunction ensureManagedDirectory(directory: string): void {\n  const stat = fs.lstatSync(directory, { throwIfNoEntry: false });\n  if (stat && !stat.isDirectory()) {\n    throw new Error(`Refusing to use unmanaged Antigravity path: ${directory}`);\n  }\n  if (!stat) fs.mkdirSync(directory, { recursive: true });\n}\n\nfunction replaceManagedSkillLink(linkPath: string, sourcePath: string): void {\n  if (fs.existsSync(linkPath) || fs.lstatSync(linkPath, { throwIfNoEntry: false })) {\n    const stat = fs.lstatSync(linkPath);\n    if (!stat.isSymbolicLink()) throw new Error(`Refusing to replace unmanaged Antigravity path: ${linkPath}`);\n    fs.rmSync(linkPath, { force: true });\n  }\n  fs.symlinkSync(sourcePath, linkPath, 'dir');\n}\n\nfunction syncAntigravityPlugins(context: CompatibilityContext): void {\n  const repoRoot = context.options.repoRoot;\n  const pluginsRoot = path.join(repoRoot, PLUGINS_DIRECTORY);\n  const agentsRoot = path.join(repoRoot, GENERATED_AGENTS_DIRECTORY);\n  const targetRoot = path.join(agentsRoot, PLUGINS_DIRECTORY);\n  const managedPath = path.join(repoRoot, AGENTS_DIRECTORY, AGY_MANAGED_STATE);\n  const managed = readJson(managedPath);\n  const previousPlugins = managed[MANAGED_PLUGINS_KEY];\n  const previousNames = new Set(Array.isArray(previousPlugins) ? previousPlugins.map(String) : []);\n  ensureManagedDirectory(agentsRoot);\n  ensureManagedDirectory(targetRoot);\n  const selectedNames = new Set<string>();\n\n  for (const plugin of context.plugins) {\n    const manifestPath = path.join(plugin.directory, CODEX_PLUGIN_DIRECTORY, PLUGIN_MANIFEST_FILENAME);\n    if (!fs.existsSync(manifestPath)) continue;\n    const manifest = readJson(manifestPath);\n    const pluginName =\n      typeof manifest.name === 'string' && manifest.name ? manifest.name : path.basename(plugin.directory);\n    if (\n      pluginName === './index' ||\n      pluginName === '..' ||\n      pluginName.toLowerCase() === CORE_PLUGIN_NAME ||\n      pluginName.includes('/') ||\n      pluginName.includes('\\\\')\n    ) {\n      throw new Error(`Invalid Antigravity plugin name: ${pluginName}`);\n    }\n    const target = path.join(targetRoot, pluginName);\n    selectedNames.add(pluginName);\n    ensureManagedDirectory(target);\n    writeJson(path.join(target, PLUGIN_MANIFEST_FILENAME), { name: pluginName });\n    const skills = path.join(plugin.directory, SKILLS_DIRECTORY);\n    const skillsLink = path.join(target, SKILLS_DIRECTORY);\n    if (fs.existsSync(skills)) {\n      replaceManagedSkillLink(skillsLink, skills);\n    } else if (fs.lstatSync(skillsLink, { throwIfNoEntry: false })?.isSymbolicLink()) {\n      fs.rmSync(skillsLink, { force: true });\n    }\n  }\n\n  for (const entry of fs.readdirSync(targetRoot, { withFileTypes: true })) {\n    if (entry.name === CORE_PLUGIN_NAME || selectedNames.has(entry.name)) continue;\n    const target = path.join(targetRoot, entry.name);\n    if (previousNames.has(entry.name)) {\n      fs.rmSync(target, { recursive: true, force: true });\n      continue;\n    }\n    if (!entry.isDirectory()) continue;\n    // Not in the managed list, but its skills link points into this repository's\n    // plugins, so an earlier run created it before the state file existed.\n    const skillsLink = path.join(target, SKILLS_DIRECTORY);\n    const stat = fs.lstatSync(skillsLink, { throwIfNoEntry: false });\n    if (!stat?.isSymbolicLink()) continue;\n    const source = path.resolve(path.dirname(skillsLink), fs.readlinkSync(skillsLink));\n    if (pathInside(pluginsRoot, source)) fs.rmSync(target, { recursive: true, force: true });\n  }\n\n  writeJson(managedPath, { ...managed, [MANAGED_PLUGINS_KEY]: [...selectedNames] });\n}\n\nfunction removeManagedCorePlugin(core: string): void {\n  if (readJson(path.join(core, PLUGIN_MANIFEST_FILENAME)).name === CORE_PLUGIN_NAME) {\n    fs.rmSync(core, { recursive: true, force: true });\n  }\n}\n\nfunction syncAntigravitySharedSkills(context: CompatibilityContext): void {\n  const core = path.join(context.options.repoRoot, GENERATED_AGENTS_DIRECTORY, PLUGINS_DIRECTORY, CORE_PLUGIN_NAME);\n  const coreStat = fs.lstatSync(core, { throwIfNoEntry: false });\n  if (coreStat?.isSymbolicLink()) throw new Error(`Refusing to use unmanaged Antigravity path: ${core}`);\n  if (!context.sharedSkills) {\n    removeManagedCorePlugin(core);\n    return;\n  }\n\n  const source = path.join(context.options.repoRoot, CLAUDE_DIRECTORY, SKILLS_DIRECTORY);\n  if (!fs.existsSync(source)) {\n    removeManagedCorePlugin(core);\n    return;\n  }\n  ensureManagedDirectory(core);\n  const target = path.join(core, SKILLS_DIRECTORY);\n  ensureManagedDirectory(target);\n  writeJson(path.join(core, PLUGIN_MANIFEST_FILENAME), { name: CORE_PLUGIN_NAME });\n  const selected = new Set<string>();\n  for (const entry of fs.readdirSync(source, { withFileTypes: true })) {\n    if (!entry.isDirectory()) continue;\n    selected.add(entry.name);\n    replaceManagedSkillLink(path.join(target, entry.name), path.join(source, entry.name));\n  }\n  for (const entry of fs.readdirSync(target)) {\n    if (selected.has(entry)) continue;\n    const candidate = path.join(target, entry);\n    if (fs.lstatSync(candidate).isSymbolicLink()) fs.rmSync(candidate, { force: true });\n  }\n}\n\nfunction syncAntigravityHooks(context: CompatibilityContext): void {\n  const source = path.join(context.options.repoRoot, ANTIGRAVITY_LOCAL_DIRECTORY, HOOKS_CONFIG_FILENAME);\n  const target = path.join(context.options.repoRoot, AGENTS_DIRECTORY, HOOKS_CONFIG_FILENAME);\n  const managedPath = path.join(context.options.repoRoot, AGENTS_DIRECTORY, AGY_MANAGED_STATE);\n  const managed = readJson(managedPath);\n  if (!fs.existsSync(source)) {\n    if (managed.hooks === true) fs.rmSync(target, { force: true });\n    writeJson(managedPath, { ...managed, hooks: false });\n    return;\n  }\n  const content = fs.readFileSync(source, 'utf8').replaceAll(REPO_ROOT_PLACEHOLDER, context.options.repoRoot);\n  const targetStat = fs.lstatSync(target, { throwIfNoEntry: false });\n  if (targetStat && managed.hooks !== true) {\n    if (!targetStat.isFile() || fs.readFileSync(target, 'utf8') !== content) {\n      throw new Error(`Refusing to replace unmanaged Antigravity path: ${target}`);\n    }\n  }\n  writeFileAtomic(target, content);\n  writeJson(managedPath, { ...managed, hooks: true });\n}\n\nexport function antigravityCompatibilityArgs(context: CompatibilityContext): string[] {\n  return [\n    ...(context.options.skipPermissions ? [SKIP_PERMISSIONS_OPTION] : []),\n    ...additionalDirectoryArgs(context),\n    ...context.options.providerArgs,\n  ];\n}\n\nexport async function launchAntigravity(context: CompatibilityContext): Promise<number> {\n  const home = context.environment.HOME;\n  if (!home) throw new Error('HOME is required for Antigravity compatibility');\n  // Every step below writes shared state under the user's home directory, so\n  // two repositories launching at once have to be serialised.\n  const lockPath = path.join(home, GEMINI_DIRECTORY, ANTIGRAVITY_CLI_DIRECTORY, ANTIGRAVITY_SYNC_LOCK);\n  const releaseLock = await acquireDirectoryLock(lockPath);\n  try {\n    syncAntigravityMcp(context);\n    syncAntigravityModel(context);\n    syncAntigravityPlugins(context);\n    syncAntigravitySharedSkills(context);\n    syncAntigravityHooks(context);\n  } finally {\n    await releaseLock();\n  }\n  return runInteractive(\n    ANTIGRAVITY_PROVIDER,\n    antigravityCompatibilityArgs(context),\n    context.options.repoRoot,\n    context.environment,\n  );\n}\n"],"mappings":"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"}