@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.
- package/README.md +6 -6
- package/dist/cache/index.d.ts +1 -1
- package/dist/cache/index.d.ts.map +1 -1
- package/dist/cache/index.js +1 -1
- package/dist/cache/index.js.map +1 -1
- package/dist/cache/paths.d.ts +9 -0
- package/dist/cache/paths.d.ts.map +1 -1
- package/dist/cache/paths.js +13 -0
- package/dist/cache/paths.js.map +1 -1
- package/dist/editors/adapters/base.d.ts +5 -0
- package/dist/editors/adapters/base.d.ts.map +1 -1
- package/dist/editors/adapters/base.js +1 -1
- package/dist/editors/adapters/base.js.map +1 -1
- package/dist/editors/adapters/claude-code.d.ts +2 -1
- package/dist/editors/adapters/claude-code.d.ts.map +1 -1
- package/dist/editors/adapters/claude-code.js +11 -4
- package/dist/editors/adapters/claude-code.js.map +1 -1
- package/dist/editors/adapters/codex.d.ts +26 -7
- package/dist/editors/adapters/codex.d.ts.map +1 -1
- package/dist/editors/adapters/codex.js +89 -10
- package/dist/editors/adapters/codex.js.map +1 -1
- package/dist/editors/adapters/{vscode.d.ts → copilot.d.ts} +7 -6
- package/dist/editors/adapters/copilot.d.ts.map +1 -0
- package/dist/editors/adapters/{vscode.js → copilot.js} +19 -12
- package/dist/editors/adapters/copilot.js.map +1 -0
- package/dist/editors/adapters/cursor.d.ts +1 -0
- package/dist/editors/adapters/cursor.d.ts.map +1 -1
- package/dist/editors/adapters/cursor.js +7 -0
- package/dist/editors/adapters/cursor.js.map +1 -1
- package/dist/editors/adapters/index.d.ts +1 -1
- package/dist/editors/adapters/index.d.ts.map +1 -1
- package/dist/editors/adapters/index.js +1 -1
- package/dist/editors/adapters/index.js.map +1 -1
- package/dist/editors/adapters/windsurf.d.ts +1 -0
- package/dist/editors/adapters/windsurf.d.ts.map +1 -1
- package/dist/editors/adapters/windsurf.js +7 -0
- package/dist/editors/adapters/windsurf.js.map +1 -1
- package/dist/editors/adapters/zed.d.ts +1 -0
- package/dist/editors/adapters/zed.d.ts.map +1 -1
- package/dist/editors/adapters/zed.js +7 -0
- package/dist/editors/adapters/zed.js.map +1 -1
- package/dist/editors/import.d.ts +2 -1
- package/dist/editors/import.d.ts.map +1 -1
- package/dist/editors/import.js +43 -17
- package/dist/editors/import.js.map +1 -1
- package/dist/editors/index.d.ts +1 -1
- package/dist/editors/index.d.ts.map +1 -1
- package/dist/editors/index.js +1 -1
- package/dist/editors/index.js.map +1 -1
- package/dist/editors/install.d.ts.map +1 -1
- package/dist/editors/install.js +3 -38
- package/dist/editors/install.js.map +1 -1
- package/dist/editors/strategies/claude-code/hooks.d.ts.map +1 -1
- package/dist/editors/strategies/claude-code/hooks.js +35 -5
- package/dist/editors/strategies/claude-code/hooks.js.map +1 -1
- package/dist/editors/strategies/claude-code/mcp.d.ts +6 -2
- package/dist/editors/strategies/claude-code/mcp.d.ts.map +1 -1
- package/dist/editors/strategies/claude-code/mcp.js +40 -2
- package/dist/editors/strategies/claude-code/mcp.js.map +1 -1
- package/dist/editors/strategies/claude-code/prompts.d.ts +11 -1
- package/dist/editors/strategies/claude-code/prompts.d.ts.map +1 -1
- package/dist/editors/strategies/claude-code/prompts.js +29 -0
- package/dist/editors/strategies/claude-code/prompts.js.map +1 -1
- package/dist/editors/strategies/claude-code/rules.d.ts +12 -1
- package/dist/editors/strategies/claude-code/rules.d.ts.map +1 -1
- package/dist/editors/strategies/claude-code/rules.js +49 -5
- package/dist/editors/strategies/claude-code/rules.js.map +1 -1
- package/dist/editors/strategies/codex/index.d.ts +1 -1
- package/dist/editors/strategies/codex/index.d.ts.map +1 -1
- package/dist/editors/strategies/codex/index.js +1 -1
- package/dist/editors/strategies/codex/index.js.map +1 -1
- package/dist/editors/strategies/codex/mcp.d.ts +0 -10
- package/dist/editors/strategies/codex/mcp.d.ts.map +1 -1
- package/dist/editors/strategies/codex/mcp.js +13 -27
- package/dist/editors/strategies/codex/mcp.js.map +1 -1
- package/dist/editors/strategies/codex/prompts.d.ts +11 -1
- package/dist/editors/strategies/codex/prompts.d.ts.map +1 -1
- package/dist/editors/strategies/codex/prompts.js +34 -0
- package/dist/editors/strategies/codex/prompts.js.map +1 -1
- package/dist/editors/strategies/codex/rules.d.ts +3 -2
- package/dist/editors/strategies/codex/rules.d.ts.map +1 -1
- package/dist/editors/strategies/codex/rules.js +5 -4
- package/dist/editors/strategies/codex/rules.js.map +1 -1
- package/dist/editors/strategies/copilot/hooks.d.ts +14 -0
- package/dist/editors/strategies/copilot/hooks.d.ts.map +1 -0
- package/dist/editors/strategies/copilot/hooks.js +95 -0
- package/dist/editors/strategies/copilot/hooks.js.map +1 -0
- package/dist/editors/strategies/copilot/index.d.ts +5 -0
- package/dist/editors/strategies/copilot/index.d.ts.map +1 -0
- package/dist/editors/strategies/copilot/index.js +5 -0
- package/dist/editors/strategies/copilot/index.js.map +1 -0
- package/dist/editors/strategies/{vscode → copilot}/mcp.d.ts +2 -2
- package/dist/editors/strategies/copilot/mcp.d.ts.map +1 -0
- package/dist/editors/strategies/{vscode → copilot}/mcp.js +4 -4
- package/dist/editors/strategies/copilot/mcp.js.map +1 -0
- package/dist/editors/strategies/copilot/prompts.d.ts +28 -0
- package/dist/editors/strategies/copilot/prompts.d.ts.map +1 -0
- package/dist/editors/strategies/{vscode → copilot}/prompts.js +32 -3
- package/dist/editors/strategies/copilot/prompts.js.map +1 -0
- package/dist/editors/strategies/{vscode → copilot}/rules.d.ts +2 -2
- package/dist/editors/strategies/copilot/rules.d.ts.map +1 -0
- package/dist/editors/strategies/{vscode → copilot}/rules.js +5 -5
- package/dist/editors/strategies/copilot/rules.js.map +1 -0
- package/dist/editors/strategies/cursor/hooks.d.ts.map +1 -1
- package/dist/editors/strategies/cursor/hooks.js +11 -0
- package/dist/editors/strategies/cursor/hooks.js.map +1 -1
- package/dist/editors/strategies/cursor/rules.d.ts +14 -1
- package/dist/editors/strategies/cursor/rules.d.ts.map +1 -1
- package/dist/editors/strategies/cursor/rules.js +51 -5
- package/dist/editors/strategies/cursor/rules.js.map +1 -1
- package/dist/editors/strategies/index.d.ts +1 -1
- package/dist/editors/strategies/index.d.ts.map +1 -1
- package/dist/editors/strategies/index.js +1 -1
- package/dist/editors/strategies/index.js.map +1 -1
- package/dist/editors/strategies/shared/native-skills.d.ts +1 -1
- package/dist/editors/strategies/shared/native-skills.js +1 -1
- package/dist/editors/strategies/shared/no-hooks.d.ts +1 -1
- package/dist/editors/strategies/shared/no-hooks.js +1 -1
- package/dist/editors/strategies/shared/no-mcp.d.ts +1 -1
- package/dist/editors/strategies/shared/no-mcp.js +1 -1
- package/dist/editors/strategies/shared/standard-mcp.d.ts +3 -1
- package/dist/editors/strategies/shared/standard-mcp.d.ts.map +1 -1
- package/dist/editors/strategies/shared/standard-mcp.js +5 -1
- package/dist/editors/strategies/shared/standard-mcp.js.map +1 -1
- package/dist/editors/strategies/types.d.ts +48 -2
- package/dist/editors/strategies/types.d.ts.map +1 -1
- package/dist/editors/strategies/windsurf/prompts.d.ts +11 -1
- package/dist/editors/strategies/windsurf/prompts.d.ts.map +1 -1
- package/dist/editors/strategies/windsurf/prompts.js +29 -0
- package/dist/editors/strategies/windsurf/prompts.js.map +1 -1
- package/dist/editors/strategies/windsurf/rules.d.ts +14 -1
- package/dist/editors/strategies/windsurf/rules.d.ts.map +1 -1
- package/dist/editors/strategies/windsurf/rules.js +43 -5
- package/dist/editors/strategies/windsurf/rules.js.map +1 -1
- package/dist/editors/types.d.ts +6 -1
- package/dist/editors/types.d.ts.map +1 -1
- package/dist/frontmatter-parser.d.ts +24 -0
- package/dist/frontmatter-parser.d.ts.map +1 -0
- package/dist/frontmatter-parser.js +137 -0
- package/dist/frontmatter-parser.js.map +1 -0
- package/dist/frontmatter-utils.d.ts +36 -0
- package/dist/frontmatter-utils.d.ts.map +1 -0
- package/dist/frontmatter-utils.js +109 -0
- package/dist/frontmatter-utils.js.map +1 -0
- package/dist/git-download.d.ts +18 -0
- package/dist/git-download.d.ts.map +1 -0
- package/dist/git-download.js +49 -0
- package/dist/git-download.js.map +1 -0
- package/dist/global/processor.d.ts.map +1 -1
- package/dist/global/processor.js +27 -12
- package/dist/global/processor.js.map +1 -1
- package/dist/global/types.d.ts +2 -0
- package/dist/global/types.d.ts.map +1 -1
- package/dist/import-writer.d.ts +6 -1
- package/dist/import-writer.d.ts.map +1 -1
- package/dist/import-writer.js +8 -5
- package/dist/import-writer.js.map +1 -1
- package/dist/inheritance.d.ts +2 -0
- package/dist/inheritance.d.ts.map +1 -1
- package/dist/inheritance.js +172 -41
- package/dist/inheritance.js.map +1 -1
- package/dist/loader.d.ts.map +1 -1
- package/dist/loader.js +2 -1
- package/dist/loader.js.map +1 -1
- package/dist/prompts/loader.d.ts.map +1 -1
- package/dist/prompts/loader.js +11 -39
- package/dist/prompts/loader.js.map +1 -1
- package/dist/remote-loader.d.ts.map +1 -1
- package/dist/remote-loader.js +19 -44
- package/dist/remote-loader.js.map +1 -1
- package/dist/rules/loader.d.ts.map +1 -1
- package/dist/rules/loader.js +23 -13
- package/dist/rules/loader.js.map +1 -1
- package/dist/skills/parser.d.ts +3 -1
- package/dist/skills/parser.d.ts.map +1 -1
- package/dist/skills/parser.js +22 -10
- package/dist/skills/parser.js.map +1 -1
- package/dist/skills/validate.js +1 -1
- package/dist/skills/validate.js.map +1 -1
- package/dist/updater.d.ts.map +1 -1
- package/dist/updater.js +5 -12
- package/dist/updater.js.map +1 -1
- package/dist/url-parsing.d.ts +1 -7
- package/dist/url-parsing.d.ts.map +1 -1
- package/dist/url-parsing.js +2 -19
- package/dist/url-parsing.js.map +1 -1
- package/package.json +13 -6
- package/dist/editors/adapters/vscode.d.ts.map +0 -1
- package/dist/editors/adapters/vscode.js.map +0 -1
- package/dist/editors/strategies/vscode/index.d.ts +0 -4
- package/dist/editors/strategies/vscode/index.d.ts.map +0 -1
- package/dist/editors/strategies/vscode/index.js +0 -4
- package/dist/editors/strategies/vscode/index.js.map +0 -1
- package/dist/editors/strategies/vscode/mcp.d.ts.map +0 -1
- package/dist/editors/strategies/vscode/mcp.js.map +0 -1
- package/dist/editors/strategies/vscode/prompts.d.ts +0 -18
- package/dist/editors/strategies/vscode/prompts.d.ts.map +0 -1
- package/dist/editors/strategies/vscode/prompts.js.map +0 -1
- package/dist/editors/strategies/vscode/rules.d.ts.map +0 -1
- 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
|
|
5
|
-
*
|
|
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;
|
|
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;
|
|
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":"
|
|
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":"
|
|
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
|
|
1
|
+
{"version":3,"file":"rules.js","sourceRoot":"","sources":["../../../../src/editors/strategies/claude-code/rules.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAEnF;;;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,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACzB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3B,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,CAAC;QAEtC,OAAO,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,SAAS,CAAC;IACvD,CAAC;IAED;;;;OAIG;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,QAAQ,EAAE,EAAE,EAAE,CAAC;QAChD,CAAC;QAED,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,EAC/B,WAAW,GAAG,cAAc,CAAC,KAAK,EAAE,aAAa,CAAuB,EACxE,KAAK,GAAG,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QAE7C,uDAAuD;QACvD,IAAI,UAAgC,CAAC;QAErC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACxB,UAAU,GAAG,KAAK,CAAC;QACtB,CAAC;aAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YACpC,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QACtD,CAAC;QAED,4BAA4B;QAC5B,IAAI,UAAsC,CAAC;QAE3C,IAAI,UAAU,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvC,UAAU,GAAG,MAAM,CAAC;QACvB,CAAC;aAAM,CAAC;YACL,UAAU,GAAG,QAAQ,CAAC;QACzB,CAAC;QAED,OAAO;YACJ,OAAO;YACP,QAAQ,EAAE;gBACP,UAAU;gBACV,WAAW;gBACX,KAAK,EAAE,UAAU;aACnB;SACH,CAAC;IACL,CAAC;CACH"}
|
|
@@ -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,
|
|
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 +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,
|
|
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":"
|
|
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
|
|
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
|
-
|
|
13
|
+
const server = {};
|
|
13
14
|
if ('command' in serverConfig) {
|
|
14
|
-
|
|
15
|
+
server.command = serverConfig.command;
|
|
15
16
|
if (serverConfig.args && serverConfig.args.length > 0) {
|
|
16
|
-
|
|
17
|
-
lines.push(`args = [${argsStr}]`);
|
|
17
|
+
server.args = serverConfig.args;
|
|
18
18
|
}
|
|
19
19
|
if (serverConfig.env && Object.keys(serverConfig.env).length > 0) {
|
|
20
|
-
|
|
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
|
-
|
|
24
|
+
server.url = serverConfig.url;
|
|
28
25
|
}
|
|
29
|
-
|
|
26
|
+
mcpServers[name] = server;
|
|
30
27
|
}
|
|
31
|
-
return
|
|
28
|
+
return stringifyTOML({ mcp_servers: mcpServers });
|
|
32
29
|
}
|
|
33
30
|
/**
|
|
34
31
|
* Parse Codex's config.toml format for MCP servers.
|
|
35
|
-
*
|
|
32
|
+
* Outputs shorthand config without defaults.
|
|
36
33
|
*/
|
|
37
|
-
|
|
34
|
+
function parseCodexMcp(content) {
|
|
38
35
|
const mcp = {}, warnings = [];
|
|
39
36
|
try {
|
|
40
|
-
const
|
|
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:
|
|
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":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE5D;;;GAGG;AACH,SAAS,cAAc,CAAC,GAAoC;IACzD,MAAM,
|
|
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;
|
|
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;
|
|
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
|
|
5
|
-
*
|
|
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
|
|
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
|
|
3
|
-
*
|
|
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
|
|
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
|
|
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"}
|