@nac3/forge-cli 1.19.5 → 1.20.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bin/yf.d.ts.map +1 -1
- package/dist/bin/yf.js +2 -1
- package/dist/bin/yf.js.map +1 -1
- package/dist/chat/instance_lock.d.ts +98 -0
- package/dist/chat/instance_lock.d.ts.map +1 -1
- package/dist/chat/instance_lock.js +135 -11
- package/dist/chat/instance_lock.js.map +1 -1
- package/dist/chat/instances.d.ts +84 -0
- package/dist/chat/instances.d.ts.map +1 -0
- package/dist/chat/instances.js +224 -0
- package/dist/chat/instances.js.map +1 -0
- package/dist/chat/panel.d.ts.map +1 -1
- package/dist/chat/panel.js +276 -5
- package/dist/chat/panel.js.map +1 -1
- package/dist/chat/server.d.ts.map +1 -1
- package/dist/chat/server.js +64 -1
- package/dist/chat/server.js.map +1 -1
- package/dist/chat/tools/evidence.d.ts.map +1 -1
- package/dist/chat/tools/evidence.js +7 -3
- package/dist/chat/tools/evidence.js.map +1 -1
- package/dist/commands/task.d.ts +13 -0
- package/dist/commands/task.d.ts.map +1 -1
- package/dist/commands/task.js +134 -0
- package/dist/commands/task.js.map +1 -1
- package/dist/commands/upgrade.d.ts +15 -0
- package/dist/commands/upgrade.d.ts.map +1 -1
- package/dist/commands/upgrade.js +63 -0
- package/dist/commands/upgrade.js.map +1 -1
- package/dist/commands/urazuke.d.ts.map +1 -1
- package/dist/commands/urazuke.js +68 -1
- package/dist/commands/urazuke.js.map +1 -1
- package/dist/core/forge_profile.d.ts.map +1 -1
- package/dist/core/forge_profile.js +41 -4
- package/dist/core/forge_profile.js.map +1 -1
- package/dist/core/whats_new.d.ts.map +1 -1
- package/dist/core/whats_new.js +14 -0
- package/dist/core/whats_new.js.map +1 -1
- package/dist/urazuke/current.d.ts +5 -0
- package/dist/urazuke/current.d.ts.map +1 -1
- package/dist/urazuke/current.js +14 -3
- package/dist/urazuke/current.js.map +1 -1
- package/dist/urazuke/cycle.d.ts.map +1 -1
- package/dist/urazuke/cycle.js +6 -2
- package/dist/urazuke/cycle.js.map +1 -1
- package/dist/urazuke/evidence.d.ts.map +1 -1
- package/dist/urazuke/evidence.js +9 -1
- package/dist/urazuke/evidence.js.map +1 -1
- package/dist/urazuke/freeze.d.ts +29 -0
- package/dist/urazuke/freeze.d.ts.map +1 -0
- package/dist/urazuke/freeze.js +150 -0
- package/dist/urazuke/freeze.js.map +1 -0
- package/dist/urazuke/gate.d.ts +18 -1
- package/dist/urazuke/gate.d.ts.map +1 -1
- package/dist/urazuke/gate.js +21 -0
- package/dist/urazuke/gate.js.map +1 -1
- package/dist/urazuke/gates_data.d.ts +219 -0
- package/dist/urazuke/gates_data.d.ts.map +1 -0
- package/dist/urazuke/gates_data.js +441 -0
- package/dist/urazuke/gates_data.js.map +1 -0
- package/dist/urazuke/prompts_client.d.ts +6 -0
- package/dist/urazuke/prompts_client.d.ts.map +1 -1
- package/dist/urazuke/prompts_client.js +1 -1
- package/dist/urazuke/prompts_client.js.map +1 -1
- package/dist/urazuke/receipts.d.ts +53 -1
- package/dist/urazuke/receipts.d.ts.map +1 -1
- package/dist/urazuke/receipts.js +65 -3
- package/dist/urazuke/receipts.js.map +1 -1
- package/dist/urazuke/ruleset.d.ts +56 -0
- package/dist/urazuke/ruleset.d.ts.map +1 -0
- package/dist/urazuke/ruleset.js +159 -0
- package/dist/urazuke/ruleset.js.map +1 -0
- package/dist/urazuke/start.d.ts +5 -0
- package/dist/urazuke/start.d.ts.map +1 -1
- package/dist/urazuke/start.js +39 -2
- package/dist/urazuke/start.js.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
package/dist/urazuke/receipts.js
CHANGED
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
import fs from 'node:fs/promises';
|
|
16
16
|
import os from 'node:os';
|
|
17
17
|
import path from 'node:path';
|
|
18
|
+
import { currentRulesetStamp, renderStamp } from './ruleset.js';
|
|
18
19
|
const FILE_NAME = 'receipts.json';
|
|
19
20
|
function configRoot() {
|
|
20
21
|
if (process.env['YUJIN_FORGE_HOME'])
|
|
@@ -58,6 +59,35 @@ const KIND_POLARITY = {
|
|
|
58
59
|
e2e: 'exit_and_no_failures',
|
|
59
60
|
quality: 'exit_and_no_failures',
|
|
60
61
|
};
|
|
62
|
+
/** The runner SAID it ran zero tests.
|
|
63
|
+
*
|
|
64
|
+
* The discriminator is a reported TOTAL of zero, and nothing weaker. That
|
|
65
|
+
* is deliberate, and it is where the care is: `{ failed: 0 }` on its own
|
|
66
|
+
* is NOT an empty run. `yf urazuke quality check` prints "0 violations, 0
|
|
67
|
+
* dup blocks" and parses to exactly that -- a gate reporting no findings,
|
|
68
|
+
* which is a real pass. Three live receipts look like that (turnera
|
|
69
|
+
* RCP-026/047, turnera-heredada RCP-012) and calling them empty would be a
|
|
70
|
+
* false accusation, the mirror image of the bug being fixed.
|
|
71
|
+
*
|
|
72
|
+
* What an empty run looks like, from the data: node's test runner printing
|
|
73
|
+
* `1..0 / # tests 0 / # pass 0 / # fail 0` because a quoted glob never
|
|
74
|
+
* expanded in cmd.exe. The runner answered the question -- zero -- so the
|
|
75
|
+
* claim is measured, not missing, and it is a claim of no evidence. */
|
|
76
|
+
export function emptyRun(counts) {
|
|
77
|
+
return counts.total === 0;
|
|
78
|
+
}
|
|
79
|
+
/** The runner reported no test counts at all, so the exit code is the only
|
|
80
|
+
* signal there is.
|
|
81
|
+
*
|
|
82
|
+
* This is NOT a defect and must not be scored as one: a command like
|
|
83
|
+
* `python docs/_verificar_insumos.py` or `node build/build.mjs` is a check,
|
|
84
|
+
* not a suite, and its exit code is the whole of its evidence (nine such
|
|
85
|
+
* receipts on disk). It is worth NAMING, though, because a reader deserves
|
|
86
|
+
* to know the difference between "212 tests passed" and "a script exited
|
|
87
|
+
* 0" -- both are green, and they are not the same weight of proof. */
|
|
88
|
+
export function exitOnlyEvidence(counts) {
|
|
89
|
+
return ['total', 'passed', 'failed', 'skipped', 'failed_files'].every((k) => counts[k] == null);
|
|
90
|
+
}
|
|
61
91
|
/** Derive the verdict from the kind + exit code + counts, via the polarity
|
|
62
92
|
* table above. Pure. */
|
|
63
93
|
export function receiptVerdict(kind, exit_code, counts, mode) {
|
|
@@ -73,7 +103,12 @@ export function receiptVerdict(kind, exit_code, counts, mode) {
|
|
|
73
103
|
case 'exit_only':
|
|
74
104
|
return exit_code === 0 ? 'ok' : 'not_ok';
|
|
75
105
|
case 'exit_and_no_failures':
|
|
76
|
-
|
|
106
|
+
if (exit_code !== 0 || failed !== 0)
|
|
107
|
+
return 'not_ok';
|
|
108
|
+
/* Zero tests run is not a pass. The command succeeded at doing
|
|
109
|
+
* nothing, and a receipt is a claim about behaviour, not about a
|
|
110
|
+
* process exiting. */
|
|
111
|
+
return emptyRun(counts) ? 'not_ok' : 'ok';
|
|
77
112
|
}
|
|
78
113
|
}
|
|
79
114
|
/** The counts a receipt has NOW: re-parsed from its own recorded output,
|
|
@@ -93,11 +128,19 @@ export function effectiveCounts(r) {
|
|
|
93
128
|
export function effectiveVerdict(r) {
|
|
94
129
|
return receiptVerdict(r.kind, r.exit_code, effectiveCounts(r), r.mode);
|
|
95
130
|
}
|
|
96
|
-
/** Append a receipt. The id and the
|
|
131
|
+
/** Append a receipt. The id, the verdict and the ruleset stamp are assigned
|
|
132
|
+
* here.
|
|
133
|
+
*
|
|
134
|
+
* The stamp is taken HERE rather than at each call site on purpose: this is
|
|
135
|
+
* the only door a receipt can come through, so stamping it here is the one
|
|
136
|
+
* arrangement in which a future writer cannot forget. A caller may pass its
|
|
137
|
+
* own stamp (a run judged under a ruleset it resolved itself), and nothing
|
|
138
|
+
* else may leave the field empty. */
|
|
97
139
|
export async function appendReceipt(slug, input) {
|
|
98
140
|
const file = await readReceipts(slug);
|
|
99
141
|
const id = 'RCP-' + String(file.next_id).padStart(3, '0');
|
|
100
|
-
const
|
|
142
|
+
const ruleset = input.ruleset ?? await currentRulesetStamp(input.cwd);
|
|
143
|
+
const receipt = { ...input, id, ruleset, verdict: receiptVerdict(input.kind, input.exit_code, input.counts, input.mode) };
|
|
101
144
|
file.items.push(receipt);
|
|
102
145
|
file.next_id += 1;
|
|
103
146
|
await writeReceipts(file);
|
|
@@ -137,9 +180,21 @@ export function summarizeReceipts(items, filter = {}) {
|
|
|
137
180
|
red_proofs: count('red_proof'), strong_red_proofs: strong, greens: count('green'), regressions: count('regression'),
|
|
138
181
|
e2e: count('e2e'), quality: count('quality'), mutation: count('mutation'),
|
|
139
182
|
false_reds: scoped.filter(isFalseRed).length,
|
|
183
|
+
empty_runs: scoped.filter(isEmptyRun).length,
|
|
184
|
+
exit_only: sel.filter((r) => POSITIVE_KINDS.has(r.kind) && exitOnlyEvidence(effectiveCounts(r))).length,
|
|
140
185
|
...(last ? { last_at: last } : {}),
|
|
141
186
|
};
|
|
142
187
|
}
|
|
188
|
+
/** The kinds whose receipt asserts "this works": the ones an empty run can
|
|
189
|
+
* lie about. A red proof cannot -- it already needs a parsed failure. */
|
|
190
|
+
const POSITIVE_KINDS = new Set(['green', 'regression', 'e2e', 'quality']);
|
|
191
|
+
/** A positive receipt that exited 0 over zero tests. Computed off the
|
|
192
|
+
* receipt rather than through effectiveVerdict, for the same reason
|
|
193
|
+
* isFalseRed is: this IS the thing that makes the verdict not_ok, so
|
|
194
|
+
* filtering by the verdict first would always find none. */
|
|
195
|
+
export function isEmptyRun(r) {
|
|
196
|
+
return POSITIVE_KINDS.has(r.kind) && r.exit_code === 0 && emptyRun(effectiveCounts(r));
|
|
197
|
+
}
|
|
143
198
|
/** Parse pass/fail counts out of common test runner output (vitest, jest,
|
|
144
199
|
* mocha, pytest, go test, playwright, junit-ish). Best effort; returns
|
|
145
200
|
* what it recognised. */
|
|
@@ -245,6 +300,13 @@ export function renderReceipt(r) {
|
|
|
245
300
|
' ref : ' + r.ref + (r.base_ref ? ' (base ' + r.base_ref + ')' : '') + (r.dirty ? ' [dirty tree]' : ''),
|
|
246
301
|
...(r.mode === 'mutation' ? [' mode : mutation -- a defect planted in the new code (diff on record, ' + (r.mutation_diff ?? '').split('\n').length + ' lines)'] : []),
|
|
247
302
|
' exit : ' + r.exit_code + (cnt ? ' counts: ' + cnt : ''),
|
|
303
|
+
/* Name the reason, never just the verdict. A bare NOT OK on a receipt
|
|
304
|
+
* whose command exited 0 reads like a Forge bug; "the runner reported
|
|
305
|
+
* zero tests" tells the owner exactly what to fix (PND-170). */
|
|
306
|
+
...(isEmptyRun(r) ? [' WHY : the runner reported ZERO tests. The command succeeded at running nothing, so this is not evidence of anything. Check the test path or glob (a quoted glob does not expand in cmd.exe).'] : []),
|
|
307
|
+
...(verdict === 'ok' && POSITIVE_KINDS.has(r.kind) && exitOnlyEvidence(counts)
|
|
308
|
+
? [' weight : exit code only -- the command reported no test counts. Valid evidence for a check script, weaker than a suite.'] : []),
|
|
309
|
+
' ruleset : ' + renderStamp(r.ruleset),
|
|
248
310
|
' when : ' + new Date(r.started_at).toISOString() + ' (' + r.duration_ms + ' ms)',
|
|
249
311
|
].join('\n');
|
|
250
312
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"receipts.js","sourceRoot":"","sources":["../../src/urazuke/receipts.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"receipts.js","sourceRoot":"","sources":["../../src/urazuke/receipts.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/** Forge's compiled copy of the gate definition. This is the BASE the
|
|
2
|
+
* method froze as `gates/baseline_forge.json` when it took ownership: 24
|
|
3
|
+
* steps + 8 stations, schema 1, eight evaluators. Bump it by hand when
|
|
4
|
+
* catalog.ts changes a REQUIREMENT (an artifact, a pattern, an evaluator)
|
|
5
|
+
* -- never for a wording fix, which the hash already ignores.
|
|
6
|
+
*
|
|
7
|
+
* It stops being the answer the day Pieza 2 lands and Forge reads the
|
|
8
|
+
* published `gates.json`: then the stamp carries that file's
|
|
9
|
+
* `catalog_version` and its recomputed `content_hash` instead. */
|
|
10
|
+
export declare const FORGE_COMPILED_GATES_VERSION = "forge-compiled/base-schema-1";
|
|
11
|
+
/** Where the gate definition that judged a step came from.
|
|
12
|
+
*
|
|
13
|
+
* compiled catalog.ts, inside this Forge. The state today, and the
|
|
14
|
+
* safe state: nothing can tighten without an install.
|
|
15
|
+
* project a copy frozen in the project (Pieza 3). What the owner's
|
|
16
|
+
* decision asks for: starts and finishes the same.
|
|
17
|
+
* portal read over the network. Only legitimate once `project` can
|
|
18
|
+
* be written, or the freeze is a label. */
|
|
19
|
+
export type GatesSource = 'compiled' | 'project' | 'portal';
|
|
20
|
+
export interface RulesetStamp {
|
|
21
|
+
gates_source: GatesSource;
|
|
22
|
+
/** The catalogue version: FORGE_COMPILED_GATES_VERSION, or the published
|
|
23
|
+
* `catalog_version` (e.g. "2026.10.2"). */
|
|
24
|
+
gates_version: string;
|
|
25
|
+
/** sha256 over the canonicalised requirement, recomputed here. */
|
|
26
|
+
gates_hash: string;
|
|
27
|
+
/** What prompt resolution reported, when known. Informative: the prompt
|
|
28
|
+
* text does not decide a gate, so it never invalidates a receipt. */
|
|
29
|
+
prompts_version?: string;
|
|
30
|
+
}
|
|
31
|
+
/** Canonical JSON: keys sorted by code point, no whitespace. The form the
|
|
32
|
+
* method declares as `json_sorted_keys_codepoint_no_whitespace_utf8`, so a
|
|
33
|
+
* consumer on either side reaches the same bytes. */
|
|
34
|
+
export declare function canonicalJson(value: unknown): string;
|
|
35
|
+
/** What the compiled catalogue REQUIRES, with the prose left out. */
|
|
36
|
+
export declare function compiledGatesRequirement(): Record<string, unknown>;
|
|
37
|
+
export declare function sha256Hex(text: string): string;
|
|
38
|
+
export declare function compiledGatesHash(): string;
|
|
39
|
+
/** The stamp to write on a measurement taken right now.
|
|
40
|
+
*
|
|
41
|
+
* Today it always reports `compiled`, because that is the truth: Forge
|
|
42
|
+
* enforces catalog.ts and reads nothing over the network for the gates.
|
|
43
|
+
* Deliberately not wired to the published file yet -- four of the twelve
|
|
44
|
+
* published evaluators have no implementation here, and all four are
|
|
45
|
+
* required by the five anchors of the loop, so reading `gates.json` today
|
|
46
|
+
* would stop every block of every project. The source becomes `project`
|
|
47
|
+
* when Pieza 3 writes the frozen copy, and `portal` is only ever
|
|
48
|
+
* legitimate after that. */
|
|
49
|
+
export declare function currentRulesetStamp(projectRoot?: string): Promise<RulesetStamp>;
|
|
50
|
+
/** One line for a report or a receipt render. */
|
|
51
|
+
export declare function renderStamp(s: RulesetStamp | undefined): string;
|
|
52
|
+
/** Whether two stamps judge by the same requirement. The hash decides, not
|
|
53
|
+
* the version string: a version bumped without a requirement change is the
|
|
54
|
+
* same gate, and a requirement edited without bumping the version is not. */
|
|
55
|
+
export declare function sameRequirement(a: RulesetStamp | undefined, b: RulesetStamp | undefined): boolean;
|
|
56
|
+
//# sourceMappingURL=ruleset.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ruleset.d.ts","sourceRoot":"","sources":["../../src/urazuke/ruleset.ts"],"names":[],"mappings":"AA4CA;;;;;;;;mEAQmE;AACnE,eAAO,MAAM,4BAA4B,iCAAiC,CAAC;AAE3E;;;;;;;yDAOyD;AACzD,MAAM,MAAM,WAAW,GAAG,UAAU,GAAG,SAAS,GAAG,QAAQ,CAAC;AAE5D,MAAM,WAAW,YAAY;IAC3B,YAAY,EAAE,WAAW,CAAC;IAC1B;gDAC4C;IAC5C,aAAa,EAAE,MAAM,CAAC;IACtB,kEAAkE;IAClE,UAAU,EAAE,MAAM,CAAC;IACnB;0EACsE;IACtE,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAeD;;sDAEsD;AACtD,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAMpD;AAaD,qEAAqE;AACrE,wBAAgB,wBAAwB,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAalE;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE9C;AAKD,wBAAgB,iBAAiB,IAAI,MAAM,CAG1C;AAED;;;;;;;;;6BAS6B;AAC7B,wBAAsB,mBAAmB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAgBrF;AAED,iDAAiD;AACjD,wBAAgB,WAAW,CAAC,CAAC,EAAE,YAAY,GAAG,SAAS,GAAG,MAAM,CAI/D;AAED;;8EAE8E;AAC9E,wBAAgB,eAAe,CAAC,CAAC,EAAE,YAAY,GAAG,SAAS,EAAE,CAAC,EAAE,YAAY,GAAG,SAAS,GAAG,OAAO,CAGjG"}
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* THE RULESET STAMP -- which version of the method a measurement was
|
|
3
|
+
* judged under (PND-165, Pieza 1).
|
|
4
|
+
*
|
|
5
|
+
* Why this file exists. A receipt records the command, the ref, the exit
|
|
6
|
+
* code and the counts -- everything about the RUN -- and not one word about
|
|
7
|
+
* the RULE that called it good. For as long as the gate definition lived
|
|
8
|
+
* compiled inside Forge that was survivable: the rule changed only when the
|
|
9
|
+
* owner installed a new Forge. It stopped being survivable on 2026-10-23,
|
|
10
|
+
* when the method took ownership of the gates and published them as data
|
|
11
|
+
* (D-050): from that day a requirement can tighten on its own, minutes
|
|
12
|
+
* after a merge in the method's repository, and a step that was green three
|
|
13
|
+
* months ago is re-read under a rule that did not exist when the evidence
|
|
14
|
+
* was produced. The owner's decision was that a project starts and finishes
|
|
15
|
+
* on the same version of the method unless somebody presses the double
|
|
16
|
+
* lock; this stamp is what makes that decision checkable instead of
|
|
17
|
+
* intended -- without it, "nothing is rolled back" is a hope.
|
|
18
|
+
*
|
|
19
|
+
* What the stamp is NOT. It does not bound Forge's own parser. When
|
|
20
|
+
* parseCounts learns to read a test runner it did not recognise, every
|
|
21
|
+
* receipt on disk is re-read and tells the truth it always held; that is
|
|
22
|
+
* the point of effectiveVerdict() and it is a rescue, not a change of rule.
|
|
23
|
+
* The stamp bounds the METHOD's requirements: what has to exist, what it
|
|
24
|
+
* has to say, which evaluator decides. Those two must never be confused,
|
|
25
|
+
* because one of them is allowed to be retroactive and the other is not.
|
|
26
|
+
*
|
|
27
|
+
* The hash. Computed here, never read from the payload: a frozen copy
|
|
28
|
+
* edited by hand or truncated by a merge has to be detectable without the
|
|
29
|
+
* network, and a stamp that only repeats what the file claims about itself
|
|
30
|
+
* is a label, not a seal. The canonical form is the one the method
|
|
31
|
+
* publishes (json, sorted keys by code point, no whitespace, utf8, sha256
|
|
32
|
+
* hex lower-case) so the two sides arrive at the same number independently.
|
|
33
|
+
*
|
|
34
|
+
* What gets hashed is the REQUIREMENT, not the prose: paths, patterns,
|
|
35
|
+
* sizes, freshness, evaluator. A fix to a title or a summary leaves the
|
|
36
|
+
* hash alone; adding an artifact or changing an evaluator moves it. Same
|
|
37
|
+
* criterion the method adopted for its own zero-difference proof (D-051):
|
|
38
|
+
* the requirement is what has to stay identical, not the accents.
|
|
39
|
+
*
|
|
40
|
+
* ASCII-only.
|
|
41
|
+
*/
|
|
42
|
+
import crypto from 'node:crypto';
|
|
43
|
+
import { URAZUKE_STEPS, URAZUKE_LEGACY_STATIONS } from './catalog.js';
|
|
44
|
+
/** Forge's compiled copy of the gate definition. This is the BASE the
|
|
45
|
+
* method froze as `gates/baseline_forge.json` when it took ownership: 24
|
|
46
|
+
* steps + 8 stations, schema 1, eight evaluators. Bump it by hand when
|
|
47
|
+
* catalog.ts changes a REQUIREMENT (an artifact, a pattern, an evaluator)
|
|
48
|
+
* -- never for a wording fix, which the hash already ignores.
|
|
49
|
+
*
|
|
50
|
+
* It stops being the answer the day Pieza 2 lands and Forge reads the
|
|
51
|
+
* published `gates.json`: then the stamp carries that file's
|
|
52
|
+
* `catalog_version` and its recomputed `content_hash` instead. */
|
|
53
|
+
export const FORGE_COMPILED_GATES_VERSION = 'forge-compiled/base-schema-1';
|
|
54
|
+
/** Code-point order, not UTF-16 order: `sort()` compares code units, which
|
|
55
|
+
* disagrees with code points above the BMP. The gate data is ASCII today,
|
|
56
|
+
* so the two agree -- this is here so they keep agreeing if it ever is not. */
|
|
57
|
+
function byCodePoint(a, b) {
|
|
58
|
+
const A = Array.from(a);
|
|
59
|
+
const B = Array.from(b);
|
|
60
|
+
for (let i = 0; i < Math.min(A.length, B.length); i += 1) {
|
|
61
|
+
const d = A[i].codePointAt(0) - B[i].codePointAt(0);
|
|
62
|
+
if (d !== 0)
|
|
63
|
+
return d;
|
|
64
|
+
}
|
|
65
|
+
return A.length - B.length;
|
|
66
|
+
}
|
|
67
|
+
/** Canonical JSON: keys sorted by code point, no whitespace. The form the
|
|
68
|
+
* method declares as `json_sorted_keys_codepoint_no_whitespace_utf8`, so a
|
|
69
|
+
* consumer on either side reaches the same bytes. */
|
|
70
|
+
export function canonicalJson(value) {
|
|
71
|
+
if (value === null || typeof value !== 'object')
|
|
72
|
+
return JSON.stringify(value) ?? 'null';
|
|
73
|
+
if (Array.isArray(value))
|
|
74
|
+
return '[' + value.map(canonicalJson).join(',') + ']';
|
|
75
|
+
const obj = value;
|
|
76
|
+
const keys = Object.keys(obj).filter((k) => obj[k] !== undefined).sort(byCodePoint);
|
|
77
|
+
return '{' + keys.map((k) => JSON.stringify(k) + ':' + canonicalJson(obj[k])).join(',') + '}';
|
|
78
|
+
}
|
|
79
|
+
/** The requirement-bearing projection of one artifact rule. */
|
|
80
|
+
function artifactRequirement(a) {
|
|
81
|
+
return {
|
|
82
|
+
path: a.path,
|
|
83
|
+
...(a.must_contain ? { must_contain: [...a.must_contain] } : {}),
|
|
84
|
+
...(a.should_contain ? { should_contain: [...a.should_contain] } : {}),
|
|
85
|
+
...(a.min_bytes != null ? { min_bytes: a.min_bytes } : {}),
|
|
86
|
+
...(a.fresh_days != null ? { fresh_days: a.fresh_days } : {}),
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
/** What the compiled catalogue REQUIRES, with the prose left out. */
|
|
90
|
+
export function compiledGatesRequirement() {
|
|
91
|
+
return {
|
|
92
|
+
schema: 1,
|
|
93
|
+
steps: URAZUKE_STEPS.map((s) => ({
|
|
94
|
+
num: s.num, id: s.id, tramo: s.tramo, evaluator: s.evaluator, mandatory: s.mandatory,
|
|
95
|
+
inputs: s.inputs.map(artifactRequirement),
|
|
96
|
+
artifacts: s.artifacts.map(artifactRequirement),
|
|
97
|
+
})),
|
|
98
|
+
stations: URAZUKE_LEGACY_STATIONS.map((s) => ({
|
|
99
|
+
num: s.num, id: s.id, evaluator: s.evaluator,
|
|
100
|
+
artifacts: s.artifacts.map(artifactRequirement),
|
|
101
|
+
})),
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
export function sha256Hex(text) {
|
|
105
|
+
return crypto.createHash('sha256').update(Buffer.from(text, 'utf8')).digest('hex');
|
|
106
|
+
}
|
|
107
|
+
/** The hash of the compiled requirement. Memoised: it cannot change inside
|
|
108
|
+
* a process, and it is read once per receipt. */
|
|
109
|
+
let compiledHash;
|
|
110
|
+
export function compiledGatesHash() {
|
|
111
|
+
if (!compiledHash)
|
|
112
|
+
compiledHash = sha256Hex(canonicalJson(compiledGatesRequirement()));
|
|
113
|
+
return compiledHash;
|
|
114
|
+
}
|
|
115
|
+
/** The stamp to write on a measurement taken right now.
|
|
116
|
+
*
|
|
117
|
+
* Today it always reports `compiled`, because that is the truth: Forge
|
|
118
|
+
* enforces catalog.ts and reads nothing over the network for the gates.
|
|
119
|
+
* Deliberately not wired to the published file yet -- four of the twelve
|
|
120
|
+
* published evaluators have no implementation here, and all four are
|
|
121
|
+
* required by the five anchors of the loop, so reading `gates.json` today
|
|
122
|
+
* would stop every block of every project. The source becomes `project`
|
|
123
|
+
* when Pieza 3 writes the frozen copy, and `portal` is only ever
|
|
124
|
+
* legitimate after that. */
|
|
125
|
+
export async function currentRulesetStamp(projectRoot) {
|
|
126
|
+
const stamp = {
|
|
127
|
+
gates_source: 'compiled',
|
|
128
|
+
gates_version: FORGE_COMPILED_GATES_VERSION,
|
|
129
|
+
gates_hash: compiledGatesHash(),
|
|
130
|
+
};
|
|
131
|
+
/* The prompt version is informative, and resolving it must never be able
|
|
132
|
+
* to cost a receipt: a network hiccup leaves the field out, not the
|
|
133
|
+
* receipt unwritten. Offline on purpose -- writing a receipt is not the
|
|
134
|
+
* moment to discover the portal moved. */
|
|
135
|
+
try {
|
|
136
|
+
const { resolvePrompts } = await import('./prompts_client.js');
|
|
137
|
+
const r = await resolvePrompts(projectRoot, { offline: true });
|
|
138
|
+
if (r.version)
|
|
139
|
+
stamp.prompts_version = r.version;
|
|
140
|
+
}
|
|
141
|
+
catch { /* informative only */ }
|
|
142
|
+
return stamp;
|
|
143
|
+
}
|
|
144
|
+
/** One line for a report or a receipt render. */
|
|
145
|
+
export function renderStamp(s) {
|
|
146
|
+
if (!s)
|
|
147
|
+
return 'unsealed (written before the ruleset stamp existed: the rule it was judged under is unknown)';
|
|
148
|
+
return s.gates_version + ' [' + s.gates_source + '] hash ' + s.gates_hash.slice(0, 12)
|
|
149
|
+
+ (s.prompts_version ? ' prompts ' + s.prompts_version : '');
|
|
150
|
+
}
|
|
151
|
+
/** Whether two stamps judge by the same requirement. The hash decides, not
|
|
152
|
+
* the version string: a version bumped without a requirement change is the
|
|
153
|
+
* same gate, and a requirement edited without bumping the version is not. */
|
|
154
|
+
export function sameRequirement(a, b) {
|
|
155
|
+
if (!a || !b)
|
|
156
|
+
return false;
|
|
157
|
+
return a.gates_hash === b.gates_hash;
|
|
158
|
+
}
|
|
159
|
+
//# sourceMappingURL=ruleset.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ruleset.js","sourceRoot":"","sources":["../../src/urazuke/ruleset.ts"],"names":[],"mappings":"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"}
|
package/dist/urazuke/start.d.ts
CHANGED
|
@@ -53,6 +53,11 @@ export interface UrazukeStartResult {
|
|
|
53
53
|
/** Where the ladder continues (Pablo, 2026-10-19: every start resumes at
|
|
54
54
|
* the next open task; a half-done step is resumed, a closed one skipped). */
|
|
55
55
|
next?: UrazukeStartNext;
|
|
56
|
+
/** What the freeze did (PND-165, Pieza 3). Present on every start that
|
|
57
|
+
* reached a ladder -- including one that was already open, which is how
|
|
58
|
+
* a project started before this existed gets frozen with what it reads
|
|
59
|
+
* today instead of staying on the live method forever. */
|
|
60
|
+
freeze?: import('./freeze.js').FreezeResult;
|
|
56
61
|
}
|
|
57
62
|
/** One line the owner understands: where it starts or resumes. */
|
|
58
63
|
export declare function describeNext(n: UrazukeStartNext | undefined, created: boolean): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../src/urazuke/start.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,uDAAuD;IACvD,MAAM,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACxC,wCAAwC;IACxC,SAAS,EAAE,SAAS,GAAG,gBAAgB,GAAG,WAAW,CAAC;IACtD,MAAM,EAAE,MAAM,CAAC;IACf,8EAA8E;IAC9E,WAAW,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACnE;AAED,MAAM,WAAW,gBAAgB;IAC/B,gCAAgC;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,+EAA+E;IAC/E,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,OAAO,CAAC;IACZ,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB;kFAC8E;IAC9E,IAAI,CAAC,EAAE,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../src/urazuke/start.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,uDAAuD;IACvD,MAAM,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACxC,wCAAwC;IACxC,SAAS,EAAE,SAAS,GAAG,gBAAgB,GAAG,WAAW,CAAC;IACtD,MAAM,EAAE,MAAM,CAAC;IACf,8EAA8E;IAC9E,WAAW,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACnE;AAED,MAAM,WAAW,gBAAgB;IAC/B,gCAAgC;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,+EAA+E;IAC/E,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,OAAO,CAAC;IACZ,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB;kFAC8E;IAC9E,IAAI,CAAC,EAAE,gBAAgB,CAAC;IACxB;;;+DAG2D;IAC3D,MAAM,CAAC,EAAE,OAAO,aAAa,EAAE,YAAY,CAAC;CAC7C;AAgBD,kEAAkE;AAClE,wBAAgB,YAAY,CAAC,CAAC,EAAE,gBAAgB,GAAG,SAAS,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,CAKtF;AAUD,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAanG;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,OAAO,CAAC,kBAAkB,CAAC,CA2ChJ"}
|
package/dist/urazuke/start.js
CHANGED
|
@@ -70,7 +70,18 @@ export async function startUrazuke(slug, projectRoot, opts = {}) {
|
|
|
70
70
|
const hint = await urazukeStartHint(slug, projectRoot);
|
|
71
71
|
if (hint.active) {
|
|
72
72
|
const next = await nextStep(slug, projectRoot);
|
|
73
|
-
|
|
73
|
+
/* A ladder that was already open still gets frozen: this is the path
|
|
74
|
+
* every project opened before Pieza 3 existed comes through, and the
|
|
75
|
+
* freeze is idempotent, so a project already frozen is untouched
|
|
76
|
+
* (PND-165). */
|
|
77
|
+
const freeze = await freezeFor(projectRoot);
|
|
78
|
+
return {
|
|
79
|
+
ok: true, created: false, kind: hint.active.kind, code: hint.active.code,
|
|
80
|
+
reason: 'la escalera ' + hint.active.code + ' ya estaba abierta: ' + describeNext(next, false)
|
|
81
|
+
+ (freeze ? ' -- ' + (await import('./freeze.js')).renderFreeze(freeze) : ''),
|
|
82
|
+
...(next ? { next } : {}),
|
|
83
|
+
...(freeze ? { freeze } : {}),
|
|
84
|
+
};
|
|
74
85
|
}
|
|
75
86
|
const closed = [];
|
|
76
87
|
if (hint.open_others.length) {
|
|
@@ -86,6 +97,32 @@ export async function startUrazuke(slug, projectRoot, opts = {}) {
|
|
|
86
97
|
const { ensureWorkflowForMappedProject } = await import('../workflow/orchestrator.js');
|
|
87
98
|
const r = await ensureWorkflowForMappedProject(slug, projectRoot, opts.name);
|
|
88
99
|
const next = r.created ? await nextStep(slug, projectRoot) : undefined;
|
|
89
|
-
|
|
100
|
+
/* THE freeze (PND-165, Pieza 3). A project starts and finishes on the same
|
|
101
|
+
* version of the method; this is the moment that makes that true, because
|
|
102
|
+
* it is the only one that covers the whole climb. */
|
|
103
|
+
const freeze = r.created ? await freezeFor(projectRoot) : undefined;
|
|
104
|
+
return {
|
|
105
|
+
ok: r.created, created: r.created,
|
|
106
|
+
...(r.kind ? { kind: r.kind } : {}), ...(r.code ? { code: r.code } : {}),
|
|
107
|
+
reason: r.reason + (next ? '; ' + describeNext(next, true) : '')
|
|
108
|
+
+ (freeze ? '; ' + (await import('./freeze.js')).renderFreeze(freeze) : ''),
|
|
109
|
+
...(closed.length ? { closed } : {}),
|
|
110
|
+
...(next ? { next } : {}),
|
|
111
|
+
...(freeze ? { freeze } : {}),
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
/** The freeze, with one guarantee: it cannot cost the start. A disk that
|
|
115
|
+
* refuses the write, a portal that hangs, a malformed copy -- none of those
|
|
116
|
+
* are a reason for the owner to lose the ladder. It reports instead, and
|
|
117
|
+
* an unfrozen project still works; it is just reading the live method, and
|
|
118
|
+
* the result says so. */
|
|
119
|
+
async function freezeFor(projectRoot) {
|
|
120
|
+
try {
|
|
121
|
+
const { freezeProjectVersion } = await import('./freeze.js');
|
|
122
|
+
return await freezeProjectVersion(projectRoot);
|
|
123
|
+
}
|
|
124
|
+
catch {
|
|
125
|
+
return undefined;
|
|
126
|
+
}
|
|
90
127
|
}
|
|
91
128
|
//# sourceMappingURL=start.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/urazuke/start.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;
|
|
1
|
+
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/urazuke/start.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.20.0";
|
|
6
6
|
//# sourceMappingURL=version.d.ts.map
|
package/dist/version.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@nac3/forge-cli",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.20.0",
|
|
4
4
|
"description": "Yujin Forge -- voice-first NAC-3 React development framework. CLI + chat panel + spec ingest + 10-format document reader + voice loop.",
|
|
5
5
|
"license": "SEE LICENSE IN LICENSE",
|
|
6
6
|
"author": "Pablo Kuschnirof <pablo@rpaforce.com>",
|