{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/extension/config.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAyB,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAKjF,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAkBD,wBAAgB,UAAU,CAAC,MAAM,EAAE,eAAe,EAAE,UAAU,SAAkB,GAAG,IAAI,CAGtF;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,eAAe,GAAG,eAAe,CAKnG;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,IAAI,CAAC,eAAe,EAAE,gBAAgB,CAAC,GAAG,OAAO,CAE9F;AAED,wBAAgB,UAAU,IAAI,eAAe,CAQ5C","sourcesContent":["import * as fs from \"node:fs\";\nimport * as path from \"node:path\";\nimport { validateMissionStoreConfig } from \"../missions/store.ts\";\nimport { validateAuthorityPolicy } from \"../policy/authority.ts\";\nimport { validatePermissionConfig } from \"../runs/shared/permissions.ts\";\nimport type { ArtifactDirPreference, ExtensionConfig } from \"../shared/types.ts\";\nimport { getAgentDir } from \"../shared/utils.ts\";\n\nconst ARTIFACT_DIR_PREFERENCES = new Set<ArtifactDirPreference>([\"project\", \"session\", \"temp\"]);\n\nexport function getConfigPath(): string {\n\treturn path.join(getAgentDir(), \"extensions\", \"subagent\", \"config.json\");\n}\n\nfunction readConfigForUpdate(configPath = getConfigPath()): ExtensionConfig {\n\tif (!fs.existsSync(configPath)) return {};\n\tconst parsed = JSON.parse(fs.readFileSync(configPath, \"utf-8\")) as unknown;\n\tif (!parsed || typeof parsed !== \"object\" || Array.isArray(parsed)) {\n\t\tthrow new Error(`Subagent config at '${configPath}' must be a JSON object`);\n\t}\n\tconst config = parsed as Record<string, unknown>;\n\tif (config.artifactDir !== undefined && !ARTIFACT_DIR_PREFERENCES.has(config.artifactDir as ArtifactDirPreference)) {\n\t\tthrow new Error(`config.artifactDir must be \"project\", \"session\", or \"temp\"`);\n\t}\n\tvalidateMissionStoreConfig(config.missions);\n\tvalidateAuthorityPolicy(config.authorityPolicy);\n\tvalidatePermissionConfig(config.permissions);\n\treturn parsed as ExtensionConfig;\n}\n\nexport function saveConfig(config: ExtensionConfig, configPath = getConfigPath()): void {\n\tfs.mkdirSync(path.dirname(configPath), { recursive: true });\n\tfs.writeFileSync(configPath, `${JSON.stringify(config, null, \"\\t\")}\\n`, \"utf-8\");\n}\n\nexport function updateConfig(updater: (config: ExtensionConfig) => ExtensionConfig): ExtensionConfig {\n\tconst configPath = getConfigPath();\n\tconst next = updater(readConfigForUpdate(configPath));\n\tsaveConfig(next, configPath);\n\treturn next;\n}\n\nexport function resolveAsyncByDefault(config: Pick<ExtensionConfig, \"asyncByDefault\">): boolean {\n\treturn config.asyncByDefault !== false;\n}\n\nexport function loadConfig(): ExtensionConfig {\n\tconst configPath = getConfigPath();\n\ttry {\n\t\treturn readConfigForUpdate(configPath);\n\t} catch (error) {\n\t\tconsole.error(`Failed to load subagent config from '${configPath}':`, error);\n\t}\n\treturn {};\n}\n"]}