@organon-methodology/tools 0.3.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/LICENSE +21 -0
- package/README.md +152 -0
- package/dist/cli/commands/coverage.d.ts +12 -0
- package/dist/cli/commands/coverage.d.ts.map +1 -0
- package/dist/cli/commands/coverage.js +80 -0
- package/dist/cli/commands/coverage.js.map +1 -0
- package/dist/cli/commands/find.d.ts +15 -0
- package/dist/cli/commands/find.d.ts.map +1 -0
- package/dist/cli/commands/find.js +81 -0
- package/dist/cli/commands/find.js.map +1 -0
- package/dist/cli/commands/generate-tests.d.ts +14 -0
- package/dist/cli/commands/generate-tests.d.ts.map +1 -0
- package/dist/cli/commands/generate-tests.js +87 -0
- package/dist/cli/commands/generate-tests.js.map +1 -0
- package/dist/cli/commands/generate.d.ts +15 -0
- package/dist/cli/commands/generate.d.ts.map +1 -0
- package/dist/cli/commands/generate.js +77 -0
- package/dist/cli/commands/generate.js.map +1 -0
- package/dist/cli/commands/health.d.ts +13 -0
- package/dist/cli/commands/health.d.ts.map +1 -0
- package/dist/cli/commands/health.js +79 -0
- package/dist/cli/commands/health.js.map +1 -0
- package/dist/cli/commands/init.d.ts +14 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +132 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/mcp.d.ts +11 -0
- package/dist/cli/commands/mcp.d.ts.map +1 -0
- package/dist/cli/commands/mcp.js +26 -0
- package/dist/cli/commands/mcp.js.map +1 -0
- package/dist/cli/commands/query.d.ts +19 -0
- package/dist/cli/commands/query.d.ts.map +1 -0
- package/dist/cli/commands/query.js +103 -0
- package/dist/cli/commands/query.js.map +1 -0
- package/dist/cli/commands/upgrade.d.ts +13 -0
- package/dist/cli/commands/upgrade.d.ts.map +1 -0
- package/dist/cli/commands/upgrade.js +162 -0
- package/dist/cli/commands/upgrade.js.map +1 -0
- package/dist/cli/commands/validate.d.ts +13 -0
- package/dist/cli/commands/validate.d.ts.map +1 -0
- package/dist/cli/commands/validate.js +89 -0
- package/dist/cli/commands/validate.js.map +1 -0
- package/dist/cli/commands/verify.d.ts +12 -0
- package/dist/cli/commands/verify.d.ts.map +1 -0
- package/dist/cli/commands/verify.js +67 -0
- package/dist/cli/commands/verify.js.map +1 -0
- package/dist/cli/index.d.ts +19 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +59 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/core/add-protocols-array.d.ts +17 -0
- package/dist/core/add-protocols-array.d.ts.map +1 -0
- package/dist/core/add-protocols-array.js +95 -0
- package/dist/core/add-protocols-array.js.map +1 -0
- package/dist/core/add-protocols-array.test.d.ts +2 -0
- package/dist/core/add-protocols-array.test.d.ts.map +1 -0
- package/dist/core/add-protocols-array.test.js +86 -0
- package/dist/core/add-protocols-array.test.js.map +1 -0
- package/dist/core/config.d.ts +44 -0
- package/dist/core/config.d.ts.map +1 -0
- package/dist/core/config.js +130 -0
- package/dist/core/config.js.map +1 -0
- package/dist/core/config.test.d.ts +2 -0
- package/dist/core/config.test.d.ts.map +1 -0
- package/dist/core/config.test.js +88 -0
- package/dist/core/config.test.js.map +1 -0
- package/dist/core/find.d.ts +29 -0
- package/dist/core/find.d.ts.map +1 -0
- package/dist/core/find.js +191 -0
- package/dist/core/find.js.map +1 -0
- package/dist/core/find.test.d.ts +2 -0
- package/dist/core/find.test.d.ts.map +1 -0
- package/dist/core/find.test.js +91 -0
- package/dist/core/find.test.js.map +1 -0
- package/dist/core/frontmatter-parser.d.ts +45 -0
- package/dist/core/frontmatter-parser.d.ts.map +1 -0
- package/dist/core/frontmatter-parser.js +122 -0
- package/dist/core/frontmatter-parser.js.map +1 -0
- package/dist/core/frontmatter-parser.test.d.ts +2 -0
- package/dist/core/frontmatter-parser.test.d.ts.map +1 -0
- package/dist/core/frontmatter-parser.test.js +200 -0
- package/dist/core/frontmatter-parser.test.js.map +1 -0
- package/dist/core/generate-frontmatter.d.ts +27 -0
- package/dist/core/generate-frontmatter.d.ts.map +1 -0
- package/dist/core/generate-frontmatter.js +219 -0
- package/dist/core/generate-frontmatter.js.map +1 -0
- package/dist/core/generate-frontmatter.test.d.ts +2 -0
- package/dist/core/generate-frontmatter.test.d.ts.map +1 -0
- package/dist/core/generate-frontmatter.test.js +161 -0
- package/dist/core/generate-frontmatter.test.js.map +1 -0
- package/dist/core/generate-tests.d.ts +41 -0
- package/dist/core/generate-tests.d.ts.map +1 -0
- package/dist/core/generate-tests.js +191 -0
- package/dist/core/generate-tests.js.map +1 -0
- package/dist/core/generate-tests.test.d.ts +2 -0
- package/dist/core/generate-tests.test.d.ts.map +1 -0
- package/dist/core/generate-tests.test.js +205 -0
- package/dist/core/generate-tests.test.js.map +1 -0
- package/dist/core/health.d.ts +16 -0
- package/dist/core/health.d.ts.map +1 -0
- package/dist/core/health.js +156 -0
- package/dist/core/health.js.map +1 -0
- package/dist/core/health.test.d.ts +2 -0
- package/dist/core/health.test.d.ts.map +1 -0
- package/dist/core/health.test.js +97 -0
- package/dist/core/health.test.js.map +1 -0
- package/dist/core/init.d.ts +25 -0
- package/dist/core/init.d.ts.map +1 -0
- package/dist/core/init.js +100 -0
- package/dist/core/init.js.map +1 -0
- package/dist/core/init.test.d.ts +8 -0
- package/dist/core/init.test.d.ts.map +1 -0
- package/dist/core/init.test.js +203 -0
- package/dist/core/init.test.js.map +1 -0
- package/dist/core/invariant-coverage.d.ts +41 -0
- package/dist/core/invariant-coverage.d.ts.map +1 -0
- package/dist/core/invariant-coverage.js +181 -0
- package/dist/core/invariant-coverage.js.map +1 -0
- package/dist/core/invariant-coverage.test.d.ts +2 -0
- package/dist/core/invariant-coverage.test.d.ts.map +1 -0
- package/dist/core/invariant-coverage.test.js +188 -0
- package/dist/core/invariant-coverage.test.js.map +1 -0
- package/dist/core/meta-invariants.test.d.ts +17 -0
- package/dist/core/meta-invariants.test.d.ts.map +1 -0
- package/dist/core/meta-invariants.test.js +191 -0
- package/dist/core/meta-invariants.test.js.map +1 -0
- package/dist/core/node-fs.d.ts +22 -0
- package/dist/core/node-fs.d.ts.map +1 -0
- package/dist/core/node-fs.js +47 -0
- package/dist/core/node-fs.js.map +1 -0
- package/dist/core/organon-invariants.test.d.ts +15 -0
- package/dist/core/organon-invariants.test.d.ts.map +1 -0
- package/dist/core/organon-invariants.test.js +149 -0
- package/dist/core/organon-invariants.test.js.map +1 -0
- package/dist/core/query.d.ts +35 -0
- package/dist/core/query.d.ts.map +1 -0
- package/dist/core/query.js +139 -0
- package/dist/core/query.js.map +1 -0
- package/dist/core/query.test.d.ts +2 -0
- package/dist/core/query.test.d.ts.map +1 -0
- package/dist/core/query.test.js +97 -0
- package/dist/core/query.test.js.map +1 -0
- package/dist/core/suggest-tools.d.ts +15 -0
- package/dist/core/suggest-tools.d.ts.map +1 -0
- package/dist/core/suggest-tools.js +139 -0
- package/dist/core/suggest-tools.js.map +1 -0
- package/dist/core/suggest-tools.test.d.ts +2 -0
- package/dist/core/suggest-tools.test.d.ts.map +1 -0
- package/dist/core/suggest-tools.test.js +122 -0
- package/dist/core/suggest-tools.test.js.map +1 -0
- package/dist/core/test-helpers.d.ts +63 -0
- package/dist/core/test-helpers.d.ts.map +1 -0
- package/dist/core/test-helpers.js +265 -0
- package/dist/core/test-helpers.js.map +1 -0
- package/dist/core/types.d.ts +277 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +9 -0
- package/dist/core/types.js.map +1 -0
- package/dist/core/upgrade.d.ts +46 -0
- package/dist/core/upgrade.d.ts.map +1 -0
- package/dist/core/upgrade.js +227 -0
- package/dist/core/upgrade.js.map +1 -0
- package/dist/core/upgrade.test.d.ts +8 -0
- package/dist/core/upgrade.test.d.ts.map +1 -0
- package/dist/core/upgrade.test.js +370 -0
- package/dist/core/upgrade.test.js.map +1 -0
- package/dist/core/validate-frontmatter.d.ts +20 -0
- package/dist/core/validate-frontmatter.d.ts.map +1 -0
- package/dist/core/validate-frontmatter.js +529 -0
- package/dist/core/validate-frontmatter.js.map +1 -0
- package/dist/core/validate-frontmatter.test.d.ts +2 -0
- package/dist/core/validate-frontmatter.test.d.ts.map +1 -0
- package/dist/core/validate-frontmatter.test.js +366 -0
- package/dist/core/validate-frontmatter.test.js.map +1 -0
- package/dist/core/validate-workflow.d.ts +17 -0
- package/dist/core/validate-workflow.d.ts.map +1 -0
- package/dist/core/validate-workflow.js +233 -0
- package/dist/core/validate-workflow.js.map +1 -0
- package/dist/core/validate-workflow.test.d.ts +2 -0
- package/dist/core/validate-workflow.test.d.ts.map +1 -0
- package/dist/core/validate-workflow.test.js +205 -0
- package/dist/core/validate-workflow.test.js.map +1 -0
- package/dist/core/verify-tier4-tests.d.ts +34 -0
- package/dist/core/verify-tier4-tests.d.ts.map +1 -0
- package/dist/core/verify-tier4-tests.js +106 -0
- package/dist/core/verify-tier4-tests.js.map +1 -0
- package/dist/core/verify-tier4-tests.test.d.ts +2 -0
- package/dist/core/verify-tier4-tests.test.d.ts.map +1 -0
- package/dist/core/verify-tier4-tests.test.js +140 -0
- package/dist/core/verify-tier4-tests.test.js.map +1 -0
- package/dist/core/verify-triplets.d.ts +17 -0
- package/dist/core/verify-triplets.d.ts.map +1 -0
- package/dist/core/verify-triplets.js +217 -0
- package/dist/core/verify-triplets.js.map +1 -0
- package/dist/core/verify-triplets.test.d.ts +2 -0
- package/dist/core/verify-triplets.test.d.ts.map +1 -0
- package/dist/core/verify-triplets.test.js +147 -0
- package/dist/core/verify-triplets.test.js.map +1 -0
- package/dist/core/verify.d.ts +19 -0
- package/dist/core/verify.d.ts.map +1 -0
- package/dist/core/verify.js +162 -0
- package/dist/core/verify.js.map +1 -0
- package/dist/core/verify.test.d.ts +2 -0
- package/dist/core/verify.test.d.ts.map +1 -0
- package/dist/core/verify.test.js +147 -0
- package/dist/core/verify.test.js.map +1 -0
- package/dist/index.d.ts +31 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +27 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp/prompts.d.ts +9 -0
- package/dist/mcp/prompts.d.ts.map +1 -0
- package/dist/mcp/prompts.js +265 -0
- package/dist/mcp/prompts.js.map +1 -0
- package/dist/mcp/resources.d.ts +7 -0
- package/dist/mcp/resources.d.ts.map +1 -0
- package/dist/mcp/resources.js +111 -0
- package/dist/mcp/resources.js.map +1 -0
- package/dist/mcp/server.d.ts +7 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +31 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/tools.d.ts +7 -0
- package/dist/mcp/tools.d.ts.map +1 -0
- package/dist/mcp/tools.js +130 -0
- package/dist/mcp/tools.js.map +1 -0
- package/dist/templates/config.d.ts +6 -0
- package/dist/templates/config.d.ts.map +1 -0
- package/dist/templates/config.js +30 -0
- package/dist/templates/config.js.map +1 -0
- package/dist/templates/index.d.ts +7 -0
- package/dist/templates/index.d.ts.map +1 -0
- package/dist/templates/index.js +7 -0
- package/dist/templates/index.js.map +1 -0
- package/dist/templates/organon/claude-md.d.ts +7 -0
- package/dist/templates/organon/claude-md.d.ts.map +1 -0
- package/dist/templates/organon/claude-md.js +32 -0
- package/dist/templates/organon/claude-md.js.map +1 -0
- package/dist/templates/organon/ethos.d.ts +5 -0
- package/dist/templates/organon/ethos.d.ts.map +1 -0
- package/dist/templates/organon/ethos.js +69 -0
- package/dist/templates/organon/ethos.js.map +1 -0
- package/dist/templates/organon/index.d.ts +10 -0
- package/dist/templates/organon/index.d.ts.map +1 -0
- package/dist/templates/organon/index.js +10 -0
- package/dist/templates/organon/index.js.map +1 -0
- package/dist/templates/organon/observations-readme.d.ts +5 -0
- package/dist/templates/organon/observations-readme.d.ts.map +1 -0
- package/dist/templates/organon/observations-readme.js +25 -0
- package/dist/templates/organon/observations-readme.js.map +1 -0
- package/dist/templates/organon/philosophy.d.ts +5 -0
- package/dist/templates/organon/philosophy.d.ts.map +1 -0
- package/dist/templates/organon/philosophy.js +75 -0
- package/dist/templates/organon/philosophy.js.map +1 -0
- package/dist/templates/organon/protocols.d.ts +7 -0
- package/dist/templates/organon/protocols.d.ts.map +1 -0
- package/dist/templates/organon/protocols.js +197 -0
- package/dist/templates/organon/protocols.js.map +1 -0
- package/dist/templates/organon/readme.d.ts +5 -0
- package/dist/templates/organon/readme.d.ts.map +1 -0
- package/dist/templates/organon/readme.js +40 -0
- package/dist/templates/organon/readme.js.map +1 -0
- package/dist/templates/skills/domain-feature-design.d.ts +9 -0
- package/dist/templates/skills/domain-feature-design.d.ts.map +1 -0
- package/dist/templates/skills/domain-feature-design.js +123 -0
- package/dist/templates/skills/domain-feature-design.js.map +1 -0
- package/dist/templates/skills/index.d.ts +15 -0
- package/dist/templates/skills/index.d.ts.map +1 -0
- package/dist/templates/skills/index.js +35 -0
- package/dist/templates/skills/index.js.map +1 -0
- package/dist/templates/skills/organon-file-creation.d.ts +9 -0
- package/dist/templates/skills/organon-file-creation.d.ts.map +1 -0
- package/dist/templates/skills/organon-file-creation.js +138 -0
- package/dist/templates/skills/organon-file-creation.js.map +1 -0
- package/dist/templates/skills/quality-review.d.ts +9 -0
- package/dist/templates/skills/quality-review.d.ts.map +1 -0
- package/dist/templates/skills/quality-review.js +127 -0
- package/dist/templates/skills/quality-review.js.map +1 -0
- package/dist/templates/skills/session-compounding.d.ts +9 -0
- package/dist/templates/skills/session-compounding.d.ts.map +1 -0
- package/dist/templates/skills/session-compounding.js +118 -0
- package/dist/templates/skills/session-compounding.js.map +1 -0
- package/dist/templates/skills/verify-and-health.d.ts +9 -0
- package/dist/templates/skills/verify-and-health.d.ts.map +1 -0
- package/dist/templates/skills/verify-and-health.js +99 -0
- package/dist/templates/skills/verify-and-health.js.map +1 -0
- package/package.json +72 -0
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* organon validate — Validate organon frontmatter (4-stage validation).
|
|
3
|
+
*/
|
|
4
|
+
import chalk from 'chalk';
|
|
5
|
+
import { resolveConfig } from '../../core/config.js';
|
|
6
|
+
import { validateFrontmatter } from '../../core/validate-frontmatter.js';
|
|
7
|
+
import { NodeFileSystem } from '../../core/node-fs.js';
|
|
8
|
+
export const validateCommand = {
|
|
9
|
+
command: 'validate [files..]',
|
|
10
|
+
describe: 'Validate organon frontmatter (schema, references, truthfulness, consistency)',
|
|
11
|
+
builder: (yargs) => {
|
|
12
|
+
return yargs
|
|
13
|
+
.positional('files', {
|
|
14
|
+
describe: 'Specific files to validate (validates all if omitted)',
|
|
15
|
+
type: 'string',
|
|
16
|
+
array: true,
|
|
17
|
+
})
|
|
18
|
+
.option('project-root', {
|
|
19
|
+
describe: 'Project root directory',
|
|
20
|
+
type: 'string',
|
|
21
|
+
default: process.cwd(),
|
|
22
|
+
})
|
|
23
|
+
.option('config', {
|
|
24
|
+
describe: 'Path to organon.config.json',
|
|
25
|
+
type: 'string',
|
|
26
|
+
})
|
|
27
|
+
.option('stages', {
|
|
28
|
+
describe: 'Validation stages to run (1=schema, 2=references, 3=truthfulness, 4=consistency)',
|
|
29
|
+
type: 'array',
|
|
30
|
+
coerce: (arr) => arr.map(Number),
|
|
31
|
+
})
|
|
32
|
+
.example('$0 validate', 'Validate all organon files')
|
|
33
|
+
.example('$0 validate book-llms/ETHOS.md', 'Validate a specific file')
|
|
34
|
+
.example('$0 validate --stages 1 3', 'Run only schema and truthfulness checks');
|
|
35
|
+
},
|
|
36
|
+
handler: async (args) => {
|
|
37
|
+
const fs = new NodeFileSystem();
|
|
38
|
+
const config = await resolveConfig(args['project-root'], fs, args.config);
|
|
39
|
+
const result = await validateFrontmatter({
|
|
40
|
+
projectRoot: args['project-root'],
|
|
41
|
+
config,
|
|
42
|
+
fs,
|
|
43
|
+
files: args.files,
|
|
44
|
+
stages: args.stages,
|
|
45
|
+
});
|
|
46
|
+
// Output results
|
|
47
|
+
console.log(chalk.blue('Organon Validate'));
|
|
48
|
+
console.log();
|
|
49
|
+
console.log(`Files checked: ${result.filesChecked}`);
|
|
50
|
+
for (const fileResult of result.results) {
|
|
51
|
+
if (fileResult.valid && fileResult.warnings.length === 0) {
|
|
52
|
+
console.log(chalk.green(` ✓ ${fileResult.file}`));
|
|
53
|
+
}
|
|
54
|
+
else if (fileResult.valid) {
|
|
55
|
+
console.log(chalk.yellow(` ⚠ ${fileResult.file} (${fileResult.warnings.length} warnings)`));
|
|
56
|
+
for (const w of fileResult.warnings) {
|
|
57
|
+
printDiagnostic(w);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
console.log(chalk.red(` ✗ ${fileResult.file} (${fileResult.errors.length} errors)`));
|
|
62
|
+
for (const e of fileResult.errors) {
|
|
63
|
+
printDiagnostic(e);
|
|
64
|
+
}
|
|
65
|
+
for (const w of fileResult.warnings) {
|
|
66
|
+
printDiagnostic(w);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
console.log();
|
|
71
|
+
if (result.success) {
|
|
72
|
+
console.log(chalk.green(`✓ All ${result.filesChecked} files passed validation`));
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
console.log(chalk.red(`✗ ${result.filesWithErrors} file(s) failed validation`));
|
|
76
|
+
process.exit(1);
|
|
77
|
+
}
|
|
78
|
+
},
|
|
79
|
+
};
|
|
80
|
+
function printDiagnostic(d) {
|
|
81
|
+
const prefix = d.severity === 'error' ? chalk.red(' ✗') :
|
|
82
|
+
d.severity === 'warning' ? chalk.yellow(' ⚠') :
|
|
83
|
+
chalk.dim(' ℹ');
|
|
84
|
+
console.log(`${prefix} [${d.code}] ${d.message}`);
|
|
85
|
+
if (d.suggestion) {
|
|
86
|
+
console.log(chalk.dim(` → ${d.suggestion}`));
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=validate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../../src/cli/commands/validate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* organon verify — Run verification gates.
|
|
3
|
+
*/
|
|
4
|
+
import type { CommandModule } from 'yargs';
|
|
5
|
+
interface VerifyArgs {
|
|
6
|
+
'project-root': string;
|
|
7
|
+
config?: string;
|
|
8
|
+
gate?: string[];
|
|
9
|
+
}
|
|
10
|
+
export declare const verifyCommand: CommandModule<{}, VerifyArgs>;
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=verify.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/verify.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAM3C,UAAU,UAAU;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,eAAO,MAAM,aAAa,EAAE,aAAa,CAAC,EAAE,EAAE,UAAU,CA+DvD,CAAC"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* organon verify — Run verification gates.
|
|
3
|
+
*/
|
|
4
|
+
import chalk from 'chalk';
|
|
5
|
+
import { resolveConfig } from '../../core/config.js';
|
|
6
|
+
import { verify } from '../../core/verify.js';
|
|
7
|
+
import { NodeFileSystem } from '../../core/node-fs.js';
|
|
8
|
+
export const verifyCommand = {
|
|
9
|
+
command: 'verify',
|
|
10
|
+
describe: 'Run verification gates (frontmatter, triplets, freshness)',
|
|
11
|
+
builder: (yargs) => {
|
|
12
|
+
return yargs
|
|
13
|
+
.option('project-root', {
|
|
14
|
+
describe: 'Project root directory',
|
|
15
|
+
type: 'string',
|
|
16
|
+
default: process.cwd(),
|
|
17
|
+
})
|
|
18
|
+
.option('config', {
|
|
19
|
+
describe: 'Path to organon.config.json',
|
|
20
|
+
type: 'string',
|
|
21
|
+
})
|
|
22
|
+
.option('gate', {
|
|
23
|
+
describe: 'Run specific gate(s)',
|
|
24
|
+
type: 'array',
|
|
25
|
+
string: true,
|
|
26
|
+
})
|
|
27
|
+
.example('$0 verify', 'Run all verification gates')
|
|
28
|
+
.example('$0 verify --gate frontmatter', 'Run only frontmatter gate')
|
|
29
|
+
.example('$0 verify --gate frontmatter triplets', 'Run specific gates');
|
|
30
|
+
},
|
|
31
|
+
handler: async (args) => {
|
|
32
|
+
const fs = new NodeFileSystem();
|
|
33
|
+
const config = await resolveConfig(args['project-root'], fs, args.config);
|
|
34
|
+
const result = await verify({
|
|
35
|
+
projectRoot: args['project-root'],
|
|
36
|
+
config,
|
|
37
|
+
fs,
|
|
38
|
+
gates: args.gate,
|
|
39
|
+
});
|
|
40
|
+
console.log(chalk.blue('Organon Verify'));
|
|
41
|
+
console.log();
|
|
42
|
+
for (const gate of result.gates) {
|
|
43
|
+
const icon = gate.passed ? chalk.green('✓') : chalk.red('✗');
|
|
44
|
+
console.log(` ${icon} ${gate.gate}`);
|
|
45
|
+
for (const e of gate.errors) {
|
|
46
|
+
const filePrefix = e.file ? `${e.file}: ` : '';
|
|
47
|
+
console.log(chalk.red(` ✗ [${e.code}] ${filePrefix}${e.message}`));
|
|
48
|
+
if (e.suggestion)
|
|
49
|
+
console.log(chalk.dim(` → ${e.suggestion}`));
|
|
50
|
+
}
|
|
51
|
+
for (const w of gate.warnings) {
|
|
52
|
+
const filePrefix = w.file ? `${w.file}: ` : '';
|
|
53
|
+
console.log(chalk.yellow(` ⚠ [${w.code}] ${filePrefix}${w.message}`));
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
console.log();
|
|
57
|
+
if (result.success) {
|
|
58
|
+
console.log(chalk.green(`✓ All ${result.gates.length} gate(s) passed`));
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
const failed = result.gates.filter((g) => !g.passed).length;
|
|
62
|
+
console.log(chalk.red(`✗ ${failed} gate(s) failed`));
|
|
63
|
+
process.exit(1);
|
|
64
|
+
}
|
|
65
|
+
},
|
|
66
|
+
};
|
|
67
|
+
//# sourceMappingURL=verify.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verify.js","sourceRoot":"","sources":["../../../src/cli/commands/verify.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Organon CLI — Tools for the Organon Methodology.
|
|
4
|
+
*
|
|
5
|
+
* Commands:
|
|
6
|
+
* init — Bootstrap a new project with Organon structure
|
|
7
|
+
* upgrade — Detect version drift and upgrade project
|
|
8
|
+
* validate — Validate organon frontmatter
|
|
9
|
+
* generate — Auto-generate frontmatter from content
|
|
10
|
+
* query — Query organons by metadata
|
|
11
|
+
* health — Health dashboard
|
|
12
|
+
* find — Cross-domain discovery
|
|
13
|
+
* verify — Run verification gates
|
|
14
|
+
* coverage — Invariant coverage analysis
|
|
15
|
+
* generate-tests — Generate test scaffolds for uncovered invariants
|
|
16
|
+
* mcp — Start MCP server
|
|
17
|
+
*/
|
|
18
|
+
export {};
|
|
19
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;GAeG"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Organon CLI — Tools for the Organon Methodology.
|
|
4
|
+
*
|
|
5
|
+
* Commands:
|
|
6
|
+
* init — Bootstrap a new project with Organon structure
|
|
7
|
+
* upgrade — Detect version drift and upgrade project
|
|
8
|
+
* validate — Validate organon frontmatter
|
|
9
|
+
* generate — Auto-generate frontmatter from content
|
|
10
|
+
* query — Query organons by metadata
|
|
11
|
+
* health — Health dashboard
|
|
12
|
+
* find — Cross-domain discovery
|
|
13
|
+
* verify — Run verification gates
|
|
14
|
+
* coverage — Invariant coverage analysis
|
|
15
|
+
* generate-tests — Generate test scaffolds for uncovered invariants
|
|
16
|
+
* mcp — Start MCP server
|
|
17
|
+
*/
|
|
18
|
+
import yargs from 'yargs';
|
|
19
|
+
import { hideBin } from 'yargs/helpers';
|
|
20
|
+
import chalk from 'chalk';
|
|
21
|
+
import { initCommand } from './commands/init.js';
|
|
22
|
+
import { upgradeCommand } from './commands/upgrade.js';
|
|
23
|
+
import { validateCommand } from './commands/validate.js';
|
|
24
|
+
import { generateCommand } from './commands/generate.js';
|
|
25
|
+
import { queryCommand } from './commands/query.js';
|
|
26
|
+
import { healthCommand } from './commands/health.js';
|
|
27
|
+
import { findCommand } from './commands/find.js';
|
|
28
|
+
import { verifyCommand } from './commands/verify.js';
|
|
29
|
+
import { coverageCommand } from './commands/coverage.js';
|
|
30
|
+
import { generateTestsCommand } from './commands/generate-tests.js';
|
|
31
|
+
import { mcpCommand } from './commands/mcp.js';
|
|
32
|
+
async function main() {
|
|
33
|
+
await yargs(hideBin(process.argv))
|
|
34
|
+
.scriptName('organon')
|
|
35
|
+
.usage('$0 <command> [options]')
|
|
36
|
+
.command(initCommand)
|
|
37
|
+
.command(upgradeCommand)
|
|
38
|
+
.command(validateCommand)
|
|
39
|
+
.command(generateCommand)
|
|
40
|
+
.command(queryCommand)
|
|
41
|
+
.command(healthCommand)
|
|
42
|
+
.command(findCommand)
|
|
43
|
+
.command(verifyCommand)
|
|
44
|
+
.command(coverageCommand)
|
|
45
|
+
.command(generateTestsCommand)
|
|
46
|
+
.command(mcpCommand)
|
|
47
|
+
.demandCommand(1, chalk.red('Please specify a command'))
|
|
48
|
+
.help()
|
|
49
|
+
.alias('h', 'help')
|
|
50
|
+
.version()
|
|
51
|
+
.alias('v', 'version')
|
|
52
|
+
.strict()
|
|
53
|
+
.parse();
|
|
54
|
+
}
|
|
55
|
+
main().catch((error) => {
|
|
56
|
+
console.error(chalk.red('Error:'), error.message);
|
|
57
|
+
process.exit(1);
|
|
58
|
+
});
|
|
59
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,KAAK,UAAU,IAAI;IACjB,MAAM,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;SAC/B,UAAU,CAAC,SAAS,CAAC;SACrB,KAAK,CAAC,wBAAwB,CAAC;SAC/B,OAAO,CAAC,WAAW,CAAC;SACpB,OAAO,CAAC,cAAc,CAAC;SACvB,OAAO,CAAC,eAAe,CAAC;SACxB,OAAO,CAAC,eAAe,CAAC;SACxB,OAAO,CAAC,YAAY,CAAC;SACrB,OAAO,CAAC,aAAa,CAAC;SACtB,OAAO,CAAC,WAAW,CAAC;SACpB,OAAO,CAAC,aAAa,CAAC;SACtB,OAAO,CAAC,eAAe,CAAC;SACxB,OAAO,CAAC,oBAAoB,CAAC;SAC7B,OAAO,CAAC,UAAU,CAAC;SACnB,aAAa,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;SACvD,IAAI,EAAE;SACN,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC;SAClB,OAAO,EAAE;SACT,KAAK,CAAC,GAAG,EAAE,SAAS,CAAC;SACrB,MAAM,EAAE;SACR,KAAK,EAAE,CAAC;AACb,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IAClD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Protocol parsing utility.
|
|
3
|
+
*
|
|
4
|
+
* Extracts protocol metadata from PROTOCOL.md / PROTOCOLS.md content
|
|
5
|
+
* by analyzing ## headings, numbered steps, automation tier declarations,
|
|
6
|
+
* and workflow bindings.
|
|
7
|
+
*/
|
|
8
|
+
import type { ProtocolEntry } from './types.js';
|
|
9
|
+
/**
|
|
10
|
+
* Parse protocol entries from markdown content.
|
|
11
|
+
* Looks for patterns like:
|
|
12
|
+
* ### PROTO-XXX-N: Protocol Name
|
|
13
|
+
* or ## Protocol: Name
|
|
14
|
+
* followed by steps, automation tier, etc.
|
|
15
|
+
*/
|
|
16
|
+
export declare function parseProtocols(content: string): ProtocolEntry[];
|
|
17
|
+
//# sourceMappingURL=add-protocols-array.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add-protocols-array.d.ts","sourceRoot":"","sources":["../../src/core/add-protocols-array.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAA8B,aAAa,EAAE,MAAM,YAAY,CAAC;AAE5E;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,aAAa,EAAE,CAyC/D"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Protocol parsing utility.
|
|
3
|
+
*
|
|
4
|
+
* Extracts protocol metadata from PROTOCOL.md / PROTOCOLS.md content
|
|
5
|
+
* by analyzing ## headings, numbered steps, automation tier declarations,
|
|
6
|
+
* and workflow bindings.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Parse protocol entries from markdown content.
|
|
10
|
+
* Looks for patterns like:
|
|
11
|
+
* ### PROTO-XXX-N: Protocol Name
|
|
12
|
+
* or ## Protocol: Name
|
|
13
|
+
* followed by steps, automation tier, etc.
|
|
14
|
+
*/
|
|
15
|
+
export function parseProtocols(content) {
|
|
16
|
+
const protocols = [];
|
|
17
|
+
// Split by protocol headers (### PROTO-XXX-N or ## Protocol N:)
|
|
18
|
+
const protocolPattern = /^#{2,3}\s+(?:Protocol\s*:?\s*)?(?<id>PROTO-[\w-]+(?:-\d+)?)\s*[:\-–—]\s*(?<name>.+)$/gm;
|
|
19
|
+
let match;
|
|
20
|
+
const allMatches = [];
|
|
21
|
+
while ((match = protocolPattern.exec(content)) !== null) {
|
|
22
|
+
allMatches.push({
|
|
23
|
+
id: match.groups.id,
|
|
24
|
+
name: match.groups.name.trim(),
|
|
25
|
+
startIndex: match.index + match[0].length,
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
for (let i = 0; i < allMatches.length; i++) {
|
|
29
|
+
const current = allMatches[i];
|
|
30
|
+
const endIndex = i + 1 < allMatches.length
|
|
31
|
+
? allMatches[i + 1].startIndex - allMatches[i + 1].id.length - 10
|
|
32
|
+
: content.length;
|
|
33
|
+
const section = content.slice(current.startIndex, endIndex);
|
|
34
|
+
const steps = countSteps(section);
|
|
35
|
+
const automationTier = detectAutomationTier(section);
|
|
36
|
+
const workflow = extractWorkflow(section);
|
|
37
|
+
const tools = extractTools(section);
|
|
38
|
+
const complexity = inferComplexity(steps, automationTier);
|
|
39
|
+
protocols.push({
|
|
40
|
+
id: current.id,
|
|
41
|
+
name: current.name,
|
|
42
|
+
steps,
|
|
43
|
+
automation_tier: automationTier,
|
|
44
|
+
...(workflow ? { workflow } : {}),
|
|
45
|
+
...(tools.length > 0 ? { tools } : {}),
|
|
46
|
+
complexity,
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
return protocols;
|
|
50
|
+
}
|
|
51
|
+
function countSteps(section) {
|
|
52
|
+
const lines = section.split('\n');
|
|
53
|
+
let count = 0;
|
|
54
|
+
for (const line of lines) {
|
|
55
|
+
const trimmed = line.trim();
|
|
56
|
+
// Count numbered steps: "1. ", "2. ", etc.
|
|
57
|
+
if (/^\d+\.\s/.test(trimmed)) {
|
|
58
|
+
count++;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
return Math.max(count, 1); // At least 1 step
|
|
62
|
+
}
|
|
63
|
+
function detectAutomationTier(section) {
|
|
64
|
+
const lower = section.toLowerCase();
|
|
65
|
+
if (/automation[_\s]?tier\s*:\s*automated/i.test(section))
|
|
66
|
+
return 'automated';
|
|
67
|
+
if (/automation[_\s]?tier\s*:\s*semi[_-]?automated/i.test(section))
|
|
68
|
+
return 'semi-automated';
|
|
69
|
+
if (/automation[_\s]?tier\s*:\s*manual/i.test(section))
|
|
70
|
+
return 'manual';
|
|
71
|
+
// Infer from content
|
|
72
|
+
if (lower.includes('workflow:') || lower.includes('workflow binding'))
|
|
73
|
+
return 'automated';
|
|
74
|
+
if (lower.includes('run the') || lower.includes('execute'))
|
|
75
|
+
return 'semi-automated';
|
|
76
|
+
return 'manual';
|
|
77
|
+
}
|
|
78
|
+
function extractWorkflow(section) {
|
|
79
|
+
const match = section.match(/workflow\s*:\s*(\S+)/i);
|
|
80
|
+
return match ? match[1] : undefined;
|
|
81
|
+
}
|
|
82
|
+
function extractTools(section) {
|
|
83
|
+
const match = section.match(/tools?\s*:\s*\[([^\]]+)\]/i);
|
|
84
|
+
if (!match)
|
|
85
|
+
return [];
|
|
86
|
+
return match[1].split(',').map((t) => t.trim().replace(/['"]/g, '')).filter(Boolean);
|
|
87
|
+
}
|
|
88
|
+
function inferComplexity(steps, tier) {
|
|
89
|
+
if (steps >= 8 || tier === 'automated')
|
|
90
|
+
return 'high';
|
|
91
|
+
if (steps >= 4 || tier === 'semi-automated')
|
|
92
|
+
return 'medium';
|
|
93
|
+
return 'low';
|
|
94
|
+
}
|
|
95
|
+
//# sourceMappingURL=add-protocols-array.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add-protocols-array.js","sourceRoot":"","sources":["../../src/core/add-protocols-array.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add-protocols-array.test.d.ts","sourceRoot":"","sources":["../../src/core/add-protocols-array.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { describe, it, expect } from 'vitest';
|
|
2
|
+
import { parseProtocols } from './add-protocols-array.js';
|
|
3
|
+
describe('parseProtocols', () => {
|
|
4
|
+
it('parses protocol entries from markdown', () => {
|
|
5
|
+
const content = `
|
|
6
|
+
### PROTO-RFC-1: RFC Implementation
|
|
7
|
+
|
|
8
|
+
1. Create RFC document
|
|
9
|
+
2. Write impact section
|
|
10
|
+
3. Get review
|
|
11
|
+
4. Implement
|
|
12
|
+
5. Update organon
|
|
13
|
+
6. Merge
|
|
14
|
+
|
|
15
|
+
Automation tier: automated
|
|
16
|
+
Workflow: implement-rfc
|
|
17
|
+
Tools: [rfc:context, rfc:verify]
|
|
18
|
+
`;
|
|
19
|
+
const protocols = parseProtocols(content);
|
|
20
|
+
expect(protocols).toHaveLength(1);
|
|
21
|
+
expect(protocols[0].id).toBe('PROTO-RFC-1');
|
|
22
|
+
expect(protocols[0].name).toBe('RFC Implementation');
|
|
23
|
+
expect(protocols[0].steps).toBe(6);
|
|
24
|
+
expect(protocols[0].automation_tier).toBe('automated');
|
|
25
|
+
expect(protocols[0].workflow).toBe('implement-rfc');
|
|
26
|
+
expect(protocols[0].tools).toEqual(['rfc:context', 'rfc:verify']);
|
|
27
|
+
});
|
|
28
|
+
it('parses multiple protocols', () => {
|
|
29
|
+
const content = `
|
|
30
|
+
### PROTO-REV-1: Code Review
|
|
31
|
+
|
|
32
|
+
1. Load constraints
|
|
33
|
+
2. Check violations
|
|
34
|
+
3. Report
|
|
35
|
+
|
|
36
|
+
### PROTO-DEP-1: Deploy
|
|
37
|
+
|
|
38
|
+
1. Build
|
|
39
|
+
2. Test
|
|
40
|
+
3. Deploy
|
|
41
|
+
4. Verify
|
|
42
|
+
5. Monitor
|
|
43
|
+
`;
|
|
44
|
+
const protocols = parseProtocols(content);
|
|
45
|
+
expect(protocols).toHaveLength(2);
|
|
46
|
+
expect(protocols[0].id).toBe('PROTO-REV-1');
|
|
47
|
+
expect(protocols[1].id).toBe('PROTO-DEP-1');
|
|
48
|
+
});
|
|
49
|
+
it('infers complexity from steps and tier', () => {
|
|
50
|
+
const content = `
|
|
51
|
+
### PROTO-SIMPLE-1: Simple Task
|
|
52
|
+
|
|
53
|
+
1. Do thing
|
|
54
|
+
|
|
55
|
+
### PROTO-COMPLEX-1: Complex Task
|
|
56
|
+
|
|
57
|
+
1. Step 1
|
|
58
|
+
2. Step 2
|
|
59
|
+
3. Step 3
|
|
60
|
+
4. Step 4
|
|
61
|
+
5. Step 5
|
|
62
|
+
6. Step 6
|
|
63
|
+
7. Step 7
|
|
64
|
+
8. Step 8
|
|
65
|
+
`;
|
|
66
|
+
const protocols = parseProtocols(content);
|
|
67
|
+
expect(protocols[0].complexity).toBe('low');
|
|
68
|
+
expect(protocols[1].complexity).toBe('high');
|
|
69
|
+
});
|
|
70
|
+
it('returns empty for no protocols', () => {
|
|
71
|
+
const content = '# Just a heading\n\nSome content.';
|
|
72
|
+
const protocols = parseProtocols(content);
|
|
73
|
+
expect(protocols).toHaveLength(0);
|
|
74
|
+
});
|
|
75
|
+
it('defaults to manual automation tier', () => {
|
|
76
|
+
const content = `
|
|
77
|
+
### PROTO-MAN-1: Manual Process
|
|
78
|
+
|
|
79
|
+
1. Think about it
|
|
80
|
+
2. Do it
|
|
81
|
+
`;
|
|
82
|
+
const protocols = parseProtocols(content);
|
|
83
|
+
expect(protocols[0].automation_tier).toBe('manual');
|
|
84
|
+
});
|
|
85
|
+
});
|
|
86
|
+
//# sourceMappingURL=add-protocols-array.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"add-protocols-array.test.js","sourceRoot":"","sources":["../../src/core/add-protocols-array.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE1D,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,MAAM,OAAO,GAAG;;;;;;;;;;;;;CAanB,CAAC;QAEE,MAAM,SAAS,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;QAC1C,MAAM,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAClC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC5C,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QACrD,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACnC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACvD,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QACpD,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACnC,MAAM,OAAO,GAAG;;;;;;;;;;;;;;CAcnB,CAAC;QAEE,MAAM,SAAS,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;QAC1C,MAAM,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAClC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC5C,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,MAAM,OAAO,GAAG;;;;;;;;;;;;;;;CAenB,CAAC;QAEE,MAAM,SAAS,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;QAC1C,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5C,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACxC,MAAM,OAAO,GAAG,mCAAmC,CAAC;QACpD,MAAM,SAAS,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;QAC1C,MAAM,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC5C,MAAM,OAAO,GAAG;;;;;CAKnB,CAAC;QAEE,MAAM,SAAS,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;QAC1C,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OrganonConfig resolution.
|
|
3
|
+
*
|
|
4
|
+
* Discovery order:
|
|
5
|
+
* 1. Explicit config file path (--config flag)
|
|
6
|
+
* 2. organon.config.json in projectRoot
|
|
7
|
+
* 3. Convention-based defaults (scan for organon/, .claude/skills/, etc.)
|
|
8
|
+
*/
|
|
9
|
+
import { z } from 'zod';
|
|
10
|
+
import type { FileSystem, OrganonConfig } from './types.js';
|
|
11
|
+
declare const ConfigFileSchema: z.ZodObject<{
|
|
12
|
+
methodology_version: z.ZodOptional<z.ZodString>;
|
|
13
|
+
organonPaths: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
14
|
+
organonGlobs: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
15
|
+
ignorePatterns: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
16
|
+
workflowPaths: z.ZodOptional<z.ZodObject<{
|
|
17
|
+
claudeCode: z.ZodOptional<z.ZodString>;
|
|
18
|
+
cursor: z.ZodOptional<z.ZodString>;
|
|
19
|
+
generic: z.ZodOptional<z.ZodString>;
|
|
20
|
+
}, z.core.$strict>>;
|
|
21
|
+
freshnessThresholdHours: z.ZodOptional<z.ZodNumber>;
|
|
22
|
+
testGlobs: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
23
|
+
testIgnorePatterns: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
24
|
+
}, z.core.$strict>;
|
|
25
|
+
export type ConfigFile = z.infer<typeof ConfigFileSchema>;
|
|
26
|
+
/**
|
|
27
|
+
* Resolve config by merging file-based config with convention defaults.
|
|
28
|
+
*/
|
|
29
|
+
export declare function resolveConfig(projectRoot: string, fs: FileSystem, configPath?: string): Promise<OrganonConfig>;
|
|
30
|
+
/**
|
|
31
|
+
* Simple path join that handles both / and \ separators.
|
|
32
|
+
* Avoids importing node:path in the core module.
|
|
33
|
+
*/
|
|
34
|
+
export declare function joinPath(...segments: string[]): string;
|
|
35
|
+
/**
|
|
36
|
+
* Get the directory portion of a path.
|
|
37
|
+
*/
|
|
38
|
+
export declare function dirName(path: string): string;
|
|
39
|
+
/**
|
|
40
|
+
* Get the filename from a path.
|
|
41
|
+
*/
|
|
42
|
+
export declare function baseName(path: string): string;
|
|
43
|
+
export {};
|
|
44
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAU5D,QAAA,MAAM,gBAAgB;;;;;;;;;;;;;kBASX,CAAC;AAEZ,MAAM,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AA+B1D;;GAEG;AACH,wBAAsB,aAAa,CACjC,WAAW,EAAE,MAAM,EACnB,EAAE,EAAE,UAAU,EACd,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,aAAa,CAAC,CAyBxB;AAqCD;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,GAAG,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,CAKtD;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAK5C;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAI7C"}
|