@guildai/cli 0.11.0 → 0.12.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.
Files changed (198) hide show
  1. package/dist/auth-CRMO5O3N.js +29 -0
  2. package/dist/auth-CRMO5O3N.js.map +7 -0
  3. package/dist/chat-5VX2WJH2.js +303 -0
  4. package/dist/chat-5VX2WJH2.js.map +7 -0
  5. package/dist/chat-SIKDYZQK.js +31 -0
  6. package/dist/chat-SIKDYZQK.js.map +7 -0
  7. package/dist/chunk-56YCMGL3.js +522 -0
  8. package/dist/chunk-56YCMGL3.js.map +7 -0
  9. package/dist/chunk-6EX6E7WP.js +7042 -0
  10. package/dist/chunk-6EX6E7WP.js.map +7 -0
  11. package/dist/chunk-B7VAF5UG.js +532 -0
  12. package/dist/chunk-B7VAF5UG.js.map +7 -0
  13. package/dist/chunk-DOIYVBNY.js +3057 -0
  14. package/dist/chunk-DOIYVBNY.js.map +7 -0
  15. package/dist/chunk-ENKEEJ45.js +17 -0
  16. package/dist/chunk-ENKEEJ45.js.map +7 -0
  17. package/dist/chunk-IBRKVGMZ.js +97041 -0
  18. package/dist/chunk-IBRKVGMZ.js.map +7 -0
  19. package/dist/chunk-LFMQJOKC.js +19778 -0
  20. package/dist/chunk-LFMQJOKC.js.map +7 -0
  21. package/dist/chunk-M347HP6M.js +22896 -0
  22. package/dist/chunk-M347HP6M.js.map +7 -0
  23. package/dist/chunk-OYQ476FQ.js +44 -0
  24. package/dist/chunk-OYQ476FQ.js.map +7 -0
  25. package/dist/chunk-PNCUR4OB.js +257 -0
  26. package/dist/chunk-PNCUR4OB.js.map +7 -0
  27. package/dist/chunk-RIG2HZWM.js +317 -0
  28. package/dist/chunk-RIG2HZWM.js.map +7 -0
  29. package/dist/chunk-SPZPZXUN.js +826 -0
  30. package/dist/chunk-SPZPZXUN.js.map +7 -0
  31. package/dist/chunk-VVSOU6ON.js +53 -0
  32. package/dist/chunk-VVSOU6ON.js.map +7 -0
  33. package/dist/chunk-X3ADGWOF.js +3643 -0
  34. package/dist/chunk-X3ADGWOF.js.map +7 -0
  35. package/dist/commands/skill/create.d.ts +3 -0
  36. package/dist/commands/skill/get.d.ts +3 -0
  37. package/dist/commands/skill/list.d.ts +3 -0
  38. package/dist/commands/skill/update.d.ts +3 -0
  39. package/dist/commands/skill/version/create.d.ts +3 -0
  40. package/dist/commands/skill/version/get.d.ts +3 -0
  41. package/dist/commands/skill/version/list.d.ts +3 -0
  42. package/dist/devtools-AO7YSDOD.js +67 -0
  43. package/dist/devtools-AO7YSDOD.js.map +7 -0
  44. package/dist/dist-4CBK6X5H.js +1566 -0
  45. package/dist/dist-4CBK6X5H.js.map +7 -0
  46. package/dist/esm-FRAVZP4J.js +13 -0
  47. package/dist/esm-FRAVZP4J.js.map +7 -0
  48. package/dist/execa-XQMWSABC.js +35 -0
  49. package/dist/execa-XQMWSABC.js.map +7 -0
  50. package/dist/index.js +8230 -263
  51. package/dist/index.js.map +7 -0
  52. package/dist/lib/api-types.d.ts +44 -0
  53. package/dist/lib/config.d.ts +9 -0
  54. package/dist/lib/errors.d.ts +1 -1
  55. package/dist/lib/output.d.ts +11 -1
  56. package/dist/lib/session-events.d.ts +1 -1
  57. package/dist/lib/session-polling.d.ts +24 -1
  58. package/dist/lib/websocket-client.d.ts +46 -0
  59. package/dist/open-RF4X5MOP.js +13 -0
  60. package/dist/open-RF4X5MOP.js.map +7 -0
  61. package/dist/server-JYVH64FD.js +27659 -0
  62. package/dist/server-JYVH64FD.js.map +7 -0
  63. package/dist/test-SNIYRJ32.js +692 -0
  64. package/dist/test-SNIYRJ32.js.map +7 -0
  65. package/docs/skills/codex-agent-dev.md +2 -2
  66. package/package.json +8 -12
  67. package/dist/commands/agent/chat.js +0 -281
  68. package/dist/commands/agent/clone.js +0 -118
  69. package/dist/commands/agent/code.js +0 -87
  70. package/dist/commands/agent/fork.js +0 -220
  71. package/dist/commands/agent/get.js +0 -37
  72. package/dist/commands/agent/grep.js +0 -107
  73. package/dist/commands/agent/init.js +0 -403
  74. package/dist/commands/agent/list.js +0 -110
  75. package/dist/commands/agent/logs.js +0 -62
  76. package/dist/commands/agent/owners.js +0 -74
  77. package/dist/commands/agent/publish.js +0 -91
  78. package/dist/commands/agent/pull.js +0 -194
  79. package/dist/commands/agent/revalidate.js +0 -56
  80. package/dist/commands/agent/save.js +0 -345
  81. package/dist/commands/agent/search.js +0 -61
  82. package/dist/commands/agent/tags/add.js +0 -73
  83. package/dist/commands/agent/tags/list.js +0 -43
  84. package/dist/commands/agent/tags/remove.js +0 -84
  85. package/dist/commands/agent/tags/set.js +0 -71
  86. package/dist/commands/agent/test.js +0 -489
  87. package/dist/commands/agent/unpublish.js +0 -64
  88. package/dist/commands/agent/update.js +0 -118
  89. package/dist/commands/agent/versions.js +0 -55
  90. package/dist/commands/agent/workspaces.js +0 -54
  91. package/dist/commands/auth/login.js +0 -31
  92. package/dist/commands/auth/logout.js +0 -24
  93. package/dist/commands/auth/status.js +0 -38
  94. package/dist/commands/auth/token.js +0 -19
  95. package/dist/commands/chat.js +0 -1416
  96. package/dist/commands/config/get.js +0 -64
  97. package/dist/commands/config/list.js +0 -46
  98. package/dist/commands/config/path.js +0 -37
  99. package/dist/commands/config/set.js +0 -132
  100. package/dist/commands/credentials/endpoint-list.js +0 -88
  101. package/dist/commands/credentials/list.js +0 -50
  102. package/dist/commands/credentials/policy-create.js +0 -66
  103. package/dist/commands/credentials/policy-delete.js +0 -33
  104. package/dist/commands/credentials/policy-list.js +0 -45
  105. package/dist/commands/credentials/policy-update.js +0 -66
  106. package/dist/commands/doctor.js +0 -233
  107. package/dist/commands/integration/connect.js +0 -76
  108. package/dist/commands/integration/create.js +0 -298
  109. package/dist/commands/integration/get.js +0 -95
  110. package/dist/commands/integration/list.js +0 -62
  111. package/dist/commands/integration/operation/create.js +0 -164
  112. package/dist/commands/integration/operation/list.js +0 -92
  113. package/dist/commands/integration/update.js +0 -139
  114. package/dist/commands/integration/version/build.js +0 -86
  115. package/dist/commands/integration/version/create.js +0 -45
  116. package/dist/commands/integration/version/get.js +0 -72
  117. package/dist/commands/integration/version/list.js +0 -45
  118. package/dist/commands/integration/version/publish.js +0 -79
  119. package/dist/commands/integration/version/test.js +0 -104
  120. package/dist/commands/job/get-step.js +0 -40
  121. package/dist/commands/job/get.js +0 -44
  122. package/dist/commands/mcp.js +0 -34
  123. package/dist/commands/session/create.js +0 -59
  124. package/dist/commands/session/events.js +0 -56
  125. package/dist/commands/session/get.js +0 -33
  126. package/dist/commands/session/interrupt.js +0 -33
  127. package/dist/commands/session/list.js +0 -59
  128. package/dist/commands/session/send.js +0 -54
  129. package/dist/commands/session/tasks.js +0 -45
  130. package/dist/commands/setup.js +0 -260
  131. package/dist/commands/trigger/activate.js +0 -41
  132. package/dist/commands/trigger/create.js +0 -197
  133. package/dist/commands/trigger/deactivate.js +0 -41
  134. package/dist/commands/trigger/get.js +0 -33
  135. package/dist/commands/trigger/list.js +0 -57
  136. package/dist/commands/trigger/sessions.js +0 -48
  137. package/dist/commands/trigger/update.js +0 -128
  138. package/dist/commands/version.js +0 -24
  139. package/dist/commands/workspace/agent/add.js +0 -114
  140. package/dist/commands/workspace/agent/list.js +0 -78
  141. package/dist/commands/workspace/agent/remove.js +0 -78
  142. package/dist/commands/workspace/clear.js +0 -45
  143. package/dist/commands/workspace/context/edit.js +0 -107
  144. package/dist/commands/workspace/context/get.js +0 -47
  145. package/dist/commands/workspace/context/list.js +0 -51
  146. package/dist/commands/workspace/context/publish.js +0 -42
  147. package/dist/commands/workspace/create.js +0 -51
  148. package/dist/commands/workspace/current.js +0 -63
  149. package/dist/commands/workspace/get.js +0 -39
  150. package/dist/commands/workspace/list.js +0 -70
  151. package/dist/commands/workspace/select.js +0 -184
  152. package/dist/components/AgentInstallPrompt.js +0 -97
  153. package/dist/components/SplashAnimation.js +0 -321
  154. package/dist/components/TaskView.js +0 -268
  155. package/dist/lib/agent-helpers.js +0 -306
  156. package/dist/lib/alternate-screen.js +0 -59
  157. package/dist/lib/api-client.js +0 -154
  158. package/dist/lib/api-types.js +0 -10
  159. package/dist/lib/auth.js +0 -284
  160. package/dist/lib/braille-canvas.js +0 -321
  161. package/dist/lib/colors.js +0 -46
  162. package/dist/lib/config-cache.js +0 -45
  163. package/dist/lib/config.js +0 -153
  164. package/dist/lib/did-you-mean.js +0 -144
  165. package/dist/lib/errors.js +0 -375
  166. package/dist/lib/event-filter.js +0 -91
  167. package/dist/lib/generated-types.js +0 -56
  168. package/dist/lib/git.js +0 -176
  169. package/dist/lib/gk.js +0 -91
  170. package/dist/lib/guild-config.js +0 -178
  171. package/dist/lib/iap.js +0 -117
  172. package/dist/lib/integration-helpers.js +0 -38
  173. package/dist/lib/loading-messages.js +0 -72
  174. package/dist/lib/logo.js +0 -141
  175. package/dist/lib/lottie-serverside.js +0 -181
  176. package/dist/lib/markdown.js +0 -38
  177. package/dist/lib/npmrc.js +0 -59
  178. package/dist/lib/output-mode.js +0 -54
  179. package/dist/lib/output.js +0 -622
  180. package/dist/lib/owner-helpers.js +0 -112
  181. package/dist/lib/polling.js +0 -76
  182. package/dist/lib/progress.js +0 -324
  183. package/dist/lib/session-events-fetch.js +0 -25
  184. package/dist/lib/session-events.js +0 -126
  185. package/dist/lib/session-polling.js +0 -166
  186. package/dist/lib/session-resume.js +0 -229
  187. package/dist/lib/spinners.js +0 -770
  188. package/dist/lib/splash.js +0 -42
  189. package/dist/lib/stdin.js +0 -91
  190. package/dist/lib/svg-to-braille.js +0 -76
  191. package/dist/lib/table.js +0 -59
  192. package/dist/lib/update-check.js +0 -65
  193. package/dist/lib/validate-input-schema.js +0 -208
  194. package/dist/lib/version-helpers.js +0 -137
  195. package/dist/lib/workspace-helpers.js +0 -49
  196. package/dist/mcp/resources.js +0 -67
  197. package/dist/mcp/server.js +0 -64
  198. package/dist/mcp/tools.js +0 -753
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/lib/api-client.ts", "../src/lib/guild-config.ts", "../src/lib/event-filter.ts"],
4
+ "sourcesContent": ["// Copyright 2026 Guild.ai\n// SPDX-License-Identifier: Apache-2.0\n\nimport axios, { AxiosInstance, AxiosRequestConfig } from 'axios';\nimport { getAuthToken, clearAuthToken } from './auth.js';\nimport {\n retry,\n debug,\n GuildCLIError,\n ErrorCodes,\n shouldClearAuthToken,\n} from './errors.js';\nimport { getUserAgent, getGuildcoreUrl } from './config.js';\nimport { getIapHeaders } from './iap.js';\nimport type { PaginatedResponse } from './api-types.js';\n\n/**\n * Options for configuring the API client\n */\nexport interface APIClientOptions {\n baseUrl?: string;\n defaultTimeout?: number;\n enableRetry?: boolean;\n maxRetries?: number;\n}\n\n/**\n * HTTP client for Guild API\n * Handles authentication, error handling, and request formatting\n */\nexport class GuildAPIClient {\n private client: AxiosInstance;\n private baseUrl: string;\n private enableRetry: boolean;\n private maxRetries: number;\n\n constructor(options: APIClientOptions = {}) {\n this.baseUrl = options.baseUrl || getGuildcoreUrl();\n this.enableRetry = options.enableRetry !== false; // Default: enabled\n this.maxRetries = options.maxRetries || 3;\n\n this.client = axios.create({\n baseURL: this.baseUrl,\n timeout: options.defaultTimeout || 30000,\n headers: {\n 'Content-Type': 'application/json',\n Accept: 'application/json',\n 'User-Agent': getUserAgent(),\n },\n });\n\n debug(\n `API Client initialized: ${this.baseUrl}, retry: ${this.enableRetry}, max retries: ${this.maxRetries}`\n );\n }\n\n /**\n * Make an HTTP request with automatic auth header injection\n * @param method - HTTP method\n * @param endpoint - API endpoint path\n * @param config - Axios request configuration\n * @returns Response data\n * @throws Error with specific error codes for proper error handling\n */\n async request<T = unknown>(\n method: string,\n endpoint: string,\n config: AxiosRequestConfig = {}\n ): Promise<T> {\n const makeRequest = async (): Promise<T> => {\n // Add IAP headers for IAP-protected hosts (*.guildai.dev)\n // Uses Proxy-Authorization header so Authorization can be used for GuildCore auth\n const iapHeaders = await getIapHeaders(this.baseUrl);\n config.headers = {\n ...config.headers,\n ...iapHeaders,\n };\n\n // Add authentication header for authenticated endpoints\n const requiresAuth =\n !endpoint.startsWith('/oauth/') && !endpoint.startsWith('/hello');\n if (requiresAuth) {\n const token = await getAuthToken();\n if (!token) {\n throw new GuildCLIError(\n ErrorCodes.AUTH_REQUIRED,\n 'Authentication required. Please run: guild auth login'\n );\n }\n config.headers = {\n ...config.headers,\n Authorization: `Bearer ${token}`,\n };\n }\n\n debug(`Making ${method} request to ${endpoint}`);\n\n try {\n const response = await this.client.request<T>({\n method,\n url: endpoint,\n ...config,\n });\n\n debug(`Request successful: ${method} ${endpoint}`);\n return response.data;\n } catch (error: unknown) {\n if (\n error &&\n typeof error === 'object' &&\n 'response' in error &&\n (error as { response?: { status?: number } }).response?.status === 401\n ) {\n const resp = (error as { response?: { data?: unknown } }).response;\n const data = resp?.data;\n const message =\n typeof data === 'object' && data && 'message' in data\n ? (data as { message: string }).message\n : undefined;\n\n if (shouldClearAuthToken(message)) {\n debug('Guild auth failure (401), clearing token');\n await clearAuthToken();\n throw new GuildCLIError(\n ErrorCodes.AUTH_TOKEN_INVALID,\n 'Your authentication token is invalid or expired. Please run: guild auth login'\n );\n }\n\n debug(`Non-auth 401: ${message ?? 'no message'}`);\n }\n throw error;\n }\n };\n\n // Use retry logic if enabled\n if (this.enableRetry) {\n return await retry(makeRequest, {\n maxAttempts: this.maxRetries,\n });\n } else {\n return await makeRequest();\n }\n }\n\n /**\n * Make a GET request\n */\n async get<T = unknown>(endpoint: string, config?: AxiosRequestConfig): Promise<T> {\n return this.request<T>('GET', endpoint, config);\n }\n\n /**\n * Make a POST request\n */\n async post<T = unknown>(\n endpoint: string,\n data?: unknown,\n config?: AxiosRequestConfig\n ): Promise<T> {\n return this.request<T>('POST', endpoint, { ...config, data });\n }\n\n /**\n * Make a PUT request\n */\n async put<T = unknown>(\n endpoint: string,\n data?: unknown,\n config?: AxiosRequestConfig\n ): Promise<T> {\n return this.request<T>('PUT', endpoint, { ...config, data });\n }\n\n /**\n * Make a PATCH request\n */\n async patch<T = unknown>(\n endpoint: string,\n data?: unknown,\n config?: AxiosRequestConfig\n ): Promise<T> {\n return this.request<T>('PATCH', endpoint, { ...config, data });\n }\n\n /**\n * Make a DELETE request\n */\n async delete<T = unknown>(endpoint: string, config?: AxiosRequestConfig): Promise<T> {\n return this.request<T>('DELETE', endpoint, config);\n }\n\n /**\n * Fetch all items from a paginated endpoint by paging through results.\n * Use for display commands or ID-based lookups where you need the complete list.\n *\n * @param endpoint - API endpoint path (may include query params)\n * @returns Flat array of all items across all pages\n */\n async fetchAll<T>(endpoint: string): Promise<T[]> {\n const PAGE_SIZE = 100;\n const allItems: T[] = [];\n let offset = 0;\n\n while (true) {\n const separator = endpoint.includes('?') ? '&' : '?';\n const url = `${endpoint}${separator}limit=${PAGE_SIZE}&offset=${offset}`;\n const response = await this.get<PaginatedResponse<T>>(url);\n\n allItems.push(...response.items);\n offset += response.pagination.limit;\n\n if (!response.pagination.has_more) break;\n }\n\n return allItems;\n }\n}\n", "// Copyright 2026 Guild.ai\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * Guild Configuration\n *\n * Unified config loading for local (guild.json) and global (~/.guild/config.json) configs.\n *\n * Priority for workspace resolution:\n * 1. Explicit --workspace flag (not handled here, handled by commands)\n * 2. GUILD_WORKSPACE_ID environment variable\n * 3. Local guild.json workspace_id (agent-specific workspace)\n * 4. Global ~/.guild/config.json default_workspace\n * 5. First workspace from API (fallback)\n */\n\nimport * as fs from 'fs/promises';\nimport * as path from 'path';\nimport * as os from 'os';\nimport { debug } from './errors.js';\n\n/**\n * Local config stored in guild.json (in agent directory)\n */\nexport interface LocalConfig {\n agent_id: string;\n name: string;\n workspace_id?: string;\n}\n\n/**\n * Global config stored in ~/.guild/config.json\n */\nexport interface GlobalConfig {\n default_workspace?: string;\n default_workspace_name?: string;\n default_owner?: string;\n default_owner_name?: string;\n debug?: boolean;\n json?: boolean;\n quiet?: boolean;\n}\n\n/**\n * Combined config from local + global sources\n */\nexport interface ResolvedConfig {\n local?: LocalConfig;\n global?: GlobalConfig;\n}\n\nconst GLOBAL_CONFIG_DIR = '.guild';\nconst GLOBAL_CONFIG_FILE = 'config.json';\nconst LOCAL_CONFIG_FILE = 'guild.json';\n\n/**\n * Get path to global config directory\n */\nexport function getGlobalConfigDir(): string {\n return path.join(os.homedir(), GLOBAL_CONFIG_DIR);\n}\n\n/**\n * Get path to global config file\n */\nexport function getGlobalConfigPath(): string {\n return path.join(getGlobalConfigDir(), GLOBAL_CONFIG_FILE);\n}\n\n/**\n * Get path to local config file in specified directory\n */\nexport function getLocalConfigPath(cwd: string = process.cwd()): string {\n return path.join(cwd, LOCAL_CONFIG_FILE);\n}\n\n/**\n * Check if a file exists\n */\nasync function fileExists(filePath: string): Promise<boolean> {\n return fs\n .access(filePath)\n .then(() => true)\n .catch(() => false);\n}\n\n/**\n * Load global config from ~/.guild/config.json\n *\n * @returns GlobalConfig or undefined if not found\n */\nexport async function loadGlobalConfig(): Promise<GlobalConfig | undefined> {\n const configPath = getGlobalConfigPath();\n\n if (!(await fileExists(configPath))) {\n debug('Global config not found at %s', configPath);\n return undefined;\n }\n\n try {\n const content = await fs.readFile(configPath, 'utf-8');\n const config = JSON.parse(content) as GlobalConfig;\n debug('Loaded global config: %O', config);\n return config;\n } catch (error) {\n debug('Failed to parse global config: %s', error);\n return undefined;\n }\n}\n\n/**\n * Load local config from guild.json in specified directory\n *\n * @param cwd Directory to look in (defaults to process.cwd())\n * @returns LocalConfig or undefined if not found\n */\nexport async function loadLocalConfig(\n cwd: string = process.cwd()\n): Promise<LocalConfig | undefined> {\n const configPath = getLocalConfigPath(cwd);\n\n if (!(await fileExists(configPath))) {\n debug('Local config not found at %s', configPath);\n return undefined;\n }\n\n try {\n const content = await fs.readFile(configPath, 'utf-8');\n const config = JSON.parse(content) as LocalConfig;\n debug('Loaded local config: %O', config);\n return config;\n } catch (error) {\n debug('Failed to parse local config: %s', error);\n return undefined;\n }\n}\n\n/**\n * Load both local and global configs\n *\n * @param cwd Directory to look for local config (defaults to process.cwd())\n * @returns ResolvedConfig with local and global configs (either may be undefined)\n */\nexport async function loadConfig(cwd: string = process.cwd()): Promise<ResolvedConfig> {\n const [local, global] = await Promise.all([loadLocalConfig(cwd), loadGlobalConfig()]);\n\n return { local, global };\n}\n\n/**\n * Save global config to ~/.guild/config.json\n *\n * @param config Config to save (merged with existing config)\n */\nexport async function saveGlobalConfig(config: Partial<GlobalConfig>): Promise<void> {\n const configDir = getGlobalConfigDir();\n const configPath = getGlobalConfigPath();\n\n // Ensure directory exists\n await fs.mkdir(configDir, { recursive: true });\n\n // Load existing config and merge\n const existing = (await loadGlobalConfig()) || {};\n const merged = { ...existing, ...config };\n\n // Write config\n await fs.writeFile(configPath, JSON.stringify(merged, null, 2) + '\\n');\n debug('Saved global config: %O', merged);\n}\n\n/**\n * Get the workspace ID to use, with proper priority.\n *\n * Priority (--workspace flag is handled by commands before calling this):\n * 1. GUILD_WORKSPACE_ID environment variable\n * 2. Local guild.json workspace_id (if in agent directory with workspace set)\n * 3. Global ~/.guild/config.json default_workspace\n * 4. undefined (caller should handle fallback)\n *\n * @param cwd Directory to look for local config\n * @returns Workspace ID and source, or undefined\n */\nexport async function getWorkspaceId(\n cwd: string = process.cwd()\n): Promise<{ workspaceId: string; source: 'env' | 'local' | 'global' } | undefined> {\n // Priority 1: Environment variable override\n if (process.env.GUILD_WORKSPACE_ID) {\n debug(\n 'Using workspace from GUILD_WORKSPACE_ID env var: %s',\n process.env.GUILD_WORKSPACE_ID\n );\n return { workspaceId: process.env.GUILD_WORKSPACE_ID, source: 'env' };\n }\n\n const config = await loadConfig(cwd);\n\n // Priority 2: Local workspace_id\n if (config.local?.workspace_id) {\n debug('Using workspace from local config: %s', config.local.workspace_id);\n return { workspaceId: config.local.workspace_id, source: 'local' };\n }\n\n // Priority 3: Global default_workspace\n if (config.global?.default_workspace) {\n debug('Using workspace from global config: %s', config.global.default_workspace);\n return { workspaceId: config.global.default_workspace, source: 'global' };\n }\n\n debug('No workspace configured in local or global config');\n return undefined;\n}\n\n/**\n * Check if we're in an agent directory (has guild.json)\n */\nexport async function isAgentDirectory(cwd: string = process.cwd()): Promise<boolean> {\n return fileExists(getLocalConfigPath(cwd));\n}\n\n/**\n * Get a human-readable label for the workspace source.\n * Returns undefined for 'env' (treated as explicit, like --workspace flag; no label needed).\n *\n * @param source - The source of workspace resolution\n * @returns Human-readable label, or undefined for env source\n *\n * @example\n * getWorkspaceSourceLabel('local') // \u2192 'guild.json'\n * getWorkspaceSourceLabel('global') // \u2192 'global config'\n * getWorkspaceSourceLabel('env') // \u2192 undefined\n */\nexport function getWorkspaceSourceLabel(\n source: 'env' | 'local' | 'global'\n): string | undefined {\n if (source === 'local') return 'guild.json';\n if (source === 'global') return 'global config';\n return undefined; // 'env' is explicit (GUILD_WORKSPACE_ID), no magic label needed\n}\n", "// Copyright 2026 Guild.ai\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * Event type filtering for the CLI `--events` flag.\n *\n * Mirrors the web UI's \"Filter by type\" modal, which groups event types into\n * two categories: user-facing events (on by default) and system/debug events\n * (off by default).\n *\n * The canonical event type list is generated from the backend EventType enum\n * (see generated-types.ts). The user/system grouping is a UI concern defined\n * here and in www/src/components/EventTypeFilters/types.ts.\n */\n\nimport type { EventType } from './generated-types.js';\n\n/**\n * User-facing event types \u2014 shown by default (mirrors web UI defaults).\n */\nexport const USER_EVENT_TYPES: readonly EventType[] = [\n 'user_message',\n 'agent_notification_message',\n 'agent_notification_progress',\n 'agent_notification_error',\n 'credentials_request',\n 'agent_install_request',\n 'trigger_message',\n 'system_error',\n];\n\n/**\n * System / debug event types \u2014 hidden by default (mirrors web UI defaults).\n */\nexport const SYSTEM_EVENT_TYPES: readonly EventType[] = [\n 'agent_console',\n 'runtime_start',\n 'runtime_running',\n 'runtime_waiting',\n 'runtime_error',\n 'runtime_done',\n 'llm_start',\n 'llm_done',\n];\n\n/**\n * Default active filter: all user-facing types, no system types.\n */\nexport const DEFAULT_EVENT_TYPES: Set<string> = new Set(USER_EVENT_TYPES);\n\n/**\n * Parse the value of the `--events` flag into a Set of event type names.\n *\n * Whatever you pass replaces the defaults entirely:\n * - `none` \u2192 empty set (no event types shown)\n * - `user` \u2192 all USER_EVENT_TYPES (same as default)\n * - `system` \u2192 only SYSTEM_EVENT_TYPES\n * - `all` \u2192 both USER_EVENT_TYPES + SYSTEM_EVENT_TYPES\n *\n * Comma-separated for fine-grained control:\n * - `agent_console,llm_start` \u2192 only those two types\n * - `user,system` \u2192 same as `all`\n */\nexport function parseEventFilter(raw: string): Set<string> {\n const tokens = raw\n .split(',')\n .map((t) => t.trim())\n .filter(Boolean);\n\n // `none` returns an empty set \u2014 no event types shown\n if (tokens.length === 1 && tokens[0] === 'none') {\n return new Set();\n }\n\n const result = new Set<string>();\n\n for (const token of tokens) {\n switch (token) {\n case 'all':\n for (const t of USER_EVENT_TYPES) result.add(t);\n for (const t of SYSTEM_EVENT_TYPES) result.add(t);\n break;\n case 'user':\n for (const t of USER_EVENT_TYPES) result.add(t);\n break;\n case 'system':\n for (const t of SYSTEM_EVENT_TYPES) result.add(t);\n break;\n default:\n result.add(token);\n }\n }\n\n return result;\n}\n\n/**\n * Check whether an event should be shown given the active filter.\n *\n * Returns `true` when the event type is in the filter set.\n *\n * Note: certain event types (e.g. `agent_notification_progress`,\n * `agent_notification_message`) drive core UI state (spinner, chat history)\n * and are always processed regardless of the filter; only their *display* is\n * gated here for new/optional event types.\n */\nexport function shouldShowEvent(type: string, filter: Set<string>): boolean {\n return filter.has(type);\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }