@a1st/aix-core 0.0.4 → 0.0.12

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 (200) hide show
  1. package/README.md +6 -6
  2. package/dist/cache/index.d.ts +1 -1
  3. package/dist/cache/index.d.ts.map +1 -1
  4. package/dist/cache/index.js +1 -1
  5. package/dist/cache/index.js.map +1 -1
  6. package/dist/cache/paths.d.ts +9 -0
  7. package/dist/cache/paths.d.ts.map +1 -1
  8. package/dist/cache/paths.js +13 -0
  9. package/dist/cache/paths.js.map +1 -1
  10. package/dist/editors/adapters/base.d.ts +5 -0
  11. package/dist/editors/adapters/base.d.ts.map +1 -1
  12. package/dist/editors/adapters/base.js +1 -1
  13. package/dist/editors/adapters/base.js.map +1 -1
  14. package/dist/editors/adapters/claude-code.d.ts +2 -1
  15. package/dist/editors/adapters/claude-code.d.ts.map +1 -1
  16. package/dist/editors/adapters/claude-code.js +11 -4
  17. package/dist/editors/adapters/claude-code.js.map +1 -1
  18. package/dist/editors/adapters/codex.d.ts +26 -7
  19. package/dist/editors/adapters/codex.d.ts.map +1 -1
  20. package/dist/editors/adapters/codex.js +89 -10
  21. package/dist/editors/adapters/codex.js.map +1 -1
  22. package/dist/editors/adapters/{vscode.d.ts → copilot.d.ts} +7 -6
  23. package/dist/editors/adapters/copilot.d.ts.map +1 -0
  24. package/dist/editors/adapters/{vscode.js → copilot.js} +19 -12
  25. package/dist/editors/adapters/copilot.js.map +1 -0
  26. package/dist/editors/adapters/cursor.d.ts +1 -0
  27. package/dist/editors/adapters/cursor.d.ts.map +1 -1
  28. package/dist/editors/adapters/cursor.js +7 -0
  29. package/dist/editors/adapters/cursor.js.map +1 -1
  30. package/dist/editors/adapters/index.d.ts +1 -1
  31. package/dist/editors/adapters/index.d.ts.map +1 -1
  32. package/dist/editors/adapters/index.js +1 -1
  33. package/dist/editors/adapters/index.js.map +1 -1
  34. package/dist/editors/adapters/windsurf.d.ts +1 -0
  35. package/dist/editors/adapters/windsurf.d.ts.map +1 -1
  36. package/dist/editors/adapters/windsurf.js +7 -0
  37. package/dist/editors/adapters/windsurf.js.map +1 -1
  38. package/dist/editors/adapters/zed.d.ts +1 -0
  39. package/dist/editors/adapters/zed.d.ts.map +1 -1
  40. package/dist/editors/adapters/zed.js +7 -0
  41. package/dist/editors/adapters/zed.js.map +1 -1
  42. package/dist/editors/import.d.ts +2 -1
  43. package/dist/editors/import.d.ts.map +1 -1
  44. package/dist/editors/import.js +43 -17
  45. package/dist/editors/import.js.map +1 -1
  46. package/dist/editors/index.d.ts +1 -1
  47. package/dist/editors/index.d.ts.map +1 -1
  48. package/dist/editors/index.js +1 -1
  49. package/dist/editors/index.js.map +1 -1
  50. package/dist/editors/install.d.ts.map +1 -1
  51. package/dist/editors/install.js +3 -38
  52. package/dist/editors/install.js.map +1 -1
  53. package/dist/editors/strategies/claude-code/hooks.d.ts.map +1 -1
  54. package/dist/editors/strategies/claude-code/hooks.js +35 -5
  55. package/dist/editors/strategies/claude-code/hooks.js.map +1 -1
  56. package/dist/editors/strategies/claude-code/mcp.d.ts +6 -2
  57. package/dist/editors/strategies/claude-code/mcp.d.ts.map +1 -1
  58. package/dist/editors/strategies/claude-code/mcp.js +40 -2
  59. package/dist/editors/strategies/claude-code/mcp.js.map +1 -1
  60. package/dist/editors/strategies/claude-code/prompts.d.ts +11 -1
  61. package/dist/editors/strategies/claude-code/prompts.d.ts.map +1 -1
  62. package/dist/editors/strategies/claude-code/prompts.js +29 -0
  63. package/dist/editors/strategies/claude-code/prompts.js.map +1 -1
  64. package/dist/editors/strategies/claude-code/rules.d.ts +12 -1
  65. package/dist/editors/strategies/claude-code/rules.d.ts.map +1 -1
  66. package/dist/editors/strategies/claude-code/rules.js +49 -5
  67. package/dist/editors/strategies/claude-code/rules.js.map +1 -1
  68. package/dist/editors/strategies/codex/index.d.ts +1 -1
  69. package/dist/editors/strategies/codex/index.d.ts.map +1 -1
  70. package/dist/editors/strategies/codex/index.js +1 -1
  71. package/dist/editors/strategies/codex/index.js.map +1 -1
  72. package/dist/editors/strategies/codex/mcp.d.ts +0 -10
  73. package/dist/editors/strategies/codex/mcp.d.ts.map +1 -1
  74. package/dist/editors/strategies/codex/mcp.js +13 -27
  75. package/dist/editors/strategies/codex/mcp.js.map +1 -1
  76. package/dist/editors/strategies/codex/prompts.d.ts +11 -1
  77. package/dist/editors/strategies/codex/prompts.d.ts.map +1 -1
  78. package/dist/editors/strategies/codex/prompts.js +34 -0
  79. package/dist/editors/strategies/codex/prompts.js.map +1 -1
  80. package/dist/editors/strategies/codex/rules.d.ts +3 -2
  81. package/dist/editors/strategies/codex/rules.d.ts.map +1 -1
  82. package/dist/editors/strategies/codex/rules.js +5 -4
  83. package/dist/editors/strategies/codex/rules.js.map +1 -1
  84. package/dist/editors/strategies/copilot/hooks.d.ts +14 -0
  85. package/dist/editors/strategies/copilot/hooks.d.ts.map +1 -0
  86. package/dist/editors/strategies/copilot/hooks.js +95 -0
  87. package/dist/editors/strategies/copilot/hooks.js.map +1 -0
  88. package/dist/editors/strategies/copilot/index.d.ts +5 -0
  89. package/dist/editors/strategies/copilot/index.d.ts.map +1 -0
  90. package/dist/editors/strategies/copilot/index.js +5 -0
  91. package/dist/editors/strategies/copilot/index.js.map +1 -0
  92. package/dist/editors/strategies/{vscode → copilot}/mcp.d.ts +2 -2
  93. package/dist/editors/strategies/copilot/mcp.d.ts.map +1 -0
  94. package/dist/editors/strategies/{vscode → copilot}/mcp.js +4 -4
  95. package/dist/editors/strategies/copilot/mcp.js.map +1 -0
  96. package/dist/editors/strategies/copilot/prompts.d.ts +28 -0
  97. package/dist/editors/strategies/copilot/prompts.d.ts.map +1 -0
  98. package/dist/editors/strategies/{vscode → copilot}/prompts.js +32 -3
  99. package/dist/editors/strategies/copilot/prompts.js.map +1 -0
  100. package/dist/editors/strategies/{vscode → copilot}/rules.d.ts +2 -2
  101. package/dist/editors/strategies/copilot/rules.d.ts.map +1 -0
  102. package/dist/editors/strategies/{vscode → copilot}/rules.js +5 -5
  103. package/dist/editors/strategies/copilot/rules.js.map +1 -0
  104. package/dist/editors/strategies/cursor/hooks.d.ts.map +1 -1
  105. package/dist/editors/strategies/cursor/hooks.js +11 -0
  106. package/dist/editors/strategies/cursor/hooks.js.map +1 -1
  107. package/dist/editors/strategies/cursor/rules.d.ts +14 -1
  108. package/dist/editors/strategies/cursor/rules.d.ts.map +1 -1
  109. package/dist/editors/strategies/cursor/rules.js +51 -5
  110. package/dist/editors/strategies/cursor/rules.js.map +1 -1
  111. package/dist/editors/strategies/index.d.ts +1 -1
  112. package/dist/editors/strategies/index.d.ts.map +1 -1
  113. package/dist/editors/strategies/index.js +1 -1
  114. package/dist/editors/strategies/index.js.map +1 -1
  115. package/dist/editors/strategies/shared/native-skills.d.ts +1 -1
  116. package/dist/editors/strategies/shared/native-skills.js +1 -1
  117. package/dist/editors/strategies/shared/no-hooks.d.ts +1 -1
  118. package/dist/editors/strategies/shared/no-hooks.js +1 -1
  119. package/dist/editors/strategies/shared/no-mcp.d.ts +1 -1
  120. package/dist/editors/strategies/shared/no-mcp.js +1 -1
  121. package/dist/editors/strategies/shared/standard-mcp.d.ts +3 -1
  122. package/dist/editors/strategies/shared/standard-mcp.d.ts.map +1 -1
  123. package/dist/editors/strategies/shared/standard-mcp.js +5 -1
  124. package/dist/editors/strategies/shared/standard-mcp.js.map +1 -1
  125. package/dist/editors/strategies/types.d.ts +48 -2
  126. package/dist/editors/strategies/types.d.ts.map +1 -1
  127. package/dist/editors/strategies/windsurf/prompts.d.ts +11 -1
  128. package/dist/editors/strategies/windsurf/prompts.d.ts.map +1 -1
  129. package/dist/editors/strategies/windsurf/prompts.js +29 -0
  130. package/dist/editors/strategies/windsurf/prompts.js.map +1 -1
  131. package/dist/editors/strategies/windsurf/rules.d.ts +14 -1
  132. package/dist/editors/strategies/windsurf/rules.d.ts.map +1 -1
  133. package/dist/editors/strategies/windsurf/rules.js +43 -5
  134. package/dist/editors/strategies/windsurf/rules.js.map +1 -1
  135. package/dist/editors/types.d.ts +6 -1
  136. package/dist/editors/types.d.ts.map +1 -1
  137. package/dist/frontmatter-parser.d.ts +24 -0
  138. package/dist/frontmatter-parser.d.ts.map +1 -0
  139. package/dist/frontmatter-parser.js +137 -0
  140. package/dist/frontmatter-parser.js.map +1 -0
  141. package/dist/frontmatter-utils.d.ts +36 -0
  142. package/dist/frontmatter-utils.d.ts.map +1 -0
  143. package/dist/frontmatter-utils.js +109 -0
  144. package/dist/frontmatter-utils.js.map +1 -0
  145. package/dist/git-download.d.ts +18 -0
  146. package/dist/git-download.d.ts.map +1 -0
  147. package/dist/git-download.js +49 -0
  148. package/dist/git-download.js.map +1 -0
  149. package/dist/global/processor.d.ts.map +1 -1
  150. package/dist/global/processor.js +27 -12
  151. package/dist/global/processor.js.map +1 -1
  152. package/dist/global/types.d.ts +2 -0
  153. package/dist/global/types.d.ts.map +1 -1
  154. package/dist/import-writer.d.ts +6 -1
  155. package/dist/import-writer.d.ts.map +1 -1
  156. package/dist/import-writer.js +8 -5
  157. package/dist/import-writer.js.map +1 -1
  158. package/dist/inheritance.d.ts +2 -0
  159. package/dist/inheritance.d.ts.map +1 -1
  160. package/dist/inheritance.js +172 -41
  161. package/dist/inheritance.js.map +1 -1
  162. package/dist/loader.d.ts.map +1 -1
  163. package/dist/loader.js +2 -1
  164. package/dist/loader.js.map +1 -1
  165. package/dist/prompts/loader.d.ts.map +1 -1
  166. package/dist/prompts/loader.js +11 -39
  167. package/dist/prompts/loader.js.map +1 -1
  168. package/dist/remote-loader.d.ts.map +1 -1
  169. package/dist/remote-loader.js +19 -44
  170. package/dist/remote-loader.js.map +1 -1
  171. package/dist/rules/loader.d.ts.map +1 -1
  172. package/dist/rules/loader.js +23 -13
  173. package/dist/rules/loader.js.map +1 -1
  174. package/dist/skills/parser.d.ts +3 -1
  175. package/dist/skills/parser.d.ts.map +1 -1
  176. package/dist/skills/parser.js +22 -10
  177. package/dist/skills/parser.js.map +1 -1
  178. package/dist/skills/validate.js +1 -1
  179. package/dist/skills/validate.js.map +1 -1
  180. package/dist/updater.d.ts.map +1 -1
  181. package/dist/updater.js +5 -12
  182. package/dist/updater.js.map +1 -1
  183. package/dist/url-parsing.d.ts +1 -7
  184. package/dist/url-parsing.d.ts.map +1 -1
  185. package/dist/url-parsing.js +2 -19
  186. package/dist/url-parsing.js.map +1 -1
  187. package/package.json +13 -6
  188. package/dist/editors/adapters/vscode.d.ts.map +0 -1
  189. package/dist/editors/adapters/vscode.js.map +0 -1
  190. package/dist/editors/strategies/vscode/index.d.ts +0 -4
  191. package/dist/editors/strategies/vscode/index.d.ts.map +0 -1
  192. package/dist/editors/strategies/vscode/index.js +0 -4
  193. package/dist/editors/strategies/vscode/index.js.map +0 -1
  194. package/dist/editors/strategies/vscode/mcp.d.ts.map +0 -1
  195. package/dist/editors/strategies/vscode/mcp.js.map +0 -1
  196. package/dist/editors/strategies/vscode/prompts.d.ts +0 -18
  197. package/dist/editors/strategies/vscode/prompts.d.ts.map +0 -1
  198. package/dist/editors/strategies/vscode/prompts.js.map +0 -1
  199. package/dist/editors/strategies/vscode/rules.d.ts.map +0 -1
  200. package/dist/editors/strategies/vscode/rules.js.map +0 -1
@@ -1,10 +1,16 @@
1
1
  import { platform } from 'node:os';
2
2
  import { StandardMcpStrategy } from '../shared/standard-mcp.js';
3
3
  /**
4
- * Claude Code MCP strategy. Uses `mcp.json` with a `mcpServers` object.
5
- * Global config path is platform-specific.
4
+ * Claude Code MCP strategy. Uses `.mcp.json` (dot-prefixed) with a `mcpServers` object. Each server
5
+ * entry includes a `type` field (`"stdio"` or `"http"`) as required by the Claude Code CLI.
6
6
  */
7
7
  export class ClaudeCodeMcpStrategy extends StandardMcpStrategy {
8
+ getConfigPath() {
9
+ return '.mcp.json';
10
+ }
11
+ isProjectRootConfig() {
12
+ return true;
13
+ }
8
14
  getGlobalMcpConfigPath() {
9
15
  const paths = {
10
16
  darwin: 'Library/Application Support/Claude/claude_desktop_config.json',
@@ -13,5 +19,37 @@ export class ClaudeCodeMcpStrategy extends StandardMcpStrategy {
13
19
  };
14
20
  return paths[platform()] ?? null;
15
21
  }
22
+ formatConfig(mcp) {
23
+ const mcpServers = {};
24
+ for (const [name, serverConfig] of Object.entries(mcp)) {
25
+ if (serverConfig.enabled === false) {
26
+ continue;
27
+ }
28
+ if ('command' in serverConfig) {
29
+ const server = {
30
+ type: 'stdio',
31
+ command: serverConfig.command,
32
+ };
33
+ if (serverConfig.args && serverConfig.args.length > 0) {
34
+ server.args = serverConfig.args;
35
+ }
36
+ if (serverConfig.env && Object.keys(serverConfig.env).length > 0) {
37
+ server.env = serverConfig.env;
38
+ }
39
+ mcpServers[name] = server;
40
+ }
41
+ else if ('url' in serverConfig) {
42
+ const server = {
43
+ type: 'http',
44
+ url: serverConfig.url,
45
+ };
46
+ if (serverConfig.headers && Object.keys(serverConfig.headers).length > 0) {
47
+ server.headers = serverConfig.headers;
48
+ }
49
+ mcpServers[name] = server;
50
+ }
51
+ }
52
+ return JSON.stringify({ mcpServers }, null, 2) + '\n';
53
+ }
16
54
  }
17
55
  //# sourceMappingURL=mcp.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../../../src/editors/strategies/claude-code/mcp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEnC,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAEhE;;;GAGG;AACH,MAAM,OAAO,qBAAsB,SAAQ,mBAAmB;IAClD,sBAAsB;QAC5B,MAAM,KAAK,GAA2B;YACnC,MAAM,EAAE,+DAA+D;YACvE,KAAK,EAAE,2CAA2C;YAClD,KAAK,EAAE,mDAAmD;SAC5D,CAAC;QAEF,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC,IAAI,IAAI,CAAC;IACpC,CAAC;CACH"}
1
+ {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../../../src/editors/strategies/claude-code/mcp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAGnC,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAEhE;;;GAGG;AACH,MAAM,OAAO,qBAAsB,SAAQ,mBAAmB;IAClD,aAAa;QACnB,OAAO,WAAW,CAAC;IACtB,CAAC;IAEQ,mBAAmB;QACzB,OAAO,IAAI,CAAC;IACf,CAAC;IAEQ,sBAAsB;QAC5B,MAAM,KAAK,GAA2B;YACnC,MAAM,EAAE,+DAA+D;YACvE,KAAK,EAAE,2CAA2C;YAClD,KAAK,EAAE,mDAAmD;SAC5D,CAAC;QAEF,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC,IAAI,IAAI,CAAC;IACpC,CAAC;IAEQ,YAAY,CAAC,GAAoC;QACvD,MAAM,UAAU,GAA4B,EAAE,CAAC;QAE/C,KAAK,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YACtD,IAAI,YAAY,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;gBAClC,SAAS;YACZ,CAAC;YAED,IAAI,SAAS,IAAI,YAAY,EAAE,CAAC;gBAC7B,MAAM,MAAM,GAA4B;oBACrC,IAAI,EAAE,OAAO;oBACb,OAAO,EAAE,YAAY,CAAC,OAAO;iBAC/B,CAAC;gBAEF,IAAI,YAAY,CAAC,IAAI,IAAI,YAAY,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACrD,MAAM,CAAC,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC;gBACnC,CAAC;gBACD,IAAI,YAAY,CAAC,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAChE,MAAM,CAAC,GAAG,GAAG,YAAY,CAAC,GAAG,CAAC;gBACjC,CAAC;gBACD,UAAU,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;YAC7B,CAAC;iBAAM,IAAI,KAAK,IAAI,YAAY,EAAE,CAAC;gBAChC,MAAM,MAAM,GAA4B;oBACrC,IAAI,EAAE,MAAM;oBACZ,GAAG,EAAE,YAAY,CAAC,GAAG;iBACvB,CAAC;gBAEF,IAAI,YAAY,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACxE,MAAM,CAAC,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC;gBACzC,CAAC;gBACD,UAAU,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;YAC7B,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;IACzD,CAAC;CACH"}
@@ -1,5 +1,5 @@
1
1
  import type { EditorPrompt } from '../../types.js';
2
- import type { PromptsStrategy } from '../types.js';
2
+ import type { ParsedPromptFrontmatter, PromptsStrategy } from '../types.js';
3
3
  /**
4
4
  * Claude Code prompts strategy. Uses markdown files with YAML frontmatter in `.claude/commands/`.
5
5
  * Supports `description` and `argument-hint` frontmatter fields.
@@ -14,5 +14,15 @@ export declare class ClaudeCodePromptsStrategy implements PromptsStrategy {
14
14
  prompts: Record<string, string>;
15
15
  warnings: string[];
16
16
  }>;
17
+ /**
18
+ * Detect if content appears to be in Claude Code's prompt frontmatter format.
19
+ * Claude Code prompts use `allowed-tools:` or `context:` fields.
20
+ */
21
+ detectFormat(content: string): boolean;
22
+ /**
23
+ * Parse Claude Code-specific frontmatter into unified format.
24
+ * Extracts `description` and `argument-hint` fields.
25
+ */
26
+ parseFrontmatter(rawContent: string): ParsedPromptFrontmatter;
17
27
  }
18
28
  //# sourceMappingURL=prompts.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../../../src/editors/strategies/claude-code/prompts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD;;;GAGG;AACH,qBAAa,yBAA0B,YAAW,eAAe;IAC9D,WAAW,IAAI,OAAO;IAItB,aAAa,IAAI,MAAM;IAIvB,gBAAgB,IAAI,MAAM;IAI1B,oBAAoB,IAAI,MAAM,GAAG,IAAI;IAKrC,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM;IAyBpC,kBAAkB,CACrB,MAAM,EAAE,MAAM,EAAE,EAChB,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,GAChD,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;CAGrE"}
1
+ {"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../../../src/editors/strategies/claude-code/prompts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,KAAK,EAAE,uBAAuB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAG5E;;;GAGG;AACH,qBAAa,yBAA0B,YAAW,eAAe;IAC9D,WAAW,IAAI,OAAO;IAItB,aAAa,IAAI,MAAM;IAIvB,gBAAgB,IAAI,MAAM;IAI1B,oBAAoB,IAAI,MAAM,GAAG,IAAI;IAKrC,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM;IAyBpC,kBAAkB,CACrB,MAAM,EAAE,MAAM,EAAE,EAChB,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,GAChD,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAInE;;;OAGG;IACH,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IActC;;;OAGG;IACH,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,uBAAuB;CAiB/D"}
@@ -1,3 +1,4 @@
1
+ import { extractFrontmatter, parseYamlValue } from '../../../frontmatter-utils.js';
1
2
  /**
2
3
  * Claude Code prompts strategy. Uses markdown files with YAML frontmatter in `.claude/commands/`.
3
4
  * Supports `description` and `argument-hint` frontmatter fields.
@@ -38,5 +39,33 @@ export class ClaudeCodePromptsStrategy {
38
39
  async parseGlobalPrompts(_files, _readFile) {
39
40
  return { prompts: {}, warnings: [] };
40
41
  }
42
+ /**
43
+ * Detect if content appears to be in Claude Code's prompt frontmatter format.
44
+ * Claude Code prompts use `allowed-tools:` or `context:` fields.
45
+ */
46
+ detectFormat(content) {
47
+ const { frontmatter, hasFrontmatter } = extractFrontmatter(content);
48
+ if (!hasFrontmatter) {
49
+ return false;
50
+ }
51
+ const lines = frontmatter.split('\n'), hasAllowedTools = parseYamlValue(lines, 'allowed-tools') !== undefined, hasContext = parseYamlValue(lines, 'context') !== undefined;
52
+ return hasAllowedTools || hasContext;
53
+ }
54
+ /**
55
+ * Parse Claude Code-specific frontmatter into unified format.
56
+ * Extracts `description` and `argument-hint` fields.
57
+ */
58
+ parseFrontmatter(rawContent) {
59
+ const { frontmatter, content, hasFrontmatter } = extractFrontmatter(rawContent);
60
+ if (!hasFrontmatter) {
61
+ return { content: rawContent };
62
+ }
63
+ const lines = frontmatter.split('\n'), description = parseYamlValue(lines, 'description'), argumentHint = parseYamlValue(lines, 'argument-hint');
64
+ return {
65
+ content,
66
+ description,
67
+ argumentHint,
68
+ };
69
+ }
41
70
  }
