ai-factory 2.0.0 → 2.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +17 -4
- package/dist/cli/commands/extension.d.ts +4 -0
- package/dist/cli/commands/extension.d.ts.map +1 -0
- package/dist/cli/commands/extension.js +288 -0
- package/dist/cli/commands/extension.js.map +1 -0
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +31 -35
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/update.d.ts.map +1 -1
- package/dist/cli/commands/update.js +86 -7
- package/dist/cli/commands/update.js.map +1 -1
- package/dist/cli/commands/upgrade.d.ts.map +1 -1
- package/dist/cli/commands/upgrade.js +44 -41
- package/dist/cli/commands/upgrade.js.map +1 -1
- package/dist/cli/index.js +48 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/wizard/prompts.d.ts +2 -1
- package/dist/cli/wizard/prompts.d.ts.map +1 -1
- package/dist/cli/wizard/prompts.js +13 -20
- package/dist/cli/wizard/prompts.js.map +1 -1
- package/dist/core/agents.d.ts.map +1 -1
- package/dist/core/agents.js +9 -0
- package/dist/core/agents.js.map +1 -1
- package/dist/core/config.d.ts +8 -2
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +5 -8
- package/dist/core/config.js.map +1 -1
- package/dist/core/extension-ops.d.ts +32 -0
- package/dist/core/extension-ops.d.ts.map +1 -0
- package/dist/core/extension-ops.js +83 -0
- package/dist/core/extension-ops.js.map +1 -0
- package/dist/core/extensions.d.ts +53 -0
- package/dist/core/extensions.d.ts.map +1 -0
- package/dist/core/extensions.js +141 -0
- package/dist/core/extensions.js.map +1 -0
- package/dist/core/injections.d.ts +10 -0
- package/dist/core/injections.d.ts.map +1 -0
- package/dist/core/injections.js +154 -0
- package/dist/core/injections.js.map +1 -0
- package/dist/core/installer.d.ts +7 -3
- package/dist/core/installer.d.ts.map +1 -1
- package/dist/core/installer.js +68 -26
- package/dist/core/installer.js.map +1 -1
- package/dist/core/mcp.d.ts +12 -0
- package/dist/core/mcp.d.ts.map +1 -1
- package/dist/core/mcp.js +112 -67
- package/dist/core/mcp.js.map +1 -1
- package/dist/core/transformer.d.ts +10 -1
- package/dist/core/transformer.d.ts.map +1 -1
- package/dist/core/transformer.js +19 -1
- package/dist/core/transformer.js.map +1 -1
- package/dist/core/transformers/antigravity.d.ts +1 -0
- package/dist/core/transformers/antigravity.d.ts.map +1 -1
- package/dist/core/transformers/antigravity.js +19 -4
- package/dist/core/transformers/antigravity.js.map +1 -1
- package/dist/core/transformers/codex.d.ts +7 -0
- package/dist/core/transformers/codex.d.ts.map +1 -0
- package/dist/core/transformers/codex.js +24 -0
- package/dist/core/transformers/codex.js.map +1 -0
- package/dist/core/transformers/default.d.ts +1 -0
- package/dist/core/transformers/default.d.ts.map +1 -1
- package/dist/core/transformers/default.js +6 -0
- package/dist/core/transformers/default.js.map +1 -1
- package/dist/core/transformers/kilocode.js +1 -1
- package/dist/core/transformers/kilocode.js.map +1 -1
- package/dist/core/transformers/qwen.d.ts +7 -0
- package/dist/core/transformers/qwen.d.ts.map +1 -0
- package/dist/core/transformers/qwen.js +25 -0
- package/dist/core/transformers/qwen.js.map +1 -0
- package/dist/utils/fs.d.ts +0 -2
- package/dist/utils/fs.d.ts.map +1 -1
- package/dist/utils/fs.js +1 -5
- package/dist/utils/fs.js.map +1 -1
- package/mcp/templates/playwright.json +4 -0
- package/package.json +16 -1
- package/skills/aif/SKILL.md +27 -52
- package/skills/aif-commit/SKILL.md +13 -1
- package/skills/aif-grounded/SKILL.md +90 -0
- package/skills/aif-implement/SKILL.md +39 -2
- package/skills/aif-implement/references/IMPLEMENTATION-GUIDE.md +16 -0
- package/skills/aif-loop/SKILL.md +2 -2
- package/dist/cli/wizard/detector.d.ts +0 -10
- package/dist/cli/wizard/detector.d.ts.map +0 -1
- package/dist/cli/wizard/detector.js +0 -231
- package/dist/cli/wizard/detector.js.map +0 -1
- package/skills/_templates/nextjs/nextjs-patterns/SKILL.md +0 -146
- package/skills/_templates/node-api/api-patterns/SKILL.md +0 -245
- package/skills/_templates/php/php-patterns/SKILL.md +0 -491
- package/skills/_templates/python/python-patterns/SKILL.md +0 -236
- package/skills/_templates/react/react-patterns/SKILL.md +0 -181
- package/skills/aif-deploy/SKILL.md +0 -138
package/dist/core/installer.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import path from 'path';
|
|
2
|
-
import { copyDirectory, getSkillsDir, ensureDir, listDirectories, readTextFile, writeTextFile } from '../utils/fs.js';
|
|
2
|
+
import { copyDirectory, getSkillsDir, ensureDir, listDirectories, readTextFile, writeTextFile, removeDirectory } from '../utils/fs.js';
|
|
3
3
|
import { getAgentConfig } from './agents.js';
|
|
4
4
|
import { processSkillTemplates, buildTemplateVars, processTemplate } from './template.js';
|
|
5
|
-
import { getTransformer } from './transformer.js';
|
|
5
|
+
import { getTransformer, extractFrontmatterName, replaceFrontmatterName } from './transformer.js';
|
|
6
6
|
async function installSkillWithTransformer(sourceSkillDir, skillName, projectDir, skillsDir, agentId, agentConfig) {
|
|
7
7
|
const transformer = getTransformer(agentId);
|
|
8
8
|
const skillMdPath = path.join(sourceSkillDir, 'SKILL.md');
|
|
@@ -10,7 +10,10 @@ async function installSkillWithTransformer(sourceSkillDir, skillName, projectDir
|
|
|
10
10
|
if (!content) {
|
|
11
11
|
throw new Error(`SKILL.md not found in ${sourceSkillDir}`);
|
|
12
12
|
}
|
|
13
|
-
|
|
13
|
+
// If skill is installed under a different name (e.g. replacement), rewrite frontmatter name
|
|
14
|
+
const fmName = extractFrontmatterName(content);
|
|
15
|
+
const adjustedContent = (fmName && fmName !== skillName) ? replaceFrontmatterName(content, skillName) : content;
|
|
16
|
+
const result = transformer.transform(skillName, adjustedContent);
|
|
14
17
|
const vars = buildTemplateVars(agentConfig);
|
|
15
18
|
if (result.flat) {
|
|
16
19
|
const targetPath = path.join(projectDir, agentConfig.configDir, result.targetDir, result.targetName);
|
|
@@ -22,11 +25,14 @@ async function installSkillWithTransformer(sourceSkillDir, skillName, projectDir
|
|
|
22
25
|
if (result.content !== content) {
|
|
23
26
|
await writeTextFile(path.join(targetSkillDir, 'SKILL.md'), result.content);
|
|
24
27
|
}
|
|
28
|
+
else if (adjustedContent !== content) {
|
|
29
|
+
await writeTextFile(path.join(targetSkillDir, 'SKILL.md'), adjustedContent);
|
|
30
|
+
}
|
|
25
31
|
await processSkillTemplates(targetSkillDir, agentConfig);
|
|
26
32
|
}
|
|
27
33
|
}
|
|
28
34
|
export async function installSkills(options) {
|
|
29
|
-
const { projectDir, skillsDir, skills,
|
|
35
|
+
const { projectDir, skillsDir, skills, agentId } = options;
|
|
30
36
|
const installedSkills = [];
|
|
31
37
|
const agentConfig = getAgentConfig(agentId);
|
|
32
38
|
const targetDir = path.join(projectDir, skillsDir);
|
|
@@ -42,45 +48,81 @@ export async function installSkills(options) {
|
|
|
42
48
|
console.warn(`Warning: Could not install skill "${skill}": ${error}`);
|
|
43
49
|
}
|
|
44
50
|
}
|
|
45
|
-
if (stack) {
|
|
46
|
-
const templateDir = path.join(packageSkillsDir, '_templates', stack);
|
|
47
|
-
try {
|
|
48
|
-
const templateSkills = await listDirectories(templateDir);
|
|
49
|
-
for (const templateSkill of templateSkills) {
|
|
50
|
-
const sourceDir = path.join(templateDir, templateSkill);
|
|
51
|
-
await installSkillWithTransformer(sourceDir, templateSkill, projectDir, skillsDir, agentId, agentConfig);
|
|
52
|
-
installedSkills.push(`${stack}/${templateSkill}`);
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
catch {
|
|
56
|
-
// Template not found, skip
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
51
|
const transformer = getTransformer(agentId);
|
|
60
52
|
if (transformer.postInstall) {
|
|
61
53
|
await transformer.postInstall(projectDir);
|
|
62
54
|
}
|
|
63
55
|
return installedSkills;
|
|
64
56
|
}
|
|
57
|
+
export function partitionSkills(skills) {
|
|
58
|
+
return {
|
|
59
|
+
base: skills.filter(s => !s.includes('/')),
|
|
60
|
+
custom: skills.filter(s => s.includes('/')),
|
|
61
|
+
};
|
|
62
|
+
}
|
|
65
63
|
export async function getAvailableSkills() {
|
|
66
64
|
const packageSkillsDir = getSkillsDir();
|
|
67
65
|
const dirs = await listDirectories(packageSkillsDir);
|
|
68
66
|
return dirs.filter(dir => !dir.startsWith('_'));
|
|
69
67
|
}
|
|
70
|
-
export async function
|
|
71
|
-
const
|
|
72
|
-
|
|
68
|
+
export async function installExtensionSkills(projectDir, agentInstallation, extensionDir, skillPaths, nameOverrides) {
|
|
69
|
+
const agentConfig = getAgentConfig(agentInstallation.id);
|
|
70
|
+
const installed = [];
|
|
71
|
+
for (const skillPath of skillPaths) {
|
|
72
|
+
const sourceDir = path.join(extensionDir, skillPath);
|
|
73
|
+
const skillName = nameOverrides?.[skillPath] ?? path.basename(skillPath);
|
|
74
|
+
try {
|
|
75
|
+
await installSkillWithTransformer(sourceDir, skillName, projectDir, agentInstallation.skillsDir, agentInstallation.id, agentConfig);
|
|
76
|
+
installed.push(skillName);
|
|
77
|
+
}
|
|
78
|
+
catch (error) {
|
|
79
|
+
console.warn(`Warning: Could not install extension skill "${skillName}": ${error}`);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
return installed;
|
|
73
83
|
}
|
|
74
|
-
|
|
84
|
+
async function removeSkillsByName(projectDir, agentInstallation, skillNames) {
|
|
85
|
+
const agentConfig = getAgentConfig(agentInstallation.id);
|
|
86
|
+
const transformer = getTransformer(agentInstallation.id);
|
|
87
|
+
const removed = [];
|
|
88
|
+
for (const skillName of skillNames) {
|
|
89
|
+
try {
|
|
90
|
+
const result = transformer.transform(skillName, '');
|
|
91
|
+
if (result.flat) {
|
|
92
|
+
const targetPath = path.join(projectDir, agentConfig.configDir, result.targetDir, result.targetName);
|
|
93
|
+
await removeDirectory(targetPath);
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
const targetSkillDir = path.join(projectDir, agentInstallation.skillsDir, result.targetDir);
|
|
97
|
+
await removeDirectory(targetSkillDir);
|
|
98
|
+
}
|
|
99
|
+
removed.push(skillName);
|
|
100
|
+
}
|
|
101
|
+
catch {
|
|
102
|
+
// Skill may not exist, ignore
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
return removed;
|
|
106
|
+
}
|
|
107
|
+
export async function removeExtensionSkills(projectDir, agentInstallation, skillPaths) {
|
|
108
|
+
return removeSkillsByName(projectDir, agentInstallation, skillPaths.map(p => path.basename(p)));
|
|
109
|
+
}
|
|
110
|
+
export async function updateSkills(agentInstallation, projectDir, excludeSkills) {
|
|
75
111
|
const availableSkills = await getAvailableSkills();
|
|
76
|
-
const
|
|
112
|
+
const excludeSet = new Set(excludeSkills ?? []);
|
|
113
|
+
const skillsToInstall = availableSkills.filter(s => !excludeSet.has(s));
|
|
114
|
+
const { base: previousBaseSkills, custom } = partitionSkills(agentInstallation.installedSkills);
|
|
115
|
+
const availableSet = new Set(availableSkills);
|
|
116
|
+
const removedSkills = previousBaseSkills.filter(s => !availableSet.has(s) && !excludeSet.has(s));
|
|
117
|
+
if (removedSkills.length > 0) {
|
|
118
|
+
await removeSkillsByName(projectDir, agentInstallation, removedSkills);
|
|
119
|
+
}
|
|
77
120
|
const installedBaseSkills = await installSkills({
|
|
78
121
|
projectDir,
|
|
79
122
|
skillsDir: agentInstallation.skillsDir,
|
|
80
|
-
skills:
|
|
81
|
-
stack: null,
|
|
123
|
+
skills: skillsToInstall,
|
|
82
124
|
agentId: agentInstallation.id,
|
|
83
125
|
});
|
|
84
|
-
return [...installedBaseSkills, ...
|
|
126
|
+
return [...installedBaseSkills, ...custom];
|
|
85
127
|
}
|
|
86
128
|
//# sourceMappingURL=installer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"installer.js","sourceRoot":"","sources":["../../src/core/installer.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,SAAS,EAAE,eAAe,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"installer.js","sourceRoot":"","sources":["../../src/core/installer.ts"],"names":[],"mappings":"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"}
|
package/dist/core/mcp.d.ts
CHANGED
|
@@ -1,9 +1,21 @@
|
|
|
1
|
+
interface McpServerConfig {
|
|
2
|
+
command: string;
|
|
3
|
+
args?: string[];
|
|
4
|
+
env?: Record<string, string>;
|
|
5
|
+
}
|
|
1
6
|
export interface McpOptions {
|
|
2
7
|
github: boolean;
|
|
3
8
|
filesystem: boolean;
|
|
4
9
|
postgres: boolean;
|
|
5
10
|
chromeDevtools: boolean;
|
|
11
|
+
playwright: boolean;
|
|
6
12
|
}
|
|
7
13
|
export declare function configureMcp(projectDir: string, options: McpOptions, agentId?: string): Promise<string[]>;
|
|
8
14
|
export declare function getMcpInstructions(servers: string[]): string[];
|
|
15
|
+
export declare function configureExtensionMcpServers(projectDir: string, agentId: string, servers: {
|
|
16
|
+
key: string;
|
|
17
|
+
template: McpServerConfig;
|
|
18
|
+
}[]): Promise<string[]>;
|
|
19
|
+
export declare function removeExtensionMcpServers(projectDir: string, agentId: string, keys: string[]): Promise<void>;
|
|
20
|
+
export {};
|
|
9
21
|
//# sourceMappingURL=mcp.d.ts.map
|
package/dist/core/mcp.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/core/mcp.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/core/mcp.ts"],"names":[],"mappings":"AAIA,UAAU,eAAe;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC9B;AAQD,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,cAAc,EAAE,OAAO,CAAC;IACxB,UAAU,EAAE,OAAO,CAAC;CACrB;AAoFD,wBAAsB,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,GAAE,MAAiB,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAoCzH;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAK9D;AAED,wBAAsB,4BAA4B,CAChD,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,eAAe,CAAA;CAAE,EAAE,GACpD,OAAO,CAAC,MAAM,EAAE,CAAC,CA0BnB;AAED,wBAAsB,yBAAyB,CAC7C,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,GACb,OAAO,CAAC,IAAI,CAAC,CAyBf"}
|
package/dist/core/mcp.js
CHANGED
|
@@ -9,93 +9,138 @@ function toOpenCodeFormat(config) {
|
|
|
9
9
|
}
|
|
10
10
|
return result;
|
|
11
11
|
}
|
|
12
|
+
const MCP_SERVERS = [
|
|
13
|
+
{
|
|
14
|
+
key: 'github',
|
|
15
|
+
templateFile: 'github.json',
|
|
16
|
+
instruction: 'GitHub MCP: Set GITHUB_TOKEN environment variable with your GitHub personal access token',
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
key: 'filesystem',
|
|
20
|
+
templateFile: 'filesystem.json',
|
|
21
|
+
instruction: 'Filesystem MCP: No additional configuration needed. Server provides file access tools.',
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
key: 'postgres',
|
|
25
|
+
templateFile: 'postgres.json',
|
|
26
|
+
instruction: 'Postgres MCP: Set DATABASE_URL environment variable with your PostgreSQL connection string',
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
key: 'chromeDevtools',
|
|
30
|
+
templateFile: 'chrome-devtools.json',
|
|
31
|
+
instruction: 'Chrome Devtools MCP: No additional configuration needed. Server provides your coding agent control and inspect a live Chrome browser.',
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
key: 'playwright',
|
|
35
|
+
templateFile: 'playwright.json',
|
|
36
|
+
instruction: 'Playwright MCP: No additional configuration needed. Server provides browser automation via accessibility tree for web testing and interaction.',
|
|
37
|
+
},
|
|
38
|
+
];
|
|
39
|
+
function isRecord(value) {
|
|
40
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
41
|
+
}
|
|
42
|
+
function ensureNestedRecord(object, key) {
|
|
43
|
+
const value = object[key];
|
|
44
|
+
if (isRecord(value)) {
|
|
45
|
+
return value;
|
|
46
|
+
}
|
|
47
|
+
const next = {};
|
|
48
|
+
object[key] = next;
|
|
49
|
+
return next;
|
|
50
|
+
}
|
|
51
|
+
async function loadSettings(settingsPath) {
|
|
52
|
+
if (!(await fileExists(settingsPath))) {
|
|
53
|
+
return {};
|
|
54
|
+
}
|
|
55
|
+
const parsed = await readJsonFile(settingsPath);
|
|
56
|
+
return isRecord(parsed) ? parsed : {};
|
|
57
|
+
}
|
|
58
|
+
function applyServerConfig(settings, format, key, template) {
|
|
59
|
+
if (format === 'opencode') {
|
|
60
|
+
ensureNestedRecord(settings, 'mcp')[key] = toOpenCodeFormat(template);
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
ensureNestedRecord(settings, 'mcpServers')[key] = template;
|
|
64
|
+
}
|
|
12
65
|
export async function configureMcp(projectDir, options, agentId = 'claude') {
|
|
13
66
|
const agent = getAgentConfig(agentId);
|
|
14
67
|
if (!agent.supportsMcp || !agent.settingsFile) {
|
|
15
68
|
return [];
|
|
16
69
|
}
|
|
17
|
-
const
|
|
70
|
+
const format = agentId === 'opencode' ? 'opencode' : 'standard';
|
|
18
71
|
const configuredServers = [];
|
|
19
72
|
const settingsPath = path.join(projectDir, agent.settingsFile);
|
|
20
73
|
const settingsDir = path.dirname(settingsPath);
|
|
21
74
|
await ensureDir(settingsDir);
|
|
22
75
|
const mcpTemplatesDir = path.join(getMcpDir(), 'templates');
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
if (
|
|
26
|
-
|
|
27
|
-
if (existing) {
|
|
28
|
-
settings = existing;
|
|
29
|
-
}
|
|
76
|
+
const settings = await loadSettings(settingsPath);
|
|
77
|
+
for (const server of MCP_SERVERS) {
|
|
78
|
+
if (!options[server.key]) {
|
|
79
|
+
continue;
|
|
30
80
|
}
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
const serverEntries = [
|
|
35
|
-
['github', 'github.json'],
|
|
36
|
-
['filesystem', 'filesystem.json'],
|
|
37
|
-
['postgres', 'postgres.json'],
|
|
38
|
-
['chromeDevtools', 'chrome-devtools.json'],
|
|
39
|
-
];
|
|
40
|
-
for (const [key, file] of serverEntries) {
|
|
41
|
-
if (options[key]) {
|
|
42
|
-
const template = await readJsonFile(path.join(mcpTemplatesDir, file));
|
|
43
|
-
if (template) {
|
|
44
|
-
settings.mcp[key] = toOpenCodeFormat(template);
|
|
45
|
-
configuredServers.push(key);
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
if (configuredServers.length > 0) {
|
|
50
|
-
await writeJsonFile(settingsPath, settings);
|
|
81
|
+
const template = await readJsonFile(path.join(mcpTemplatesDir, server.templateFile));
|
|
82
|
+
if (!template) {
|
|
83
|
+
continue;
|
|
51
84
|
}
|
|
85
|
+
applyServerConfig(settings, format, server.key, template);
|
|
86
|
+
configuredServers.push(server.key);
|
|
52
87
|
}
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
if (await fileExists(settingsPath)) {
|
|
56
|
-
const existing = await readJsonFile(settingsPath);
|
|
57
|
-
if (existing) {
|
|
58
|
-
settings = existing;
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
if (!settings.mcpServers) {
|
|
62
|
-
settings.mcpServers = {};
|
|
63
|
-
}
|
|
64
|
-
const serverEntries = [
|
|
65
|
-
['github', 'github.json'],
|
|
66
|
-
['filesystem', 'filesystem.json'],
|
|
67
|
-
['postgres', 'postgres.json'],
|
|
68
|
-
['chromeDevtools', 'chrome-devtools.json'],
|
|
69
|
-
];
|
|
70
|
-
for (const [key, file] of serverEntries) {
|
|
71
|
-
if (options[key]) {
|
|
72
|
-
const template = await readJsonFile(path.join(mcpTemplatesDir, file));
|
|
73
|
-
if (template) {
|
|
74
|
-
settings.mcpServers[key] = template;
|
|
75
|
-
configuredServers.push(key);
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
if (configuredServers.length > 0) {
|
|
80
|
-
await writeJsonFile(settingsPath, settings);
|
|
81
|
-
}
|
|
88
|
+
if (configuredServers.length > 0) {
|
|
89
|
+
await writeJsonFile(settingsPath, settings);
|
|
82
90
|
}
|
|
83
91
|
return configuredServers;
|
|
84
92
|
}
|
|
85
93
|
export function getMcpInstructions(servers) {
|
|
86
|
-
const
|
|
87
|
-
|
|
88
|
-
|
|
94
|
+
const selected = new Set(servers);
|
|
95
|
+
return MCP_SERVERS
|
|
96
|
+
.filter(server => selected.has(server.key))
|
|
97
|
+
.map(server => server.instruction);
|
|
98
|
+
}
|
|
99
|
+
export async function configureExtensionMcpServers(projectDir, agentId, servers) {
|
|
100
|
+
const agent = getAgentConfig(agentId);
|
|
101
|
+
if (!agent.supportsMcp || !agent.settingsFile) {
|
|
102
|
+
return [];
|
|
103
|
+
}
|
|
104
|
+
const format = agentId === 'opencode' ? 'opencode' : 'standard';
|
|
105
|
+
const settingsPath = path.join(projectDir, agent.settingsFile);
|
|
106
|
+
await ensureDir(path.dirname(settingsPath));
|
|
107
|
+
const settings = await loadSettings(settingsPath);
|
|
108
|
+
const configured = [];
|
|
109
|
+
for (const { key, template } of servers) {
|
|
110
|
+
if (format === 'opencode') {
|
|
111
|
+
ensureNestedRecord(settings, 'mcp')[key] = toOpenCodeFormat(template);
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
ensureNestedRecord(settings, 'mcpServers')[key] = template;
|
|
115
|
+
}
|
|
116
|
+
configured.push(key);
|
|
89
117
|
}
|
|
90
|
-
if (
|
|
91
|
-
|
|
118
|
+
if (configured.length > 0) {
|
|
119
|
+
await writeJsonFile(settingsPath, settings);
|
|
92
120
|
}
|
|
93
|
-
|
|
94
|
-
|
|
121
|
+
return configured;
|
|
122
|
+
}
|
|
123
|
+
export async function removeExtensionMcpServers(projectDir, agentId, keys) {
|
|
124
|
+
const agent = getAgentConfig(agentId);
|
|
125
|
+
if (!agent.supportsMcp || !agent.settingsFile) {
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
const format = agentId === 'opencode' ? 'opencode' : 'standard';
|
|
129
|
+
const settingsPath = path.join(projectDir, agent.settingsFile);
|
|
130
|
+
const settings = await loadSettings(settingsPath);
|
|
131
|
+
const containerKey = format === 'opencode' ? 'mcp' : 'mcpServers';
|
|
132
|
+
const container = settings[containerKey];
|
|
133
|
+
if (!isRecord(container))
|
|
134
|
+
return;
|
|
135
|
+
let changed = false;
|
|
136
|
+
for (const key of keys) {
|
|
137
|
+
if (key in container) {
|
|
138
|
+
delete container[key];
|
|
139
|
+
changed = true;
|
|
140
|
+
}
|
|
95
141
|
}
|
|
96
|
-
if (
|
|
97
|
-
|
|
142
|
+
if (changed) {
|
|
143
|
+
await writeJsonFile(settingsPath, settings);
|
|
98
144
|
}
|
|
99
|
-
return instructions;
|
|
100
145
|
}
|
|
101
146
|
//# sourceMappingURL=mcp.js.map
|
package/dist/core/mcp.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/core/mcp.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC/F,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AA8B7C,SAAS,gBAAgB,CAAC,MAAuB;IAC/C,MAAM,OAAO,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC;IACzD,MAAM,MAAM,GAA4B,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;IACnE,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC;QACf,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC;IAClC,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,
|
|
1
|
+
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/core/mcp.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC/F,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AA8B7C,SAAS,gBAAgB,CAAC,MAAuB;IAC/C,MAAM,OAAO,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC;IACzD,MAAM,MAAM,GAA4B,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;IACnE,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC;QACf,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC;IAClC,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,WAAW,GAA0B;IACzC;QACE,GAAG,EAAE,QAAQ;QACb,YAAY,EAAE,aAAa;QAC3B,WAAW,EAAE,0FAA0F;KACxG;IACD;QACE,GAAG,EAAE,YAAY;QACjB,YAAY,EAAE,iBAAiB;QAC/B,WAAW,EAAE,wFAAwF;KACtG;IACD;QACE,GAAG,EAAE,UAAU;QACf,YAAY,EAAE,eAAe;QAC7B,WAAW,EAAE,4FAA4F;KAC1G;IACD;QACE,GAAG,EAAE,gBAAgB;QACrB,YAAY,EAAE,sBAAsB;QACpC,WAAW,EAAE,uIAAuI;KACrJ;IACD;QACE,GAAG,EAAE,YAAY;QACjB,YAAY,EAAE,iBAAiB;QAC/B,WAAW,EAAE,gJAAgJ;KAC9J;CACF,CAAC;AAEF,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,kBAAkB,CAAC,MAA+B,EAAE,GAAW;IACtE,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAC1B,IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACpB,OAAO,KAAK,CAAC;IACf,CAAC;IACD,MAAM,IAAI,GAA4B,EAAE,CAAC;IACzC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;IACnB,OAAO,IAAI,CAAC;AACd,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,YAAoB;IAC9C,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC;QACtC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,YAAY,CAAU,YAAY,CAAC,CAAC;IACzD,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;AACxC,CAAC;AAED,SAAS,iBAAiB,CACxB,QAAiC,EACjC,MAAyB,EACzB,GAAqB,EACrB,QAAyB;IAEzB,IAAI,MAAM,KAAK,UAAU,EAAE,CAAC;QAC1B,kBAAkB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QACtE,OAAO;IACT,CAAC;IAED,kBAAkB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC;AAC7D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,UAAkB,EAAE,OAAmB,EAAE,UAAkB,QAAQ;IACpG,MAAM,KAAK,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IAEtC,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;QAC9C,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,MAAM,GAAsB,OAAO,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC;IACnF,MAAM,iBAAiB,GAAa,EAAE,CAAC;IACvC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;IAC/D,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAE/C,MAAM,SAAS,CAAC,WAAW,CAAC,CAAC;IAE7B,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,WAAW,CAAC,CAAC;IAC5D,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,YAAY,CAAC,CAAC;IAElD,KAAK,MAAM,MAAM,IAAI,WAAW,EAAE,CAAC;QACjC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;YACzB,SAAS;QACX,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAkB,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;QACtG,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,SAAS;QACX,CAAC;QAED,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QAC1D,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACrC,CAAC;IAED,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjC,MAAM,aAAa,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IAC9C,CAAC;IAED,OAAO,iBAAiB,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,OAAiB;IAClD,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;IAClC,OAAO,WAAW;SACf,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;SAC1C,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAChD,UAAkB,EAClB,OAAe,EACf,OAAqD;IAErD,MAAM,KAAK,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IACtC,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;QAC9C,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,MAAM,GAAsB,OAAO,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC;IACnF,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;IAC/D,MAAM,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;IAC5C,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,YAAY,CAAC,CAAC;IAClD,MAAM,UAAU,GAAa,EAAE,CAAC;IAEhC,KAAK,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,OAAO,EAAE,CAAC;QACxC,IAAI,MAAM,KAAK,UAAU,EAAE,CAAC;YAC1B,kBAAkB,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QACxE,CAAC;aAAM,CAAC;YACN,kBAAkB,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC;QAC7D,CAAC;QACD,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;IAED,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,MAAM,aAAa,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IAC9C,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,UAAkB,EAClB,OAAe,EACf,IAAc;IAEd,MAAM,KAAK,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IACtC,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;QAC9C,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAsB,OAAO,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC;IACnF,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC;IAC/D,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,YAAY,CAAC,CAAC;IAClD,MAAM,YAAY,GAAG,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC;IAClE,MAAM,SAAS,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC;IAEzC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;QAAE,OAAO;IAEjC,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,GAAG,IAAI,SAAS,EAAE,CAAC;YACrB,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;YACtB,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;IACH,CAAC;IAED,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,aAAa,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;IAC9C,CAAC;AACH,CAAC"}
|
|
@@ -7,12 +7,21 @@ export interface TransformResult {
|
|
|
7
7
|
export interface AgentTransformer {
|
|
8
8
|
transform(skillName: string, content: string): TransformResult;
|
|
9
9
|
postInstall?(projectDir: string): Promise<void>;
|
|
10
|
-
getWelcomeMessage
|
|
10
|
+
getWelcomeMessage(): string[];
|
|
11
|
+
getInvocationHint?(): string;
|
|
12
|
+
cleanup?(projectDir: string, skillsDir: string): Promise<void>;
|
|
13
|
+
}
|
|
14
|
+
export interface AgentOnboarding {
|
|
15
|
+
welcomeMessage: string[];
|
|
16
|
+
invocationHint: string | null;
|
|
11
17
|
}
|
|
12
18
|
export declare const WORKFLOW_SKILLS: Set<string>;
|
|
13
19
|
export declare function sanitizeName(name: string): string;
|
|
14
20
|
export declare function extractFrontmatterName(content: string): string | null;
|
|
15
21
|
export declare function replaceFrontmatterName(content: string, newName: string): string;
|
|
16
22
|
export declare function simplifyFrontmatter(content: string): string;
|
|
23
|
+
export declare function rewriteInvocationPrefix(content: string, mapInvocation: (invocation: string) => string): string;
|
|
17
24
|
export declare function getTransformer(agentId: string): AgentTransformer;
|
|
25
|
+
export declare function getAgentOnboarding(agentId: string): AgentOnboarding;
|
|
26
|
+
export declare function cleanupAgentSetup(agentId: string, projectDir: string, skillsDir: string): Promise<void>;
|
|
18
27
|
//# sourceMappingURL=transformer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transformer.d.ts","sourceRoot":"","sources":["../../src/core/transformer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"transformer.d.ts","sourceRoot":"","sources":["../../src/core/transformer.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,eAAe,CAAC;IAC/D,WAAW,CAAC,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAChD,iBAAiB,IAAI,MAAM,EAAE,CAAC;IAC9B,iBAAiB,CAAC,IAAI,MAAM,CAAC;IAC7B,OAAO,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAChE;AAED,MAAM,WAAW,eAAe;IAC9B,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED,eAAO,MAAM,eAAe,aAQ1B,CAAC;AAEH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAGrE;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAE/E;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAW3D;AAID,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,MAAM,EACf,aAAa,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,MAAM,GAC5C,MAAM,CAKR;AASD,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,gBAAgB,CAGhE;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,CAMnE;AAED,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAG7G"}
|
package/dist/core/transformer.js
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { DefaultTransformer } from './transformers/default.js';
|
|
2
2
|
import { KiloCodeTransformer } from './transformers/kilocode.js';
|
|
3
3
|
import { AntigravityTransformer } from './transformers/antigravity.js';
|
|
4
|
+
import { CodexTransformer } from './transformers/codex.js';
|
|
5
|
+
import { QwenTransformer } from './transformers/qwen.js';
|
|
4
6
|
export const WORKFLOW_SKILLS = new Set([
|
|
5
7
|
'aif',
|
|
6
8
|
'aif-commit',
|
|
7
|
-
'aif-deploy',
|
|
8
9
|
'aif-fix',
|
|
9
10
|
'aif-implement',
|
|
10
11
|
'aif-improve',
|
|
@@ -32,12 +33,29 @@ export function simplifyFrontmatter(content) {
|
|
|
32
33
|
const newFrontmatter = `---\ndescription: ${descMatch[1].trim()}\n---`;
|
|
33
34
|
return content.replace(/^---\n[\s\S]*?\n---/, newFrontmatter);
|
|
34
35
|
}
|
|
36
|
+
const INVOCATION_PATTERN = /(^|[^A-Za-z0-9_-])\/(aif(?:-[a-z0-9-]+)?)/g;
|
|
37
|
+
export function rewriteInvocationPrefix(content, mapInvocation) {
|
|
38
|
+
return content.replace(INVOCATION_PATTERN, (_match, prefix, invocation) => `${prefix}${mapInvocation(invocation)}`);
|
|
39
|
+
}
|
|
35
40
|
const registry = {
|
|
41
|
+
codex: () => new CodexTransformer(),
|
|
36
42
|
kilocode: () => new KiloCodeTransformer(),
|
|
43
|
+
qwen: () => new QwenTransformer(),
|
|
37
44
|
antigravity: () => new AntigravityTransformer(),
|
|
38
45
|
};
|
|
39
46
|
export function getTransformer(agentId) {
|
|
40
47
|
const factory = registry[agentId];
|
|
41
48
|
return factory ? factory() : new DefaultTransformer();
|
|
42
49
|
}
|
|
50
|
+
export function getAgentOnboarding(agentId) {
|
|
51
|
+
const transformer = getTransformer(agentId);
|
|
52
|
+
return {
|
|
53
|
+
welcomeMessage: transformer.getWelcomeMessage(),
|
|
54
|
+
invocationHint: transformer.getInvocationHint?.() ?? null,
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
export async function cleanupAgentSetup(agentId, projectDir, skillsDir) {
|
|
58
|
+
const transformer = getTransformer(agentId);
|
|
59
|
+
await transformer.cleanup?.(projectDir, skillsDir);
|
|
60
|
+
}
|
|
43
61
|
//# sourceMappingURL=transformer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transformer.js","sourceRoot":"","sources":["../../src/core/transformer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"transformer.js","sourceRoot":"","sources":["../../src/core/transformer.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@ import type { AgentTransformer, TransformResult } from '../transformer.js';
|
|
|
2
2
|
export declare class AntigravityTransformer implements AgentTransformer {
|
|
3
3
|
transform(skillName: string, content: string): TransformResult;
|
|
4
4
|
postInstall(projectDir: string): Promise<void>;
|
|
5
|
+
cleanup(projectDir: string, skillsDir: string): Promise<void>;
|
|
5
6
|
getWelcomeMessage(): string[];
|
|
6
7
|
}
|
|
7
8
|
//# sourceMappingURL=antigravity.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"antigravity.d.ts","sourceRoot":"","sources":["../../../src/core/transformers/antigravity.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAK3E,qBAAa,sBAAuB,YAAW,gBAAgB;IAC7D,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,eAAe;IAkBxD,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"antigravity.d.ts","sourceRoot":"","sources":["../../../src/core/transformers/antigravity.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAK3E,qBAAa,sBAAuB,YAAW,gBAAgB;IAC7D,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,eAAe;IAkBxD,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA+D9C,OAAO,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBnE,iBAAiB,IAAI,MAAM,EAAE;CAS9B"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { WORKFLOW_SKILLS, simplifyFrontmatter } from '../transformer.js';
|
|
2
|
-
import { writeTextFile } from '../../utils/fs.js';
|
|
2
|
+
import { writeTextFile, fileExists, removeFile } from '../../utils/fs.js';
|
|
3
3
|
import path from 'path';
|
|
4
4
|
export class AntigravityTransformer {
|
|
5
5
|
transform(skillName, content) {
|
|
@@ -57,14 +57,13 @@ Action-oriented skills that execute specific tasks:
|
|
|
57
57
|
- \`aif-implement.md\` — Execute plans step by step
|
|
58
58
|
- \`aif-commit.md\` — Create conventional commits
|
|
59
59
|
- \`aif-review.md\` — Code review checklist
|
|
60
|
-
- \`aif-deploy.md\` — Deployment automation
|
|
61
60
|
- \`aif-ci.md\` — CI/CD pipeline setup
|
|
62
61
|
|
|
63
62
|
### Skills (.agent/skills/)
|
|
64
63
|
Knowledge-based skills providing guidelines and patterns:
|
|
65
64
|
- \`best-practices/\` — Code quality standards
|
|
66
65
|
- \`architecture/\` — Architecture decision records
|
|
67
|
-
-
|
|
66
|
+
- Project-relevant skills generated by \`/aif\`
|
|
68
67
|
|
|
69
68
|
### Rules (.agent/rules/)
|
|
70
69
|
Always-active guardrails and conventions that apply to every interaction.
|
|
@@ -78,13 +77,29 @@ Always-active guardrails and conventions that apply to every interaction.
|
|
|
78
77
|
await writeTextFile(path.join(rulesDir, 'aif-guardrails.md'), guardrailsContent);
|
|
79
78
|
await writeTextFile(path.join(rulesDir, 'aif-conventions.md'), conventionsContent);
|
|
80
79
|
}
|
|
80
|
+
async cleanup(projectDir, skillsDir) {
|
|
81
|
+
const configDir = path.dirname(skillsDir);
|
|
82
|
+
const workflowsDir = path.join(projectDir, configDir, 'workflows');
|
|
83
|
+
for (const workflow of WORKFLOW_SKILLS) {
|
|
84
|
+
const workflowFile = path.join(workflowsDir, `${workflow}.md`);
|
|
85
|
+
if (await fileExists(workflowFile)) {
|
|
86
|
+
await removeFile(workflowFile);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
for (const ruleFile of ['aif-guardrails.md', 'aif-conventions.md']) {
|
|
90
|
+
const rulePath = path.join(projectDir, configDir, 'rules', ruleFile);
|
|
91
|
+
if (await fileExists(rulePath)) {
|
|
92
|
+
await removeFile(rulePath);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
}
|
|
81
96
|
getWelcomeMessage() {
|
|
82
97
|
return [
|
|
83
98
|
'1. Open Antigravity in this directory',
|
|
84
99
|
'2. Action skills installed as workflows in .agent/workflows/ (flat files)',
|
|
85
100
|
'3. Knowledge skills installed in .agent/skills/ (directories)',
|
|
86
101
|
'4. Rules installed in .agent/rules/ (guardrails and conventions)',
|
|
87
|
-
'5. Run /aif to analyze project and generate
|
|
102
|
+
'5. Run /aif to analyze project and generate project-relevant skills',
|
|
88
103
|
];
|
|
89
104
|
}
|
|
90
105
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"antigravity.js","sourceRoot":"","sources":["../../../src/core/transformers/antigravity.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"antigravity.js","sourceRoot":"","sources":["../../../src/core/transformers/antigravity.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,OAAO,sBAAsB;IACjC,SAAS,CAAC,SAAiB,EAAE,OAAe;QAC1C,IAAI,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YACnC,OAAO;gBACL,SAAS,EAAE,WAAW;gBACtB,UAAU,EAAE,GAAG,SAAS,KAAK;gBAC7B,OAAO,EAAE,mBAAmB,CAAC,OAAO,CAAC;gBACrC,IAAI,EAAE,IAAI;aACX,CAAC;QACJ,CAAC;QAED,OAAO;YACL,SAAS,EAAE,SAAS;YACpB,UAAU,EAAE,UAAU;YACtB,OAAO;YACP,IAAI,EAAE,KAAK;SACZ,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,UAAkB;QAClC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;QAE1D,MAAM,iBAAiB,GAAG;;;;;;;;;;;;;;;;;;;;;;;CAuB7B,CAAC;QAEE,MAAM,kBAAkB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6B9B,CAAC;QAEE,MAAM,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,mBAAmB,CAAC,EAAE,iBAAiB,CAAC,CAAC;QACjF,MAAM,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,oBAAoB,CAAC,EAAE,kBAAkB,CAAC,CAAC;IACrF,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,UAAkB,EAAE,SAAiB;QACjD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAC1C,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;QACnE,KAAK,MAAM,QAAQ,IAAI,eAAe,EAAE,CAAC;YACvC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,QAAQ,KAAK,CAAC,CAAC;YAC/D,IAAI,MAAM,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;gBACnC,MAAM,UAAU,CAAC,YAAY,CAAC,CAAC;YACjC,CAAC;QACH,CAAC;QAED,KAAK,MAAM,QAAQ,IAAI,CAAC,mBAAmB,EAAE,oBAAoB,CAAC,EAAE,CAAC;YACnE,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;YACrE,IAAI,MAAM,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC/B,MAAM,UAAU,CAAC,QAAQ,CAAC,CAAC;YAC7B,CAAC;QACH,CAAC;IACH,CAAC;IAED,iBAAiB;QACf,OAAO;YACL,uCAAuC;YACvC,2EAA2E;YAC3E,+DAA+D;YAC/D,kEAAkE;YAClE,qEAAqE;SACtE,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { AgentTransformer, TransformResult } from '../transformer.js';
|
|
2
|
+
export declare class CodexTransformer implements AgentTransformer {
|
|
3
|
+
transform(skillName: string, content: string): TransformResult;
|
|
4
|
+
getWelcomeMessage(): string[];
|
|
5
|
+
getInvocationHint(): string;
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=codex.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codex.d.ts","sourceRoot":"","sources":["../../../src/core/transformers/codex.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAO3E,qBAAa,gBAAiB,YAAW,gBAAgB;IACvD,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,eAAe;IAS9D,iBAAiB,IAAI,MAAM,EAAE;IAO7B,iBAAiB,IAAI,MAAM;CAG5B"}
|