instrux 0.2.0 → 0.4.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 +59 -9
- package/dist/cli.js +85 -16
- package/dist/cli.js.map +1 -1
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +29 -3
- package/dist/engine.js.map +1 -1
- package/dist/engine.test.d.ts +5 -0
- package/dist/engine.test.d.ts.map +1 -0
- package/dist/engine.test.js +319 -0
- package/dist/engine.test.js.map +1 -0
- package/dist/init.d.ts +1 -1
- package/dist/init.d.ts.map +1 -1
- package/dist/init.js +10 -10
- package/dist/init.js.map +1 -1
- package/dist/init.test.d.ts +5 -0
- package/dist/init.test.d.ts.map +1 -0
- package/dist/init.test.js +192 -0
- package/dist/init.test.js.map +1 -0
- package/package.json +8 -2
package/README.md
CHANGED
|
@@ -77,7 +77,7 @@ This creates an `instrux.json` file with default settings:
|
|
|
77
77
|
"frontmatter": {
|
|
78
78
|
"output": "strip"
|
|
79
79
|
},
|
|
80
|
-
"sources": ["
|
|
80
|
+
"sources": ["base/**/*.md"]
|
|
81
81
|
}
|
|
82
82
|
```
|
|
83
83
|
|
|
@@ -89,7 +89,7 @@ This creates an `instrux.json` file with default settings:
|
|
|
89
89
|
| `outputDirectory` | `"out"` | Where to write compiled output files |
|
|
90
90
|
| `mergeSettings` | See above | Default merge behavior for all agents |
|
|
91
91
|
| `frontmatter` | `{ output: "strip" }` | How to handle frontmatter in output |
|
|
92
|
-
| `sources` | `["
|
|
92
|
+
| `sources` | `["base/**/*.md"]` | Shared source patterns (relative to agentsDirectory) for template mode |
|
|
93
93
|
|
|
94
94
|
**Benefits:**
|
|
95
95
|
- Set defaults once for all agents
|
|
@@ -276,11 +276,7 @@ Access the current file's frontmatter value:
|
|
|
276
276
|
"description": "Compiled instructions for MyAgent",
|
|
277
277
|
"outputDirectory": "out",
|
|
278
278
|
"outputFilePattern": "myagent_instructions.md",
|
|
279
|
-
"entry": "
|
|
280
|
-
"sources": [
|
|
281
|
-
"agents/base/**/*.md",
|
|
282
|
-
"agents/MyAgent/**/*.md"
|
|
283
|
-
],
|
|
279
|
+
"entry": "template.md",
|
|
284
280
|
"frontmatter": {
|
|
285
281
|
"output": "strip"
|
|
286
282
|
},
|
|
@@ -293,10 +289,24 @@ Access the current file's frontmatter value:
|
|
|
293
289
|
|
|
294
290
|
| Field | Description |
|
|
295
291
|
|---|---|
|
|
296
|
-
| `entry` | The Handlebars template
|
|
297
|
-
| `sources` |
|
|
292
|
+
| `entry` | The Handlebars template file **relative to the agent's directory** (e.g., `"template.md"` → `agents/MyAgent/template.md`) |
|
|
293
|
+
| `sources` | *(Optional)* Additional glob patterns to scan. **Agent's own directory is always included automatically** (e.g., `agents/MyAgent/**/*.md`). Patterns from `instrux.json` are also included, resolved relative to `agentsDirectory`. |
|
|
298
294
|
| `frontmatter.output` | `"strip"` (default) or `"preserve"` entry file's non-instrux frontmatter |
|
|
299
295
|
|
|
296
|
+
**Path Resolution Rules:**
|
|
297
|
+
|
|
298
|
+
1. **`entry`** is always relative to the agent's directory:
|
|
299
|
+
- `"entry": "template.md"` → `agents/MyAgent/template.md`
|
|
300
|
+
- No need to specify the full path!
|
|
301
|
+
|
|
302
|
+
2. **`sources`** work in layers:
|
|
303
|
+
- **Layer 1 (automatic):** The agent's directory is always included: `agents/MyAgent/**/*.md`
|
|
304
|
+
- **Layer 2 (repo config):** Patterns from `instrux.json` are resolved relative to `agentsDirectory`:
|
|
305
|
+
- `"sources": ["base/**/*.md"]` in `instrux.json` → `agents/base/**/*.md`
|
|
306
|
+
- **Layer 3 (agent config):** Agent-specific patterns from `agent.json` are used as-is
|
|
307
|
+
|
|
308
|
+
3. **Why?** This ensures every agent can use its own markdown files without explicit configuration, while still accessing shared resources from the base directory.
|
|
309
|
+
|
|
300
310
|
### Project Layout (Template Mode)
|
|
301
311
|
|
|
302
312
|
```
|
|
@@ -378,6 +388,46 @@ const compiler = new InstruxCompiler(process.cwd(), config);
|
|
|
378
388
|
const { output, filesCompiled, tagsUsed } = await compiler.compile();
|
|
379
389
|
```
|
|
380
390
|
|
|
391
|
+
## Development
|
|
392
|
+
|
|
393
|
+
### Running Tests
|
|
394
|
+
|
|
395
|
+
This project uses Jest for testing:
|
|
396
|
+
|
|
397
|
+
```bash
|
|
398
|
+
# Run all tests
|
|
399
|
+
npm test
|
|
400
|
+
|
|
401
|
+
# Run tests in watch mode
|
|
402
|
+
npm run test:watch
|
|
403
|
+
|
|
404
|
+
# Run tests with coverage
|
|
405
|
+
npm run test:coverage
|
|
406
|
+
```
|
|
407
|
+
|
|
408
|
+
### Building
|
|
409
|
+
|
|
410
|
+
```bash
|
|
411
|
+
# Build TypeScript to JavaScript
|
|
412
|
+
npm run build
|
|
413
|
+
|
|
414
|
+
# Watch mode for development
|
|
415
|
+
npm run watch
|
|
416
|
+
```
|
|
417
|
+
|
|
418
|
+
### Project Structure
|
|
419
|
+
|
|
420
|
+
```
|
|
421
|
+
src/
|
|
422
|
+
cli.ts # CLI entry point
|
|
423
|
+
engine.ts # Core build engine
|
|
424
|
+
compiler.ts # Template compiler
|
|
425
|
+
init.ts # Scaffolding functions
|
|
426
|
+
frontmatter.ts # Frontmatter parsing
|
|
427
|
+
types.ts # TypeScript types
|
|
428
|
+
*.test.ts # Jest test files
|
|
429
|
+
```
|
|
430
|
+
|
|
381
431
|
## License
|
|
382
432
|
|
|
383
433
|
This project is dual-licensed under your choice of:
|
package/dist/cli.js
CHANGED
|
@@ -12,10 +12,62 @@
|
|
|
12
12
|
* instrux config <name> Show agent configuration
|
|
13
13
|
* instrux validate <name> Validate source files exist
|
|
14
14
|
*/
|
|
15
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
16
|
+
if (k2 === undefined) k2 = k;
|
|
17
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
18
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
19
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
20
|
+
}
|
|
21
|
+
Object.defineProperty(o, k2, desc);
|
|
22
|
+
}) : (function(o, m, k, k2) {
|
|
23
|
+
if (k2 === undefined) k2 = k;
|
|
24
|
+
o[k2] = m[k];
|
|
25
|
+
}));
|
|
26
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
27
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
28
|
+
}) : function(o, v) {
|
|
29
|
+
o["default"] = v;
|
|
30
|
+
});
|
|
31
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
32
|
+
var ownKeys = function(o) {
|
|
33
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
34
|
+
var ar = [];
|
|
35
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
36
|
+
return ar;
|
|
37
|
+
};
|
|
38
|
+
return ownKeys(o);
|
|
39
|
+
};
|
|
40
|
+
return function (mod) {
|
|
41
|
+
if (mod && mod.__esModule) return mod;
|
|
42
|
+
var result = {};
|
|
43
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
44
|
+
__setModuleDefault(result, mod);
|
|
45
|
+
return result;
|
|
46
|
+
};
|
|
47
|
+
})();
|
|
15
48
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
49
|
const commander_1 = require("commander");
|
|
50
|
+
const path = __importStar(require("path"));
|
|
51
|
+
const fs = __importStar(require("fs-extra"));
|
|
17
52
|
const engine_1 = require("./engine");
|
|
18
53
|
const init_1 = require("./init");
|
|
54
|
+
/**
|
|
55
|
+
* Load repo config to get agentsDirectory for help text.
|
|
56
|
+
*/
|
|
57
|
+
async function getAgentsDir(rootDir) {
|
|
58
|
+
const configPath = path.join(rootDir, 'instrux.json');
|
|
59
|
+
if (await fs.pathExists(configPath)) {
|
|
60
|
+
try {
|
|
61
|
+
const raw = await fs.readFile(configPath, 'utf-8');
|
|
62
|
+
const config = JSON.parse(raw);
|
|
63
|
+
return config.agentsDirectory ?? 'agents';
|
|
64
|
+
}
|
|
65
|
+
catch {
|
|
66
|
+
return 'agents';
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
return 'agents';
|
|
70
|
+
}
|
|
19
71
|
const pkg = require('../package.json');
|
|
20
72
|
const program = new commander_1.Command();
|
|
21
73
|
program
|
|
@@ -35,6 +87,7 @@ program
|
|
|
35
87
|
: await (0, init_1.initAgent)(cwd, name);
|
|
36
88
|
const mode = opts.template ? 'template' : 'simple';
|
|
37
89
|
const isFirstAgent = created.includes('instrux.json');
|
|
90
|
+
const agentsDir = await getAgentsDir(cwd);
|
|
38
91
|
console.log(`\n\u2705 Agent "${name}" initialized (${mode} mode)!\n`);
|
|
39
92
|
if (isFirstAgent) {
|
|
40
93
|
console.log('Created repository config (instrux.json) with default settings.');
|
|
@@ -44,15 +97,16 @@ program
|
|
|
44
97
|
created.forEach(f => console.log(` ${f}`));
|
|
45
98
|
if (opts.template) {
|
|
46
99
|
console.log(`\nNext steps:`);
|
|
47
|
-
console.log(` 1. Edit
|
|
48
|
-
console.log(` 2. Edit
|
|
49
|
-
console.log(` 3. Edit
|
|
50
|
-
console.log(` 4.
|
|
100
|
+
console.log(` 1. Edit ${agentsDir}/base/*.md to define shared instructions`);
|
|
101
|
+
console.log(` 2. Edit ${agentsDir}/${name}/domain.md with domain knowledge`);
|
|
102
|
+
console.log(` 3. Edit ${agentsDir}/${name}/template.md to compose via {{tag "..."}}`);
|
|
103
|
+
console.log(` 4. Note: "entry" in agent.json is relative to the agent's directory`);
|
|
104
|
+
console.log(` 5. Run: instrux build ${name}\n`);
|
|
51
105
|
}
|
|
52
106
|
else {
|
|
53
107
|
console.log(`\nNext steps:`);
|
|
54
|
-
console.log(` 1. Edit
|
|
55
|
-
console.log(` 2. Edit
|
|
108
|
+
console.log(` 1. Edit ${agentsDir}/${name}/specialization.md with your instructions`);
|
|
109
|
+
console.log(` 2. Edit ${agentsDir}/${name}/agent.json to add more files if needed`);
|
|
56
110
|
console.log(` 3. Run: instrux build ${name}\n`);
|
|
57
111
|
}
|
|
58
112
|
}
|
|
@@ -73,11 +127,15 @@ program
|
|
|
73
127
|
console.log(`Created: ${created}\n`);
|
|
74
128
|
console.log('This file provides default settings for all agents.');
|
|
75
129
|
console.log('Individual agent configs will inherit and can override these settings.\n');
|
|
130
|
+
// Show actual values from created config
|
|
131
|
+
const configPath = path.join(cwd, created);
|
|
132
|
+
const actualConfig = JSON.parse(await fs.readFile(configPath, 'utf-8'));
|
|
76
133
|
console.log('Default settings:');
|
|
77
|
-
console.log(
|
|
134
|
+
console.log(` - agentsDirectory: "${actualConfig.agentsDirectory}"`);
|
|
135
|
+
console.log(` - outputDirectory: "${actualConfig.outputDirectory}"`);
|
|
78
136
|
console.log(' - mergeSettings: standard defaults');
|
|
79
137
|
console.log(' - frontmatter: { output: "strip" }');
|
|
80
|
-
console.log(
|
|
138
|
+
console.log(` - sources: ${JSON.stringify(actualConfig.sources)} (relative to agentsDirectory)\n`);
|
|
81
139
|
}
|
|
82
140
|
catch (err) {
|
|
83
141
|
console.error(`❌ ${err.message}`);
|
|
@@ -90,7 +148,8 @@ program
|
|
|
90
148
|
.description('Build (merge) instruction files for an agent')
|
|
91
149
|
.option('--all', 'Build all agents')
|
|
92
150
|
.action(async (name, opts) => {
|
|
93
|
-
const
|
|
151
|
+
const cwd = process.cwd();
|
|
152
|
+
const engine = new engine_1.InstruxEngine(cwd);
|
|
94
153
|
try {
|
|
95
154
|
if (opts.all) {
|
|
96
155
|
const agents = await engine.listAgents();
|
|
@@ -128,7 +187,8 @@ program
|
|
|
128
187
|
.command('list')
|
|
129
188
|
.description('List all available agents')
|
|
130
189
|
.action(async () => {
|
|
131
|
-
const
|
|
190
|
+
const cwd = process.cwd();
|
|
191
|
+
const engine = new engine_1.InstruxEngine(cwd);
|
|
132
192
|
const agents = await engine.listAgents();
|
|
133
193
|
if (agents.length === 0) {
|
|
134
194
|
console.log('\nNo agents found.');
|
|
@@ -138,10 +198,17 @@ program
|
|
|
138
198
|
console.log('\nAvailable agents:\n');
|
|
139
199
|
for (const agent of agents) {
|
|
140
200
|
if (agent.config) {
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
201
|
+
try {
|
|
202
|
+
// Load full resolved config to get all values with defaults
|
|
203
|
+
const resolved = await engine.loadConfig(agent.name);
|
|
204
|
+
const mode = resolved.entry ? 'template' : 'simple';
|
|
205
|
+
console.log(` ${agent.name} [${mode}]`);
|
|
206
|
+
console.log(` ${resolved.description}`);
|
|
207
|
+
console.log(` Files: ${resolved.files?.length ?? resolved.sources?.length ?? 0} \u2192 ${resolved.outputDirectory}/${resolved.outputFilePattern}`);
|
|
208
|
+
}
|
|
209
|
+
catch (err) {
|
|
210
|
+
console.log(` ${agent.name} (error loading config)`);
|
|
211
|
+
}
|
|
145
212
|
}
|
|
146
213
|
else {
|
|
147
214
|
console.log(` ${agent.name} (invalid or missing agent.json)`);
|
|
@@ -154,7 +221,8 @@ program
|
|
|
154
221
|
.command('config <name>')
|
|
155
222
|
.description('Display the configuration for an agent')
|
|
156
223
|
.action(async (name) => {
|
|
157
|
-
const
|
|
224
|
+
const cwd = process.cwd();
|
|
225
|
+
const engine = new engine_1.InstruxEngine(cwd);
|
|
158
226
|
try {
|
|
159
227
|
const config = await engine.loadConfig(name);
|
|
160
228
|
console.log(`\n📋 ${config.name}\n`);
|
|
@@ -188,7 +256,8 @@ program
|
|
|
188
256
|
.command('validate <name>')
|
|
189
257
|
.description('Check that all required instruction files exist')
|
|
190
258
|
.action(async (name) => {
|
|
191
|
-
const
|
|
259
|
+
const cwd = process.cwd();
|
|
260
|
+
const engine = new engine_1.InstruxEngine(cwd);
|
|
192
261
|
try {
|
|
193
262
|
const config = await engine.loadConfig(name);
|
|
194
263
|
const result = await engine.validate(config);
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;AAEA;;;;;;;;;;;GAWG
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/engine.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,UAAU,EACV,WAAW,EACX,gBAAgB,EAGjB,MAAM,SAAS,CAAC;AAGjB,qBAAa,aAAa;IACxB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,UAAU,CAA2B;gBAEjC,OAAO,CAAC,EAAE,MAAM;IAM5B;;;OAGG;IACG,cAAc,IAAI,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAuBlD;;;;OAIG;IACH,OAAO,CAAC,YAAY;
|
|
1
|
+
{"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,UAAU,EACV,WAAW,EACX,gBAAgB,EAGjB,MAAM,SAAS,CAAC;AAGjB,qBAAa,aAAa;IACxB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,UAAU,CAA2B;gBAEjC,OAAO,CAAC,EAAE,MAAM;IAM5B;;;OAGG;IACG,cAAc,IAAI,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAuBlD;;;;OAIG;IACH,OAAO,CAAC,YAAY;IAmDpB;;;OAGG;YACW,eAAe;IAM7B;;;OAGG;IACG,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAoBjE;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,WAAW,GAAG,IAAI,CAAA;KAAE,EAAE,CAAC;IAiCrE,QAAQ,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAqBhE,KAAK,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC;IA+CnD,WAAW,CAAC,MAAM,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA4BhF;;;OAGG;IACH,aAAa,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO;IAI7C,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAgDpD,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;CAOrC"}
|
package/dist/engine.js
CHANGED
|
@@ -87,12 +87,38 @@ class InstruxEngine {
|
|
|
87
87
|
...(repoConfig.mergeSettings ?? {}),
|
|
88
88
|
...(agentConfig.mergeSettings ?? {}),
|
|
89
89
|
};
|
|
90
|
+
const agentsDirectory = repoConfig.agentsDirectory ?? 'agents';
|
|
91
|
+
const agentName = agentConfig.name;
|
|
92
|
+
const agentDir = `${agentsDirectory}/${agentName}`;
|
|
93
|
+
// Resolve entry relative to agent directory
|
|
94
|
+
let entry = agentConfig.entry;
|
|
95
|
+
if (entry) {
|
|
96
|
+
// Entry is ALWAYS relative to the agent's directory
|
|
97
|
+
entry = `${agentDir}/${entry}`;
|
|
98
|
+
}
|
|
99
|
+
// Build sources array:
|
|
100
|
+
const sources = [];
|
|
101
|
+
// 1. ALWAYS include the agent's own directory and subdirectories
|
|
102
|
+
sources.push(`${agentDir}/**/*.md`);
|
|
103
|
+
// 2. Add agent-specific sources from agent.json (if defined)
|
|
104
|
+
if (agentConfig.sources && agentConfig.sources.length > 0) {
|
|
105
|
+
sources.push(...agentConfig.sources);
|
|
106
|
+
}
|
|
107
|
+
// 3. Add repo-level sources from instrux.json (relative to agentsDirectory)
|
|
108
|
+
if (repoConfig.sources && repoConfig.sources.length > 0) {
|
|
109
|
+
sources.push(...repoConfig.sources.map(s => `${agentsDirectory}/${s}`));
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
// Default: include base directory if no repo sources defined
|
|
113
|
+
sources.push(`${agentsDirectory}/base/**/*.md`);
|
|
114
|
+
}
|
|
90
115
|
return {
|
|
91
116
|
...agentConfig,
|
|
92
|
-
|
|
117
|
+
entry,
|
|
118
|
+
agentsDirectory,
|
|
93
119
|
outputDirectory: agentConfig.outputDirectory ?? repoConfig.outputDirectory ?? 'out',
|
|
94
|
-
outputFilePattern: agentConfig.outputFilePattern ?? `${
|
|
95
|
-
sources
|
|
120
|
+
outputFilePattern: agentConfig.outputFilePattern ?? `${agentName.toLowerCase()}_instructions.md`,
|
|
121
|
+
sources,
|
|
96
122
|
frontmatter: agentConfig.frontmatter ?? repoConfig.frontmatter,
|
|
97
123
|
mergeSettings,
|
|
98
124
|
};
|
package/dist/engine.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.js","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,6CAA+B;AAC/B,2CAA6B;AAC7B,+CAAiC;AACjC,mCAQiB;AACjB,yCAA6C;AAE7C,MAAa,aAAa;IAIxB,YAAY,OAAgB;QAFpB,eAAU,GAAsB,IAAI,CAAC;QAG3C,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1C,CAAC;IAED,iDAAiD;IAEjD;;;OAGG;IACH,KAAK,CAAC,cAAc;QAClB,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI,EAAE,CAAC;YAC7B,OAAO,IAAI,CAAC,UAAU,CAAC;QACzB,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QAE3D,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;YACvC,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;YACrB,OAAO,IAAI,CAAC,UAAU,CAAC;QACzB,CAAC;QAED,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;YACnD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAe,CAAC;YAChD,OAAO,IAAI,CAAC,UAAU,CAAC;QACzB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,6CAA6C,GAAG,EAAE,CAAC,CAAC;YACjE,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;YACrB,OAAO,IAAI,CAAC,UAAU,CAAC;QACzB,CAAC;IACH,CAAC;IAED;;;;OAIG;IACK,YAAY,CAAC,WAAwB,EAAE,UAAsB;QACnE,MAAM,aAAa,GAAkB;YACnC,GAAG,8BAAsB;YACzB,GAAG,CAAC,UAAU,CAAC,aAAa,IAAI,EAAE,CAAC;YACnC,GAAG,CAAC,WAAW,CAAC,aAAa,IAAI,EAAE,CAAC;SACrC,CAAC;QAEF,
|
|
1
|
+
{"version":3,"file":"engine.js","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engine.test.d.ts","sourceRoot":"","sources":["../src/engine.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
|
@@ -0,0 +1,319 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Unit tests for InstruxEngine
|
|
4
|
+
*/
|
|
5
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
8
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
9
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
10
|
+
}
|
|
11
|
+
Object.defineProperty(o, k2, desc);
|
|
12
|
+
}) : (function(o, m, k, k2) {
|
|
13
|
+
if (k2 === undefined) k2 = k;
|
|
14
|
+
o[k2] = m[k];
|
|
15
|
+
}));
|
|
16
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
17
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
18
|
+
}) : function(o, v) {
|
|
19
|
+
o["default"] = v;
|
|
20
|
+
});
|
|
21
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
22
|
+
var ownKeys = function(o) {
|
|
23
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
24
|
+
var ar = [];
|
|
25
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
26
|
+
return ar;
|
|
27
|
+
};
|
|
28
|
+
return ownKeys(o);
|
|
29
|
+
};
|
|
30
|
+
return function (mod) {
|
|
31
|
+
if (mod && mod.__esModule) return mod;
|
|
32
|
+
var result = {};
|
|
33
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
34
|
+
__setModuleDefault(result, mod);
|
|
35
|
+
return result;
|
|
36
|
+
};
|
|
37
|
+
})();
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
const fs = __importStar(require("fs-extra"));
|
|
40
|
+
const path = __importStar(require("path"));
|
|
41
|
+
const os = __importStar(require("os"));
|
|
42
|
+
const engine_1 = require("../engine");
|
|
43
|
+
describe('InstruxEngine', () => {
|
|
44
|
+
let testDir;
|
|
45
|
+
let engine;
|
|
46
|
+
beforeEach(async () => {
|
|
47
|
+
// Create a temporary directory for each test
|
|
48
|
+
testDir = await fs.mkdtemp(path.join(os.tmpdir(), 'instrux-test-'));
|
|
49
|
+
engine = new engine_1.InstruxEngine(testDir);
|
|
50
|
+
});
|
|
51
|
+
afterEach(async () => {
|
|
52
|
+
// Clean up temporary directory
|
|
53
|
+
await fs.remove(testDir);
|
|
54
|
+
});
|
|
55
|
+
describe('Repository Config', () => {
|
|
56
|
+
it('should return null when no repo config exists', async () => {
|
|
57
|
+
const config = await engine.loadRepoConfig();
|
|
58
|
+
expect(config).toEqual({});
|
|
59
|
+
});
|
|
60
|
+
it('should load repo config when it exists', async () => {
|
|
61
|
+
const repoConfig = {
|
|
62
|
+
agentsDirectory: 'src/agents',
|
|
63
|
+
outputDirectory: 'build',
|
|
64
|
+
sources: ['src/agents/base/**/*.md'],
|
|
65
|
+
};
|
|
66
|
+
await fs.writeFile(path.join(testDir, 'instrux.json'), JSON.stringify(repoConfig, null, 2));
|
|
67
|
+
const loaded = await engine.loadRepoConfig();
|
|
68
|
+
expect(loaded).toMatchObject(repoConfig);
|
|
69
|
+
});
|
|
70
|
+
it('should use default agentsDirectory when not specified', async () => {
|
|
71
|
+
const repoConfig = {
|
|
72
|
+
outputDirectory: 'out',
|
|
73
|
+
};
|
|
74
|
+
await fs.writeFile(path.join(testDir, 'instrux.json'), JSON.stringify(repoConfig, null, 2));
|
|
75
|
+
const loaded = await engine.loadRepoConfig();
|
|
76
|
+
expect(loaded?.agentsDirectory).toBeUndefined();
|
|
77
|
+
});
|
|
78
|
+
});
|
|
79
|
+
describe('Agent Config Loading', () => {
|
|
80
|
+
it('should load agent config and merge with repo config', async () => {
|
|
81
|
+
// Create repo config
|
|
82
|
+
const repoConfig = {
|
|
83
|
+
agentsDirectory: 'agents',
|
|
84
|
+
outputDirectory: 'out',
|
|
85
|
+
};
|
|
86
|
+
await fs.writeFile(path.join(testDir, 'instrux.json'), JSON.stringify(repoConfig, null, 2));
|
|
87
|
+
// Create agent config
|
|
88
|
+
const agentConfig = {
|
|
89
|
+
name: 'TestAgent',
|
|
90
|
+
description: 'Test agent',
|
|
91
|
+
files: [
|
|
92
|
+
{ path: 'agents/base/test.md', description: 'Test file', required: true },
|
|
93
|
+
],
|
|
94
|
+
};
|
|
95
|
+
const agentDir = path.join(testDir, 'agents', 'TestAgent');
|
|
96
|
+
await fs.ensureDir(agentDir);
|
|
97
|
+
await fs.writeFile(path.join(agentDir, 'agent.json'), JSON.stringify(agentConfig, null, 2));
|
|
98
|
+
const resolved = await engine.loadConfig('TestAgent');
|
|
99
|
+
expect(resolved.name).toBe('TestAgent');
|
|
100
|
+
expect(resolved.agentsDirectory).toBe('agents');
|
|
101
|
+
expect(resolved.outputDirectory).toBe('out');
|
|
102
|
+
expect(resolved.outputFilePattern).toBe('testagent_instructions.md');
|
|
103
|
+
});
|
|
104
|
+
it('should use custom agentsDirectory from repo config', async () => {
|
|
105
|
+
// Create repo config with custom directory
|
|
106
|
+
const repoConfig = {
|
|
107
|
+
agentsDirectory: 'src/agents',
|
|
108
|
+
outputDirectory: 'build',
|
|
109
|
+
};
|
|
110
|
+
await fs.writeFile(path.join(testDir, 'instrux.json'), JSON.stringify(repoConfig, null, 2));
|
|
111
|
+
// Create agent config in custom directory
|
|
112
|
+
const agentConfig = {
|
|
113
|
+
name: 'CustomAgent',
|
|
114
|
+
description: 'Custom agent',
|
|
115
|
+
files: [],
|
|
116
|
+
};
|
|
117
|
+
const agentDir = path.join(testDir, 'src', 'agents', 'CustomAgent');
|
|
118
|
+
await fs.ensureDir(agentDir);
|
|
119
|
+
await fs.writeFile(path.join(agentDir, 'agent.json'), JSON.stringify(agentConfig, null, 2));
|
|
120
|
+
const resolved = await engine.loadConfig('CustomAgent');
|
|
121
|
+
expect(resolved.agentsDirectory).toBe('src/agents');
|
|
122
|
+
expect(resolved.outputDirectory).toBe('build');
|
|
123
|
+
});
|
|
124
|
+
it('should throw error when agent config not found', async () => {
|
|
125
|
+
await expect(engine.loadConfig('NonExistent')).rejects.toThrow(/Agent config not found/);
|
|
126
|
+
});
|
|
127
|
+
});
|
|
128
|
+
describe('List Agents', () => {
|
|
129
|
+
it('should return empty array when no agents directory exists', async () => {
|
|
130
|
+
const agents = await engine.listAgents();
|
|
131
|
+
expect(agents).toEqual([]);
|
|
132
|
+
});
|
|
133
|
+
it('should list agents in default directory', async () => {
|
|
134
|
+
// Create agents directory with test agent
|
|
135
|
+
const agentConfig = {
|
|
136
|
+
name: 'Agent1',
|
|
137
|
+
description: 'First agent',
|
|
138
|
+
files: [],
|
|
139
|
+
};
|
|
140
|
+
const agentDir = path.join(testDir, 'agents', 'Agent1');
|
|
141
|
+
await fs.ensureDir(agentDir);
|
|
142
|
+
await fs.writeFile(path.join(agentDir, 'agent.json'), JSON.stringify(agentConfig, null, 2));
|
|
143
|
+
const agents = await engine.listAgents();
|
|
144
|
+
expect(agents).toHaveLength(1);
|
|
145
|
+
expect(agents[0].name).toBe('Agent1');
|
|
146
|
+
expect(agents[0].config).toBeTruthy();
|
|
147
|
+
});
|
|
148
|
+
it('should list agents in custom directory', async () => {
|
|
149
|
+
// Create repo config with custom directory
|
|
150
|
+
const repoConfig = {
|
|
151
|
+
agentsDirectory: 'custom/agents',
|
|
152
|
+
};
|
|
153
|
+
await fs.writeFile(path.join(testDir, 'instrux.json'), JSON.stringify(repoConfig, null, 2));
|
|
154
|
+
// Create agent in custom directory
|
|
155
|
+
const agentConfig = {
|
|
156
|
+
name: 'CustomAgent',
|
|
157
|
+
description: 'Custom agent',
|
|
158
|
+
files: [],
|
|
159
|
+
};
|
|
160
|
+
const agentDir = path.join(testDir, 'custom', 'agents', 'CustomAgent');
|
|
161
|
+
await fs.ensureDir(agentDir);
|
|
162
|
+
await fs.writeFile(path.join(agentDir, 'agent.json'), JSON.stringify(agentConfig, null, 2));
|
|
163
|
+
const agents = await engine.listAgents();
|
|
164
|
+
expect(agents).toHaveLength(1);
|
|
165
|
+
expect(agents[0].name).toBe('CustomAgent');
|
|
166
|
+
});
|
|
167
|
+
it('should skip base directory', async () => {
|
|
168
|
+
// Create base directory
|
|
169
|
+
const baseDir = path.join(testDir, 'agents', 'base');
|
|
170
|
+
await fs.ensureDir(baseDir);
|
|
171
|
+
await fs.writeFile(path.join(baseDir, 'instructions.md'), '# Base Instructions');
|
|
172
|
+
// Create actual agent
|
|
173
|
+
const agentConfig = {
|
|
174
|
+
name: 'Agent1',
|
|
175
|
+
description: 'Agent',
|
|
176
|
+
files: [],
|
|
177
|
+
};
|
|
178
|
+
const agentDir = path.join(testDir, 'agents', 'Agent1');
|
|
179
|
+
await fs.ensureDir(agentDir);
|
|
180
|
+
await fs.writeFile(path.join(agentDir, 'agent.json'), JSON.stringify(agentConfig, null, 2));
|
|
181
|
+
const agents = await engine.listAgents();
|
|
182
|
+
expect(agents).toHaveLength(1);
|
|
183
|
+
expect(agents[0].name).toBe('Agent1');
|
|
184
|
+
expect(agents.find(a => a.name === 'base')).toBeUndefined();
|
|
185
|
+
});
|
|
186
|
+
it('should handle invalid agent config gracefully', async () => {
|
|
187
|
+
const agentDir = path.join(testDir, 'agents', 'BadAgent');
|
|
188
|
+
await fs.ensureDir(agentDir);
|
|
189
|
+
await fs.writeFile(path.join(agentDir, 'agent.json'), 'invalid json {');
|
|
190
|
+
const agents = await engine.listAgents();
|
|
191
|
+
expect(agents).toHaveLength(1);
|
|
192
|
+
expect(agents[0].name).toBe('BadAgent');
|
|
193
|
+
expect(agents[0].config).toBeNull();
|
|
194
|
+
});
|
|
195
|
+
});
|
|
196
|
+
describe('Validation', () => {
|
|
197
|
+
it('should validate that required files exist', async () => {
|
|
198
|
+
const config = {
|
|
199
|
+
name: 'Test',
|
|
200
|
+
description: 'Test',
|
|
201
|
+
agentsDirectory: 'agents',
|
|
202
|
+
outputDirectory: 'out',
|
|
203
|
+
outputFilePattern: 'test.md',
|
|
204
|
+
files: [
|
|
205
|
+
{ path: 'test.md', description: 'Test', required: true },
|
|
206
|
+
],
|
|
207
|
+
mergeSettings: {},
|
|
208
|
+
};
|
|
209
|
+
// File does not exist
|
|
210
|
+
let result = await engine.validate(config);
|
|
211
|
+
expect(result.valid).toBe(false);
|
|
212
|
+
expect(result.missing).toContain('test.md');
|
|
213
|
+
// Create the file
|
|
214
|
+
await fs.writeFile(path.join(testDir, 'test.md'), '# Test');
|
|
215
|
+
// Now validation should pass
|
|
216
|
+
result = await engine.validate(config);
|
|
217
|
+
expect(result.valid).toBe(true);
|
|
218
|
+
expect(result.missing).toHaveLength(0);
|
|
219
|
+
});
|
|
220
|
+
it('should warn about missing optional files', async () => {
|
|
221
|
+
const config = {
|
|
222
|
+
name: 'Test',
|
|
223
|
+
description: 'Test',
|
|
224
|
+
agentsDirectory: 'agents',
|
|
225
|
+
outputDirectory: 'out',
|
|
226
|
+
outputFilePattern: 'test.md',
|
|
227
|
+
files: [
|
|
228
|
+
{ path: 'optional.md', description: 'Optional', required: false },
|
|
229
|
+
],
|
|
230
|
+
mergeSettings: {},
|
|
231
|
+
};
|
|
232
|
+
const result = await engine.validate(config);
|
|
233
|
+
expect(result.valid).toBe(true);
|
|
234
|
+
expect(result.warnings).toContain('Optional file not found: optional.md');
|
|
235
|
+
});
|
|
236
|
+
});
|
|
237
|
+
describe('Simple Merge Mode', () => {
|
|
238
|
+
it('should merge files in order', async () => {
|
|
239
|
+
// Create test files
|
|
240
|
+
await fs.writeFile(path.join(testDir, 'file1.md'), '# File 1\n\nContent 1');
|
|
241
|
+
await fs.writeFile(path.join(testDir, 'file2.md'), '# File 2\n\nContent 2');
|
|
242
|
+
const config = {
|
|
243
|
+
name: 'Test',
|
|
244
|
+
description: 'Test',
|
|
245
|
+
agentsDirectory: 'agents',
|
|
246
|
+
outputDirectory: 'out',
|
|
247
|
+
outputFilePattern: 'merged.md',
|
|
248
|
+
files: [
|
|
249
|
+
{ path: 'file1.md', description: 'First', required: true },
|
|
250
|
+
{ path: 'file2.md', description: 'Second', required: true },
|
|
251
|
+
],
|
|
252
|
+
mergeSettings: {
|
|
253
|
+
addSeparators: true,
|
|
254
|
+
separatorStyle: '---',
|
|
255
|
+
includeFileHeaders: false,
|
|
256
|
+
preserveFormatting: true,
|
|
257
|
+
generateHash: false,
|
|
258
|
+
useTimestamp: false,
|
|
259
|
+
},
|
|
260
|
+
};
|
|
261
|
+
const merged = await engine.merge(config);
|
|
262
|
+
expect(merged).toContain('# File 1');
|
|
263
|
+
expect(merged).toContain('# File 2');
|
|
264
|
+
expect(merged).toContain('---');
|
|
265
|
+
});
|
|
266
|
+
it('should skip empty files', async () => {
|
|
267
|
+
await fs.writeFile(path.join(testDir, 'file1.md'), '# File 1');
|
|
268
|
+
await fs.writeFile(path.join(testDir, 'empty.md'), '');
|
|
269
|
+
const config = {
|
|
270
|
+
name: 'Test',
|
|
271
|
+
description: 'Test',
|
|
272
|
+
agentsDirectory: 'agents',
|
|
273
|
+
outputDirectory: 'out',
|
|
274
|
+
outputFilePattern: 'merged.md',
|
|
275
|
+
files: [
|
|
276
|
+
{ path: 'file1.md', description: 'First', required: true },
|
|
277
|
+
{ path: 'empty.md', description: 'Empty', required: false },
|
|
278
|
+
],
|
|
279
|
+
mergeSettings: {
|
|
280
|
+
addSeparators: false,
|
|
281
|
+
separatorStyle: '---',
|
|
282
|
+
includeFileHeaders: false,
|
|
283
|
+
preserveFormatting: true,
|
|
284
|
+
generateHash: false,
|
|
285
|
+
useTimestamp: false,
|
|
286
|
+
},
|
|
287
|
+
};
|
|
288
|
+
const merged = await engine.merge(config);
|
|
289
|
+
expect(merged).toContain('# File 1');
|
|
290
|
+
expect(merged).not.toContain('Empty');
|
|
291
|
+
});
|
|
292
|
+
});
|
|
293
|
+
describe('Build', () => {
|
|
294
|
+
it('should build simple merge mode agent', async () => {
|
|
295
|
+
// Create repo config
|
|
296
|
+
await fs.writeFile(path.join(testDir, 'instrux.json'), JSON.stringify({ agentsDirectory: 'agents', outputDirectory: 'out' }, null, 2));
|
|
297
|
+
// Create agent
|
|
298
|
+
const agentConfig = {
|
|
299
|
+
name: 'TestAgent',
|
|
300
|
+
description: 'Test',
|
|
301
|
+
files: [
|
|
302
|
+
{ path: 'agents/TestAgent/content.md', description: 'Content', required: true },
|
|
303
|
+
],
|
|
304
|
+
};
|
|
305
|
+
const agentDir = path.join(testDir, 'agents', 'TestAgent');
|
|
306
|
+
await fs.ensureDir(agentDir);
|
|
307
|
+
await fs.writeFile(path.join(agentDir, 'agent.json'), JSON.stringify(agentConfig, null, 2));
|
|
308
|
+
await fs.writeFile(path.join(agentDir, 'content.md'), '# Test Content\n\nThis is a test.');
|
|
309
|
+
const result = await engine.build('TestAgent');
|
|
310
|
+
expect(result.outputPath).toContain('testagent_instructions.md');
|
|
311
|
+
expect(result.filesIncluded).toBe(1);
|
|
312
|
+
expect(result.contentLength).toBeGreaterThan(0);
|
|
313
|
+
// Verify output file was created
|
|
314
|
+
const outputPath = path.join(testDir, result.outputPath);
|
|
315
|
+
expect(await fs.pathExists(outputPath)).toBe(true);
|
|
316
|
+
});
|
|
317
|
+
});
|
|
318
|
+
});
|
|
319
|
+
//# sourceMappingURL=engine.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"engine.test.js","sourceRoot":"","sources":["../src/engine.test.ts"],"names":[],"mappings":"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"}
|
package/dist/init.d.ts
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
/**
|
|
5
5
|
* Create a repository-level config file (instrux.json) at project root.
|
|
6
6
|
*/
|
|
7
|
-
export declare function initRepoConfig(rootDir: string): Promise<string>;
|
|
7
|
+
export declare function initRepoConfig(rootDir: string, agentsDirectory?: string): Promise<string>;
|
|
8
8
|
/**
|
|
9
9
|
* Create the directory structure and starter files for a new agent.
|
|
10
10
|
*
|
package/dist/init.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH;;GAEG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH;;GAEG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,eAAe,GAAE,MAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,CAiBzG;AA4BD;;;;;;;;;;;;GAYG;AACH,wBAAsB,SAAS,CAC7B,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,EAAE,CAAC,CA6EnB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,EAAE,CAAC,CA+JnB"}
|
package/dist/init.js
CHANGED
|
@@ -45,17 +45,17 @@ const types_1 = require("./types");
|
|
|
45
45
|
/**
|
|
46
46
|
* Create a repository-level config file (instrux.json) at project root.
|
|
47
47
|
*/
|
|
48
|
-
async function initRepoConfig(rootDir) {
|
|
48
|
+
async function initRepoConfig(rootDir, agentsDirectory = 'agents') {
|
|
49
49
|
const configPath = path.join(rootDir, 'instrux.json');
|
|
50
50
|
if (await fs.pathExists(configPath)) {
|
|
51
51
|
throw new Error(`Repository config already exists at ${path.relative(rootDir, configPath)}`);
|
|
52
52
|
}
|
|
53
53
|
const config = {
|
|
54
|
-
agentsDirectory
|
|
54
|
+
agentsDirectory,
|
|
55
55
|
outputDirectory: 'out',
|
|
56
56
|
mergeSettings: { ...types_1.DEFAULT_MERGE_SETTINGS },
|
|
57
57
|
frontmatter: { output: 'strip' },
|
|
58
|
-
sources: ['
|
|
58
|
+
sources: ['base/**/*.md'], // relative to agentsDirectory
|
|
59
59
|
};
|
|
60
60
|
await fs.writeFile(configPath, JSON.stringify(config, null, 2) + '\n', 'utf-8');
|
|
61
61
|
return path.relative(rootDir, configPath);
|
|
@@ -71,12 +71,13 @@ async function ensureRepoConfig(rootDir) {
|
|
|
71
71
|
const config = JSON.parse(raw);
|
|
72
72
|
return { created: false, path: path.relative(rootDir, configPath), config };
|
|
73
73
|
}
|
|
74
|
+
const agentsDirectory = 'agents';
|
|
74
75
|
const config = {
|
|
75
|
-
agentsDirectory
|
|
76
|
+
agentsDirectory,
|
|
76
77
|
outputDirectory: 'out',
|
|
77
78
|
mergeSettings: { ...types_1.DEFAULT_MERGE_SETTINGS },
|
|
78
79
|
frontmatter: { output: 'strip' },
|
|
79
|
-
sources: ['
|
|
80
|
+
sources: ['base/**/*.md'], // relative to agentsDirectory
|
|
80
81
|
};
|
|
81
82
|
await fs.writeFile(configPath, JSON.stringify(config, null, 2) + '\n', 'utf-8');
|
|
82
83
|
return { created: true, path: path.relative(rootDir, configPath), config };
|
|
@@ -231,11 +232,10 @@ async function initTemplateAgent(rootDir, agentName) {
|
|
|
231
232
|
description: `Compiled instructions for the ${agentName} agent`,
|
|
232
233
|
outputDirectory: 'out',
|
|
233
234
|
outputFilePattern: `${agentName.toLowerCase()}_instructions.md`,
|
|
234
|
-
entry:
|
|
235
|
-
sources:
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
],
|
|
235
|
+
entry: 'template.md', // Relative to agent directory
|
|
236
|
+
// Note: sources are auto-generated:
|
|
237
|
+
// 1. Agent's own directory is always included
|
|
238
|
+
// 2. Repo-level sources from instrux.json are added
|
|
239
239
|
frontmatter: { output: 'strip' },
|
|
240
240
|
mergeSettings: { ...types_1.DEFAULT_MERGE_SETTINGS },
|
|
241
241
|
};
|
package/dist/init.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":";AAAA;;GAEG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASH,wCAiBC;
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.test.d.ts","sourceRoot":"","sources":["../src/init.test.ts"],"names":[],"mappings":"AAAA;;GAEG"}
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Unit tests for init functions
|
|
4
|
+
*/
|
|
5
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
6
|
+
if (k2 === undefined) k2 = k;
|
|
7
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
8
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
9
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
10
|
+
}
|
|
11
|
+
Object.defineProperty(o, k2, desc);
|
|
12
|
+
}) : (function(o, m, k, k2) {
|
|
13
|
+
if (k2 === undefined) k2 = k;
|
|
14
|
+
o[k2] = m[k];
|
|
15
|
+
}));
|
|
16
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
17
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
18
|
+
}) : function(o, v) {
|
|
19
|
+
o["default"] = v;
|
|
20
|
+
});
|
|
21
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
22
|
+
var ownKeys = function(o) {
|
|
23
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
24
|
+
var ar = [];
|
|
25
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
26
|
+
return ar;
|
|
27
|
+
};
|
|
28
|
+
return ownKeys(o);
|
|
29
|
+
};
|
|
30
|
+
return function (mod) {
|
|
31
|
+
if (mod && mod.__esModule) return mod;
|
|
32
|
+
var result = {};
|
|
33
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
34
|
+
__setModuleDefault(result, mod);
|
|
35
|
+
return result;
|
|
36
|
+
};
|
|
37
|
+
})();
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
const fs = __importStar(require("fs-extra"));
|
|
40
|
+
const path = __importStar(require("path"));
|
|
41
|
+
const os = __importStar(require("os"));
|
|
42
|
+
const init_1 = require("../init");
|
|
43
|
+
describe('Init Functions', () => {
|
|
44
|
+
let testDir;
|
|
45
|
+
beforeEach(async () => {
|
|
46
|
+
testDir = await fs.mkdtemp(path.join(os.tmpdir(), 'instrux-init-test-'));
|
|
47
|
+
});
|
|
48
|
+
afterEach(async () => {
|
|
49
|
+
await fs.remove(testDir);
|
|
50
|
+
});
|
|
51
|
+
describe('initRepoConfig', () => {
|
|
52
|
+
it('should create repo config with defaults', async () => {
|
|
53
|
+
const created = await (0, init_1.initRepoConfig)(testDir);
|
|
54
|
+
expect(created).toBe('instrux.json');
|
|
55
|
+
const configPath = path.join(testDir, 'instrux.json');
|
|
56
|
+
expect(await fs.pathExists(configPath)).toBe(true);
|
|
57
|
+
const config = JSON.parse(await fs.readFile(configPath, 'utf-8'));
|
|
58
|
+
expect(config.agentsDirectory).toBe('agents');
|
|
59
|
+
expect(config.outputDirectory).toBe('out');
|
|
60
|
+
expect(config.mergeSettings).toBeDefined();
|
|
61
|
+
expect(config.frontmatter).toEqual({ output: 'strip' });
|
|
62
|
+
expect(config.sources).toEqual(['agents/base/**/*.md']);
|
|
63
|
+
});
|
|
64
|
+
it('should throw error if config already exists', async () => {
|
|
65
|
+
await (0, init_1.initRepoConfig)(testDir);
|
|
66
|
+
await expect((0, init_1.initRepoConfig)(testDir)).rejects.toThrow(/Repository config already exists/);
|
|
67
|
+
});
|
|
68
|
+
});
|
|
69
|
+
describe('initAgent', () => {
|
|
70
|
+
it('should create agent structure with default directory', async () => {
|
|
71
|
+
const created = await (0, init_1.initAgent)(testDir, 'MyAgent');
|
|
72
|
+
// Should create repo config, base instructions, agent config, and specialization
|
|
73
|
+
expect(created.length).toBeGreaterThan(0);
|
|
74
|
+
expect(created).toContain('instrux.json');
|
|
75
|
+
expect(created.some(f => f.includes('MyAgent/agent.json'))).toBe(true);
|
|
76
|
+
expect(created.some(f => f.includes('MyAgent/specialization.md'))).toBe(true);
|
|
77
|
+
// Verify files exist
|
|
78
|
+
expect(await fs.pathExists(path.join(testDir, 'instrux.json'))).toBe(true);
|
|
79
|
+
expect(await fs.pathExists(path.join(testDir, 'agents', 'MyAgent', 'agent.json'))).toBe(true);
|
|
80
|
+
expect(await fs.pathExists(path.join(testDir, 'agents', 'MyAgent', 'specialization.md'))).toBe(true);
|
|
81
|
+
expect(await fs.pathExists(path.join(testDir, 'agents', 'base', 'instructions.md'))).toBe(true);
|
|
82
|
+
});
|
|
83
|
+
it('should use custom agentsDirectory from existing repo config', async () => {
|
|
84
|
+
// Create repo config with custom directory first
|
|
85
|
+
const repoConfig = {
|
|
86
|
+
agentsDirectory: 'src/agents',
|
|
87
|
+
outputDirectory: 'build',
|
|
88
|
+
};
|
|
89
|
+
await fs.writeFile(path.join(testDir, 'instrux.json'), JSON.stringify(repoConfig, null, 2));
|
|
90
|
+
const created = await (0, init_1.initAgent)(testDir, 'CustomAgent');
|
|
91
|
+
// Should NOT create instrux.json since it exists
|
|
92
|
+
expect(created).not.toContain('instrux.json');
|
|
93
|
+
// Should create agent in src/agents
|
|
94
|
+
expect(await fs.pathExists(path.join(testDir, 'src', 'agents', 'CustomAgent', 'agent.json'))).toBe(true);
|
|
95
|
+
expect(await fs.pathExists(path.join(testDir, 'src', 'agents', 'base', 'instructions.md'))).toBe(true);
|
|
96
|
+
});
|
|
97
|
+
it('should create base instructions only once', async () => {
|
|
98
|
+
await (0, init_1.initAgent)(testDir, 'Agent1');
|
|
99
|
+
const created2 = await (0, init_1.initAgent)(testDir, 'Agent2');
|
|
100
|
+
// Second init should not include base instructions or repo config
|
|
101
|
+
expect(created2).not.toContain('instrux.json');
|
|
102
|
+
expect(created2.some(f => f.includes('base/instructions.md'))).toBe(false);
|
|
103
|
+
});
|
|
104
|
+
it('should throw error if agent already exists', async () => {
|
|
105
|
+
await (0, init_1.initAgent)(testDir, 'MyAgent');
|
|
106
|
+
await expect((0, init_1.initAgent)(testDir, 'MyAgent')).rejects.toThrow(/Agent "MyAgent" already exists/);
|
|
107
|
+
});
|
|
108
|
+
it('should create agent config with correct paths', async () => {
|
|
109
|
+
const repoConfig = {
|
|
110
|
+
agentsDirectory: 'custom/dir',
|
|
111
|
+
};
|
|
112
|
+
await fs.writeFile(path.join(testDir, 'instrux.json'), JSON.stringify(repoConfig, null, 2));
|
|
113
|
+
await (0, init_1.initAgent)(testDir, 'TestAgent');
|
|
114
|
+
const configPath = path.join(testDir, 'custom', 'dir', 'TestAgent', 'agent.json');
|
|
115
|
+
const config = JSON.parse(await fs.readFile(configPath, 'utf-8'));
|
|
116
|
+
// Paths should use custom directory
|
|
117
|
+
expect(config.files[0].path).toBe('custom/dir/base/instructions.md');
|
|
118
|
+
expect(config.files[1].path).toBe('custom/dir/TestAgent/specialization.md');
|
|
119
|
+
});
|
|
120
|
+
});
|
|
121
|
+
describe('initTemplateAgent', () => {
|
|
122
|
+
it('should create template agent structure', async () => {
|
|
123
|
+
const created = await (0, init_1.initTemplateAgent)(testDir, 'TemplateAgent');
|
|
124
|
+
// Should create repo config, base files, and template agent
|
|
125
|
+
expect(created).toContain('instrux.json');
|
|
126
|
+
expect(created.some(f => f.includes('TemplateAgent/agent.json'))).toBe(true);
|
|
127
|
+
expect(created.some(f => f.includes('TemplateAgent/template.md'))).toBe(true);
|
|
128
|
+
expect(created.some(f => f.includes('TemplateAgent/domain.md'))).toBe(true);
|
|
129
|
+
// Base files
|
|
130
|
+
expect(await fs.pathExists(path.join(testDir, 'agents', 'base', 'identity.md'))).toBe(true);
|
|
131
|
+
expect(await fs.pathExists(path.join(testDir, 'agents', 'base', 'safety.md'))).toBe(true);
|
|
132
|
+
});
|
|
133
|
+
it('should use custom agentsDirectory for template agent', async () => {
|
|
134
|
+
const repoConfig = {
|
|
135
|
+
agentsDirectory: 'src/agents',
|
|
136
|
+
};
|
|
137
|
+
await fs.writeFile(path.join(testDir, 'instrux.json'), JSON.stringify(repoConfig, null, 2));
|
|
138
|
+
await (0, init_1.initTemplateAgent)(testDir, 'MyTemplate');
|
|
139
|
+
const configPath = path.join(testDir, 'src', 'agents', 'MyTemplate', 'agent.json');
|
|
140
|
+
const config = JSON.parse(await fs.readFile(configPath, 'utf-8'));
|
|
141
|
+
// Check paths use custom directory
|
|
142
|
+
expect(config.entry).toBe('src/agents/MyTemplate/template.md');
|
|
143
|
+
expect(config.sources).toContain('src/agents/base/**/*.md');
|
|
144
|
+
expect(config.sources).toContain('src/agents/MyTemplate/**/*.md');
|
|
145
|
+
});
|
|
146
|
+
it('should create base files with frontmatter', async () => {
|
|
147
|
+
await (0, init_1.initTemplateAgent)(testDir, 'Test');
|
|
148
|
+
const identityPath = path.join(testDir, 'agents', 'base', 'identity.md');
|
|
149
|
+
const identity = await fs.readFile(identityPath, 'utf-8');
|
|
150
|
+
expect(identity).toContain('---');
|
|
151
|
+
expect(identity).toContain('title: Core Identity');
|
|
152
|
+
expect(identity).toContain('instrux:');
|
|
153
|
+
expect(identity).toContain('tags: [identity]');
|
|
154
|
+
});
|
|
155
|
+
it('should not recreate base files if they exist', async () => {
|
|
156
|
+
await (0, init_1.initTemplateAgent)(testDir, 'Agent1');
|
|
157
|
+
// Modify base file
|
|
158
|
+
const identityPath = path.join(testDir, 'agents', 'base', 'identity.md');
|
|
159
|
+
await fs.writeFile(identityPath, '# Modified');
|
|
160
|
+
await (0, init_1.initTemplateAgent)(testDir, 'Agent2');
|
|
161
|
+
// Base file should not be overwritten
|
|
162
|
+
const identity = await fs.readFile(identityPath, 'utf-8');
|
|
163
|
+
expect(identity).toBe('# Modified');
|
|
164
|
+
});
|
|
165
|
+
});
|
|
166
|
+
describe('Auto-creating repo config', () => {
|
|
167
|
+
it('should auto-create repo config on first agent init', async () => {
|
|
168
|
+
const created = await (0, init_1.initAgent)(testDir, 'FirstAgent');
|
|
169
|
+
expect(created).toContain('instrux.json');
|
|
170
|
+
expect(await fs.pathExists(path.join(testDir, 'instrux.json'))).toBe(true);
|
|
171
|
+
});
|
|
172
|
+
it('should not recreate repo config on second agent init', async () => {
|
|
173
|
+
await (0, init_1.initAgent)(testDir, 'Agent1');
|
|
174
|
+
const created2 = await (0, init_1.initAgent)(testDir, 'Agent2');
|
|
175
|
+
expect(created2).not.toContain('instrux.json');
|
|
176
|
+
});
|
|
177
|
+
it('should preserve existing repo config settings', async () => {
|
|
178
|
+
// Manually create repo config with custom settings
|
|
179
|
+
const repoConfig = {
|
|
180
|
+
agentsDirectory: 'my/custom/path',
|
|
181
|
+
outputDirectory: 'build/output',
|
|
182
|
+
};
|
|
183
|
+
await fs.writeFile(path.join(testDir, 'instrux.json'), JSON.stringify(repoConfig, null, 2));
|
|
184
|
+
await (0, init_1.initAgent)(testDir, 'MyAgent');
|
|
185
|
+
// Config should not be modified
|
|
186
|
+
const savedConfig = JSON.parse(await fs.readFile(path.join(testDir, 'instrux.json'), 'utf-8'));
|
|
187
|
+
expect(savedConfig.agentsDirectory).toBe('my/custom/path');
|
|
188
|
+
expect(savedConfig.outputDirectory).toBe('build/output');
|
|
189
|
+
});
|
|
190
|
+
});
|
|
191
|
+
});
|
|
192
|
+
//# sourceMappingURL=init.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.test.js","sourceRoot":"","sources":["../src/init.test.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "instrux",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"description": "A CLI tool for composing modular AI agent instruction files into complete system prompts",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -19,7 +19,9 @@
|
|
|
19
19
|
"dev": "ts-node src/cli.ts",
|
|
20
20
|
"watch": "tsc --watch",
|
|
21
21
|
"prepublishOnly": "npm run build",
|
|
22
|
-
"test": "
|
|
22
|
+
"test": "jest",
|
|
23
|
+
"test:watch": "jest --watch",
|
|
24
|
+
"test:coverage": "jest --coverage",
|
|
23
25
|
"publish:script": "pwsh -File publish.ps1"
|
|
24
26
|
},
|
|
25
27
|
"keywords": [
|
|
@@ -47,7 +49,11 @@
|
|
|
47
49
|
},
|
|
48
50
|
"devDependencies": {
|
|
49
51
|
"@types/fs-extra": "^11.0.0",
|
|
52
|
+
"@types/jest": "^30.0.0",
|
|
50
53
|
"@types/node": "^20.0.0",
|
|
54
|
+
"jest": "^30.2.0",
|
|
55
|
+
"ts-jest": "^29.4.6",
|
|
56
|
+
"ts-node": "^10.9.2",
|
|
51
57
|
"typescript": "^5.0.0"
|
|
52
58
|
},
|
|
53
59
|
"dependencies": {
|