42
71
  //# sourceMappingURL=prompts.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../../../src/editors/strategies/claude-code/prompts.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,MAAM,OAAO,yBAAyB;IACnC,WAAW;QACR,OAAO,IAAI,CAAC;IACf,CAAC;IAED,aAAa;QACV,OAAO,UAAU,CAAC;IACrB,CAAC;IAED,gBAAgB;QACb,OAAO,KAAK,CAAC;IAChB,CAAC;IAED,oBAAoB;QACjB,0CAA0C;QAC1C,OAAO,IAAI,CAAC;IACf,CAAC;IAED,YAAY,CAAC,MAAoB;QAC9B,MAAM,WAAW,GAA2B,EAAE,CAAC;QAE/C,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;YACtB,WAAW,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;QAChD,CAAC;QAED,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;YACvB,WAAW,CAAC,eAAe,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC;QACtD,CAAC;QAED,MAAM,KAAK,GAAa,EAAE,CAAC;QAE3B,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAClB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;gBACtD,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,KAAK,KAAK,EAAE,CAAC,CAAC;YAClC,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACzB,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC3B,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,kBAAkB,CACrB,MAAgB,EAChB,SAAgD;QAEhD,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IACxC,CAAC;CACH"}
1
+ {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../../../src/editors/strategies/claude-code/prompts.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAEnF;;;GAGG;AACH,MAAM,OAAO,yBAAyB;IACnC,WAAW;QACR,OAAO,IAAI,CAAC;IACf,CAAC;IAED,aAAa;QACV,OAAO,UAAU,CAAC;IACrB,CAAC;IAED,gBAAgB;QACb,OAAO,KAAK,CAAC;IAChB,CAAC;IAED,oBAAoB;QACjB,0CAA0C;QAC1C,OAAO,IAAI,CAAC;IACf,CAAC;IAED,YAAY,CAAC,MAAoB;QAC9B,MAAM,WAAW,GAA2B,EAAE,CAAC;QAE/C,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;YACtB,WAAW,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;QAChD,CAAC;QAED,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;YACvB,WAAW,CAAC,eAAe,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC;QACtD,CAAC;QAED,MAAM,KAAK,GAAa,EAAE,CAAC;QAE3B,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAClB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;gBACtD,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,KAAK,KAAK,EAAE,CAAC,CAAC;YAClC,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACzB,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC3B,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,kBAAkB,CACrB,MAAgB,EAChB,SAAgD;QAEhD,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IACxC,CAAC;IAED;;;OAGG;IACH,YAAY,CAAC,OAAe;QACzB,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;QAEpE,IAAI,CAAC,cAAc,EAAE,CAAC;YACnB,OAAO,KAAK,CAAC;QAChB,CAAC;QAED,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,EAC/B,eAAe,GAAG,cAAc,CAAC,KAAK,EAAE,eAAe,CAAC,KAAK,SAAS,EACtE,UAAU,GAAG,cAAc,CAAC,KAAK,EAAE,SAAS,CAAC,KAAK,SAAS,CAAC;QAElE,OAAO,eAAe,IAAI,UAAU,CAAC;IACxC,CAAC;IAED;;;OAGG;IACH,gBAAgB,CAAC,UAAkB;QAChC,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC;QAEhF,IAAI,CAAC,cAAc,EAAE,CAAC;YACnB,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;QAClC,CAAC;QAED,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,EAC/B,WAAW,GAAG,cAAc,CAAC,KAAK,EAAE,aAAa,CAAuB,EACxE,YAAY,GAAG,cAAc,CAAC,KAAK,EAAE,eAAe,CAAuB,CAAC;QAElF,OAAO;YACJ,OAAO;YACP,WAAW;YACX,YAAY;SACd,CAAC;IACL,CAAC;CACH"}
@@ -1,4 +1,4 @@
1
- import type { RulesStrategy } from '../types.js';
1
+ import type { ParsedRuleFrontmatter, RulesStrategy } from '../types.js';
2
2
  import type { EditorRule } from '../../types.js';
3
3
  /**
4
4
  * Claude Code rules strategy. Uses markdown files with optional YAML frontmatter. Only adds
@@ -13,5 +13,16 @@ export declare class ClaudeCodeRulesStrategy implements RulesStrategy {
13
13
  warnings: string[];
14
14
  };
15
15
  formatRule(rule: EditorRule): string;
16
+ /**
17
+ * Detect if content appears to be in Claude Code's frontmatter format.
18
+ * Claude Code uses `paths:` field in frontmatter for rules.
19
+ */
20
+ detectFormat(content: string): boolean;
21
+ /**
22
+ * Parse Claude Code-specific frontmatter into unified format.
23
+ * - `paths:` array → `globs[]`, `activation: 'glob'`
24
+ * - No paths → `activation: 'always'`
25
+ */
26
+ parseFrontmatter(rawContent: string): ParsedRuleFrontmatter;
16
27
  }
