@soleri/forge 7.0.0 → 8.1.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/dist/agent-schema.d.ts +6 -6
- package/dist/agent-schema.js +1 -1
- package/dist/agent-schema.js.map +1 -1
- package/dist/compose-claude-md.js +10 -8
- package/dist/compose-claude-md.js.map +1 -1
- package/dist/facades/forge.facade.js +20 -4
- package/dist/facades/forge.facade.js.map +1 -1
- package/dist/scaffold-filetree.js +89 -8
- package/dist/scaffold-filetree.js.map +1 -1
- package/dist/templates/entry-point.js +2 -2
- package/dist/types.d.ts +12 -12
- package/dist/types.js +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +2 -1
- package/src/__tests__/scaffold-filetree.test.ts +17 -3
- package/src/agent-schema.ts +1 -1
- package/src/compose-claude-md.ts +10 -18
- package/src/facades/forge.facade.ts +21 -4
- package/src/scaffold-filetree.ts +92 -9
- package/src/templates/entry-point.ts +2 -2
- package/src/types.ts +1 -1
package/dist/agent-schema.d.ts
CHANGED
|
@@ -221,12 +221,12 @@ export declare const AgentYamlSchema: z.ZodObject<{
|
|
|
221
221
|
/** Search priority (0–1). Higher = results ranked higher. Default: 0.5 */
|
|
222
222
|
priority: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
223
223
|
}, "strip", z.ZodTypeAny, {
|
|
224
|
-
name: string;
|
|
225
224
|
path: string;
|
|
225
|
+
name: string;
|
|
226
226
|
priority: number;
|
|
227
227
|
}, {
|
|
228
|
-
name: string;
|
|
229
228
|
path: string;
|
|
229
|
+
name: string;
|
|
230
230
|
priority?: number | undefined;
|
|
231
231
|
}>, "many">>;
|
|
232
232
|
/** LLM client integration settings */
|
|
@@ -260,9 +260,9 @@ export declare const AgentYamlSchema: z.ZodObject<{
|
|
|
260
260
|
version?: string | undefined;
|
|
261
261
|
}>, "many">>;
|
|
262
262
|
}, "strip", z.ZodTypeAny, {
|
|
263
|
-
name: string;
|
|
264
263
|
id: string;
|
|
265
264
|
description: string;
|
|
265
|
+
name: string;
|
|
266
266
|
role: string;
|
|
267
267
|
domains: string[];
|
|
268
268
|
principles: string[];
|
|
@@ -278,8 +278,8 @@ export declare const AgentYamlSchema: z.ZodObject<{
|
|
|
278
278
|
};
|
|
279
279
|
greeting?: string | undefined;
|
|
280
280
|
vaults?: {
|
|
281
|
-
name: string;
|
|
282
281
|
path: string;
|
|
282
|
+
name: string;
|
|
283
283
|
priority: number;
|
|
284
284
|
}[] | undefined;
|
|
285
285
|
packs?: {
|
|
@@ -288,9 +288,9 @@ export declare const AgentYamlSchema: z.ZodObject<{
|
|
|
288
288
|
version?: string | undefined;
|
|
289
289
|
}[] | undefined;
|
|
290
290
|
}, {
|
|
291
|
-
name: string;
|
|
292
291
|
id: string;
|
|
293
292
|
description: string;
|
|
293
|
+
name: string;
|
|
294
294
|
role: string;
|
|
295
295
|
domains: string[];
|
|
296
296
|
principles: string[];
|
|
@@ -302,8 +302,8 @@ export declare const AgentYamlSchema: z.ZodObject<{
|
|
|
302
302
|
cognee?: boolean | undefined;
|
|
303
303
|
} | undefined;
|
|
304
304
|
vaults?: {
|
|
305
|
-
name: string;
|
|
306
305
|
path: string;
|
|
306
|
+
name: string;
|
|
307
307
|
priority?: number | undefined;
|
|
308
308
|
}[] | undefined;
|
|
309
309
|
setup?: {
|
package/dist/agent-schema.js
CHANGED
|
@@ -44,7 +44,7 @@ const EngineConfigSchema = z.object({
|
|
|
44
44
|
/** Client setup configuration */
|
|
45
45
|
const SetupConfigSchema = z.object({
|
|
46
46
|
/** Target client for MCP registration */
|
|
47
|
-
target: z.enum(SETUP_TARGETS).optional().default('
|
|
47
|
+
target: z.enum(SETUP_TARGETS).optional().default('claude'),
|
|
48
48
|
/** Primary model for the client */
|
|
49
49
|
model: z.string().optional().default('claude-code-sonnet-4'),
|
|
50
50
|
});
|
package/dist/agent-schema.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-schema.js","sourceRoot":"","sources":["../src/agent-schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,yEAAyE;AAEzE,0BAA0B;AAC1B,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,SAAS,EAAE,QAAQ,EAAE,WAAW,CAAU,CAAC;AAGjE,yCAAyC;AACzC,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,CAAU,CAAC;AAGrF,yEAAyE;AAEzE,gCAAgC;AAChC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,kCAAkC;IAClC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,6CAA6C;IAC7C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,0EAA0E;IAC1E,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC;CAC3D,CAAC,CAAC;AAEH,4BAA4B;AAC5B,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChC,kDAAkD;IAClD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,uDAAuD;IACvD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1B,2CAA2C;IAC3C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC/B,CAAC,CAAC;AAEH,2BAA2B;AAC3B,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IAClC,uEAAuE;IACvE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,gDAAgD;IAChD,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IAC9C,kDAAkD;IAClD,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;CAC9C,CAAC,CAAC;AAEH,iCAAiC;AACjC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACjC,yCAAyC;IACzC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"agent-schema.js","sourceRoot":"","sources":["../src/agent-schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
import { readFileSync, readdirSync, existsSync } from 'node:fs';
|
|
8
8
|
import { join } from 'node:path';
|
|
9
9
|
import { parse as parseYaml } from 'yaml';
|
|
10
|
+
import { ENGINE_MODULE_MANIFEST, CORE_KEY_OPS } from '@soleri/core/module-manifest';
|
|
10
11
|
// ─── Main Composer ────────────────────────────────────────────────────
|
|
11
12
|
/**
|
|
12
13
|
* Compose CLAUDE.md from an agent folder.
|
|
@@ -126,14 +127,15 @@ function composeToolsTable(agent, tools) {
|
|
|
126
127
|
}
|
|
127
128
|
}
|
|
128
129
|
else {
|
|
129
|
-
// Placeholder
|
|
130
|
-
|
|
131
|
-
lines.push(`| \`${agent.id}
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
130
|
+
// Placeholder generated from ENGINE_MODULE_MANIFEST (single source of truth)
|
|
131
|
+
const coreOpsStr = CORE_KEY_OPS.map((o) => `\`${o}\``).join(', ');
|
|
132
|
+
lines.push(`| \`${agent.id}_core\` | ${coreOpsStr} |`);
|
|
133
|
+
for (const mod of ENGINE_MODULE_MANIFEST) {
|
|
134
|
+
if (mod.conditional)
|
|
135
|
+
continue;
|
|
136
|
+
const opsStr = mod.keyOps.map((o) => `\`${o}\``).join(', ');
|
|
137
|
+
lines.push(`| \`${agent.id}_${mod.suffix}\` | ${opsStr} |`);
|
|
138
|
+
}
|
|
137
139
|
// Domain facades from packs
|
|
138
140
|
if (agent.packs) {
|
|
139
141
|
for (const pack of agent.packs) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compose-claude-md.js","sourceRoot":"","sources":["../src/compose-claude-md.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAChE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"compose-claude-md.js","sourceRoot":"","sources":["../src/compose-claude-md.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { scaffold, previewScaffold, listAgents } from '../scaffolder.js';
|
|
3
|
+
import { scaffoldFileTree } from '../scaffold-filetree.js';
|
|
3
4
|
import { AgentConfigSchema } from '../types.js';
|
|
5
|
+
import { AgentYamlSchema } from '../agent-schema.js';
|
|
4
6
|
import { installKnowledge } from '../knowledge-installer.js';
|
|
5
7
|
import { addDomain } from '../domain-manager.js';
|
|
6
8
|
export const forgeOps = [
|
|
@@ -17,10 +19,24 @@ export const forgeOps = [
|
|
|
17
19
|
},
|
|
18
20
|
{
|
|
19
21
|
name: 'create',
|
|
20
|
-
description: '
|
|
21
|
-
'
|
|
22
|
-
'
|
|
23
|
-
'After creation:
|
|
22
|
+
description: 'Create a file-tree agent (v7, recommended). ' +
|
|
23
|
+
'Generates a folder with agent.yaml, instructions/, workflows/, and CLAUDE.md. ' +
|
|
24
|
+
'No TypeScript, no build step. Ready to use immediately. ' +
|
|
25
|
+
'After creation: run `soleri install` and restart your host client.',
|
|
26
|
+
schema: AgentYamlSchema.extend({
|
|
27
|
+
outputDir: z.string().describe('Parent directory for the new agent folder'),
|
|
28
|
+
}),
|
|
29
|
+
handler: async (params) => {
|
|
30
|
+
const { outputDir, ...input } = params;
|
|
31
|
+
const config = AgentYamlSchema.parse(input);
|
|
32
|
+
return scaffoldFileTree(config, outputDir);
|
|
33
|
+
},
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
name: 'create_legacy',
|
|
37
|
+
description: '[Deprecated] Scaffold a TypeScript MCP agent project (v6). ' +
|
|
38
|
+
'Prefer "create" for file-tree agents. ' +
|
|
39
|
+
'This path generates TypeScript source, runs npm install + build, and registers MCP server.',
|
|
24
40
|
schema: AgentConfigSchema,
|
|
25
41
|
handler: async (params) => {
|
|
26
42
|
const config = AgentConfigSchema.parse(params);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"forge.facade.js","sourceRoot":"","sources":["../../src/facades/forge.facade.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACzE,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AASjD,MAAM,CAAC,MAAM,QAAQ,GAAY;IAC/B;QACE,IAAI,EAAE,SAAS;QACf,WAAW,EACT,gEAAgE;YAChE,uEAAuE;YACvE,oCAAoC;QACtC,MAAM,EAAE,iBAAiB;QACzB,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YACxB,MAAM,MAAM,GAAG,iBAAiB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAC/C,OAAO,eAAe,CAAC,MAAM,CAAC,CAAC;QACjC,CAAC;KACF;IACD;QACE,IAAI,EAAE,QAAQ;QACd,WAAW,EACT,
|
|
1
|
+
{"version":3,"file":"forge.facade.js","sourceRoot":"","sources":["../../src/facades/forge.facade.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,8 +6,9 @@
|
|
|
6
6
|
*
|
|
7
7
|
* Replaces the old scaffold() that generated TypeScript projects.
|
|
8
8
|
*/
|
|
9
|
-
import { mkdirSync, writeFileSync, existsSync } from 'node:fs';
|
|
10
|
-
import { join } from 'node:path';
|
|
9
|
+
import { mkdirSync, writeFileSync, existsSync, readFileSync, readdirSync } from 'node:fs';
|
|
10
|
+
import { join, dirname } from 'node:path';
|
|
11
|
+
import { fileURLToPath } from 'node:url';
|
|
11
12
|
import { stringify as yamlStringify } from 'yaml';
|
|
12
13
|
import { AgentYamlSchema } from './agent-schema.js';
|
|
13
14
|
import { getEngineRulesContent } from './templates/shared-rules.js';
|
|
@@ -72,8 +73,8 @@ When building a new feature, adding functionality, or creating components.
|
|
|
72
73
|
- soleri_vault op:search_intelligent
|
|
73
74
|
- soleri_vault op:capture_knowledge
|
|
74
75
|
- soleri_vault op:link_entries
|
|
75
|
-
-
|
|
76
|
-
-
|
|
76
|
+
- soleri_plan op:create_plan
|
|
77
|
+
- soleri_plan op:approve_plan
|
|
77
78
|
- soleri_brain op:recommend
|
|
78
79
|
`,
|
|
79
80
|
},
|
|
@@ -125,7 +126,7 @@ When fixing bugs, resolving errors, or addressing regressions.
|
|
|
125
126
|
tools: `tools:
|
|
126
127
|
- soleri_vault op:search_intelligent
|
|
127
128
|
- soleri_vault op:capture_knowledge
|
|
128
|
-
-
|
|
129
|
+
- soleri_plan op:create_plan
|
|
129
130
|
- soleri_brain op:recommend
|
|
130
131
|
`,
|
|
131
132
|
},
|
|
@@ -223,6 +224,18 @@ export function scaffoldFileTree(input, outputDir) {
|
|
|
223
224
|
},
|
|
224
225
|
};
|
|
225
226
|
writeFile(agentDir, '.mcp.json', JSON.stringify(mcpJson, null, 2) + '\n', filesCreated);
|
|
227
|
+
// ─── 3b. Write .opencode.json (OpenCode uses "mcp" not "mcpServers", type "local" not "stdio", command as array) ──
|
|
228
|
+
const opencodeJson = {
|
|
229
|
+
$schema: 'https://opencode.ai/config.json',
|
|
230
|
+
instructions: ['CLAUDE.md'],
|
|
231
|
+
mcp: {
|
|
232
|
+
'soleri-engine': {
|
|
233
|
+
type: 'local',
|
|
234
|
+
command: ['npx', '-y', '@soleri/engine', '--agent', './agent.yaml'],
|
|
235
|
+
},
|
|
236
|
+
},
|
|
237
|
+
};
|
|
238
|
+
writeFile(agentDir, 'opencode.json', JSON.stringify(opencodeJson, null, 2) + '\n', filesCreated);
|
|
226
239
|
// ─── 4. Write .gitignore ────────────────────────────────────
|
|
227
240
|
writeFile(agentDir, '.gitignore', [
|
|
228
241
|
'# Auto-generated — do not commit',
|
|
@@ -254,14 +267,18 @@ export function scaffoldFileTree(input, outputDir) {
|
|
|
254
267
|
writeFile(agentDir, `workflows/${wf.name}/gates.yaml`, wf.gates, filesCreated);
|
|
255
268
|
writeFile(agentDir, `workflows/${wf.name}/tools.yaml`, wf.tools, filesCreated);
|
|
256
269
|
}
|
|
257
|
-
// ─── 8. Write
|
|
270
|
+
// ─── 8. Write knowledge bundles (seed from starter packs if available) ──
|
|
271
|
+
const starterPacksDir = resolveStarterPacksDir();
|
|
272
|
+
let totalSeeded = 0;
|
|
258
273
|
for (const domain of config.domains) {
|
|
274
|
+
const starterEntries = loadStarterEntries(starterPacksDir, domain);
|
|
259
275
|
const bundle = {
|
|
260
276
|
domain,
|
|
261
277
|
version: '1.0.0',
|
|
262
|
-
entries:
|
|
278
|
+
entries: starterEntries,
|
|
263
279
|
};
|
|
264
280
|
writeFile(agentDir, `knowledge/${domain}.json`, JSON.stringify(bundle, null, 2) + '\n', filesCreated);
|
|
281
|
+
totalSeeded += starterEntries.length;
|
|
265
282
|
}
|
|
266
283
|
// ─── 9. Generate CLAUDE.md ──────────────────────────────────
|
|
267
284
|
const { content: claudeMd } = composeClaudeMd(agentDir);
|
|
@@ -272,6 +289,7 @@ export function scaffoldFileTree(input, outputDir) {
|
|
|
272
289
|
'',
|
|
273
290
|
` Files: ${filesCreated.length}`,
|
|
274
291
|
` Domains: ${config.domains.join(', ')}`,
|
|
292
|
+
` Knowledge: ${totalSeeded} starter entries seeded`,
|
|
275
293
|
` Workflows: ${BUILTIN_WORKFLOWS.map((w) => w.name).join(', ')}`,
|
|
276
294
|
'',
|
|
277
295
|
'Next steps:',
|
|
@@ -334,7 +352,7 @@ function buildAgentYaml(config) {
|
|
|
334
352
|
}
|
|
335
353
|
// Setup — only include non-defaults
|
|
336
354
|
const setup = {};
|
|
337
|
-
if (config.setup?.target && config.setup.target !== '
|
|
355
|
+
if (config.setup?.target && config.setup.target !== 'claude')
|
|
338
356
|
setup.target = config.setup.target;
|
|
339
357
|
if (config.setup?.model && config.setup.model !== 'claude-code-sonnet-4')
|
|
340
358
|
setup.model = config.setup.model;
|
|
@@ -346,4 +364,67 @@ function buildAgentYaml(config) {
|
|
|
346
364
|
}
|
|
347
365
|
return yaml;
|
|
348
366
|
}
|
|
367
|
+
// ─── Starter Pack Helpers ────────────────────────────────────────────
|
|
368
|
+
/** Domain aliases — map agent domains to starter pack directories. */
|
|
369
|
+
const DOMAIN_TO_STARTER = {
|
|
370
|
+
// design starter
|
|
371
|
+
frontend: 'design',
|
|
372
|
+
design: 'design',
|
|
373
|
+
'ui-design': 'design',
|
|
374
|
+
accessibility: 'design',
|
|
375
|
+
styling: 'design',
|
|
376
|
+
react: 'design',
|
|
377
|
+
'component-patterns': 'design',
|
|
378
|
+
'responsive-design': 'design',
|
|
379
|
+
// security starter
|
|
380
|
+
security: 'security',
|
|
381
|
+
auth: 'security',
|
|
382
|
+
authentication: 'security',
|
|
383
|
+
// architecture starter
|
|
384
|
+
architecture: 'architecture',
|
|
385
|
+
'api-design': 'architecture',
|
|
386
|
+
database: 'architecture',
|
|
387
|
+
backend: 'architecture',
|
|
388
|
+
infrastructure: 'architecture',
|
|
389
|
+
};
|
|
390
|
+
function resolveStarterPacksDir() {
|
|
391
|
+
// Try repo-relative path (monorepo development)
|
|
392
|
+
const forgeDir = dirname(fileURLToPath(import.meta.url));
|
|
393
|
+
const candidates = [
|
|
394
|
+
join(forgeDir, '..', '..', '..', 'knowledge-packs', 'starter'),
|
|
395
|
+
join(forgeDir, '..', '..', 'knowledge-packs', 'starter'),
|
|
396
|
+
];
|
|
397
|
+
for (const dir of candidates) {
|
|
398
|
+
if (existsSync(dir))
|
|
399
|
+
return dir;
|
|
400
|
+
}
|
|
401
|
+
return null;
|
|
402
|
+
}
|
|
403
|
+
function loadStarterEntries(starterDir, domain) {
|
|
404
|
+
if (!starterDir)
|
|
405
|
+
return [];
|
|
406
|
+
const packName = DOMAIN_TO_STARTER[domain];
|
|
407
|
+
if (!packName)
|
|
408
|
+
return [];
|
|
409
|
+
const vaultDir = join(starterDir, packName, 'vault');
|
|
410
|
+
if (!existsSync(vaultDir))
|
|
411
|
+
return [];
|
|
412
|
+
const entries = [];
|
|
413
|
+
try {
|
|
414
|
+
const files = readdirSync(vaultDir).filter((f) => f.endsWith('.json'));
|
|
415
|
+
for (const file of files) {
|
|
416
|
+
const data = JSON.parse(readFileSync(join(vaultDir, file), 'utf-8'));
|
|
417
|
+
if (Array.isArray(data)) {
|
|
418
|
+
entries.push(...data);
|
|
419
|
+
}
|
|
420
|
+
else if (data.entries && Array.isArray(data.entries)) {
|
|
421
|
+
entries.push(...data.entries);
|
|
422
|
+
}
|
|
423
|
+
}
|
|
424
|
+
}
|
|
425
|
+
catch {
|
|
426
|
+
// Starter pack unavailable — return empty
|
|
427
|
+
}
|
|
428
|
+
return entries;
|
|
429
|
+
}
|
|
349
430
|
//# sourceMappingURL=scaffold-filetree.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scaffold-filetree.js","sourceRoot":"","sources":["../src/scaffold-filetree.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"scaffold-filetree.js","sourceRoot":"","sources":["../src/scaffold-filetree.ts"],"names":[],"mappings":"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"}
|
|
@@ -254,12 +254,12 @@ ${hasDomainPacks
|
|
|
254
254
|
const domainPacks = await loadDomainPacksFromConfig(${JSON.stringify(config.domainPacks)});
|
|
255
255
|
console.error(\`[\${tag}] Loaded \${domainPacks.length} domain packs\`);
|
|
256
256
|
for (const pack of domainPacks) {
|
|
257
|
-
|
|
257
|
+
const packRuntime = createPackRuntime(runtime);
|
|
258
|
+
if (pack.onActivate) await pack.onActivate(packRuntime, runtime);
|
|
258
259
|
}
|
|
259
260
|
|
|
260
261
|
// ─── Capability Registry ─────────────────────────────────────
|
|
261
262
|
const capabilityRegistry = new CapabilityRegistry();
|
|
262
|
-
const packRuntime = createPackRuntime(runtime);
|
|
263
263
|
|
|
264
264
|
// Register domain pack capabilities
|
|
265
265
|
for (const pack of domainPacks) {
|
package/dist/types.d.ts
CHANGED
|
@@ -59,37 +59,37 @@ export declare const AgentConfigSchema: z.ZodObject<{
|
|
|
59
59
|
/** Search priority (0-1). Higher = results ranked higher. Default: 0.5 */
|
|
60
60
|
priority: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
61
61
|
}, "strip", z.ZodTypeAny, {
|
|
62
|
-
name: string;
|
|
63
62
|
path: string;
|
|
63
|
+
name: string;
|
|
64
64
|
priority: number;
|
|
65
65
|
}, {
|
|
66
|
-
name: string;
|
|
67
66
|
path: string;
|
|
67
|
+
name: string;
|
|
68
68
|
priority?: number | undefined;
|
|
69
69
|
}>, "many">>;
|
|
70
70
|
/** @deprecated Use vaults[] instead. Shorthand for a single shared vault at priority 0.6. */
|
|
71
71
|
sharedVaultPath: z.ZodOptional<z.ZodString>;
|
|
72
72
|
}, "strip", z.ZodTypeAny, {
|
|
73
|
-
name: string;
|
|
74
|
-
cognee: boolean;
|
|
75
|
-
model: string;
|
|
76
73
|
id: string;
|
|
77
74
|
description: string;
|
|
75
|
+
name: string;
|
|
78
76
|
role: string;
|
|
79
77
|
domains: string[];
|
|
80
78
|
principles: string[];
|
|
81
79
|
tone: "precise" | "mentor" | "pragmatic";
|
|
80
|
+
cognee: boolean;
|
|
81
|
+
model: string;
|
|
82
82
|
outputDir: string;
|
|
83
83
|
setupTarget: "claude" | "codex" | "opencode" | "both" | "all";
|
|
84
84
|
telegram: boolean;
|
|
85
85
|
greeting?: string | undefined;
|
|
86
86
|
vaults?: {
|
|
87
|
-
name: string;
|
|
88
87
|
path: string;
|
|
88
|
+
name: string;
|
|
89
89
|
priority: number;
|
|
90
90
|
}[] | undefined;
|
|
91
|
-
skills?: string[] | undefined;
|
|
92
91
|
hookPacks?: string[] | undefined;
|
|
92
|
+
skills?: string[] | undefined;
|
|
93
93
|
domainPacks?: {
|
|
94
94
|
name: string;
|
|
95
95
|
package: string;
|
|
@@ -97,24 +97,24 @@ export declare const AgentConfigSchema: z.ZodObject<{
|
|
|
97
97
|
}[] | undefined;
|
|
98
98
|
sharedVaultPath?: string | undefined;
|
|
99
99
|
}, {
|
|
100
|
-
name: string;
|
|
101
100
|
id: string;
|
|
102
101
|
description: string;
|
|
102
|
+
name: string;
|
|
103
103
|
role: string;
|
|
104
104
|
domains: string[];
|
|
105
105
|
principles: string[];
|
|
106
|
-
cognee?: boolean | undefined;
|
|
107
|
-
model?: string | undefined;
|
|
108
106
|
tone?: "precise" | "mentor" | "pragmatic" | undefined;
|
|
109
107
|
greeting?: string | undefined;
|
|
108
|
+
cognee?: boolean | undefined;
|
|
110
109
|
vaults?: {
|
|
111
|
-
name: string;
|
|
112
110
|
path: string;
|
|
111
|
+
name: string;
|
|
113
112
|
priority?: number | undefined;
|
|
114
113
|
}[] | undefined;
|
|
115
|
-
|
|
114
|
+
model?: string | undefined;
|
|
116
115
|
outputDir?: string | undefined;
|
|
117
116
|
hookPacks?: string[] | undefined;
|
|
117
|
+
skills?: string[] | undefined;
|
|
118
118
|
setupTarget?: "claude" | "codex" | "opencode" | "both" | "all" | undefined;
|
|
119
119
|
telegram?: boolean | undefined;
|
|
120
120
|
domainPacks?: {
|
package/dist/types.js
CHANGED
|
@@ -43,7 +43,7 @@ export const AgentConfigSchema = z.object({
|
|
|
43
43
|
/** Primary model for the coder agent */
|
|
44
44
|
model: z.string().optional().default('claude-code-sonnet-4'),
|
|
45
45
|
/** AI client setup target: Claude Code, Codex, or both */
|
|
46
|
-
setupTarget: z.enum(SETUP_TARGETS).optional().default('
|
|
46
|
+
setupTarget: z.enum(SETUP_TARGETS).optional().default('claude'),
|
|
47
47
|
/** Enable Telegram transport scaffolding. Default: false. */
|
|
48
48
|
telegram: z.boolean().optional().default(false),
|
|
49
49
|
/** Enable Cognee vector search integration. Default: false. */
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,+CAA+C;AAC/C,MAAM,KAAK,GAAG,CAAC,SAAS,EAAE,QAAQ,EAAE,WAAW,CAAU,CAAC;AAE1D,uDAAuD;AACvD,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,CAAU,CAAC;AAGrF,sDAAsD;AACtD,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,sBAAsB;IACtB,oBAAoB;IACpB,wBAAwB;IACxB,uBAAuB;IACvB,iBAAiB;IACjB,eAAe;IACf,SAAS;IACT,cAAc;IACd,YAAY;IACZ,kBAAkB;CACV,CAAC;AAEX,0DAA0D;AAC1D,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,yEAAyE;IACzE,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,mBAAmB,EAAE,gDAAgD,CAAC;IAC3F,kCAAkC;IAClC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;IAC/B,gCAAgC;IAChC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IAChC,iDAAiD;IACjD,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IACxC,0CAA0C;IAC1C,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;IAClD,0DAA0D;IAC1D,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;IAC9C,wDAAwD;IACxD,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC;IACnD,gFAAgF;IAChF,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;IAChD,oFAAoF;IACpF,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;IAC9D,yDAAyD;IACzD,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACzC,kFAAkF;IAClF,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IACtC,wCAAwC;IACxC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,sBAAsB,CAAC;IAC5D,0DAA0D;IAC1D,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@soleri/forge",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "8.1.0",
|
|
4
4
|
"description": "Scaffold AI agents that learn, remember, and grow with you.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"agent",
|
|
@@ -51,6 +51,7 @@
|
|
|
51
51
|
},
|
|
52
52
|
"dependencies": {
|
|
53
53
|
"@modelcontextprotocol/sdk": "^1.12.1",
|
|
54
|
+
"@soleri/core": "^8.0.0",
|
|
54
55
|
"yaml": "^2.8.2",
|
|
55
56
|
"zod": "^3.24.2"
|
|
56
57
|
},
|
|
@@ -43,6 +43,7 @@ describe('scaffoldFileTree', () => {
|
|
|
43
43
|
// Core files exist
|
|
44
44
|
expect(existsSync(join(result.agentDir, 'agent.yaml'))).toBe(true);
|
|
45
45
|
expect(existsSync(join(result.agentDir, '.mcp.json'))).toBe(true);
|
|
46
|
+
expect(existsSync(join(result.agentDir, 'opencode.json'))).toBe(true);
|
|
46
47
|
expect(existsSync(join(result.agentDir, '.gitignore'))).toBe(true);
|
|
47
48
|
expect(existsSync(join(result.agentDir, 'CLAUDE.md'))).toBe(true);
|
|
48
49
|
|
|
@@ -103,6 +104,19 @@ describe('scaffoldFileTree', () => {
|
|
|
103
104
|
expect(parsed.mcpServers['soleri-engine'].args).toContain('./agent.yaml');
|
|
104
105
|
});
|
|
105
106
|
|
|
107
|
+
it('generates valid opencode.json for OpenCode', () => {
|
|
108
|
+
const result = scaffoldFileTree(MINIMAL_CONFIG, tempDir);
|
|
109
|
+
expect(result.success).toBe(true);
|
|
110
|
+
|
|
111
|
+
const content = readFileSync(join(result.agentDir, 'opencode.json'), 'utf-8');
|
|
112
|
+
const parsed = JSON.parse(content);
|
|
113
|
+
|
|
114
|
+
expect(parsed.$schema).toBe('https://opencode.ai/config.json');
|
|
115
|
+
expect(parsed.mcp['soleri-engine']).toBeDefined();
|
|
116
|
+
expect(parsed.mcp['soleri-engine'].type).toBe('local');
|
|
117
|
+
expect(parsed.instructions).toContain('CLAUDE.md');
|
|
118
|
+
});
|
|
119
|
+
|
|
106
120
|
it('generates engine rules in instructions/_engine.md', () => {
|
|
107
121
|
const result = scaffoldFileTree(MINIMAL_CONFIG, tempDir);
|
|
108
122
|
expect(result.success).toBe(true);
|
|
@@ -208,7 +222,7 @@ describe('scaffoldFileTree', () => {
|
|
|
208
222
|
|
|
209
223
|
// tone: pragmatic is the default — should NOT appear
|
|
210
224
|
expect(content).not.toContain('tone:');
|
|
211
|
-
// setup.target:
|
|
225
|
+
// setup.target: claude is the default — should NOT appear
|
|
212
226
|
expect(content).not.toContain('target:');
|
|
213
227
|
// engine.learning: true is the default — should NOT appear
|
|
214
228
|
expect(content).not.toContain('learning:');
|
|
@@ -219,7 +233,7 @@ describe('scaffoldFileTree', () => {
|
|
|
219
233
|
{
|
|
220
234
|
...MINIMAL_CONFIG,
|
|
221
235
|
tone: 'precise',
|
|
222
|
-
setup: { target: '
|
|
236
|
+
setup: { target: 'opencode', model: 'claude-code-opus-4' },
|
|
223
237
|
engine: { cognee: true },
|
|
224
238
|
},
|
|
225
239
|
tempDir,
|
|
@@ -230,7 +244,7 @@ describe('scaffoldFileTree', () => {
|
|
|
230
244
|
const parsed = parseYaml(content);
|
|
231
245
|
|
|
232
246
|
expect(parsed.tone).toBe('precise');
|
|
233
|
-
expect(parsed.setup.target).toBe('
|
|
247
|
+
expect(parsed.setup.target).toBe('opencode');
|
|
234
248
|
expect(parsed.setup.model).toBe('claude-code-opus-4');
|
|
235
249
|
expect(parsed.engine.cognee).toBe(true);
|
|
236
250
|
});
|
package/src/agent-schema.ts
CHANGED
|
@@ -55,7 +55,7 @@ const EngineConfigSchema = z.object({
|
|
|
55
55
|
/** Client setup configuration */
|
|
56
56
|
const SetupConfigSchema = z.object({
|
|
57
57
|
/** Target client for MCP registration */
|
|
58
|
-
target: z.enum(SETUP_TARGETS).optional().default('
|
|
58
|
+
target: z.enum(SETUP_TARGETS).optional().default('claude'),
|
|
59
59
|
/** Primary model for the client */
|
|
60
60
|
model: z.string().optional().default('claude-code-sonnet-4'),
|
|
61
61
|
});
|
package/src/compose-claude-md.ts
CHANGED
|
@@ -9,6 +9,7 @@ import { readFileSync, readdirSync, existsSync } from 'node:fs';
|
|
|
9
9
|
import { join } from 'node:path';
|
|
10
10
|
import { parse as parseYaml } from 'yaml';
|
|
11
11
|
import type { AgentYaml } from './agent-schema.js';
|
|
12
|
+
import { ENGINE_MODULE_MANIFEST, CORE_KEY_OPS } from '@soleri/core/module-manifest';
|
|
12
13
|
|
|
13
14
|
// ─── Types ────────────────────────────────────────────────────────────
|
|
14
15
|
|
|
@@ -160,24 +161,15 @@ function composeToolsTable(agent: AgentYaml, tools?: ToolEntry[]): string {
|
|
|
160
161
|
lines.push(`| \`${tool.facade}\` | ${opsStr}${suffix} |`);
|
|
161
162
|
}
|
|
162
163
|
} else {
|
|
163
|
-
// Placeholder
|
|
164
|
-
|
|
165
|
-
lines.push(
|
|
166
|
-
|
|
167
|
-
)
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
`| \`${agent.id}
|
|
171
|
-
|
|
172
|
-
lines.push(
|
|
173
|
-
`| \`${agent.id}_memory\` | \`memory_search\`, \`memory_capture\`, \`session_capture\` |`,
|
|
174
|
-
);
|
|
175
|
-
lines.push(
|
|
176
|
-
`| \`${agent.id}_curator\` | \`curator_groom\`, \`curator_status\`, \`curator_health\` |`,
|
|
177
|
-
);
|
|
178
|
-
lines.push(
|
|
179
|
-
`| \`${agent.id}_admin\` | \`admin_health\`, \`admin_tool_list\`, \`admin_diagnostic\` |`,
|
|
180
|
-
);
|
|
164
|
+
// Placeholder generated from ENGINE_MODULE_MANIFEST (single source of truth)
|
|
165
|
+
const coreOpsStr = CORE_KEY_OPS.map((o) => `\`${o}\``).join(', ');
|
|
166
|
+
lines.push(`| \`${agent.id}_core\` | ${coreOpsStr} |`);
|
|
167
|
+
|
|
168
|
+
for (const mod of ENGINE_MODULE_MANIFEST) {
|
|
169
|
+
if (mod.conditional) continue;
|
|
170
|
+
const opsStr = mod.keyOps.map((o) => `\`${o}\``).join(', ');
|
|
171
|
+
lines.push(`| \`${agent.id}_${mod.suffix}\` | ${opsStr} |`);
|
|
172
|
+
}
|
|
181
173
|
|
|
182
174
|
// Domain facades from packs
|
|
183
175
|
if (agent.packs) {
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
2
|
import { scaffold, previewScaffold, listAgents } from '../scaffolder.js';
|
|
3
|
+
import { scaffoldFileTree } from '../scaffold-filetree.js';
|
|
3
4
|
import { AgentConfigSchema } from '../types.js';
|
|
5
|
+
import { AgentYamlSchema } from '../agent-schema.js';
|
|
4
6
|
import { installKnowledge } from '../knowledge-installer.js';
|
|
5
7
|
import { addDomain } from '../domain-manager.js';
|
|
6
8
|
|
|
@@ -27,10 +29,25 @@ export const forgeOps: OpDef[] = [
|
|
|
27
29
|
{
|
|
28
30
|
name: 'create',
|
|
29
31
|
description:
|
|
30
|
-
'
|
|
31
|
-
'
|
|
32
|
-
'
|
|
33
|
-
'After creation:
|
|
32
|
+
'Create a file-tree agent (v7, recommended). ' +
|
|
33
|
+
'Generates a folder with agent.yaml, instructions/, workflows/, and CLAUDE.md. ' +
|
|
34
|
+
'No TypeScript, no build step. Ready to use immediately. ' +
|
|
35
|
+
'After creation: run `soleri install` and restart your host client.',
|
|
36
|
+
schema: AgentYamlSchema.extend({
|
|
37
|
+
outputDir: z.string().describe('Parent directory for the new agent folder'),
|
|
38
|
+
}),
|
|
39
|
+
handler: async (params) => {
|
|
40
|
+
const { outputDir, ...input } = params as Record<string, unknown> & { outputDir: string };
|
|
41
|
+
const config = AgentYamlSchema.parse(input);
|
|
42
|
+
return scaffoldFileTree(config, outputDir);
|
|
43
|
+
},
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
name: 'create_legacy',
|
|
47
|
+
description:
|
|
48
|
+
'[Deprecated] Scaffold a TypeScript MCP agent project (v6). ' +
|
|
49
|
+
'Prefer "create" for file-tree agents. ' +
|
|
50
|
+
'This path generates TypeScript source, runs npm install + build, and registers MCP server.',
|
|
34
51
|
schema: AgentConfigSchema,
|
|
35
52
|
handler: async (params) => {
|
|
36
53
|
const config = AgentConfigSchema.parse(params);
|
package/src/scaffold-filetree.ts
CHANGED
|
@@ -7,8 +7,9 @@
|
|
|
7
7
|
* Replaces the old scaffold() that generated TypeScript projects.
|
|
8
8
|
*/
|
|
9
9
|
|
|
10
|
-
import { mkdirSync, writeFileSync, existsSync } from 'node:fs';
|
|
11
|
-
import { join } from 'node:path';
|
|
10
|
+
import { mkdirSync, writeFileSync, existsSync, readFileSync, readdirSync } from 'node:fs';
|
|
11
|
+
import { join, dirname } from 'node:path';
|
|
12
|
+
import { fileURLToPath } from 'node:url';
|
|
12
13
|
import { stringify as yamlStringify } from 'yaml';
|
|
13
14
|
import type { AgentYaml, AgentYamlInput } from './agent-schema.js';
|
|
14
15
|
import { AgentYamlSchema } from './agent-schema.js';
|
|
@@ -93,8 +94,8 @@ When building a new feature, adding functionality, or creating components.
|
|
|
93
94
|
- soleri_vault op:search_intelligent
|
|
94
95
|
- soleri_vault op:capture_knowledge
|
|
95
96
|
- soleri_vault op:link_entries
|
|
96
|
-
-
|
|
97
|
-
-
|
|
97
|
+
- soleri_plan op:create_plan
|
|
98
|
+
- soleri_plan op:approve_plan
|
|
98
99
|
- soleri_brain op:recommend
|
|
99
100
|
`,
|
|
100
101
|
},
|
|
@@ -146,7 +147,7 @@ When fixing bugs, resolving errors, or addressing regressions.
|
|
|
146
147
|
tools: `tools:
|
|
147
148
|
- soleri_vault op:search_intelligent
|
|
148
149
|
- soleri_vault op:capture_knowledge
|
|
149
|
-
-
|
|
150
|
+
- soleri_plan op:create_plan
|
|
150
151
|
- soleri_brain op:recommend
|
|
151
152
|
`,
|
|
152
153
|
},
|
|
@@ -254,6 +255,19 @@ export function scaffoldFileTree(input: AgentYamlInput, outputDir: string): File
|
|
|
254
255
|
};
|
|
255
256
|
writeFile(agentDir, '.mcp.json', JSON.stringify(mcpJson, null, 2) + '\n', filesCreated);
|
|
256
257
|
|
|
258
|
+
// ─── 3b. Write .opencode.json (OpenCode uses "mcp" not "mcpServers", type "local" not "stdio", command as array) ──
|
|
259
|
+
const opencodeJson = {
|
|
260
|
+
$schema: 'https://opencode.ai/config.json',
|
|
261
|
+
instructions: ['CLAUDE.md'],
|
|
262
|
+
mcp: {
|
|
263
|
+
'soleri-engine': {
|
|
264
|
+
type: 'local',
|
|
265
|
+
command: ['npx', '-y', '@soleri/engine', '--agent', './agent.yaml'],
|
|
266
|
+
},
|
|
267
|
+
},
|
|
268
|
+
};
|
|
269
|
+
writeFile(agentDir, 'opencode.json', JSON.stringify(opencodeJson, null, 2) + '\n', filesCreated);
|
|
270
|
+
|
|
257
271
|
// ─── 4. Write .gitignore ────────────────────────────────────
|
|
258
272
|
writeFile(
|
|
259
273
|
agentDir,
|
|
@@ -294,12 +308,16 @@ export function scaffoldFileTree(input: AgentYamlInput, outputDir: string): File
|
|
|
294
308
|
writeFile(agentDir, `workflows/${wf.name}/tools.yaml`, wf.tools, filesCreated);
|
|
295
309
|
}
|
|
296
310
|
|
|
297
|
-
// ─── 8. Write
|
|
311
|
+
// ─── 8. Write knowledge bundles (seed from starter packs if available) ──
|
|
312
|
+
const starterPacksDir = resolveStarterPacksDir();
|
|
313
|
+
let totalSeeded = 0;
|
|
314
|
+
|
|
298
315
|
for (const domain of config.domains) {
|
|
316
|
+
const starterEntries = loadStarterEntries(starterPacksDir, domain);
|
|
299
317
|
const bundle = {
|
|
300
318
|
domain,
|
|
301
319
|
version: '1.0.0',
|
|
302
|
-
entries:
|
|
320
|
+
entries: starterEntries,
|
|
303
321
|
};
|
|
304
322
|
writeFile(
|
|
305
323
|
agentDir,
|
|
@@ -307,6 +325,7 @@ export function scaffoldFileTree(input: AgentYamlInput, outputDir: string): File
|
|
|
307
325
|
JSON.stringify(bundle, null, 2) + '\n',
|
|
308
326
|
filesCreated,
|
|
309
327
|
);
|
|
328
|
+
totalSeeded += starterEntries.length;
|
|
310
329
|
}
|
|
311
330
|
|
|
312
331
|
// ─── 9. Generate CLAUDE.md ──────────────────────────────────
|
|
@@ -319,6 +338,7 @@ export function scaffoldFileTree(input: AgentYamlInput, outputDir: string): File
|
|
|
319
338
|
'',
|
|
320
339
|
` Files: ${filesCreated.length}`,
|
|
321
340
|
` Domains: ${config.domains.join(', ')}`,
|
|
341
|
+
` Knowledge: ${totalSeeded} starter entries seeded`,
|
|
322
342
|
` Workflows: ${BUILTIN_WORKFLOWS.map((w) => w.name).join(', ')}`,
|
|
323
343
|
'',
|
|
324
344
|
'Next steps:',
|
|
@@ -394,8 +414,7 @@ function buildAgentYaml(config: AgentYaml): Record<string, unknown> {
|
|
|
394
414
|
|
|
395
415
|
// Setup — only include non-defaults
|
|
396
416
|
const setup: Record<string, unknown> = {};
|
|
397
|
-
if (config.setup?.target && config.setup.target !== '
|
|
398
|
-
setup.target = config.setup.target;
|
|
417
|
+
if (config.setup?.target && config.setup.target !== 'claude') setup.target = config.setup.target;
|
|
399
418
|
if (config.setup?.model && config.setup.model !== 'claude-code-sonnet-4')
|
|
400
419
|
setup.model = config.setup.model;
|
|
401
420
|
if (Object.keys(setup).length > 0) yaml.setup = setup;
|
|
@@ -407,3 +426,67 @@ function buildAgentYaml(config: AgentYaml): Record<string, unknown> {
|
|
|
407
426
|
|
|
408
427
|
return yaml;
|
|
409
428
|
}
|
|
429
|
+
|
|
430
|
+
// ─── Starter Pack Helpers ────────────────────────────────────────────
|
|
431
|
+
|
|
432
|
+
/** Domain aliases — map agent domains to starter pack directories. */
|
|
433
|
+
const DOMAIN_TO_STARTER: Record<string, string> = {
|
|
434
|
+
// design starter
|
|
435
|
+
frontend: 'design',
|
|
436
|
+
design: 'design',
|
|
437
|
+
'ui-design': 'design',
|
|
438
|
+
accessibility: 'design',
|
|
439
|
+
styling: 'design',
|
|
440
|
+
react: 'design',
|
|
441
|
+
'component-patterns': 'design',
|
|
442
|
+
'responsive-design': 'design',
|
|
443
|
+
// security starter
|
|
444
|
+
security: 'security',
|
|
445
|
+
auth: 'security',
|
|
446
|
+
authentication: 'security',
|
|
447
|
+
// architecture starter
|
|
448
|
+
architecture: 'architecture',
|
|
449
|
+
'api-design': 'architecture',
|
|
450
|
+
database: 'architecture',
|
|
451
|
+
backend: 'architecture',
|
|
452
|
+
infrastructure: 'architecture',
|
|
453
|
+
};
|
|
454
|
+
|
|
455
|
+
function resolveStarterPacksDir(): string | null {
|
|
456
|
+
// Try repo-relative path (monorepo development)
|
|
457
|
+
const forgeDir = dirname(fileURLToPath(import.meta.url));
|
|
458
|
+
const candidates = [
|
|
459
|
+
join(forgeDir, '..', '..', '..', 'knowledge-packs', 'starter'),
|
|
460
|
+
join(forgeDir, '..', '..', 'knowledge-packs', 'starter'),
|
|
461
|
+
];
|
|
462
|
+
for (const dir of candidates) {
|
|
463
|
+
if (existsSync(dir)) return dir;
|
|
464
|
+
}
|
|
465
|
+
return null;
|
|
466
|
+
}
|
|
467
|
+
|
|
468
|
+
function loadStarterEntries(starterDir: string | null, domain: string): unknown[] {
|
|
469
|
+
if (!starterDir) return [];
|
|
470
|
+
|
|
471
|
+
const packName = DOMAIN_TO_STARTER[domain];
|
|
472
|
+
if (!packName) return [];
|
|
473
|
+
|
|
474
|
+
const vaultDir = join(starterDir, packName, 'vault');
|
|
475
|
+
if (!existsSync(vaultDir)) return [];
|
|
476
|
+
|
|
477
|
+
const entries: unknown[] = [];
|
|
478
|
+
try {
|
|
479
|
+
const files = readdirSync(vaultDir).filter((f: string) => f.endsWith('.json'));
|
|
480
|
+
for (const file of files) {
|
|
481
|
+
const data = JSON.parse(readFileSync(join(vaultDir, file), 'utf-8'));
|
|
482
|
+
if (Array.isArray(data)) {
|
|
483
|
+
entries.push(...data);
|
|
484
|
+
} else if (data.entries && Array.isArray(data.entries)) {
|
|
485
|
+
entries.push(...data.entries);
|
|
486
|
+
}
|
|
487
|
+
}
|
|
488
|
+
} catch {
|
|
489
|
+
// Starter pack unavailable — return empty
|
|
490
|
+
}
|
|
491
|
+
return entries;
|
|
492
|
+
}
|
|
@@ -263,12 +263,12 @@ ${
|
|
|
263
263
|
const domainPacks = await loadDomainPacksFromConfig(${JSON.stringify(config.domainPacks)});
|
|
264
264
|
console.error(\`[\${tag}] Loaded \${domainPacks.length} domain packs\`);
|
|
265
265
|
for (const pack of domainPacks) {
|
|
266
|
-
|
|
266
|
+
const packRuntime = createPackRuntime(runtime);
|
|
267
|
+
if (pack.onActivate) await pack.onActivate(packRuntime, runtime);
|
|
267
268
|
}
|
|
268
269
|
|
|
269
270
|
// ─── Capability Registry ─────────────────────────────────────
|
|
270
271
|
const capabilityRegistry = new CapabilityRegistry();
|
|
271
|
-
const packRuntime = createPackRuntime(runtime);
|
|
272
272
|
|
|
273
273
|
// Register domain pack capabilities
|
|
274
274
|
for (const pack of domainPacks) {
|
package/src/types.ts
CHANGED
|
@@ -48,7 +48,7 @@ export const AgentConfigSchema = z.object({
|
|
|
48
48
|
/** Primary model for the coder agent */
|
|
49
49
|
model: z.string().optional().default('claude-code-sonnet-4'),
|
|
50
50
|
/** AI client setup target: Claude Code, Codex, or both */
|
|
51
|
-
setupTarget: z.enum(SETUP_TARGETS).optional().default('
|
|
51
|
+
setupTarget: z.enum(SETUP_TARGETS).optional().default('claude'),
|
|
52
52
|
/** Enable Telegram transport scaffolding. Default: false. */
|
|
53
53
|
telegram: z.boolean().optional().default(false),
|
|
54
54
|
/** Enable Cognee vector search integration. Default: false. */
|