javi-forge 1.5.0 → 1.6.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 +191 -3
- package/ci-local/hooks/pre-push +17 -13
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +56 -2
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/plugin.d.ts +16 -0
- package/dist/commands/plugin.d.ts.map +1 -1
- package/dist/commands/plugin.js +70 -1
- package/dist/commands/plugin.js.map +1 -1
- package/dist/commands/security.d.ts +25 -0
- package/dist/commands/security.d.ts.map +1 -0
- package/dist/commands/security.js +305 -0
- package/dist/commands/security.js.map +1 -0
- package/dist/commands/skills.d.ts +82 -0
- package/dist/commands/skills.d.ts.map +1 -0
- package/dist/commands/skills.js +510 -0
- package/dist/commands/skills.js.map +1 -0
- package/dist/commands/tdd.d.ts +21 -0
- package/dist/commands/tdd.d.ts.map +1 -0
- package/dist/commands/tdd.js +117 -0
- package/dist/commands/tdd.js.map +1 -0
- package/dist/constants.d.ts +7 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +132 -0
- package/dist/constants.js.map +1 -1
- package/dist/index.js +137 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/agent-skills.d.ts +38 -0
- package/dist/lib/agent-skills.d.ts.map +1 -0
- package/dist/lib/agent-skills.js +111 -0
- package/dist/lib/agent-skills.js.map +1 -0
- package/dist/lib/claudemd.d.ts +8 -0
- package/dist/lib/claudemd.d.ts.map +1 -0
- package/dist/lib/claudemd.js +72 -0
- package/dist/lib/claudemd.js.map +1 -0
- package/dist/lib/codex-export.d.ts +16 -0
- package/dist/lib/codex-export.d.ts.map +1 -0
- package/dist/lib/codex-export.js +111 -0
- package/dist/lib/codex-export.js.map +1 -0
- package/dist/lib/context.d.ts +12 -0
- package/dist/lib/context.d.ts.map +1 -0
- package/dist/lib/context.js +75 -0
- package/dist/lib/context.js.map +1 -0
- package/dist/lib/plugin.d.ts +13 -1
- package/dist/lib/plugin.d.ts.map +1 -1
- package/dist/lib/plugin.js +68 -0
- package/dist/lib/plugin.js.map +1 -1
- package/dist/types/index.d.ts +119 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/ui/App.d.ts.map +1 -1
- package/dist/ui/App.js +6 -0
- package/dist/ui/App.js.map +1 -1
- package/dist/ui/OptionSelector.d.ts +2 -0
- package/dist/ui/OptionSelector.d.ts.map +1 -1
- package/dist/ui/OptionSelector.js +6 -0
- package/dist/ui/OptionSelector.js.map +1 -1
- package/dist/ui/Plugin.d.ts +1 -1
- package/dist/ui/Plugin.d.ts.map +1 -1
- package/dist/ui/Plugin.js +18 -1
- package/dist/ui/Plugin.js.map +1 -1
- package/dist/ui/Skills.d.ts +11 -0
- package/dist/ui/Skills.d.ts.map +1 -0
- package/dist/ui/Skills.js +119 -0
- package/dist/ui/Skills.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import fs from 'fs-extra';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import { AGENT_SKILLS_MANIFEST_FILE, PLUGIN_MANIFEST_FILE, PLUGINS_DIR } from '../constants.js';
|
|
4
|
+
// ── Conversion ─────────────────────────────────────────────────────────────
|
|
5
|
+
/**
|
|
6
|
+
* Convert a javi-forge PluginManifest to an Agent Skills spec manifest.
|
|
7
|
+
*/
|
|
8
|
+
export function pluginToAgentSkills(manifest, source) {
|
|
9
|
+
const skills = (manifest.skills ?? []).map(s => ({
|
|
10
|
+
name: s,
|
|
11
|
+
description: `${s} skill from ${manifest.name}`,
|
|
12
|
+
path: `skills/${s}`,
|
|
13
|
+
}));
|
|
14
|
+
return {
|
|
15
|
+
name: manifest.name,
|
|
16
|
+
version: manifest.version,
|
|
17
|
+
description: manifest.description,
|
|
18
|
+
skills,
|
|
19
|
+
...(source ? { metadata: { forge_source: source } } : {}),
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Convert an Agent Skills spec manifest to a javi-forge PluginManifest.
|
|
24
|
+
*/
|
|
25
|
+
export function agentSkillsToPlugin(agentManifest) {
|
|
26
|
+
return {
|
|
27
|
+
name: agentManifest.name,
|
|
28
|
+
version: agentManifest.version,
|
|
29
|
+
description: agentManifest.description,
|
|
30
|
+
skills: agentManifest.skills.map(s => s.name),
|
|
31
|
+
tags: ['agent-skills-import'],
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
// ── File I/O ───────────────────────────────────────────────────────────────
|
|
35
|
+
/**
|
|
36
|
+
* Generate a skills.json file in the given plugin directory from its plugin.json.
|
|
37
|
+
*/
|
|
38
|
+
export async function generateAgentSkillsManifest(pluginDir, source) {
|
|
39
|
+
const manifestPath = path.join(pluginDir, PLUGIN_MANIFEST_FILE);
|
|
40
|
+
if (!await fs.pathExists(manifestPath)) {
|
|
41
|
+
return { success: false, error: 'plugin.json not found' };
|
|
42
|
+
}
|
|
43
|
+
let manifest;
|
|
44
|
+
try {
|
|
45
|
+
manifest = await fs.readJson(manifestPath);
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
return { success: false, error: 'invalid plugin.json' };
|
|
49
|
+
}
|
|
50
|
+
const agentManifest = pluginToAgentSkills(manifest, source);
|
|
51
|
+
const outPath = path.join(pluginDir, AGENT_SKILLS_MANIFEST_FILE);
|
|
52
|
+
await fs.writeJson(outPath, agentManifest, { spaces: 2 });
|
|
53
|
+
return { success: true, path: outPath };
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Export an installed plugin to Agent Skills format.
|
|
57
|
+
* Looks up the plugin by name in the global plugins directory.
|
|
58
|
+
*/
|
|
59
|
+
export async function exportPluginAsAgentSkills(name) {
|
|
60
|
+
const pluginDir = path.join(PLUGINS_DIR, name);
|
|
61
|
+
if (!await fs.pathExists(pluginDir)) {
|
|
62
|
+
return { success: false, error: `plugin "${name}" is not installed` };
|
|
63
|
+
}
|
|
64
|
+
return generateAgentSkillsManifest(pluginDir);
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Import an Agent Skills spec package from a directory.
|
|
68
|
+
* Reads skills.json, converts to plugin.json, copies to plugins dir.
|
|
69
|
+
*/
|
|
70
|
+
export async function importAgentSkillsPackage(sourceDir, options = {}) {
|
|
71
|
+
const { dryRun = false } = options;
|
|
72
|
+
const skillsPath = path.join(sourceDir, AGENT_SKILLS_MANIFEST_FILE);
|
|
73
|
+
if (!await fs.pathExists(skillsPath)) {
|
|
74
|
+
return { success: false, error: 'skills.json not found' };
|
|
75
|
+
}
|
|
76
|
+
let agentManifest;
|
|
77
|
+
try {
|
|
78
|
+
agentManifest = await fs.readJson(skillsPath);
|
|
79
|
+
}
|
|
80
|
+
catch {
|
|
81
|
+
return { success: false, error: 'invalid skills.json' };
|
|
82
|
+
}
|
|
83
|
+
if (!agentManifest.name || !agentManifest.version || !agentManifest.description) {
|
|
84
|
+
return { success: false, error: 'skills.json missing required fields (name, version, description)' };
|
|
85
|
+
}
|
|
86
|
+
const pluginName = agentManifest.name;
|
|
87
|
+
if (dryRun) {
|
|
88
|
+
return { success: true, name: pluginName };
|
|
89
|
+
}
|
|
90
|
+
const destDir = path.join(PLUGINS_DIR, pluginName);
|
|
91
|
+
// Remove existing version if present
|
|
92
|
+
if (await fs.pathExists(destDir)) {
|
|
93
|
+
await fs.remove(destDir);
|
|
94
|
+
}
|
|
95
|
+
// Copy the source directory
|
|
96
|
+
await fs.copy(sourceDir, destDir);
|
|
97
|
+
// Generate plugin.json from skills.json
|
|
98
|
+
const pluginManifest = agentSkillsToPlugin(agentManifest);
|
|
99
|
+
await fs.writeJson(path.join(destDir, PLUGIN_MANIFEST_FILE), pluginManifest, { spaces: 2 });
|
|
100
|
+
// Write install metadata
|
|
101
|
+
const installedPlugin = {
|
|
102
|
+
name: pluginName,
|
|
103
|
+
version: agentManifest.version,
|
|
104
|
+
installedAt: new Date().toISOString(),
|
|
105
|
+
source: `agent-skills:${sourceDir}`,
|
|
106
|
+
manifest: pluginManifest,
|
|
107
|
+
};
|
|
108
|
+
await fs.writeJson(path.join(destDir, '.installed.json'), installedPlugin, { spaces: 2 });
|
|
109
|
+
return { success: true, name: pluginName };
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=agent-skills.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-skills.js","sourceRoot":"","sources":["../../src/lib/agent-skills.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { InitOptions, StackClaudeMdEntry } from '../types/index.js';
|
|
2
|
+
export declare function buildClaudeMd(projectName: string, stack: string, entry: StackClaudeMdEntry, contextDir: boolean, modules: string[]): string;
|
|
3
|
+
/**
|
|
4
|
+
* Generate CLAUDE.md content from InitOptions metadata.
|
|
5
|
+
* Pure function — does NOT perform filesystem I/O.
|
|
6
|
+
*/
|
|
7
|
+
export declare function generateClaudeMd(options: InitOptions): string;
|
|
8
|
+
//# sourceMappingURL=claudemd.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claudemd.d.ts","sourceRoot":"","sources":["../../src/lib/claudemd.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAA;AAWxE,wBAAgB,aAAa,CAC3B,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,kBAAkB,EACzB,UAAU,EAAE,OAAO,EACnB,OAAO,EAAE,MAAM,EAAE,GAChB,MAAM,CA4CR;AAMD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,CAe7D"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { STACK_CLAUDEMD_MAP } from '../constants.js';
|
|
2
|
+
// =============================================================================
|
|
3
|
+
// Internal helpers
|
|
4
|
+
// =============================================================================
|
|
5
|
+
function getStackClaudeMd(stack) {
|
|
6
|
+
return STACK_CLAUDEMD_MAP[stack] ?? STACK_CLAUDEMD_MAP['default'];
|
|
7
|
+
}
|
|
8
|
+
export function buildClaudeMd(projectName, stack, entry, contextDir, modules) {
|
|
9
|
+
const lines = [];
|
|
10
|
+
lines.push(`# ${projectName}`);
|
|
11
|
+
lines.push('');
|
|
12
|
+
// Stack section
|
|
13
|
+
lines.push('## Stack');
|
|
14
|
+
lines.push(`- **Language/Runtime**: ${stack}`);
|
|
15
|
+
lines.push(`- **Conventions**: ${entry.conventions}`);
|
|
16
|
+
lines.push(`- **Testing**: ${entry.testFramework}`);
|
|
17
|
+
lines.push('');
|
|
18
|
+
// Skills section
|
|
19
|
+
if (entry.skills.length > 0) {
|
|
20
|
+
lines.push('## Recommended Skills');
|
|
21
|
+
for (const skill of entry.skills) {
|
|
22
|
+
lines.push(`- Load \`~/.claude/skills/${skill}/SKILL.md\` before writing code`);
|
|
23
|
+
}
|
|
24
|
+
lines.push('');
|
|
25
|
+
}
|
|
26
|
+
// Project Context section (conditional on contextDir)
|
|
27
|
+
if (contextDir) {
|
|
28
|
+
lines.push('## Project Context');
|
|
29
|
+
lines.push('- See `.context/INDEX.md` for file structure and entry points');
|
|
30
|
+
lines.push('- See `.context/summary.md` for project overview');
|
|
31
|
+
lines.push('');
|
|
32
|
+
}
|
|
33
|
+
// Conventions section
|
|
34
|
+
lines.push('## Conventions');
|
|
35
|
+
lines.push(`- ${entry.conventions}`);
|
|
36
|
+
lines.push('- Scaffolded with javi-forge — see `.javi-forge/manifest.json` for config');
|
|
37
|
+
lines.push('');
|
|
38
|
+
// Modules section
|
|
39
|
+
if (modules.length > 0) {
|
|
40
|
+
lines.push('## Modules');
|
|
41
|
+
lines.push(`- ${modules.join(', ')}`);
|
|
42
|
+
lines.push('');
|
|
43
|
+
}
|
|
44
|
+
return lines.join('\n');
|
|
45
|
+
}
|
|
46
|
+
// =============================================================================
|
|
47
|
+
// Public API
|
|
48
|
+
// =============================================================================
|
|
49
|
+
/**
|
|
50
|
+
* Generate CLAUDE.md content from InitOptions metadata.
|
|
51
|
+
* Pure function — does NOT perform filesystem I/O.
|
|
52
|
+
*/
|
|
53
|
+
export function generateClaudeMd(options) {
|
|
54
|
+
const { projectName, stack, contextDir } = options;
|
|
55
|
+
const entry = getStackClaudeMd(stack);
|
|
56
|
+
// Collect enabled modules for listing
|
|
57
|
+
const modules = [];
|
|
58
|
+
if (options.aiSync)
|
|
59
|
+
modules.push('ai-sync');
|
|
60
|
+
if (options.sdd)
|
|
61
|
+
modules.push('sdd');
|
|
62
|
+
if (options.ghagga)
|
|
63
|
+
modules.push('ghagga');
|
|
64
|
+
if (options.mock)
|
|
65
|
+
modules.push('mock');
|
|
66
|
+
if (options.contextDir)
|
|
67
|
+
modules.push('context');
|
|
68
|
+
if (options.claudeMd)
|
|
69
|
+
modules.push('claude-md');
|
|
70
|
+
return buildClaudeMd(projectName, stack, entry, contextDir, modules);
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=claudemd.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claudemd.js","sourceRoot":"","sources":["../../src/lib/claudemd.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { CodexTomlEntry, CodexExportResult } from '../types/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* Convert a SKILL.md raw content string into a CodexTomlEntry.
|
|
4
|
+
* Returns null if the file has no valid frontmatter or missing name.
|
|
5
|
+
*/
|
|
6
|
+
export declare function skillToCodexToml(raw: string): CodexTomlEntry | null;
|
|
7
|
+
/**
|
|
8
|
+
* Serialize a CodexTomlEntry to a TOML string.
|
|
9
|
+
*/
|
|
10
|
+
export declare function serializeToml(entry: CodexTomlEntry): string;
|
|
11
|
+
/**
|
|
12
|
+
* Export an installed plugin's SKILL.md files as Codex-compatible TOML subagent files.
|
|
13
|
+
* Writes .toml files to a `codex/` subdirectory inside the plugin directory.
|
|
14
|
+
*/
|
|
15
|
+
export declare function exportPluginAsCodexToml(name: string): Promise<CodexExportResult>;
|
|
16
|
+
//# sourceMappingURL=codex-export.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codex-export.d.ts","sourceRoot":"","sources":["../../src/lib/codex-export.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAS1E;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAoBnE;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,cAAc,GAAG,MAAM,CAa3D;AAID;;;GAGG;AACH,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,iBAAiB,CAAC,CAuD5B"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
import fs from 'fs-extra';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import { PLUGINS_DIR, PLUGIN_MANIFEST_FILE } from '../constants.js';
|
|
4
|
+
import { parseFrontmatter } from './frontmatter.js';
|
|
5
|
+
const DEFAULT_MODEL = 'o4-mini';
|
|
6
|
+
// ── Conversion ─────────────────────────────────────────────────────────────
|
|
7
|
+
/**
|
|
8
|
+
* Convert a SKILL.md raw content string into a CodexTomlEntry.
|
|
9
|
+
* Returns null if the file has no valid frontmatter or missing name.
|
|
10
|
+
*/
|
|
11
|
+
export function skillToCodexToml(raw) {
|
|
12
|
+
const parsed = parseFrontmatter(raw);
|
|
13
|
+
if (!parsed)
|
|
14
|
+
return null;
|
|
15
|
+
const name = parsed.data['name'];
|
|
16
|
+
if (typeof name !== 'string' || !name)
|
|
17
|
+
return null;
|
|
18
|
+
const description = typeof parsed.data['description'] === 'string'
|
|
19
|
+
? parsed.data['description']
|
|
20
|
+
: '';
|
|
21
|
+
const model = typeof parsed.data['model'] === 'string'
|
|
22
|
+
? parsed.data['model']
|
|
23
|
+
: DEFAULT_MODEL;
|
|
24
|
+
const instructions = description
|
|
25
|
+
? `${description}\n\n${parsed.content}`.trim()
|
|
26
|
+
: parsed.content.trim();
|
|
27
|
+
return { name, model, instructions };
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Serialize a CodexTomlEntry to a TOML string.
|
|
31
|
+
*/
|
|
32
|
+
export function serializeToml(entry) {
|
|
33
|
+
const escapedName = escapeTomlString(entry.name);
|
|
34
|
+
const escapedModel = escapeTomlString(entry.model);
|
|
35
|
+
const escapedInstructions = escapeTomlMultiline(entry.instructions);
|
|
36
|
+
return [
|
|
37
|
+
`name = "${escapedName}"`,
|
|
38
|
+
`model = "${escapedModel}"`,
|
|
39
|
+
`instructions = """`,
|
|
40
|
+
escapedInstructions,
|
|
41
|
+
`"""`,
|
|
42
|
+
'',
|
|
43
|
+
].join('\n');
|
|
44
|
+
}
|
|
45
|
+
// ── File I/O ───────────────────────────────────────────────────────────────
|
|
46
|
+
/**
|
|
47
|
+
* Export an installed plugin's SKILL.md files as Codex-compatible TOML subagent files.
|
|
48
|
+
* Writes .toml files to a `codex/` subdirectory inside the plugin directory.
|
|
49
|
+
*/
|
|
50
|
+
export async function exportPluginAsCodexToml(name) {
|
|
51
|
+
const pluginDir = path.join(PLUGINS_DIR, name);
|
|
52
|
+
if (!await fs.pathExists(pluginDir)) {
|
|
53
|
+
return { success: false, error: `plugin "${name}" is not installed` };
|
|
54
|
+
}
|
|
55
|
+
// Read plugin manifest for skill list
|
|
56
|
+
const manifestPath = path.join(pluginDir, PLUGIN_MANIFEST_FILE);
|
|
57
|
+
if (!await fs.pathExists(manifestPath)) {
|
|
58
|
+
return { success: false, error: 'plugin.json not found' };
|
|
59
|
+
}
|
|
60
|
+
let manifest;
|
|
61
|
+
try {
|
|
62
|
+
manifest = await fs.readJson(manifestPath);
|
|
63
|
+
}
|
|
64
|
+
catch {
|
|
65
|
+
return { success: false, error: 'invalid plugin.json' };
|
|
66
|
+
}
|
|
67
|
+
const skillNames = manifest.skills ?? [];
|
|
68
|
+
if (skillNames.length === 0) {
|
|
69
|
+
return { success: false, error: 'plugin has no skills to export' };
|
|
70
|
+
}
|
|
71
|
+
const codexDir = path.join(pluginDir, 'codex');
|
|
72
|
+
await fs.ensureDir(codexDir);
|
|
73
|
+
const writtenFiles = [];
|
|
74
|
+
for (const skillName of skillNames) {
|
|
75
|
+
const skillPath = path.join(pluginDir, 'skills', skillName, 'SKILL.md');
|
|
76
|
+
if (!await fs.pathExists(skillPath))
|
|
77
|
+
continue;
|
|
78
|
+
let raw;
|
|
79
|
+
try {
|
|
80
|
+
raw = await fs.readFile(skillPath, 'utf-8');
|
|
81
|
+
}
|
|
82
|
+
catch {
|
|
83
|
+
continue;
|
|
84
|
+
}
|
|
85
|
+
const entry = skillToCodexToml(raw);
|
|
86
|
+
if (!entry)
|
|
87
|
+
continue;
|
|
88
|
+
const toml = serializeToml(entry);
|
|
89
|
+
const outPath = path.join(codexDir, `${skillName}.toml`);
|
|
90
|
+
await fs.writeFile(outPath, toml, 'utf-8');
|
|
91
|
+
writtenFiles.push(outPath);
|
|
92
|
+
}
|
|
93
|
+
if (writtenFiles.length === 0) {
|
|
94
|
+
return { success: false, error: 'no skills with valid frontmatter found' };
|
|
95
|
+
}
|
|
96
|
+
return { success: true, files: writtenFiles };
|
|
97
|
+
}
|
|
98
|
+
// ── Helpers ────────────────────────────────────────────────────────────────
|
|
99
|
+
function escapeTomlString(value) {
|
|
100
|
+
return value
|
|
101
|
+
.replace(/\\/g, '\\\\')
|
|
102
|
+
.replace(/"/g, '\\"')
|
|
103
|
+
.replace(/\n/g, '\\n');
|
|
104
|
+
}
|
|
105
|
+
function escapeTomlMultiline(value) {
|
|
106
|
+
// In TOML multiline basic strings ("""), only backslashes and triple quotes need escaping
|
|
107
|
+
return value
|
|
108
|
+
.replace(/\\/g, '\\\\')
|
|
109
|
+
.replace(/"""/g, '"\\"\"');
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=codex-export.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codex-export.js","sourceRoot":"","sources":["../../src/lib/codex-export.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { InitOptions, StackContextEntry } from '../types/index.js';
|
|
2
|
+
export declare function buildIndexMd(projectName: string, stackCtx: StackContextEntry, ciProvider: string, memory: string): string;
|
|
3
|
+
export declare function buildSummaryMd(projectName: string, stack: string, ciProvider: string, memory: string, modules: string[]): string;
|
|
4
|
+
/**
|
|
5
|
+
* Generate .context/ directory content from InitOptions metadata.
|
|
6
|
+
* Pure function — does NOT perform filesystem I/O.
|
|
7
|
+
*/
|
|
8
|
+
export declare function generateContextDir(options: InitOptions): Promise<{
|
|
9
|
+
index: string;
|
|
10
|
+
summary: string;
|
|
11
|
+
}>;
|
|
12
|
+
//# sourceMappingURL=context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/lib/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAWvE,wBAAgB,YAAY,CAC1B,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,iBAAiB,EAC3B,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,GACb,MAAM,CAmBR;AAED,wBAAgB,cAAc,CAC5B,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EAAE,GAChB,MAAM,CAqBR;AAMD;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAiB7C"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { STACK_CONTEXT_MAP } from '../constants.js';
|
|
2
|
+
// =============================================================================
|
|
3
|
+
// Internal helpers
|
|
4
|
+
// =============================================================================
|
|
5
|
+
function getStackContext(stack) {
|
|
6
|
+
return STACK_CONTEXT_MAP[stack] ?? STACK_CONTEXT_MAP['default'];
|
|
7
|
+
}
|
|
8
|
+
export function buildIndexMd(projectName, stackCtx, ciProvider, memory) {
|
|
9
|
+
return `# ${projectName} — File Index
|
|
10
|
+
|
|
11
|
+
## Directory Structure
|
|
12
|
+
|
|
13
|
+
\`\`\`
|
|
14
|
+
${stackCtx.tree}
|
|
15
|
+
\`\`\`
|
|
16
|
+
|
|
17
|
+
## Entry Point
|
|
18
|
+
|
|
19
|
+
\`${stackCtx.entryPoint}\`
|
|
20
|
+
|
|
21
|
+
## Conventions
|
|
22
|
+
|
|
23
|
+
- **Stack conventions**: ${stackCtx.conventions}
|
|
24
|
+
- **CI**: ${ciProvider}
|
|
25
|
+
- **Memory**: ${memory}
|
|
26
|
+
`;
|
|
27
|
+
}
|
|
28
|
+
export function buildSummaryMd(projectName, stack, ciProvider, memory, modules) {
|
|
29
|
+
const modulesList = modules.length > 0 ? modules.join(', ') : 'none';
|
|
30
|
+
return `# ${projectName}
|
|
31
|
+
|
|
32
|
+
## Overview
|
|
33
|
+
|
|
34
|
+
${stack}-based project scaffolded with javi-forge.
|
|
35
|
+
|
|
36
|
+
## Stack
|
|
37
|
+
|
|
38
|
+
- **Language/Runtime**: ${stack}
|
|
39
|
+
- **CI**: ${ciProvider}
|
|
40
|
+
- **Memory**: ${memory}
|
|
41
|
+
- **Modules**: ${modulesList}
|
|
42
|
+
|
|
43
|
+
## Key Decisions
|
|
44
|
+
|
|
45
|
+
- Scaffolded with javi-forge
|
|
46
|
+
- AI-ready project structure with .context/ directory
|
|
47
|
+
`;
|
|
48
|
+
}
|
|
49
|
+
// =============================================================================
|
|
50
|
+
// Public API
|
|
51
|
+
// =============================================================================
|
|
52
|
+
/**
|
|
53
|
+
* Generate .context/ directory content from InitOptions metadata.
|
|
54
|
+
* Pure function — does NOT perform filesystem I/O.
|
|
55
|
+
*/
|
|
56
|
+
export async function generateContextDir(options) {
|
|
57
|
+
const { projectName, stack, ciProvider, memory } = options;
|
|
58
|
+
const stackCtx = getStackContext(stack);
|
|
59
|
+
// Collect enabled modules for summary
|
|
60
|
+
const modules = [];
|
|
61
|
+
if (options.aiSync)
|
|
62
|
+
modules.push('ai-sync');
|
|
63
|
+
if (options.sdd)
|
|
64
|
+
modules.push('sdd');
|
|
65
|
+
if (options.ghagga)
|
|
66
|
+
modules.push('ghagga');
|
|
67
|
+
if (options.mock)
|
|
68
|
+
modules.push('mock');
|
|
69
|
+
if (options.contextDir)
|
|
70
|
+
modules.push('context');
|
|
71
|
+
const index = buildIndexMd(projectName, stackCtx, ciProvider, memory);
|
|
72
|
+
const summary = buildSummaryMd(projectName, stack, ciProvider, memory, modules);
|
|
73
|
+
return { index, summary };
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/lib/context.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAEnD,gFAAgF;AAChF,mBAAmB;AACnB,gFAAgF;AAEhF,SAAS,eAAe,CAAC,KAAa;IACpC,OAAO,iBAAiB,CAAC,KAAK,CAAC,IAAI,iBAAiB,CAAC,SAAS,CAAC,CAAA;AACjE,CAAC;AAED,MAAM,UAAU,YAAY,CAC1B,WAAmB,EACnB,QAA2B,EAC3B,UAAkB,EAClB,MAAc;IAEd,OAAO,KAAK,WAAW;;;;;EAKvB,QAAQ,CAAC,IAAI;;;;;IAKX,QAAQ,CAAC,UAAU;;;;2BAII,QAAQ,CAAC,WAAW;YACnC,UAAU;gBACN,MAAM;CACrB,CAAA;AACD,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,WAAmB,EACnB,KAAa,EACb,UAAkB,EAClB,MAAc,EACd,OAAiB;IAEjB,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAA;IAEpE,OAAO,KAAK,WAAW;;;;EAIvB,KAAK;;;;0BAImB,KAAK;YACnB,UAAU;gBACN,MAAM;iBACL,WAAW;;;;;;CAM3B,CAAA;AACD,CAAC;AAED,gFAAgF;AAChF,aAAa;AACb,gFAAgF;AAEhF;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,OAAoB;IAEpB,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAAA;IAE1D,MAAM,QAAQ,GAAG,eAAe,CAAC,KAAK,CAAC,CAAA;IAEvC,sCAAsC;IACtC,MAAM,OAAO,GAAa,EAAE,CAAA;IAC5B,IAAI,OAAO,CAAC,MAAM;QAAE,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IAC3C,IAAI,OAAO,CAAC,GAAG;QAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACpC,IAAI,OAAO,CAAC,MAAM;QAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IAC1C,IAAI,OAAO,CAAC,IAAI;QAAE,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACtC,IAAI,OAAO,CAAC,UAAU;QAAE,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IAE/C,MAAM,KAAK,GAAG,YAAY,CAAC,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,CAAC,CAAA;IACrE,MAAM,OAAO,GAAG,cAAc,CAAC,WAAW,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;IAE/E,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,CAAA;AAC3B,CAAC"}
|
package/dist/lib/plugin.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { PluginValidationResult, InstalledPlugin, PluginRegistryEntry } from '../types/index.js';
|
|
1
|
+
import type { PluginValidationResult, InstalledPlugin, PluginRegistryEntry, PluginSyncResult } from '../types/index.js';
|
|
2
2
|
/**
|
|
3
3
|
* Validate a plugin directory structure and manifest.
|
|
4
4
|
*/
|
|
@@ -31,6 +31,18 @@ export declare function listInstalledPlugins(): Promise<InstalledPlugin[]>;
|
|
|
31
31
|
* Fetch the remote plugin registry and optionally filter by query.
|
|
32
32
|
*/
|
|
33
33
|
export declare function searchRegistry(query?: string): Promise<PluginRegistryEntry[]>;
|
|
34
|
+
/**
|
|
35
|
+
* Detect installed plugins in a project's .javi-forge/plugins/ directory.
|
|
36
|
+
* Returns an array of plugin names (sorted alphabetically).
|
|
37
|
+
*/
|
|
38
|
+
export declare function detectProjectPlugins(projectDir: string): Promise<string[]>;
|
|
39
|
+
/**
|
|
40
|
+
* Sync detected plugins into the project manifest.
|
|
41
|
+
* Returns a report of added, removed, and unchanged plugins.
|
|
42
|
+
*/
|
|
43
|
+
export declare function syncPlugins(projectDir: string, options?: {
|
|
44
|
+
dryRun?: boolean;
|
|
45
|
+
}): Promise<PluginSyncResult>;
|
|
34
46
|
/**
|
|
35
47
|
* Normalize a GitHub source to a git clone URL.
|
|
36
48
|
* Accepts: "org/repo", "https://github.com/org/repo", "github.com/org/repo"
|
package/dist/lib/plugin.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/lib/plugin.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAEV,sBAAsB,EAEtB,eAAe,EAEf,mBAAmB,
|
|
1
|
+
{"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/lib/plugin.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAEV,sBAAsB,EAEtB,eAAe,EAEf,mBAAmB,EACnB,gBAAgB,EAEjB,MAAM,mBAAmB,CAAA;AAW1B;;GAEG;AACH,wBAAsB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC,CA4EvF;AAID;;;GAGG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,MAAM,EACd,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,GACjC,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAgE9D;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,GACjC,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAY/C;AAID;;GAEG;AACH,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC,CAkBvE;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAuBnF;AAID;;;GAGG;AACH,wBAAsB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAsBhF;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAA;CAAO,GACjC,OAAO,CAAC,gBAAgB,CAAC,CAsC3B;AAID;;;GAGG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAkB7D"}
|
package/dist/lib/plugin.js
CHANGED
|
@@ -3,6 +3,7 @@ import path from 'path';
|
|
|
3
3
|
import { execFile } from 'child_process';
|
|
4
4
|
import { promisify } from 'util';
|
|
5
5
|
import { PLUGINS_DIR, PLUGIN_MANIFEST_FILE, PLUGIN_ASSET_DIRS, PLUGIN_REGISTRY_URL } from '../constants.js';
|
|
6
|
+
import { generateAgentSkillsManifest } from './agent-skills.js';
|
|
6
7
|
const execFileAsync = promisify(execFile);
|
|
7
8
|
const KEBAB_RE = /^[a-z0-9]+(-[a-z0-9]+)*$/;
|
|
8
9
|
const SEMVER_RE = /^\d+\.\d+\.\d+$/;
|
|
@@ -131,6 +132,8 @@ export async function installPlugin(source, options = {}) {
|
|
|
131
132
|
manifest: validation.manifest,
|
|
132
133
|
};
|
|
133
134
|
await fs.writeJson(path.join(destDir, '.installed.json'), installedPlugin, { spaces: 2 });
|
|
135
|
+
// Generate Agent Skills spec manifest for cross-agent compatibility
|
|
136
|
+
await generateAgentSkillsManifest(destDir, source).catch(() => { });
|
|
134
137
|
}
|
|
135
138
|
return { success: true, name: pluginName };
|
|
136
139
|
}
|
|
@@ -204,6 +207,71 @@ export async function searchRegistry(query) {
|
|
|
204
207
|
return [];
|
|
205
208
|
}
|
|
206
209
|
}
|
|
210
|
+
// ── Sync ───────────────────────────────────────────────────────────────
|
|
211
|
+
/**
|
|
212
|
+
* Detect installed plugins in a project's .javi-forge/plugins/ directory.
|
|
213
|
+
* Returns an array of plugin names (sorted alphabetically).
|
|
214
|
+
*/
|
|
215
|
+
export async function detectProjectPlugins(projectDir) {
|
|
216
|
+
const pluginsDir = path.join(projectDir, '.javi-forge', 'plugins');
|
|
217
|
+
if (!await fs.pathExists(pluginsDir))
|
|
218
|
+
return [];
|
|
219
|
+
const entries = await fs.readdir(pluginsDir);
|
|
220
|
+
const plugins = [];
|
|
221
|
+
for (const entry of entries) {
|
|
222
|
+
if (entry.startsWith('.'))
|
|
223
|
+
continue;
|
|
224
|
+
const metaPath = path.join(pluginsDir, entry, '.installed.json');
|
|
225
|
+
if (await fs.pathExists(metaPath)) {
|
|
226
|
+
try {
|
|
227
|
+
const meta = await fs.readJson(metaPath);
|
|
228
|
+
if (meta.name) {
|
|
229
|
+
plugins.push(meta.name);
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
catch { /* skip corrupt entries */ }
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
return plugins.sort();
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* Sync detected plugins into the project manifest.
|
|
239
|
+
* Returns a report of added, removed, and unchanged plugins.
|
|
240
|
+
*/
|
|
241
|
+
export async function syncPlugins(projectDir, options = {}) {
|
|
242
|
+
const { dryRun = false } = options;
|
|
243
|
+
const detected = await detectProjectPlugins(projectDir);
|
|
244
|
+
const manifestPath = path.join(projectDir, '.javi-forge', 'manifest.json');
|
|
245
|
+
let manifest;
|
|
246
|
+
if (await fs.pathExists(manifestPath)) {
|
|
247
|
+
manifest = await fs.readJson(manifestPath);
|
|
248
|
+
}
|
|
249
|
+
else {
|
|
250
|
+
// No manifest yet — treat current plugins as empty
|
|
251
|
+
manifest = {
|
|
252
|
+
version: '0.1.0',
|
|
253
|
+
projectName: path.basename(projectDir),
|
|
254
|
+
stack: 'node',
|
|
255
|
+
ciProvider: 'github',
|
|
256
|
+
memory: 'none',
|
|
257
|
+
createdAt: new Date().toISOString(),
|
|
258
|
+
updatedAt: new Date().toISOString(),
|
|
259
|
+
modules: [],
|
|
260
|
+
};
|
|
261
|
+
}
|
|
262
|
+
const previous = new Set(manifest.plugins ?? []);
|
|
263
|
+
const current = new Set(detected);
|
|
264
|
+
const added = detected.filter(p => !previous.has(p));
|
|
265
|
+
const removed = [...previous].filter(p => !current.has(p));
|
|
266
|
+
const unchanged = detected.filter(p => previous.has(p));
|
|
267
|
+
if (!dryRun && (added.length > 0 || removed.length > 0)) {
|
|
268
|
+
manifest.plugins = detected;
|
|
269
|
+
manifest.updatedAt = new Date().toISOString();
|
|
270
|
+
await fs.ensureDir(path.dirname(manifestPath));
|
|
271
|
+
await fs.writeJson(manifestPath, manifest, { spaces: 2 });
|
|
272
|
+
}
|
|
273
|
+
return { added, removed, unchanged };
|
|
274
|
+
}
|
|
207
275
|
// ── Helpers ─────────────────────────────────────────────────────────────────
|
|
208
276
|
/**
|
|
209
277
|
* Normalize a GitHub source to a git clone URL.
|
package/dist/lib/plugin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/lib/plugin.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"plugin.js","sourceRoot":"","sources":["../../src/lib/plugin.ts"],"names":[],"mappings":"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"}
|