17
28
  //# sourceMappingURL=rules.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"rules.d.ts","sourceRoot":"","sources":["../../../../src/editors/strategies/claude-code/rules.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEjD;;;GAGG;AACH,qBAAa,uBAAwB,YAAW,aAAa;IAC1D,WAAW,IAAI,MAAM;IAIrB,gBAAgB,IAAI,MAAM;IAI1B,kBAAkB,IAAI,MAAM,GAAG,IAAI;IAInC,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG;QAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;KAAE;IAS1E,UAAU,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM;CA2CtC"}
1
+ {"version":3,"file":"rules.d.ts","sourceRoot":"","sources":["../../../../src/editors/strategies/claude-code/rules.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAGjD;;;GAGG;AACH,qBAAa,uBAAwB,YAAW,aAAa;IAC1D,WAAW,IAAI,MAAM;IAIrB,gBAAgB,IAAI,MAAM;IAI1B,kBAAkB,IAAI,MAAM,GAAG,IAAI;IAInC,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG;QAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;KAAE;IAS1E,UAAU,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM;IAqCpC;;;OAGG;IACH,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAYtC;;;;OAIG;IACH,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,qBAAqB;CAsC7D"}
@@ -1,3 +1,4 @@
1
+ import { extractFrontmatter, parseYamlValue } from '../../../frontmatter-utils.js';
1
2
  /**
2
3
  * Claude Code rules strategy. Uses markdown files with optional YAML frontmatter. Only adds
3
4
  * frontmatter when there are paths (globs) or description to specify.
@@ -49,13 +50,56 @@ export class ClaudeCodeRulesStrategy {
49
50
  }
50
51
  lines.push('---', '');
51
52
  }
52
- // Include rule name as heading for context, but only if content doesn't already start with one
53
- const contentStartsWithHeading = /^#\s/.test(rule.content.trim());
54
- if (rule.name && !contentStartsWithHeading) {
55
- lines.push(`# ${rule.name}`, '');
56
- }
57
53
  lines.push(rule.content);
58
54
  return lines.join('\n');
59
55
  }
56
+ /**
57
+ * Detect if content appears to be in Claude Code's frontmatter format.
58
+ * Claude Code uses `paths:` field in frontmatter for rules.
59
+ */
60
+ detectFormat(content) {
61
+ const { frontmatter, hasFrontmatter } = extractFrontmatter(content);
62
+ if (!hasFrontmatter) {
63
+ return false;
64
+ }
65
+ const lines = frontmatter.split('\n');
66
+ return parseYamlValue(lines, 'paths') !== undefined;
67
+ }
68
+ /**
69
+ * Parse Claude Code-specific frontmatter into unified format.
70
+ * - `paths:` array → `globs[]`, `activation: 'glob'`
71
+ * - No paths → `activation: 'always'`
72
+ */
73
+ parseFrontmatter(rawContent) {
74
+ const { frontmatter, content, hasFrontmatter } = extractFrontmatter(rawContent);
75
+ if (!hasFrontmatter) {
76
+ return { content: rawContent, metadata: {} };
77
+ }
78
+ const lines = frontmatter.split('\n'), description = parseYamlValue(lines, 'description'), paths = parseYamlValue(lines, 'paths');
79
+ // Parse paths (can be array or comma-separated string)
80
+ let globsArray;
81
+ if (Array.isArray(paths)) {
82
+ globsArray = paths;
83
+ }
84
+ else if (typeof paths === 'string') {
85
+ globsArray = paths.split(',').map((g) => g.trim());
86
+ }
87
+ // Determine activation mode
88
+ let activation;
89
+ if (globsArray && globsArray.length > 0) {
90
+ activation = 'glob';
91
+ }
92
+ else {
93
+ activation = 'always';
94
+ }
95
+ return {
96
+ content,
97
+ metadata: {
98
+ activation,
99
+ description,
100
+ globs: globsArray,
101
+ },
102
+ };
103
+ }
60
104
  }
