@nac3/forge-cli 1.18.0 → 1.19.1
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/bin/yf.d.ts.map +1 -1
- package/dist/bin/yf.js +4 -0
- package/dist/bin/yf.js.map +1 -1
- package/dist/chat/doctrine_digest.d.ts.map +1 -1
- package/dist/chat/doctrine_digest.js +11 -0
- package/dist/chat/doctrine_digest.js.map +1 -1
- package/dist/chat/panel.d.ts.map +1 -1
- package/dist/chat/panel.js +287 -2
- package/dist/chat/panel.js.map +1 -1
- package/dist/chat/project_slug.d.ts.map +1 -1
- package/dist/chat/project_slug.js +29 -0
- package/dist/chat/project_slug.js.map +1 -1
- package/dist/chat/server.d.ts.map +1 -1
- package/dist/chat/server.js +144 -22
- package/dist/chat/server.js.map +1 -1
- package/dist/chat/tools/evidence.d.ts +30 -0
- package/dist/chat/tools/evidence.d.ts.map +1 -0
- package/dist/chat/tools/evidence.js +74 -0
- package/dist/chat/tools/evidence.js.map +1 -0
- package/dist/chat/tools/pending.d.ts +3 -0
- package/dist/chat/tools/pending.d.ts.map +1 -1
- package/dist/chat/tools/pending.js +71 -1
- package/dist/chat/tools/pending.js.map +1 -1
- package/dist/chat/tools/urazuke.d.ts +22 -0
- package/dist/chat/tools/urazuke.d.ts.map +1 -0
- package/dist/chat/tools/urazuke.js +54 -0
- package/dist/chat/tools/urazuke.js.map +1 -0
- package/dist/chat/tools/workflow.d.ts.map +1 -1
- package/dist/chat/tools/workflow.js +5 -3
- package/dist/chat/tools/workflow.js.map +1 -1
- package/dist/chat/tools.d.ts.map +1 -1
- package/dist/chat/tools.js +22 -0
- package/dist/chat/tools.js.map +1 -1
- package/dist/chat/urazuke_section.d.ts +8 -0
- package/dist/chat/urazuke_section.d.ts.map +1 -0
- package/dist/chat/urazuke_section.js +42 -0
- package/dist/chat/urazuke_section.js.map +1 -0
- package/dist/commands/pending.d.ts +1 -0
- package/dist/commands/pending.d.ts.map +1 -1
- package/dist/commands/pending.js +82 -8
- package/dist/commands/pending.js.map +1 -1
- package/dist/commands/start.d.ts +60 -0
- package/dist/commands/start.d.ts.map +1 -0
- package/dist/commands/start.js +265 -0
- package/dist/commands/start.js.map +1 -0
- package/dist/commands/urazuke.d.ts +17 -0
- package/dist/commands/urazuke.d.ts.map +1 -0
- package/dist/commands/urazuke.js +541 -0
- package/dist/commands/urazuke.js.map +1 -0
- package/dist/commands/workflow.js +4 -4
- package/dist/commands/workflow.js.map +1 -1
- package/dist/core/brain_config.d.ts +4 -0
- package/dist/core/brain_config.d.ts.map +1 -1
- package/dist/core/brain_config.js +2 -0
- package/dist/core/brain_config.js.map +1 -1
- package/dist/core/forge_embed.d.ts.map +1 -1
- package/dist/core/forge_embed.js +10 -0
- package/dist/core/forge_embed.js.map +1 -1
- package/dist/core/native_dialogs.d.ts +13 -0
- package/dist/core/native_dialogs.d.ts.map +1 -0
- package/dist/core/native_dialogs.js +111 -0
- package/dist/core/native_dialogs.js.map +1 -0
- package/dist/core/projects.d.ts +6 -0
- package/dist/core/projects.d.ts.map +1 -1
- package/dist/core/projects.js +1 -1
- package/dist/core/projects.js.map +1 -1
- package/dist/docs/doctrine/urazuke.md +38 -0
- package/dist/nac3/internal_manifest.d.ts.map +1 -1
- package/dist/nac3/internal_manifest.js +96 -2
- package/dist/nac3/internal_manifest.js.map +1 -1
- package/dist/pending/store.d.ts +8 -1
- package/dist/pending/store.d.ts.map +1 -1
- package/dist/pending/store.js +8 -1
- package/dist/pending/store.js.map +1 -1
- package/dist/pending/types.d.ts +41 -1
- package/dist/pending/types.d.ts.map +1 -1
- package/dist/pending/types.js.map +1 -1
- package/dist/urazuke/catalog.d.ts +109 -0
- package/dist/urazuke/catalog.d.ts.map +1 -0
- package/dist/urazuke/catalog.js +459 -0
- package/dist/urazuke/catalog.js.map +1 -0
- package/dist/urazuke/close_gate.d.ts +36 -0
- package/dist/urazuke/close_gate.d.ts.map +1 -0
- package/dist/urazuke/close_gate.js +48 -0
- package/dist/urazuke/close_gate.js.map +1 -0
- package/dist/urazuke/current.d.ts +63 -0
- package/dist/urazuke/current.d.ts.map +1 -0
- package/dist/urazuke/current.js +133 -0
- package/dist/urazuke/current.js.map +1 -0
- package/dist/urazuke/cycle.d.ts +91 -0
- package/dist/urazuke/cycle.d.ts.map +1 -0
- package/dist/urazuke/cycle.js +310 -0
- package/dist/urazuke/cycle.js.map +1 -0
- package/dist/urazuke/enabled.d.ts +31 -0
- package/dist/urazuke/enabled.d.ts.map +1 -0
- package/dist/urazuke/enabled.js +51 -0
- package/dist/urazuke/enabled.js.map +1 -0
- package/dist/urazuke/evidence.d.ts +45 -0
- package/dist/urazuke/evidence.d.ts.map +1 -0
- package/dist/urazuke/evidence.js +264 -0
- package/dist/urazuke/evidence.js.map +1 -0
- package/dist/urazuke/gate.d.ts +68 -0
- package/dist/urazuke/gate.d.ts.map +1 -0
- package/dist/urazuke/gate.js +249 -0
- package/dist/urazuke/gate.js.map +1 -0
- package/dist/urazuke/probes.d.ts +13 -0
- package/dist/urazuke/probes.d.ts.map +1 -0
- package/dist/urazuke/probes.js +87 -0
- package/dist/urazuke/probes.js.map +1 -0
- package/dist/urazuke/prompts.generated.d.ts +12 -0
- package/dist/urazuke/prompts.generated.d.ts.map +1 -0
- package/dist/urazuke/prompts.generated.js +135 -0
- package/dist/urazuke/prompts.generated.js.map +1 -0
- package/dist/urazuke/prompts_client.d.ts +44 -0
- package/dist/urazuke/prompts_client.d.ts.map +1 -0
- package/dist/urazuke/prompts_client.js +151 -0
- package/dist/urazuke/prompts_client.js.map +1 -0
- package/dist/urazuke/quality.d.ts +99 -0
- package/dist/urazuke/quality.d.ts.map +1 -0
- package/dist/urazuke/quality.js +269 -0
- package/dist/urazuke/quality.js.map +1 -0
- package/dist/urazuke/receipts.d.ts +90 -0
- package/dist/urazuke/receipts.d.ts.map +1 -0
- package/dist/urazuke/receipts.js +171 -0
- package/dist/urazuke/receipts.js.map +1 -0
- package/dist/urazuke/report.d.ts +23 -0
- package/dist/urazuke/report.d.ts.map +1 -0
- package/dist/urazuke/report.js +62 -0
- package/dist/urazuke/report.js.map +1 -0
- package/dist/urazuke/retro.d.ts +52 -0
- package/dist/urazuke/retro.d.ts.map +1 -0
- package/dist/urazuke/retro.js +145 -0
- package/dist/urazuke/retro.js.map +1 -0
- package/dist/urazuke/section.d.ts +43 -0
- package/dist/urazuke/section.d.ts.map +1 -0
- package/dist/urazuke/section.js +64 -0
- package/dist/urazuke/section.js.map +1 -0
- package/dist/urazuke/stacks.d.ts +42 -0
- package/dist/urazuke/stacks.d.ts.map +1 -0
- package/dist/urazuke/stacks.js +264 -0
- package/dist/urazuke/stacks.js.map +1 -0
- package/dist/urazuke/workflow.d.ts +23 -0
- package/dist/urazuke/workflow.d.ts.map +1 -0
- package/dist/urazuke/workflow.js +64 -0
- package/dist/urazuke/workflow.js.map +1 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/workflow/config.d.ts +9 -4
- package/dist/workflow/config.d.ts.map +1 -1
- package/dist/workflow/config.js +4 -1
- package/dist/workflow/config.js.map +1 -1
- package/dist/workflow/definitions.d.ts +20 -4
- package/dist/workflow/definitions.d.ts.map +1 -1
- package/dist/workflow/definitions.js +16 -3
- package/dist/workflow/definitions.js.map +1 -1
- package/dist/workflow/instances.d.ts.map +1 -1
- package/dist/workflow/instances.js +6 -0
- package/dist/workflow/instances.js.map +1 -1
- package/dist/workflow/orchestrator.d.ts +10 -1
- package/dist/workflow/orchestrator.d.ts.map +1 -1
- package/dist/workflow/orchestrator.js +54 -7
- package/dist/workflow/orchestrator.js.map +1 -1
- package/dist/workflow/select.d.ts +5 -1
- package/dist/workflow/select.d.ts.map +1 -1
- package/dist/workflow/select.js +16 -5
- package/dist/workflow/select.js.map +1 -1
- package/dist/workflow/state.d.ts +3 -2
- package/dist/workflow/state.d.ts.map +1 -1
- package/dist/workflow/state.js.map +1 -1
- package/docs/doctrine/urazuke.md +38 -0
- package/package.json +18 -20
- package/src/i18n/catalogs/ar.json +550 -542
- package/src/i18n/catalogs/de.json +550 -542
- package/src/i18n/catalogs/en.json +550 -542
- package/src/i18n/catalogs/es.json +550 -542
- package/src/i18n/catalogs/fr.json +550 -542
- package/src/i18n/catalogs/hi.json +550 -542
- package/src/i18n/catalogs/it.json +550 -542
- package/src/i18n/catalogs/ja.json +550 -542
- package/src/i18n/catalogs/pt.json +550 -542
- package/src/i18n/catalogs/zh.json +550 -542
|
@@ -0,0 +1,264 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* STACK ADAPTERS -- what "quality by machine" and "mutation testing" mean
|
|
3
|
+
* per technology (Urazuke step 9).
|
|
4
|
+
*
|
|
5
|
+
* Forge detects the stack from the project root and resolves, for it: the
|
|
6
|
+
* test command, the lint/format commands, the coverage summary file, the
|
|
7
|
+
* mutation tool with its command and report, and the config files Forge
|
|
8
|
+
* can scaffold. The native meters (size, complexity, duplication) in
|
|
9
|
+
* quality.ts work for every stack, so a project with no linter installed
|
|
10
|
+
* still gets a gate; the adapter adds the stack's own tools when present.
|
|
11
|
+
*
|
|
12
|
+
* ASCII-only.
|
|
13
|
+
*/
|
|
14
|
+
import fs from 'node:fs/promises';
|
|
15
|
+
import path from 'node:path';
|
|
16
|
+
async function exists(p) {
|
|
17
|
+
try {
|
|
18
|
+
await fs.access(p);
|
|
19
|
+
return true;
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
return false;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
async function readJson(p) {
|
|
26
|
+
try {
|
|
27
|
+
return JSON.parse(await fs.readFile(p, 'utf8'));
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
return undefined;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
const COMMON_IGNORE = ['node_modules', '.git', 'dist', 'build', 'coverage', '.forge', 'vendor', 'target', 'bin', 'obj', '.venv', 'venv', '__pycache__', '.next', 'out'];
|
|
34
|
+
/** Detect the stack. Node wins when package.json exists; python on
|
|
35
|
+
* pyproject/requirements; go on go.mod; dotnet on *.csproj/*.sln; java on
|
|
36
|
+
* pom.xml/build.gradle; php on composer.json. */
|
|
37
|
+
export async function detectStack(root) {
|
|
38
|
+
const pkg = await readJson(path.join(root, 'package.json'));
|
|
39
|
+
if (pkg)
|
|
40
|
+
return nodeAdapter(root, pkg);
|
|
41
|
+
if (await exists(path.join(root, 'pyproject.toml')) || await exists(path.join(root, 'requirements.txt')) || await exists(path.join(root, 'setup.py')))
|
|
42
|
+
return pythonAdapter();
|
|
43
|
+
if (await exists(path.join(root, 'go.mod')))
|
|
44
|
+
return goAdapter();
|
|
45
|
+
const top = await fs.readdir(root).catch(() => []);
|
|
46
|
+
if (top.some((n) => /\.(csproj|sln)$/i.test(n)))
|
|
47
|
+
return dotnetAdapter();
|
|
48
|
+
if (await exists(path.join(root, 'pom.xml')) || await exists(path.join(root, 'build.gradle')) || await exists(path.join(root, 'build.gradle.kts')))
|
|
49
|
+
return javaAdapter();
|
|
50
|
+
if (await exists(path.join(root, 'composer.json')))
|
|
51
|
+
return phpAdapter();
|
|
52
|
+
return {
|
|
53
|
+
id: 'unknown', label: 'unknown (native meters only)',
|
|
54
|
+
source_exts: ['.ts', '.tsx', '.js', '.jsx', '.py', '.go', '.cs', '.java', '.php', '.rb', '.rs'],
|
|
55
|
+
ignore_dirs: COMMON_IGNORE, test_command: '', lint_commands: [], scaffold: {}, dev_dependencies: [],
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
function nodeAdapter(root, pkg) {
|
|
59
|
+
const scripts = (pkg.scripts ?? {});
|
|
60
|
+
const deps = { ...(pkg.dependencies ?? {}), ...(pkg.devDependencies ?? {}) };
|
|
61
|
+
const pm = deps['pnpm'] !== undefined ? 'pnpm' : 'npm';
|
|
62
|
+
const run = (s) => (pm === 'pnpm' ? 'pnpm ' : 'npm run ') + s;
|
|
63
|
+
const hasVitest = 'vitest' in deps;
|
|
64
|
+
const hasJest = 'jest' in deps;
|
|
65
|
+
const test = scripts['test'] ? (pm === 'pnpm' ? 'pnpm test' : 'npm test') : hasVitest ? 'npx vitest run' : hasJest ? 'npx jest' : 'npm test';
|
|
66
|
+
const lint = [];
|
|
67
|
+
if (scripts['lint'])
|
|
68
|
+
lint.push(run('lint'));
|
|
69
|
+
else if ('eslint' in deps)
|
|
70
|
+
lint.push('npx eslint .');
|
|
71
|
+
if ('prettier' in deps)
|
|
72
|
+
lint.push('npx prettier --check .');
|
|
73
|
+
if ('typescript' in deps && !scripts['lint'])
|
|
74
|
+
lint.push('npx tsc --noEmit');
|
|
75
|
+
const coverage_command = hasVitest ? 'npx vitest run --coverage --coverage.reporter=json-summary' : hasJest ? 'npx jest --coverage --coverageReporters=json-summary' : undefined;
|
|
76
|
+
const hasStryker = Object.keys(deps).some((d) => d.startsWith('@stryker-mutator/'));
|
|
77
|
+
return {
|
|
78
|
+
id: 'node', label: 'Node.js / TypeScript (' + pm + (hasVitest ? ', vitest' : hasJest ? ', jest' : '') + ')',
|
|
79
|
+
source_exts: ['.ts', '.tsx', '.js', '.jsx', '.mjs', '.cjs'], ignore_dirs: COMMON_IGNORE,
|
|
80
|
+
test_command: test, lint_commands: lint,
|
|
81
|
+
...(coverage_command ? { coverage_command, coverage_file: 'coverage/coverage-summary.json', coverage_reader: 'istanbul-summary' } : {}),
|
|
82
|
+
mutation_tool: 'stryker', mutation_command: 'npx stryker run', mutation_report: 'reports/mutation/mutation.json', mutation_reader: 'stryker-json',
|
|
83
|
+
scaffold: {
|
|
84
|
+
'stryker.config.json': JSON.stringify({ $schema: './node_modules/@stryker-mutator/core/schema/stryker-schema.json', mutate: ['src/**/*.{js,mjs,ts}', '!src/**/*.test.{js,ts}', '!src/**/*.d.ts'], testRunner: hasVitest ? 'vitest' : hasJest ? 'jest' : 'command', reporters: ['json', 'clear-text', 'progress'], jsonReporter: { fileName: 'reports/mutation/mutation.json' }, coverageAnalysis: 'perTest' }, null, 2) + '\n',
|
|
85
|
+
...(('eslint' in deps) ? {} : { 'eslint.config.js': "// Minimal gate: size + complexity. Extend freely.\nexport default [{ files: ['**/*.{js,mjs,cjs,ts,tsx}'], rules: { 'max-lines': ['error', { max: 300, skipBlankLines: true, skipComments: true }], 'max-lines-per-function': ['error', { max: 40, skipBlankLines: true, skipComments: true }], complexity: ['error', 10], 'no-unused-vars': 'error' } }];\n" }),
|
|
86
|
+
},
|
|
87
|
+
dev_dependencies: [...(('eslint' in deps) ? [] : ['eslint']), ...(hasStryker ? [] : ['@stryker-mutator/core', hasVitest ? '@stryker-mutator/vitest-runner' : hasJest ? '@stryker-mutator/jest-runner' : ''].filter(Boolean))],
|
|
88
|
+
...(root ? {} : {}),
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
function pythonAdapter() {
|
|
92
|
+
return {
|
|
93
|
+
id: 'python', label: 'Python (pytest, ruff, coverage, mutmut)',
|
|
94
|
+
source_exts: ['.py'], ignore_dirs: COMMON_IGNORE,
|
|
95
|
+
test_command: 'python -m pytest -q',
|
|
96
|
+
lint_commands: ['ruff check .', 'ruff format --check .'],
|
|
97
|
+
coverage_command: 'python -m pytest -q --cov=. --cov-report=json:coverage/coverage.json', coverage_file: 'coverage/coverage.json', coverage_reader: 'coverage-py-json',
|
|
98
|
+
mutation_tool: 'mutmut', mutation_command: 'mutmut run', mutation_report: '', mutation_reader: 'mutmut-text',
|
|
99
|
+
scaffold: {
|
|
100
|
+
'ruff.toml': 'line-length = 100\n[lint]\nselect = ["E", "F", "W", "C901"]\n[lint.mccabe]\nmax-complexity = 10\n',
|
|
101
|
+
},
|
|
102
|
+
dev_dependencies: ['pytest', 'pytest-cov', 'ruff', 'mutmut'],
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
function goAdapter() {
|
|
106
|
+
return {
|
|
107
|
+
id: 'go', label: 'Go (go test, gofmt, go vet, go-mutesting)',
|
|
108
|
+
source_exts: ['.go'], ignore_dirs: COMMON_IGNORE,
|
|
109
|
+
test_command: 'go test ./...',
|
|
110
|
+
lint_commands: ['gofmt -l .', 'go vet ./...'],
|
|
111
|
+
coverage_command: 'go test ./... -coverprofile=coverage/cover.out', coverage_file: 'coverage/cover.out', coverage_reader: 'go-cover',
|
|
112
|
+
mutation_tool: 'go-mutesting', mutation_command: 'go-mutesting ./...', mutation_report: '', mutation_reader: 'go-mutesting-text',
|
|
113
|
+
scaffold: {}, dev_dependencies: ['github.com/zimmski/go-mutesting/cmd/go-mutesting'],
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
function dotnetAdapter() {
|
|
117
|
+
return {
|
|
118
|
+
id: 'dotnet', label: '.NET (dotnet test, dotnet format, Stryker.NET)',
|
|
119
|
+
source_exts: ['.cs'], ignore_dirs: COMMON_IGNORE,
|
|
120
|
+
test_command: 'dotnet test',
|
|
121
|
+
lint_commands: ['dotnet format --verify-no-changes'],
|
|
122
|
+
coverage_command: 'dotnet test --collect:"XPlat Code Coverage" --results-directory coverage', coverage_file: 'coverage', coverage_reader: 'cobertura-xml',
|
|
123
|
+
mutation_tool: 'stryker.net', mutation_command: 'dotnet stryker --reporter json', mutation_report: 'StrykerOutput', mutation_reader: 'stryker-json',
|
|
124
|
+
scaffold: {}, dev_dependencies: ['dotnet-stryker (dotnet tool)'],
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
function javaAdapter() {
|
|
128
|
+
return {
|
|
129
|
+
id: 'java', label: 'Java (mvn/gradle test, checkstyle, jacoco, pitest)',
|
|
130
|
+
source_exts: ['.java', '.kt'], ignore_dirs: COMMON_IGNORE,
|
|
131
|
+
test_command: 'mvn -q test',
|
|
132
|
+
lint_commands: ['mvn -q checkstyle:check'],
|
|
133
|
+
coverage_command: 'mvn -q test jacoco:report', coverage_file: 'target/site/jacoco/jacoco.xml', coverage_reader: 'cobertura-xml',
|
|
134
|
+
mutation_tool: 'pitest', mutation_command: 'mvn -q org.pitest:pitest-maven:mutationCoverage', mutation_report: 'target/pit-reports', mutation_reader: 'stryker-json',
|
|
135
|
+
scaffold: {}, dev_dependencies: ['org.pitest:pitest-maven', 'org.jacoco:jacoco-maven-plugin'],
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
function phpAdapter() {
|
|
139
|
+
return {
|
|
140
|
+
id: 'php', label: 'PHP (phpunit, phpcs, infection)',
|
|
141
|
+
source_exts: ['.php'], ignore_dirs: COMMON_IGNORE,
|
|
142
|
+
test_command: 'vendor/bin/phpunit',
|
|
143
|
+
lint_commands: ['vendor/bin/phpcs'],
|
|
144
|
+
coverage_command: 'vendor/bin/phpunit --coverage-clover coverage/clover.xml', coverage_file: 'coverage/clover.xml', coverage_reader: 'cobertura-xml',
|
|
145
|
+
mutation_tool: 'infection', mutation_command: 'vendor/bin/infection --logger-json=reports/mutation/infection.json', mutation_report: 'reports/mutation/infection.json', mutation_reader: 'stryker-json',
|
|
146
|
+
scaffold: {}, dev_dependencies: ['phpunit/phpunit', 'squizlabs/php_codesniffer', 'infection/infection'],
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
/* ---------------- readers ---------------- */
|
|
150
|
+
/** Line coverage percentage from the stack's report, if readable. */
|
|
151
|
+
export async function readCoveragePct(root, a) {
|
|
152
|
+
if (!a.coverage_file || !a.coverage_reader)
|
|
153
|
+
return undefined;
|
|
154
|
+
const p = path.join(root, a.coverage_file);
|
|
155
|
+
try {
|
|
156
|
+
if (a.coverage_reader === 'istanbul-summary') {
|
|
157
|
+
const j = JSON.parse(await fs.readFile(p, 'utf8'));
|
|
158
|
+
return typeof j.total?.lines?.pct === 'number' ? j.total.lines.pct : undefined;
|
|
159
|
+
}
|
|
160
|
+
if (a.coverage_reader === 'coverage-py-json') {
|
|
161
|
+
const j = JSON.parse(await fs.readFile(p, 'utf8'));
|
|
162
|
+
return typeof j.totals?.percent_covered === 'number' ? Math.round(j.totals.percent_covered * 10) / 10 : undefined;
|
|
163
|
+
}
|
|
164
|
+
if (a.coverage_reader === 'go-cover') {
|
|
165
|
+
const txt = await fs.readFile(p, 'utf8');
|
|
166
|
+
let covered = 0, total = 0;
|
|
167
|
+
for (const line of txt.split('\n').slice(1)) {
|
|
168
|
+
const m = /\s(\d+)\s+(\d+)$/.exec(line.trim());
|
|
169
|
+
if (!m)
|
|
170
|
+
continue;
|
|
171
|
+
const stmts = Number(m[1]);
|
|
172
|
+
const cnt = Number(m[2]);
|
|
173
|
+
total += stmts;
|
|
174
|
+
if (cnt > 0)
|
|
175
|
+
covered += stmts;
|
|
176
|
+
}
|
|
177
|
+
return total ? Math.round((covered / total) * 1000) / 10 : undefined;
|
|
178
|
+
}
|
|
179
|
+
if (a.coverage_reader === 'cobertura-xml') {
|
|
180
|
+
const st = await fs.stat(p);
|
|
181
|
+
const file = st.isDirectory() ? await firstMatch(p, /\.xml$/i) : p;
|
|
182
|
+
if (!file)
|
|
183
|
+
return undefined;
|
|
184
|
+
const xml = await fs.readFile(file, 'utf8');
|
|
185
|
+
const m = /line-rate="([0-9.]+)"/.exec(xml) ?? /lines-covered="(\d+)"[^>]*lines-valid="(\d+)"/.exec(xml);
|
|
186
|
+
if (!m) {
|
|
187
|
+
const c = /<counter type="LINE" missed="(\d+)" covered="(\d+)"/.exec(xml);
|
|
188
|
+
if (c) {
|
|
189
|
+
const miss = Number(c[1]);
|
|
190
|
+
const cov = Number(c[2]);
|
|
191
|
+
return miss + cov ? Math.round((cov / (miss + cov)) * 1000) / 10 : undefined;
|
|
192
|
+
}
|
|
193
|
+
return undefined;
|
|
194
|
+
}
|
|
195
|
+
if (m.length === 2)
|
|
196
|
+
return Math.round(Number(m[1]) * 1000) / 10;
|
|
197
|
+
const cov = Number(m[1]);
|
|
198
|
+
const valid = Number(m[2]);
|
|
199
|
+
return valid ? Math.round((cov / valid) * 1000) / 10 : undefined;
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
catch { /* unreadable */ }
|
|
203
|
+
return undefined;
|
|
204
|
+
}
|
|
205
|
+
async function firstMatch(dir, re) {
|
|
206
|
+
const stack = [dir];
|
|
207
|
+
while (stack.length) {
|
|
208
|
+
const d = stack.pop();
|
|
209
|
+
for (const n of await fs.readdir(d).catch(() => [])) {
|
|
210
|
+
const f = path.join(d, n);
|
|
211
|
+
const st = await fs.stat(f).catch(() => undefined);
|
|
212
|
+
if (!st)
|
|
213
|
+
continue;
|
|
214
|
+
if (st.isDirectory())
|
|
215
|
+
stack.push(f);
|
|
216
|
+
else if (re.test(n))
|
|
217
|
+
return f;
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
return undefined;
|
|
221
|
+
}
|
|
222
|
+
/** Mutation score from the tool's report (or its text output as fallback). */
|
|
223
|
+
export async function readMutationScore(root, a, output) {
|
|
224
|
+
if (a.mutation_reader === 'stryker-json' && a.mutation_report) {
|
|
225
|
+
try {
|
|
226
|
+
const p = path.join(root, a.mutation_report);
|
|
227
|
+
const st = await fs.stat(p);
|
|
228
|
+
const file = st.isDirectory() ? await firstMatch(p, /mutation.*\.json$|\.json$/i) : p;
|
|
229
|
+
if (file) {
|
|
230
|
+
const j = JSON.parse(await fs.readFile(file, 'utf8'));
|
|
231
|
+
let killed = 0, survived = 0, total = 0;
|
|
232
|
+
for (const f of Object.values(j.files ?? {})) {
|
|
233
|
+
for (const m of f.mutants ?? []) {
|
|
234
|
+
total += 1;
|
|
235
|
+
const s = String(m.status ?? '');
|
|
236
|
+
if (s === 'Killed' || s === 'Timeout' || s === 'RuntimeError')
|
|
237
|
+
killed += 1;
|
|
238
|
+
else if (s === 'Survived' || s === 'NoCoverage')
|
|
239
|
+
survived += 1;
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
if (total)
|
|
243
|
+
return { killed, survived, total, score: Math.round((killed / total) * 1000) / 10 };
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
catch { /* fall through to text */ }
|
|
247
|
+
}
|
|
248
|
+
/* text fallbacks: mutmut "killed 22 ... survived 3", go-mutesting "The mutation score is 0.73" */
|
|
249
|
+
const k = /killed[^\d]{0,6}(\d+)/i.exec(output);
|
|
250
|
+
const s = /survived[^\d]{0,6}(\d+)/i.exec(output);
|
|
251
|
+
if (k && s) {
|
|
252
|
+
const killed = Number(k[1]);
|
|
253
|
+
const survived = Number(s[1]);
|
|
254
|
+
const total = killed + survived;
|
|
255
|
+
return { killed, survived, total, score: total ? Math.round((killed / total) * 1000) / 10 : 0 };
|
|
256
|
+
}
|
|
257
|
+
const g = /mutation score is ([0-9.]+)/i.exec(output);
|
|
258
|
+
if (g) {
|
|
259
|
+
const sc = Number(g[1]);
|
|
260
|
+
return { killed: 0, survived: 0, total: 0, score: Math.round((sc <= 1 ? sc * 100 : sc) * 10) / 10 };
|
|
261
|
+
}
|
|
262
|
+
return undefined;
|
|
263
|
+
}
|
|
264
|
+
//# sourceMappingURL=stacks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stacks.js","sourceRoot":"","sources":["../../src/urazuke/stacks.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* URAZUKE as workflow definitions.
|
|
3
|
+
*
|
|
4
|
+
* Two kinds for the deterministic engine (src/workflow/*):
|
|
5
|
+
*
|
|
6
|
+
* urazuke -- a new project: the 24 steps, four stretches.
|
|
7
|
+
* urazuke-legacy -- an existing system built without the method: the
|
|
8
|
+
* eight normalisation stations N0..N7, then the ladder
|
|
9
|
+
* from step 5 (the loop) to 23.
|
|
10
|
+
*
|
|
11
|
+
* Each task spawned from these carries `workflow.urazuke = {step}` or
|
|
12
|
+
* `{station}` so the close gate (orchestrator.canCloseTask) can run the
|
|
13
|
+
* mechanical evaluator of THAT step, and the prompt section can inject the
|
|
14
|
+
* exact prompt of the step the project is on.
|
|
15
|
+
*
|
|
16
|
+
* ASCII-only.
|
|
17
|
+
*/
|
|
18
|
+
import type { WorkflowDef } from '../workflow/definitions.js';
|
|
19
|
+
/** After normalising a legacy, the ladder is entered at this step. */
|
|
20
|
+
export declare const URAZUKE_LEGACY_ENTRY_STEP = 5;
|
|
21
|
+
export declare function buildUrazukeDef(): WorkflowDef;
|
|
22
|
+
export declare function buildUrazukeLegacyDef(): WorkflowDef;
|
|
23
|
+
//# sourceMappingURL=workflow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow.d.ts","sourceRoot":"","sources":["../../src/urazuke/workflow.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,KAAK,EAAE,WAAW,EAAqC,MAAM,4BAA4B,CAAC;AAMjG,sEAAsE;AACtE,eAAO,MAAM,yBAAyB,IAAI,CAAC;AAsC3C,wBAAgB,eAAe,IAAI,WAAW,CAO7C;AAED,wBAAgB,qBAAqB,IAAI,WAAW,CAkBnD"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { URAZUKE_STEPS, URAZUKE_LEGACY_STATIONS, URAZUKE_TRAMOS, } from './catalog.js';
|
|
2
|
+
/** After normalising a legacy, the ladder is entered at this step. */
|
|
3
|
+
export const URAZUKE_LEGACY_ENTRY_STEP = 5;
|
|
4
|
+
const TRAMO_ORDER = ['arranque', 'bucle', 'salida', 'operacion'];
|
|
5
|
+
function stepDef(s) {
|
|
6
|
+
return {
|
|
7
|
+
id: s.id,
|
|
8
|
+
title: String(s.num).padStart(2, '0') + ' ' + s.title,
|
|
9
|
+
content: s.summary + ' Prompt y verificacion: yujin.urazuke.step {num: ' + s.num + '}.',
|
|
10
|
+
urazuke: { step: s.num },
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
function tramoStages(from) {
|
|
14
|
+
const stages = [];
|
|
15
|
+
for (const tramo of TRAMO_ORDER) {
|
|
16
|
+
const t = URAZUKE_TRAMOS[tramo];
|
|
17
|
+
const steps = URAZUKE_STEPS.filter((s) => s.tramo === tramo && s.num >= from).map(stepDef);
|
|
18
|
+
if (!steps.length)
|
|
19
|
+
continue;
|
|
20
|
+
stages.push({
|
|
21
|
+
id: 'u-' + tramo,
|
|
22
|
+
title: t.title,
|
|
23
|
+
purpose: tramoPurpose(tramo),
|
|
24
|
+
steps,
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
return stages;
|
|
28
|
+
}
|
|
29
|
+
function tramoPurpose(t) {
|
|
30
|
+
switch (t) {
|
|
31
|
+
case 'arranque': return 'Decidir si se puede, acordar las reglas, definir, dimensionar y montar el esqueleto con sus compuertas.';
|
|
32
|
+
case 'bucle': return 'Construir por bloques: cada pendiente con su especificacion, su rojo probado, su calidad, su caso manual y su reporte honesto.';
|
|
33
|
+
case 'salida': return 'Lo que un sistema necesita para salir a produccion y seguir vivo: auditoria, candados, despliegue, observabilidad, seguridad, rendimiento, manuales.';
|
|
34
|
+
case 'operacion': return 'Monitoreo de recursos y de errores con reporte ciclico, el agente residente y la retrospectiva con numero.';
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
export function buildUrazukeDef() {
|
|
38
|
+
return {
|
|
39
|
+
kind: 'urazuke',
|
|
40
|
+
title: 'Urazuke -- el metodo de la evidencia (24 peldanos, 4 tramos)',
|
|
41
|
+
whenToUse: 'Proyecto nuevo, sin codigo previo. La escalera completa desde la elegibilidad.',
|
|
42
|
+
stages: tramoStages(0),
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
export function buildUrazukeLegacyDef() {
|
|
46
|
+
const normalisation = {
|
|
47
|
+
id: 'u-normalizacion',
|
|
48
|
+
title: '0. Normalizacion del legado (N0..N7)',
|
|
49
|
+
purpose: 'Recuperar los insumos que nadie escribio, poner el cinturon de seguridad y armar el backlog de normalizacion. Nada se reescribe.',
|
|
50
|
+
steps: URAZUKE_LEGACY_STATIONS.map((st) => ({
|
|
51
|
+
id: st.id,
|
|
52
|
+
title: 'N' + st.num + ' ' + st.title,
|
|
53
|
+
content: st.summary + ' Prompt y verificacion: yujin.urazuke.step {station: ' + st.num + '}.',
|
|
54
|
+
urazuke: { station: st.num },
|
|
55
|
+
})),
|
|
56
|
+
};
|
|
57
|
+
return {
|
|
58
|
+
kind: 'urazuke-legacy',
|
|
59
|
+
title: 'Urazuke sobre un sistema existente (normalizacion N0..N7, despues la escalera desde el 5)',
|
|
60
|
+
whenToUse: 'El proyecto ya tiene codigo y NO fue construido con el metodo (faltan el contrato, el arbol semantico, las compuertas).',
|
|
61
|
+
stages: [normalisation, ...tramoStages(URAZUKE_LEGACY_ENTRY_STEP)],
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=workflow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow.js","sourceRoot":"","sources":["../../src/urazuke/workflow.ts"],"names":[],"mappings":"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"}
|
package/dist/version.d.ts
CHANGED
|
@@ -2,5 +2,5 @@
|
|
|
2
2
|
* Yujin Forge CLI version. Kept in sync with package.json by the npm
|
|
3
3
|
* "version" lifecycle (scripts/sync_version.mjs) so the two never drift.
|
|
4
4
|
*/
|
|
5
|
-
export declare const VERSION = "1.
|
|
5
|
+
export declare const VERSION = "1.19.1";
|
|
6
6
|
//# sourceMappingURL=version.d.ts.map
|
package/dist/version.js
CHANGED
|
@@ -29,9 +29,7 @@ export interface WorkflowConfigPatch {
|
|
|
29
29
|
export declare function applyWorkflowConfigPatch(projectRoot: string, patch: WorkflowConfigPatch): Promise<WorkflowConfigFile>;
|
|
30
30
|
/** Resolve one kind's definition from the active config. */
|
|
31
31
|
export declare function resolveWorkflowDef(projectRoot: string, kind: WorkflowKind): Promise<WorkflowDef>;
|
|
32
|
-
|
|
33
|
-
* config. This is the task list the orchestrator turns into pendings. */
|
|
34
|
-
export declare function resolveOrderedTasks(projectRoot: string, kind: WorkflowKind): Promise<Array<{
|
|
32
|
+
export interface OrderedTask {
|
|
35
33
|
stage_id: string;
|
|
36
34
|
stage_title: string;
|
|
37
35
|
step_id: string;
|
|
@@ -39,5 +37,12 @@ export declare function resolveOrderedTasks(projectRoot: string, kind: WorkflowK
|
|
|
39
37
|
content: string;
|
|
40
38
|
gate: boolean;
|
|
41
39
|
order: number;
|
|
42
|
-
|
|
40
|
+
urazuke?: {
|
|
41
|
+
step?: number;
|
|
42
|
+
station?: number;
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
/** Flat ordered list of {stage_id, step} for a kind, from the active
|
|
46
|
+
* config. This is the task list the orchestrator turns into pendings. */
|
|
47
|
+
export declare function resolveOrderedTasks(projectRoot: string, kind: WorkflowKind): Promise<Array<OrderedTask>>;
|
|
43
48
|
//# sourceMappingURL=config.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/workflow/config.ts"],"names":[],"mappings":"AAuBA,OAAO,EAGL,KAAK,WAAW,EAChB,KAAK,YAAY,EAClB,MAAM,kBAAkB,CAAC;AAI1B,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;CAC9C;AAKD,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAE9D;AAKD,2EAA2E;AAC3E,wBAAgB,qBAAqB,IAAI,kBAAkB,CAK1D;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/workflow/config.ts"],"names":[],"mappings":"AAuBA,OAAO,EAGL,KAAK,WAAW,EAChB,KAAK,YAAY,EAClB,MAAM,kBAAkB,CAAC;AAI1B,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;CAC9C;AAKD,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAE9D;AAKD,2EAA2E;AAC3E,wBAAgB,qBAAqB,IAAI,kBAAkB,CAK1D;AAoCD,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,kBAAkB,CAOzE;AAID;uEACuE;AACvE,wBAAsB,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAOzF;AASD;;8BAE8B;AAC9B,wBAAsB,2BAA2B,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAOpF;AAUD;kEACkE;AAClE,wBAAsB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAS1F;AAID,MAAM,WAAW,mBAAmB;IAClC;;yDAEqD;IACrD,SAAS,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC,CAAC;CACxD;AAED;;kEAEkE;AAClE,wBAAsB,wBAAwB,CAC5C,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB,GAC9C,OAAO,CAAC,kBAAkB,CAAC,CAgB7B;AAED,4DAA4D;AAC5D,wBAAsB,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CAGtG;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IACvF,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAC7B,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC/C;AAED;0EAC0E;AAC1E,wBAAsB,mBAAmB,CACvC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,GACtC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAgB7B"}
|
package/dist/workflow/config.js
CHANGED
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
import { promises as fs } from 'node:fs';
|
|
23
23
|
import path from 'node:path';
|
|
24
24
|
import { WORKFLOW_DEFINITIONS, WORKFLOW_DEFINITIONS_VERSION, } from './definitions.js';
|
|
25
|
-
const KINDS = ['greenfield', 'corrective', 'evolutive'];
|
|
25
|
+
const KINDS = ['urazuke', 'urazuke-legacy', 'greenfield', 'corrective', 'evolutive'];
|
|
26
26
|
function forgeDir(projectRoot) {
|
|
27
27
|
return path.join(projectRoot, '.forge');
|
|
28
28
|
}
|
|
@@ -77,6 +77,8 @@ function isValidDef(x, kind) {
|
|
|
77
77
|
stepIds.add(p.id);
|
|
78
78
|
if ('gate' in p && typeof p.gate !== 'boolean')
|
|
79
79
|
return false;
|
|
80
|
+
if ('urazuke' in p && (!p.urazuke || typeof p.urazuke !== 'object'))
|
|
81
|
+
return false;
|
|
80
82
|
}
|
|
81
83
|
}
|
|
82
84
|
return true;
|
|
@@ -190,6 +192,7 @@ export async function resolveOrderedTasks(projectRoot, kind) {
|
|
|
190
192
|
stage_id: stage.id, stage_title: stage.title,
|
|
191
193
|
step_id: step.id, title: step.title, content: step.content,
|
|
192
194
|
gate: step.gate === true, order,
|
|
195
|
+
...(step.urazuke ? { urazuke: step.urazuke } : {}),
|
|
193
196
|
});
|
|
194
197
|
order += 1;
|
|
195
198
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/workflow/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EACL,oBAAoB,EACpB,4BAA4B,GAG7B,MAAM,kBAAkB,CAAC;AAE1B,MAAM,KAAK,GAA4B,CAAC,YAAY,EAAE,YAAY,EAAE,WAAW,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/workflow/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Workflow definitions (PND-094).
|
|
3
3
|
*
|
|
4
|
-
* Forge formalises
|
|
5
|
-
*
|
|
4
|
+
* Forge formalises FIVE workflow kinds. The two Urazuke kinds (2026-10-19)
|
|
5
|
+
* are the method of the evidence as the deterministic engine runs it --
|
|
6
|
+
* see src/urazuke/catalog.ts; the older three stay for compatibility:
|
|
7
|
+
*
|
|
8
|
+
* urazuke -- a new project: 24 steps in 4 stretches, each with a
|
|
9
|
+
* vendored prompt and a MECHANICAL close gate.
|
|
10
|
+
* urazuke-legacy -- an existing codebase built without the method:
|
|
11
|
+
* normalisation N0..N7, then the ladder from step 5.
|
|
6
12
|
*
|
|
7
13
|
* greenfield -- a new app from zero: the canonical 6 phases /
|
|
8
14
|
* 18 steps.
|
|
@@ -24,7 +30,11 @@
|
|
|
24
30
|
*
|
|
25
31
|
* ASCII-only.
|
|
26
32
|
*/
|
|
27
|
-
export type WorkflowKind = 'greenfield' | 'corrective' | 'evolutive';
|
|
33
|
+
export type WorkflowKind = 'greenfield' | 'corrective' | 'evolutive' | 'urazuke' | 'urazuke-legacy';
|
|
34
|
+
/** Every kind, in the order the CLI/verbs list them. `urazuke` is the
|
|
35
|
+
* default for a project without code and `urazuke-legacy` for a codebase
|
|
36
|
+
* built without the method; `greenfield` stays for compatibility. */
|
|
37
|
+
export declare const WORKFLOW_KINDS: readonly WorkflowKind[];
|
|
28
38
|
export interface WorkflowStepDef {
|
|
29
39
|
/** Stable id, kebab-case, unique within the workflow. */
|
|
30
40
|
id: string;
|
|
@@ -34,6 +44,12 @@ export interface WorkflowStepDef {
|
|
|
34
44
|
content: string;
|
|
35
45
|
/** True when this step needs the owner's explicit OK (a gate). */
|
|
36
46
|
gate?: boolean;
|
|
47
|
+
/** Urazuke: the step (0..23) or legacy station (0..7) this task is.
|
|
48
|
+
* Drives the mechanical close gate and the prompt injection. */
|
|
49
|
+
urazuke?: {
|
|
50
|
+
step?: number;
|
|
51
|
+
station?: number;
|
|
52
|
+
};
|
|
37
53
|
}
|
|
38
54
|
export interface WorkflowStageDef {
|
|
39
55
|
id: string;
|
|
@@ -51,7 +67,7 @@ export interface WorkflowDef {
|
|
|
51
67
|
}
|
|
52
68
|
/** Bump when the canonical structure changes so the worker sync can
|
|
53
69
|
* reconcile versions (worker payload carries its own version). */
|
|
54
|
-
export declare const WORKFLOW_DEFINITIONS_VERSION =
|
|
70
|
+
export declare const WORKFLOW_DEFINITIONS_VERSION = 2;
|
|
55
71
|
export declare const WORKFLOW_DEFINITIONS: Record<WorkflowKind, WorkflowDef>;
|
|
56
72
|
/** All step ids of a workflow, in order (stage by stage). */
|
|
57
73
|
export declare function workflowStepIds(kind: WorkflowKind): string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"definitions.d.ts","sourceRoot":"","sources":["../../src/workflow/definitions.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"definitions.d.ts","sourceRoot":"","sources":["../../src/workflow/definitions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAIH,MAAM,MAAM,YAAY,GAAG,YAAY,GAAG,YAAY,GAAG,WAAW,GAAG,SAAS,GAAG,gBAAgB,CAAC;AAEpG;;sEAEsE;AACtE,eAAO,MAAM,cAAc,EAAE,SAAS,YAAY,EAA2E,CAAC;AAE9H,MAAM,WAAW,eAAe;IAC9B,yDAAyD;IACzD,EAAE,EAAE,MAAM,CAAC;IACX,yBAAyB;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,yDAAyD;IACzD,OAAO,EAAE,MAAM,CAAC;IAChB,kEAAkE;IAClE,IAAI,CAAC,EAAE,OAAO,CAAC;IACf;qEACiE;IACjE,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC/C;AAED,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,6BAA6B;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,eAAe,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,YAAY,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,wDAAwD;IACxD,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,gBAAgB,EAAE,CAAC;CAC5B;AAED;mEACmE;AACnE,eAAO,MAAM,4BAA4B,IAAI,CAAC;AA8I9C,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,YAAY,EAAE,WAAW,CAMlE,CAAC;AAEF,6DAA6D;AAC7D,wBAAgB,eAAe,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,EAAE,CAE5D;AAED,4CAA4C;AAC5C,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CAE5D"}
|
|
@@ -1,8 +1,14 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Workflow definitions (PND-094).
|
|
3
3
|
*
|
|
4
|
-
* Forge formalises
|
|
5
|
-
*
|
|
4
|
+
* Forge formalises FIVE workflow kinds. The two Urazuke kinds (2026-10-19)
|
|
5
|
+
* are the method of the evidence as the deterministic engine runs it --
|
|
6
|
+
* see src/urazuke/catalog.ts; the older three stay for compatibility:
|
|
7
|
+
*
|
|
8
|
+
* urazuke -- a new project: 24 steps in 4 stretches, each with a
|
|
9
|
+
* vendored prompt and a MECHANICAL close gate.
|
|
10
|
+
* urazuke-legacy -- an existing codebase built without the method:
|
|
11
|
+
* normalisation N0..N7, then the ladder from step 5.
|
|
6
12
|
*
|
|
7
13
|
* greenfield -- a new app from zero: the canonical 6 phases /
|
|
8
14
|
* 18 steps.
|
|
@@ -24,9 +30,14 @@
|
|
|
24
30
|
*
|
|
25
31
|
* ASCII-only.
|
|
26
32
|
*/
|
|
33
|
+
import { buildUrazukeDef, buildUrazukeLegacyDef } from '../urazuke/workflow.js';
|
|
34
|
+
/** Every kind, in the order the CLI/verbs list them. `urazuke` is the
|
|
35
|
+
* default for a project without code and `urazuke-legacy` for a codebase
|
|
36
|
+
* built without the method; `greenfield` stays for compatibility. */
|
|
37
|
+
export const WORKFLOW_KINDS = ['urazuke', 'urazuke-legacy', 'corrective', 'evolutive', 'greenfield'];
|
|
27
38
|
/** Bump when the canonical structure changes so the worker sync can
|
|
28
39
|
* reconcile versions (worker payload carries its own version). */
|
|
29
|
-
export const WORKFLOW_DEFINITIONS_VERSION =
|
|
40
|
+
export const WORKFLOW_DEFINITIONS_VERSION = 2;
|
|
30
41
|
/* ---------------- greenfield: 6 phases / 18 steps ---------------- */
|
|
31
42
|
const GREENFIELD = {
|
|
32
43
|
kind: 'greenfield',
|
|
@@ -163,6 +174,8 @@ function maintenanceDef(kind) {
|
|
|
163
174
|
const CORRECTIVE = maintenanceDef('corrective');
|
|
164
175
|
const EVOLUTIVE = maintenanceDef('evolutive');
|
|
165
176
|
export const WORKFLOW_DEFINITIONS = {
|
|
177
|
+
urazuke: buildUrazukeDef(),
|
|
178
|
+
'urazuke-legacy': buildUrazukeLegacyDef(),
|
|
166
179
|
greenfield: GREENFIELD,
|
|
167
180
|
corrective: CORRECTIVE,
|
|
168
181
|
evolutive: EVOLUTIVE,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"definitions.js","sourceRoot":"","sources":["../../src/workflow/definitions.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"definitions.js","sourceRoot":"","sources":["../../src/workflow/definitions.ts"],"names":[],"mappings":"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"}
|