61
105
  //# sourceMappingURL=rules.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"rules.js","sourceRoot":"","sources":["../../../../src/editors/strategies/claude-code/rules.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,MAAM,OAAO,uBAAuB;IACjC,WAAW;QACR,OAAO,OAAO,CAAC;IAClB,CAAC;IAED,gBAAgB;QACb,OAAO,KAAK,CAAC;IAChB,CAAC;IAED,kBAAkB;QACf,OAAO,mBAAmB,CAAC;IAC9B,CAAC;IAED,gBAAgB,CAAC,OAAe;QAC7B,MAAM,KAAK,GAAa,EAAE,CAAC;QAE3B,IAAI,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;YAClB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QAC9B,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IAClC,CAAC;IAED,UAAU,CAAC,IAAgB;QACxB,MAAM,WAAW,GAA4B,EAAE,CAAC;QAEhD,6BAA6B;QAC7B,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC;YAC/B,WAAW,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;QACzD,CAAC;QAED,qCAAqC;QACrC,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;YACpE,WAAW,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;QAC7C,CAAC;QAED,4DAA4D;QAC5D,MAAM,KAAK,GAAa,EAAE,CAAC;QAE3B,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAClB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;gBACtD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;oBACxB,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;oBACtB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;wBACxB,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;oBAC7B,CAAC;gBACJ,CAAC;qBAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;oBACpC,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,MAAM,KAAK,GAAG,CAAC,CAAC;gBACpC,CAAC;qBAAM,CAAC;oBACL,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,KAAK,KAAK,EAAE,CAAC,CAAC;gBAClC,CAAC;YACJ,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACzB,CAAC;QAED,+FAA+F;QAC/F,MAAM,wBAAwB,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QAElE,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,wBAAwB,EAAE,CAAC;YAC1C,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QACpC,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACzB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;CACH"}
1
+ {"version":3,"file":"rules.js","sourceRoot":"","sources":["../../../../src/editors/strategies/claude-code/rules.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
1
  export { CodexRulesStrategy } from './rules.js';
2
2
  export { CodexPromptsStrategy } from './prompts.js';
3
- export { CodexMcpStrategy, parseCodexMcp } from './mcp.js';
3
+ export { CodexMcpStrategy } from './mcp.js';
4
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/editors/strategies/codex/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/editors/strategies/codex/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC"}
@@ -1,4 +1,4 @@
1
1
  export { CodexRulesStrategy } from './rules.js';
2
2
  export { CodexPromptsStrategy } from './prompts.js';
3
- export { CodexMcpStrategy, parseCodexMcp } from './mcp.js';
3
+ export { CodexMcpStrategy } from './mcp.js';
4
4
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/editors/strategies/codex/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/editors/strategies/codex/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC"}
@@ -1,18 +1,8 @@
1
- import type { McpServerConfig } from '@a1st/aix-schema';
2
1
  import { GlobalMcpStrategy } from '../shared/global-mcp.js';
3
- /**
4
- * Parse Codex's config.toml format for MCP servers.
5
- * Uses confbox for TOML parsing. Outputs shorthand config without defaults.
6
- */
7
- declare function parseCodexMcp(content: string): Promise<{
8
- mcp: Record<string, McpServerConfig>;
9
- warnings: string[];
10
- }>;
11
2
  /**
12
3
  * Codex MCP strategy. Uses global-only config at ~/.codex/config.toml.
13
4
  */
14
5
  export declare class CodexMcpStrategy extends GlobalMcpStrategy {
15
6
  constructor();
16
7
  }
17
- export { parseCodexMcp };
18
8
  //# sourceMappingURL=mcp.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../../../src/editors/strategies/codex/mcp.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAuC5D;;;GAGG;AACH,iBAAe,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;IACpD,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IACrC,QAAQ,EAAE,MAAM,EAAE,CAAC;CACrB,CAAC,CAsCD;AAgBD;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,iBAAiB;;CAUtD;AAED,OAAO,EAAE,aAAa,EAAE,CAAC"}
1
+ {"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../../../src/editors/strategies/codex/mcp.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAgF5D;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,iBAAiB;;CAUtD"}
@@ -1,43 +1,40 @@
1
+ import { parseTOML, stringifyTOML } from 'confbox';
1
2
  import { GlobalMcpStrategy } from '../shared/global-mcp.js';
2
3
  /**
3
4
  * Format MCP config for Codex's config.toml format.
4
5
  * Codex uses TOML with [mcp_servers.name] sections.
5
6
  */
6
7
  function formatCodexMcp(mcp) {
7
- const lines = [];
8
+ const mcpServers = {};
8
9
  for (const [name, serverConfig] of Object.entries(mcp)) {
9
10
  if (serverConfig.enabled === false) {
10
11
  continue;
11
12
  }
12
- lines.push(`[mcp_servers.${name}]`);
13
+ const server = {};
13
14
  if ('command' in serverConfig) {
14
- lines.push(`command = "${serverConfig.command}"`);
15
+ server.command = serverConfig.command;
15
16
  if (serverConfig.args && serverConfig.args.length > 0) {
16
- const argsStr = serverConfig.args.map((a) => `"${a}"`).join(', ');
17
- lines.push(`args = [${argsStr}]`);
17
+ server.args = serverConfig.args;
18
18
  }
19
19
  if (serverConfig.env && Object.keys(serverConfig.env).length > 0) {
20
- lines.push('[mcp_servers.' + name + '.env]');
21
- for (const [key, value] of Object.entries(serverConfig.env)) {
22
- lines.push(`${key} = "${value}"`);
23
- }
20
+ server.env = serverConfig.env;
24
21
  }
25
22
  }
26
23
  else if ('url' in serverConfig) {
27
- lines.push(`url = "${serverConfig.url}"`);
24
+ server.url = serverConfig.url;
28
25
  }
29
- lines.push('');
26
+ mcpServers[name] = server;
30
27
  }
31
- return lines.join('\n');
28
+ return stringifyTOML({ mcp_servers: mcpServers });
32
29
  }
33
30
  /**
34
31
  * Parse Codex's config.toml format for MCP servers.
35
- * Uses confbox for TOML parsing. Outputs shorthand config without defaults.
32
+ * Outputs shorthand config without defaults.
36
33
  */
37
- async function parseCodexMcp(content) {
34
+ function parseCodexMcp(content) {
38
35
  const mcp = {}, warnings = [];
39
36
  try {
40
- const { parseTOML } = await import('confbox'), config = parseTOML(content), servers = config.mcp_servers ?? {};
37
+ const config = parseTOML(content), servers = config.mcp_servers ?? {};
41
38
  for (const [name, server] of Object.entries(servers)) {
42
39
  const s = server;
43
40
  if (s.command) {
@@ -65,16 +62,6 @@ async function parseCodexMcp(content) {
65
62
  }
66
63
  return { mcp, warnings };
67
64
  }
68
- /**
69
- * Synchronous wrapper for parseCodexMcp that returns empty on parse failure.
70
- * Used for the McpStrategy interface which expects sync parsing.
71
- */
72
- function parseCodexMcpSync(_content) {
73
- return {
74
- mcp: {},
75
- warnings: ['Codex TOML parsing requires async - use parseCodexMcp instead'],
76
- };
77
- }
78
65
  /**
79
66
  * Codex MCP strategy. Uses global-only config at ~/.codex/config.toml.
80
67
  */
@@ -85,9 +72,8 @@ export class CodexMcpStrategy extends GlobalMcpStrategy {
85
72
  globalConfigPath: '.codex/config.toml',
86
73
  format: 'toml',
87
74
  formatFn: formatCodexMcp,
88
- parseFn: parseCodexMcpSync,
75
+ parseFn: parseCodexMcp,
89
76
  });
90
77
  }
91
78
  }
92
- export { parseCodexMcp };
93
79
  //# sourceMappingURL=mcp.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../../../src/editors/strategies/codex/mcp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../../../src/editors/strategies/codex/mcp.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import type { EditorPrompt } from '../../types.js';
2
- import type { PromptsStrategy } from '../types.js';
2
+ import type { ParsedPromptFrontmatter, PromptsStrategy } from '../types.js';
3
3
  /**
4
4
  * Codex prompts strategy. Codex prompts are global-only (`~/.codex/prompts/`).
5
5
  * The install flow handles global config management with user confirmation.
@@ -33,5 +33,15 @@ export declare class CodexPromptsStrategy implements PromptsStrategy {
33
33
  prompts: Record<string, string>;
34
34
  warnings: string[];
35
35
  }>;
36
+ /**
37
+ * Detect if content appears to be in Codex's prompt frontmatter format.
38
+ * Codex prompts use `description:` and optionally `argument-hint:` fields (similar to GitHub Copilot).
39
+ */
40
+ detectFormat(content: string): boolean;
41
+ /**
42
+ * Parse Codex-specific frontmatter into unified format.
43
+ * Extracts `description` and `argument-hint` fields.
44
+ */
45
+ parseFrontmatter(rawContent: string): ParsedPromptFrontmatter;
36
46
  }
37
47
  //# sourceMappingURL=prompts.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../../../src/editors/strategies/codex/prompts.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD;;;GAGG;AACH,qBAAa,oBAAqB,YAAW,eAAe;IACzD;;OAEG;IACH,WAAW,IAAI,OAAO;IAItB;;OAEG;IACH,YAAY,IAAI,OAAO;IAIvB,aAAa,IAAI,MAAM;IAIvB,gBAAgB,IAAI,MAAM;IAI1B,oBAAoB,IAAI,MAAM;IAI9B;;OAEG;IACH,qBAAqB,IAAI,MAAM;IAI/B;;OAEG;IACG,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAMlD;;OAEG;IACG,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IActD,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM;IAyBpC,kBAAkB,CACrB,MAAM,EAAE,MAAM,EAAE,EAChB,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,GAChD,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;CAGrE"}
1
+ {"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../../../src/editors/strategies/codex/prompts.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,KAAK,EAAE,uBAAuB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAG5E;;;GAGG;AACH,qBAAa,oBAAqB,YAAW,eAAe;IACzD;;OAEG;IACH,WAAW,IAAI,OAAO;IAItB;;OAEG;IACH,YAAY,IAAI,OAAO;IAIvB,aAAa,IAAI,MAAM;IAIvB,gBAAgB,IAAI,MAAM;IAI1B,oBAAoB,IAAI,MAAM;IAI9B;;OAEG;IACH,qBAAqB,IAAI,MAAM;IAI/B;;OAEG;IACG,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAMlD;;OAEG;IACG,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IActD,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM;IAyBpC,kBAAkB,CACrB,MAAM,EAAE,MAAM,EAAE,EAChB,SAAS,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,GAChD,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAInE;;;OAGG;IACH,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAiBtC;;;OAGG;IACH,gBAAgB,CAAC,UAAU,EAAE,MAAM,GAAG,uBAAuB;CAiB/D"}
@@ -2,6 +2,7 @@ import { readFile } from 'node:fs/promises';
2
2
  import { existsSync } from 'node:fs';
3
3
  import { homedir } from 'node:os';
4
4
  import { join } from 'pathe';
5
+ import { extractFrontmatter, parseYamlValue } from '../../../frontmatter-utils.js';
5
6
  /**
6
7
  * Codex prompts strategy. Codex prompts are global-only (`~/.codex/prompts/`).
7
8
  * The install flow handles global config management with user confirmation.
@@ -78,5 +79,38 @@ export class CodexPromptsStrategy {
78
79
  async parseGlobalPrompts(_files, _readFile) {
79
80
  return { prompts: {}, warnings: [] };
80
81
  }
82
+ /**
83
+ * Detect if content appears to be in Codex's prompt frontmatter format.
84
+ * Codex prompts use `description:` and optionally `argument-hint:` fields (similar to GitHub Copilot).
85
+ */
86
+ detectFormat(content) {
87
+ const { frontmatter, hasFrontmatter } = extractFrontmatter(content);
88
+ if (!hasFrontmatter) {
89
+ return false;
90
+ }
91
+ const lines = frontmatter.split('\n');
92
+ // Codex uses description/argument-hint but NOT mode/tools (GitHub Copilot) or allowed-tools (Claude)
93
+ return parseYamlValue(lines, 'description') !== undefined
94
+ && parseYamlValue(lines, 'mode') === undefined
95
+ && parseYamlValue(lines, 'tools') === undefined
96
+ && parseYamlValue(lines, 'allowed-tools') === undefined
97
+ && parseYamlValue(lines, 'context') === undefined;
98
+ }
99
+ /**
100
+ * Parse Codex-specific frontmatter into unified format.
101
+ * Extracts `description` and `argument-hint` fields.
102
+ */
103
+ parseFrontmatter(rawContent) {
104
+ const { frontmatter, content, hasFrontmatter } = extractFrontmatter(rawContent);
105
+ if (!hasFrontmatter) {
106
+ return { content: rawContent };
107
+ }
108
+ const lines = frontmatter.split('\n'), description = parseYamlValue(lines, 'description'), argumentHint = parseYamlValue(lines, 'argument-hint');
109
+ return {
110
+ content,
111
+ description,
112
+ argumentHint,
113
+ };
114
+ }
81
115
  }
82
116
  //# sourceMappingURL=prompts.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../../../src/editors/strategies/codex/prompts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAI7B;;;GAGG;AACH,MAAM,OAAO,oBAAoB;IAC9B;;OAEG;IACH,WAAW;QACR,OAAO,IAAI,CAAC;IACf,CAAC;IAED;;OAEG;IACH,YAAY;QACT,OAAO,IAAI,CAAC;IACf,CAAC;IAED,aAAa;QACV,OAAO,EAAE,CAAC;IACb,CAAC;IAED,gBAAgB;QACb,OAAO,KAAK,CAAC;IAChB,CAAC;IAED,oBAAoB;QACjB,OAAO,gBAAgB,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,qBAAqB;QAClB,OAAO,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC;IACvD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAAC,IAAY;QAC5B,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE,GAAG,IAAI,KAAK,CAAC,CAAC;QAEpE,OAAO,UAAU,CAAC,UAAU,CAAC,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CAAC,IAAY;QAC1B,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE,GAAG,IAAI,KAAK,CAAC,CAAC;QAEpE,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAC;QACf,CAAC;QAED,IAAI,CAAC;YACF,OAAO,MAAM,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;QAC9C,CAAC;QAAC,MAAM,CAAC;YACN,OAAO,IAAI,CAAC;QACf,CAAC;IACJ,CAAC;IAED,YAAY,CAAC,MAAoB;QAC9B,MAAM,WAAW,GAA2B,EAAE,CAAC;QAE/C,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;YACtB,WAAW,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;QAChD,CAAC;QAED,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;YACvB,WAAW,CAAC,eAAe,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC;QACtD,CAAC;QAED,MAAM,KAAK,GAAa,EAAE,CAAC;QAE3B,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAClB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;gBACtD,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,KAAK,KAAK,EAAE,CAAC,CAAC;YAClC,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACzB,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC3B,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,kBAAkB,CACrB,MAAgB,EAChB,SAAgD;QAEhD,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IACxC,CAAC;CACH"}
1
+ {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../../../src/editors/strategies/codex/prompts.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,9 @@
1
1
  import type { RulesStrategy } from '../types.js';
2
2
  import type { EditorRule } from '../../types.js';
3
3
  /**
4
- * Codex CLI rules strategy. Uses a single `AGENTS.md` file at the repo root (plain markdown, no
5
- * frontmatter). All rules are concatenated into this single file.
4
+ * Codex CLI rules strategy. Uses `AGENTS.md` files at the project root (and optionally in
5
+ * subdirectories for glob-scoped rules). Plain markdown, no frontmatter. The adapter handles
6
+ * bucketing rules into per-directory files.
6
7
  */
7
8
  export declare class CodexRulesStrategy implements RulesStrategy {
8
9
  getRulesDir(): string;
@@ -1 +1 @@
1
- {"version":3,"file":"rules.d.ts","sourceRoot":"","sources":["../../../../src/editors/strategies/codex/rules.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEjD;;;GAGG;AACH,qBAAa,kBAAmB,YAAW,aAAa;IACrD,WAAW,IAAI,MAAM;IAKrB,gBAAgB,IAAI,MAAM;IAI1B,kBAAkB,IAAI,MAAM,GAAG,IAAI;IAInC,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG;QAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;KAAE;IAS1E,UAAU,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM;CActC"}
1
+ {"version":3,"file":"rules.d.ts","sourceRoot":"","sources":["../../../../src/editors/strategies/codex/rules.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACjD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAEjD;;;;GAIG;AACH,qBAAa,kBAAmB,YAAW,aAAa;IACrD,WAAW,IAAI,MAAM;IAKrB,gBAAgB,IAAI,MAAM;IAI1B,kBAAkB,IAAI,MAAM,GAAG,IAAI;IAInC,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG;QAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;KAAE;IAS1E,UAAU,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM;CActC"}
@@ -1,11 +1,12 @@
1
1
  /**
2
- * Codex CLI rules strategy. Uses a single `AGENTS.md` file at the repo root (plain markdown, no
3
- * frontmatter). All rules are concatenated into this single file.
2
+ * Codex CLI rules strategy. Uses `AGENTS.md` files at the project root (and optionally in
3
+ * subdirectories for glob-scoped rules). Plain markdown, no frontmatter. The adapter handles
4
+ * bucketing rules into per-directory files.
4
5
  */
5
6
  export class CodexRulesStrategy {
6
7
  getRulesDir() {
7
- // Codex uses AGENTS.md at the config dir root, not a subdirectory
8
- return '';
8
+ // Codex uses AGENTS.md at the project root, one level above the .codex config dir
9
+ return '..';
9
10
  }
10
11
  getFileExtension() {
11
12
  return '.md';
@@ -1 +1 @@
1
- {"version":3,"file":"rules.js","sourceRoot":"","sources":["../../../../src/editors/strategies/codex/rules.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,MAAM,OAAO,kBAAkB;IAC5B,WAAW;QACR,kEAAkE;QAClE,OAAO,EAAE,CAAC;IACb,CAAC;IAED,gBAAgB;QACb,OAAO,KAAK,CAAC;IAChB,CAAC;IAED,kBAAkB;QACf,OAAO,kBAAkB,CAAC;IAC7B,CAAC;IAED,gBAAgB,CAAC,OAAe;QAC7B,MAAM,KAAK,GAAa,EAAE,CAAC;QAE3B,IAAI,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;YAClB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QAC9B,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IAClC,CAAC;IAED,UAAU,CAAC,IAAgB;QACxB,MAAM,KAAK,GAAa,EAAE,CAAC;QAE3B,gDAAgD;QAChD,+FAA+F;QAC/F,MAAM,wBAAwB,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QAElE,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,wBAAwB,EAAE,CAAC;YAC1C,KAAK,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QACrC,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACzB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;CACH"}
1
+ {"version":3,"file":"rules.js","sourceRoot":"","sources":["../../../../src/editors/strategies/codex/rules.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,MAAM,OAAO,kBAAkB;IAC5B,WAAW;QACR,kFAAkF;QAClF,OAAO,IAAI,CAAC;IACf,CAAC;IAED,gBAAgB;QACb,OAAO,KAAK,CAAC;IAChB,CAAC;IAED,kBAAkB;QACf,OAAO,kBAAkB,CAAC;IAC7B,CAAC;IAED,gBAAgB,CAAC,OAAe;QAC7B,MAAM,KAAK,GAAa,EAAE,CAAC;QAE3B,IAAI,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;YAClB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QAC9B,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IAClC,CAAC;IAED,UAAU,CAAC,IAAgB;QACxB,MAAM,KAAK,GAAa,EAAE,CAAC;QAE3B,gDAAgD;QAChD,+FAA+F;QAC/F,MAAM,wBAAwB,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QAElE,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,wBAAwB,EAAE,CAAC;YAC1C,KAAK,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;QACrC,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACzB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;CACH"}
@@ -0,0 +1,14 @@
1
+ import type { HooksConfig } from '@a1st/aix-schema';
2
+ import type { HooksStrategy } from '../types.js';
3
+ /**
4
+ * GitHub Copilot hooks strategy. Writes hooks to `.github/hooks/hooks.json`.
5
+ * Translates generic ai.json event names to GitHub Copilot's PascalCase format.
6
+ * Uses the same matcher-based structure as Claude Code hooks.
7
+ */
8
+ export declare class CopilotHooksStrategy implements HooksStrategy {
9
+ isSupported(): boolean;
10
+ getConfigPath(): string;
11
+ getUnsupportedEvents(hooks: HooksConfig): string[];
12
+ formatConfig(hooks: HooksConfig): string;
13
+ }
14
+ //# sourceMappingURL=hooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../../../src/editors/strategies/copilot/hooks.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAe,MAAM,kBAAkB,CAAC;AACjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AA2DjD;;;;GAIG;AACH,qBAAa,oBAAqB,YAAW,aAAa;IACvD,WAAW,IAAI,OAAO;IAItB,aAAa,IAAI,MAAM;IAKvB,oBAAoB,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM,EAAE;IAIlD,YAAY,CAAC,KAAK,EAAE,WAAW,GAAG,MAAM;CA4B1C"}