@warpgogol/forge 5.2.0 → 5.2.4
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/AGENTS.md +4 -1
- package/dist/os/adr/adr.module.js +1 -1
- package/dist/os/adr/adr.module.js.map +1 -1
- package/dist/os/compass/compass.module.js +2 -2
- package/dist/os/compass/compass.module.js.map +1 -1
- package/dist/os/compass/handlers/compass-audit-handler.d.ts +3 -0
- package/dist/os/compass/handlers/compass-audit-handler.d.ts.map +1 -1
- package/dist/os/compass/handlers/compass-audit-handler.js +87 -8
- package/dist/os/compass/handlers/compass-audit-handler.js.map +1 -1
- package/dist/os/core/core.module.d.ts.map +1 -1
- package/dist/os/core/core.module.js +15 -1
- package/dist/os/core/core.module.js.map +1 -1
- package/dist/os/mission/handlers/archive.d.ts.map +1 -1
- package/dist/os/mission/handlers/archive.js +22 -6
- package/dist/os/mission/handlers/archive.js.map +1 -1
- package/dist/os/program/lease.js +1 -1
- package/dist/os/program/lease.js.map +1 -1
- package/dist/os/queue/queue.module.js +1 -1
- package/dist/os/queue/queue.module.js.map +1 -1
- package/dist/os/rfc/handlers/list-create.d.ts.map +1 -1
- package/dist/os/rfc/handlers/list-create.js +79 -32
- package/dist/os/rfc/handlers/list-create.js.map +1 -1
- package/dist/os/rfc/rfc.module.js +1 -1
- package/dist/os/rfc/rfc.module.js.map +1 -1
- package/dist/os/spec/spec.module.d.ts.map +1 -1
- package/dist/os/spec/spec.module.js +2 -0
- package/dist/os/spec/spec.module.js.map +1 -1
- package/dist/src/config/forge-config.d.ts +9 -0
- package/dist/src/config/forge-config.d.ts.map +1 -1
- package/dist/src/config/forge-config.js +7 -0
- package/dist/src/config/forge-config.js.map +1 -1
- package/dist/src/knowledge/index.d.ts +1 -0
- package/dist/src/knowledge/index.d.ts.map +1 -1
- package/dist/src/knowledge/index.js +1 -0
- package/dist/src/knowledge/index.js.map +1 -1
- package/dist/src/knowledge/sync.d.ts +24 -0
- package/dist/src/knowledge/sync.d.ts.map +1 -0
- package/dist/src/knowledge/sync.js +127 -0
- package/dist/src/knowledge/sync.js.map +1 -0
- package/dist/src/onboarding/agents-generate.d.ts +2 -0
- package/dist/src/onboarding/agents-generate.d.ts.map +1 -1
- package/dist/src/onboarding/agents-generate.js +14 -18
- package/dist/src/onboarding/agents-generate.js.map +1 -1
- package/dist/src/onboarding/doctor.d.ts +6 -0
- package/dist/src/onboarding/doctor.d.ts.map +1 -1
- package/dist/src/onboarding/doctor.js +124 -14
- package/dist/src/onboarding/doctor.js.map +1 -1
- package/dist/src/onboarding/init.d.ts.map +1 -1
- package/dist/src/onboarding/init.js +15 -8
- package/dist/src/onboarding/init.js.map +1 -1
- package/dist/src/onboarding/memory-compact.d.ts +22 -0
- package/dist/src/onboarding/memory-compact.d.ts.map +1 -0
- package/dist/src/onboarding/memory-compact.js +147 -0
- package/dist/src/onboarding/memory-compact.js.map +1 -0
- package/dist/src/onboarding/memory-scaffold.d.ts +1 -0
- package/dist/src/onboarding/memory-scaffold.d.ts.map +1 -1
- package/dist/src/onboarding/memory-scaffold.js +1 -1
- package/dist/src/onboarding/memory-scaffold.js.map +1 -1
- package/dist/src/onboarding/nested-agents-generate.d.ts.map +1 -1
- package/dist/src/onboarding/nested-agents-generate.js +1 -1
- package/dist/src/onboarding/nested-agents-generate.js.map +1 -1
- package/dist/src/onboarding/upgrade.d.ts.map +1 -1
- package/dist/src/onboarding/upgrade.js +42 -13
- package/dist/src/onboarding/upgrade.js.map +1 -1
- package/dist/src/onboarding/workspace-discovery.d.ts +1 -1
- package/dist/src/onboarding/workspace-discovery.d.ts.map +1 -1
- package/dist/src/onboarding/workspace-discovery.js +14 -2
- package/dist/src/onboarding/workspace-discovery.js.map +1 -1
- package/dist/src/types.d.ts +1 -2
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/types.js +1 -0
- package/dist/src/types.js.map +1 -1
- package/dist/src/utils/fs-atomic.js +1 -1
- package/dist/src/utils/fs-atomic.js.map +1 -1
- package/docs/reference/forge-yaml.md +12 -0
- package/os/adr/adr.module.ts +1 -1
- package/os/compass/compass.module.ts +2 -2
- package/os/compass/handlers/compass-audit-handler.ts +116 -8
- package/os/compass/handlers/tests/compass-audit-plan.test.ts +98 -0
- package/os/compass/handlers/tests/compass-audit-record.test.ts +105 -0
- package/os/compass/handlers/tests/compass-audit-validate.test.ts +133 -0
- package/os/compass/handlers/tests/compass-ledger-scope.test.ts +124 -0
- package/os/core/core.module.ts +16 -1
- package/os/mission/handlers/archive.test.ts +49 -0
- package/os/mission/handlers/archive.ts +21 -6
- package/os/program/lease.ts +1 -1
- package/os/queue/queue.module.ts +1 -1
- package/os/rfc/handlers/list-create.ts +83 -35
- package/os/rfc/handlers/validate-rules.test.ts +50 -0
- package/os/rfc/rfc-create-concurrent.test.ts +118 -0
- package/os/rfc/rfc-create-hint.test.ts +90 -0
- package/os/rfc/rfc-read-only-no-side-effects.test.ts +83 -0
- package/os/rfc/rfc.module.ts +1 -1
- package/os/spec/spec.module.ts +2 -0
- package/package.json +1 -1
- package/profiles/forge-shell.yaml +3 -0
- package/profiles/godot-game.yaml +3 -0
- package/profiles/phaser-game.yaml +3 -0
- package/profiles/site-workshop.yaml +567 -564
- package/src/config/forge-config.ts +11 -0
- package/src/knowledge/__tests__/sync.test.ts +227 -0
- package/src/knowledge/index.ts +7 -0
- package/src/knowledge/sync.ts +161 -0
- package/src/onboarding/agents-generate.ts +18 -18
- package/src/onboarding/doctor.ts +141 -15
- package/src/onboarding/init.ts +15 -8
- package/src/onboarding/memory-compact.ts +188 -0
- package/src/onboarding/memory-scaffold.ts +1 -1
- package/src/onboarding/nested-agents-generate.ts +5 -1
- package/src/onboarding/upgrade.ts +47 -16
- package/src/onboarding/workspace-discovery.ts +15 -1
- package/src/tests/agents-generate.test.ts +26 -3
- package/src/tests/doctor-dist-freshness.test.ts +110 -0
- package/src/tests/doctor-fix.test.ts +145 -0
- package/src/tests/doctor-nested-agents.test.ts +108 -0
- package/src/tests/memory-compact.test.ts +143 -0
- package/src/tests/upgrade.test.ts +53 -0
- package/src/tests/workspace-discovery.test.ts +28 -0
- package/src/types.ts +2 -2
- package/src/utils/fs-atomic.ts +1 -1
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export type KnowledgeSyncAction = "copied" | "merged" | "unchanged" | "skipped";
|
|
2
|
+
export interface KnowledgeSyncResult {
|
|
3
|
+
action: KnowledgeSyncAction;
|
|
4
|
+
/** Entry IDs appended from the source file (merge only). */
|
|
5
|
+
appended: string[];
|
|
6
|
+
/** Entry IDs present in both files — the local version is always kept. */
|
|
7
|
+
conflicts: string[];
|
|
8
|
+
}
|
|
9
|
+
export interface KnowledgeSyncPlan extends KnowledgeSyncResult {
|
|
10
|
+
/** Serialized content to write at the destination, or null when no write is needed. */
|
|
11
|
+
content: string | null;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Compute the sync plan for a declared knowledge file (or directory) without
|
|
15
|
+
* writing anything. Used by doctor for stale detection.
|
|
16
|
+
*/
|
|
17
|
+
export declare function planKnowledgeSync(srcPath: string, destPath: string): KnowledgeSyncPlan;
|
|
18
|
+
/**
|
|
19
|
+
* Sync one declared knowledge file (or directory) from source to destination.
|
|
20
|
+
* Never overwrites existing local content — cumulative files merge by entry-ID
|
|
21
|
+
* union, divergent non-cumulative files are skipped.
|
|
22
|
+
*/
|
|
23
|
+
export declare function syncKnowledgeFile(srcPath: string, destPath: string): KnowledgeSyncResult;
|
|
24
|
+
//# sourceMappingURL=sync.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../../src/knowledge/sync.ts"],"names":[],"mappings":"AAwBA,MAAM,MAAM,mBAAmB,GAAG,QAAQ,GAAG,QAAQ,GAAG,WAAW,GAAG,SAAS,CAAC;AAEhF,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,mBAAmB,CAAC;IAC5B,4DAA4D;IAC5D,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,0EAA0E;IAC1E,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED,MAAM,WAAW,iBAAkB,SAAQ,mBAAmB;IAC5D,uFAAuF;IACvF,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAiFD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,iBAAiB,CAetF;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,mBAAmB,CAgBxF"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
/*
|
|
2
|
+
<MODULE_CONTRACT>
|
|
3
|
+
<purpose>Append-only sync for declared skill knowledge files. Copies files that are
|
|
4
|
+
missing at the destination, merges cumulative K-NNNN files by entry-ID union (local
|
|
5
|
+
entries always win), and never overwrites existing local content. Fixes the data-loss
|
|
6
|
+
bug where forge.upgrade wiped project-accumulated knowledge entries by overwriting
|
|
7
|
+
the synced copy with the package version.</purpose>
|
|
8
|
+
<non-goals>
|
|
9
|
+
<item>Do not validate entry metadata — SKILL-19/SKILL-20 handle schema checks.</item>
|
|
10
|
+
<item>Do not sync SKILL.md itself — callers handle that separately.</item>
|
|
11
|
+
<item>Do not propagate deletions — knowledge files are append-only; removing entries is a compaction concern (compact.ts), not a sync concern.</item>
|
|
12
|
+
</non-goals>
|
|
13
|
+
</MODULE_CONTRACT>
|
|
14
|
+
<CHANGE_SUMMARY>
|
|
15
|
+
<item>2026-09-24: initial append-only knowledge sync — merge by entry-ID union, local wins conflicts, skip divergent non-cumulative files, recurse into declared directories.</item>
|
|
16
|
+
</CHANGE_SUMMARY>
|
|
17
|
+
*/
|
|
18
|
+
import fs from "node:fs";
|
|
19
|
+
import path from "node:path";
|
|
20
|
+
import { parseKnowledgeFile } from "./parse.js";
|
|
21
|
+
import { serializeKnowledgeFile } from "./serialize.js";
|
|
22
|
+
const ACTION_PRIORITY = {
|
|
23
|
+
merged: 3,
|
|
24
|
+
copied: 2,
|
|
25
|
+
skipped: 1,
|
|
26
|
+
unchanged: 0,
|
|
27
|
+
};
|
|
28
|
+
function aggregateInto(target, sub) {
|
|
29
|
+
target.appended.push(...sub.appended);
|
|
30
|
+
target.conflicts.push(...sub.conflicts);
|
|
31
|
+
if (ACTION_PRIORITY[sub.action] > ACTION_PRIORITY[target.action]) {
|
|
32
|
+
target.action = sub.action;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
function isCumulative(parsed) {
|
|
36
|
+
return !parsed.isKnowledgeAdjacent;
|
|
37
|
+
}
|
|
38
|
+
function planFileSync(srcPath, destPath) {
|
|
39
|
+
const none = { appended: [], conflicts: [] };
|
|
40
|
+
if (!fs.existsSync(srcPath)) {
|
|
41
|
+
return { action: "unchanged", content: null, ...none };
|
|
42
|
+
}
|
|
43
|
+
const srcContent = fs.readFileSync(srcPath, "utf8");
|
|
44
|
+
if (!fs.existsSync(destPath)) {
|
|
45
|
+
return { action: "copied", content: srcContent, ...none };
|
|
46
|
+
}
|
|
47
|
+
const destContent = fs.readFileSync(destPath, "utf8");
|
|
48
|
+
if (srcContent === destContent) {
|
|
49
|
+
return { action: "unchanged", content: null, ...none };
|
|
50
|
+
}
|
|
51
|
+
const srcParsed = parseKnowledgeFile(srcPath);
|
|
52
|
+
const destParsed = parseKnowledgeFile(destPath);
|
|
53
|
+
// Both files use the cumulative K-NNNN format → append-only merge:
|
|
54
|
+
// local entries always win; source entries with new IDs are appended.
|
|
55
|
+
if (isCumulative(srcParsed) && isCumulative(destParsed)) {
|
|
56
|
+
const destIds = new Set(destParsed.entries.map((e) => e.meta.id));
|
|
57
|
+
const appendedEntries = srcParsed.entries.filter((e) => !destIds.has(e.meta.id));
|
|
58
|
+
const conflicts = srcParsed.entries
|
|
59
|
+
.filter((e) => destIds.has(e.meta.id))
|
|
60
|
+
.map((e) => e.meta.id);
|
|
61
|
+
const destLegacyTexts = new Set(destParsed.legacySections.map((l) => l.text.trim()));
|
|
62
|
+
const appendedLegacy = srcParsed.legacySections.filter((l) => !destLegacyTexts.has(l.text.trim()));
|
|
63
|
+
if (appendedEntries.length === 0 && appendedLegacy.length === 0) {
|
|
64
|
+
return { action: "unchanged", content: null, appended: [], conflicts };
|
|
65
|
+
}
|
|
66
|
+
const merged = {
|
|
67
|
+
path: destPath,
|
|
68
|
+
layer: destParsed.layer ?? srcParsed.layer,
|
|
69
|
+
preamble: destParsed.preamble || srcParsed.preamble,
|
|
70
|
+
entries: [...destParsed.entries, ...appendedEntries],
|
|
71
|
+
legacySections: [...destParsed.legacySections, ...appendedLegacy],
|
|
72
|
+
parseIssues: [],
|
|
73
|
+
isKnowledgeAdjacent: false,
|
|
74
|
+
};
|
|
75
|
+
return {
|
|
76
|
+
action: "merged",
|
|
77
|
+
content: serializeKnowledgeFile(merged),
|
|
78
|
+
appended: appendedEntries.map((e) => e.meta.id),
|
|
79
|
+
conflicts,
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
// Any other divergence means the local file was edited or uses a
|
|
83
|
+
// non-cumulative format — preserve it (append-only contract).
|
|
84
|
+
return { action: "skipped", content: null, ...none };
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Compute the sync plan for a declared knowledge file (or directory) without
|
|
88
|
+
* writing anything. Used by doctor for stale detection.
|
|
89
|
+
*/
|
|
90
|
+
export function planKnowledgeSync(srcPath, destPath) {
|
|
91
|
+
if (fs.existsSync(srcPath) && fs.statSync(srcPath).isDirectory()) {
|
|
92
|
+
const aggregate = {
|
|
93
|
+
action: "unchanged",
|
|
94
|
+
appended: [],
|
|
95
|
+
conflicts: [],
|
|
96
|
+
content: null,
|
|
97
|
+
};
|
|
98
|
+
for (const entry of fs.readdirSync(srcPath)) {
|
|
99
|
+
const sub = planKnowledgeSync(path.join(srcPath, entry), path.join(destPath, entry));
|
|
100
|
+
aggregateInto(aggregate, sub);
|
|
101
|
+
}
|
|
102
|
+
return aggregate;
|
|
103
|
+
}
|
|
104
|
+
return planFileSync(srcPath, destPath);
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Sync one declared knowledge file (or directory) from source to destination.
|
|
108
|
+
* Never overwrites existing local content — cumulative files merge by entry-ID
|
|
109
|
+
* union, divergent non-cumulative files are skipped.
|
|
110
|
+
*/
|
|
111
|
+
export function syncKnowledgeFile(srcPath, destPath) {
|
|
112
|
+
if (fs.existsSync(srcPath) && fs.statSync(srcPath).isDirectory()) {
|
|
113
|
+
const aggregate = { action: "unchanged", appended: [], conflicts: [] };
|
|
114
|
+
for (const entry of fs.readdirSync(srcPath)) {
|
|
115
|
+
const sub = syncKnowledgeFile(path.join(srcPath, entry), path.join(destPath, entry));
|
|
116
|
+
aggregateInto(aggregate, sub);
|
|
117
|
+
}
|
|
118
|
+
return aggregate;
|
|
119
|
+
}
|
|
120
|
+
const plan = planFileSync(srcPath, destPath);
|
|
121
|
+
if (plan.content !== null) {
|
|
122
|
+
fs.mkdirSync(path.dirname(destPath), { recursive: true });
|
|
123
|
+
fs.writeFileSync(destPath, plan.content, "utf8");
|
|
124
|
+
}
|
|
125
|
+
return { action: plan.action, appended: plan.appended, conflicts: plan.conflicts };
|
|
126
|
+
}
|
|
127
|
+
//# sourceMappingURL=sync.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync.js","sourceRoot":"","sources":["../../../src/knowledge/sync.ts"],"names":[],"mappings":"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"}
|
|
@@ -25,6 +25,8 @@ interface AgentsGenerateResult {
|
|
|
25
25
|
register?: string;
|
|
26
26
|
workspaceType?: string;
|
|
27
27
|
}>;
|
|
28
|
+
rootSkipped?: boolean;
|
|
29
|
+
rootSkipReason?: string;
|
|
28
30
|
}
|
|
29
31
|
export declare function runAgentsGenerate(_input: ForgeCommandInput, context: ForgeRuntimeContext): Promise<ForgeCommandResult<AgentsGenerateResult>>;
|
|
30
32
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agents-generate.d.ts","sourceRoot":"","sources":["../../../src/onboarding/agents-generate.ts"],"names":[],"mappings":"AA+BA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAEjE,OAAO,KAAK,EACV,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,aAAa,CAAC;AAErB,KAAK,kBAAkB,GAAG,UAAU,GAAG,UAAU,CAAC;AAGlD,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAClC,MAAM,CAKR;AAGD,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAmBD,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,kBAAkB,EAC5B,OAAO,CAAC,EAAE,YAAY,GACrB,MAAM,CA0BR;AAsGD,UAAU,oBAAoB;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,aAAa,CAAC,EAAE;QAAE,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;IAC9C,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"agents-generate.d.ts","sourceRoot":"","sources":["../../../src/onboarding/agents-generate.ts"],"names":[],"mappings":"AA+BA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAEjE,OAAO,KAAK,EACV,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,aAAa,CAAC;AAErB,KAAK,kBAAkB,GAAG,UAAU,GAAG,UAAU,CAAC;AAGlD,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAClC,MAAM,CAKR;AAGD,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAmBD,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,kBAAkB,EAC5B,OAAO,CAAC,EAAE,YAAY,GACrB,MAAM,CA0BR;AAsGD,UAAU,oBAAoB;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,aAAa,CAAC,EAAE;QAAE,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;IAC9C,OAAO,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAE9F,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,iBAAiB,EACzB,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,kBAAkB,CAAC,oBAAoB,CAAC,CAAC,CAmOnD"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
<MODULE_CONTRACT>
|
|
3
3
|
<purpose>forge.agents.generate — regenerates AGENTS.md deterministically from forge.yaml + skill registry. Carries the standard generated-file marker.</purpose>
|
|
4
4
|
<non-goals>
|
|
5
|
-
<item>Do not overwrite a hand-written AGENTS.md (no generated marker) —
|
|
5
|
+
<item>Do not overwrite a hand-written AGENTS.md (no generated marker) — skip with warning, continue nested (RFC-1150).</item>
|
|
6
6
|
<item>Do not read or modify forge.yaml — only read it via loadForgeConfig.</item>
|
|
7
7
|
</non-goals>
|
|
8
8
|
</MODULE_CONTRACT>
|
|
@@ -187,26 +187,16 @@ export async function runAgentsGenerate(_input, context) {
|
|
|
187
187
|
};
|
|
188
188
|
}
|
|
189
189
|
const agentsMdPath = path.join(workspaceRoot, "AGENTS.md");
|
|
190
|
-
// Edit guard:
|
|
190
|
+
// Edit guard: never overwrite a hand-written AGENTS.md — skip the root file
|
|
191
|
+
// with a warning and continue to nested generation (RFC-1150, non-fatal).
|
|
192
|
+
let rootSkipped = false;
|
|
191
193
|
if (!dryRun && fs.existsSync(agentsMdPath)) {
|
|
192
194
|
const existing = fs.readFileSync(agentsMdPath, "utf8");
|
|
193
195
|
if (!hasGeneratedMarker(existing)) {
|
|
194
|
-
|
|
196
|
+
rootSkipped = true;
|
|
195
197
|
if (outputFormat === "pretty") {
|
|
196
|
-
logger.
|
|
198
|
+
logger.warn("AGENTS.md exists without a generated marker — skipping root file (hand-written). Nested AGENTS.md generation continues.");
|
|
197
199
|
}
|
|
198
|
-
return {
|
|
199
|
-
data: {
|
|
200
|
-
command: "forge.agents.generate",
|
|
201
|
-
status: "fail",
|
|
202
|
-
configPath: "forge.yaml",
|
|
203
|
-
generated: [],
|
|
204
|
-
skipped: [],
|
|
205
|
-
errors: [msg],
|
|
206
|
-
},
|
|
207
|
-
exitCode: 1,
|
|
208
|
-
summary: `forge.agents.generate: failed — hand-written AGENTS.md`,
|
|
209
|
-
};
|
|
210
200
|
}
|
|
211
201
|
}
|
|
212
202
|
// Generate AGENTS.md content
|
|
@@ -296,7 +286,7 @@ export async function runAgentsGenerate(_input, context) {
|
|
|
296
286
|
// RFC-0643: Apply terminology substitution on final assembled content
|
|
297
287
|
const resolvedTerminology = resolveAllTerminology(config, profile);
|
|
298
288
|
content = substituteTemplate(content, resolvedTerminology);
|
|
299
|
-
const generated = [
|
|
289
|
+
const generated = [];
|
|
300
290
|
const skipped = [];
|
|
301
291
|
const renderedFiles = {};
|
|
302
292
|
const details = [];
|
|
@@ -307,9 +297,14 @@ export async function runAgentsGenerate(_input, context) {
|
|
|
307
297
|
});
|
|
308
298
|
if (dryRun) {
|
|
309
299
|
renderedFiles["AGENTS.md"] = content;
|
|
300
|
+
generated.push("AGENTS.md");
|
|
301
|
+
}
|
|
302
|
+
else if (rootSkipped) {
|
|
303
|
+
skipped.push("AGENTS.md (hand-written)");
|
|
310
304
|
}
|
|
311
305
|
else {
|
|
312
306
|
await writeFileIfChanged(agentsMdPath, content);
|
|
307
|
+
generated.push("AGENTS.md");
|
|
313
308
|
if (outputFormat === "pretty") {
|
|
314
309
|
logger.success(`Generated ${path.relative(workspaceRoot, agentsMdPath)}`);
|
|
315
310
|
}
|
|
@@ -366,12 +361,13 @@ export async function runAgentsGenerate(_input, context) {
|
|
|
366
361
|
skipped,
|
|
367
362
|
errors: [],
|
|
368
363
|
details,
|
|
364
|
+
...(rootSkipped ? { rootSkipped: true, rootSkipReason: "hand-written" } : {}),
|
|
369
365
|
...(dryRun ? { renderedFiles } : {}),
|
|
370
366
|
},
|
|
371
367
|
exitCode: 0,
|
|
372
368
|
summary: dryRun
|
|
373
369
|
? `forge.agents.generate: [dry-run] would generate ${generated.length} file(s), skip ${skipped.length}`
|
|
374
|
-
: `forge.agents.generate: OK — ${generated.length} file(s) generated, ${skipped.length} skipped`,
|
|
370
|
+
: `forge.agents.generate: OK — ${generated.length} file(s) generated, ${skipped.length} skipped${rootSkipped ? " (root AGENTS.md hand-written — skipped)" : ""}`,
|
|
375
371
|
};
|
|
376
372
|
}
|
|
377
373
|
//# sourceMappingURL=agents-generate.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agents-generate.js","sourceRoot":"","sources":["../../../src/onboarding/agents-generate.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"agents-generate.js","sourceRoot":"","sources":["../../../src/onboarding/agents-generate.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
import type { ForgeCommandInput, ForgeCommandResult, ForgeRuntimeContext } from "../types.ts";
|
|
2
2
|
import type { InvariantViolation } from "./invariant-engine.ts";
|
|
3
|
+
interface DoctorFixResult {
|
|
4
|
+
check: string;
|
|
5
|
+
action: "fixed" | "skipped" | "failed";
|
|
6
|
+
detail: string;
|
|
7
|
+
}
|
|
3
8
|
interface DoctorCheck {
|
|
4
9
|
name: string;
|
|
5
10
|
status: "pass" | "fail" | "warn";
|
|
@@ -40,6 +45,7 @@ export declare function runDoctor(input: ForgeCommandInput, context: ForgeRuntim
|
|
|
40
45
|
forbiddenImports: ForbiddenImport[];
|
|
41
46
|
bindings: BindingValidation;
|
|
42
47
|
domain?: DomainReport;
|
|
48
|
+
fixes?: DoctorFixResult[];
|
|
43
49
|
}>>;
|
|
44
50
|
export {};
|
|
45
51
|
//# sourceMappingURL=doctor.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../../src/onboarding/doctor.ts"],"names":[],"mappings":"AA4BA,OAAO,KAAK,EACV,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../../src/onboarding/doctor.ts"],"names":[],"mappings":"AA4BA,OAAO,KAAK,EACV,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,aAAa,CAAC;AAoBrB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAMhE,UAAU,eAAe;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,OAAO,GAAG,SAAS,GAAG,QAAQ,CAAC;IACvC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,WAAW;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,mBAAmB,CAAC,EAAE,kBAAkB,EAAE,CAAC;CAC5C;AAED,UAAU,eAAe;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,iBAAiB;IACzB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,aAAa,EAAE,CAAC;CAC1B;AAED,UAAU,aAAa;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;CACpB;AAk0BD,UAAU,YAAY;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,UAAU,GAAG,UAAU,GAAG,IAAI,CAAC;IACzC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,UAAU,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAClE,MAAM,EAAE,YAAY,GAAG,SAAS,GAAG,SAAS,CAAC;IAC7C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAmSD,wBAAsB,SAAS,CAC7B,KAAK,EAAE,iBAAiB,EACxB,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,kBAAkB,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,WAAW,EAAE,CAAC;IAAC,OAAO,EAAE,OAAO,CAAC;IAAC,gBAAgB,EAAE,eAAe,EAAE,CAAC;IAAC,QAAQ,EAAE,iBAAiB,CAAC;IAAC,MAAM,CAAC,EAAE,YAAY,CAAC;IAAC,KAAK,CAAC,EAAE,eAAe,EAAE,CAAA;CAAE,CAAC,CAAC,CAiT/M"}
|
|
@@ -29,15 +29,17 @@ import { resolveForgeRoot, loadForgeConfig, resolveBinding, resolveTerminology,
|
|
|
29
29
|
import { FORGE_SKILLS, discoverPackSkills } from "../registry.js";
|
|
30
30
|
import { discoverWorkspaces } from "./workspace-discovery.js";
|
|
31
31
|
import { buildNestedAgentsMd, selectNestedTemplate } from "./nested-agents-templates.js";
|
|
32
|
-
import { readPackageInfo } from "./nested-agents-generate.js";
|
|
32
|
+
import { readPackageInfo, generateNestedAgentsMd } from "./nested-agents-generate.js";
|
|
33
33
|
import { listStackProfiles } from "../profiles/stack-profile.js";
|
|
34
34
|
import { resolveAllTerminology } from "../profiles/terminology-utils.js";
|
|
35
35
|
import { TERMINOLOGY_DEFAULTS } from "../profiles/profile-schema.js";
|
|
36
36
|
import { runProfileValidate } from "./profile-validate.js";
|
|
37
37
|
import { parseKnowledgeFile } from "../knowledge/index.js";
|
|
38
|
+
import { planKnowledgeSync } from "../knowledge/index.js";
|
|
38
39
|
import { computeLayerBudgets, resolveKnowledgeBudgets, DEFAULT_KNOWLEDGE_BUDGETS } from "../knowledge/budgets.js";
|
|
39
40
|
import { detectDuplicatePrinciples } from "../knowledge/index.js";
|
|
40
|
-
import { checkMemoryLayerHealth } from "./memory-scaffold.js";
|
|
41
|
+
import { checkMemoryLayerHealth, resolveMemoryBudget } from "./memory-scaffold.js";
|
|
42
|
+
import { compactMemoryMd } from "./memory-compact.js";
|
|
41
43
|
import { checkInvariants } from "./invariant-engine.js";
|
|
42
44
|
import { checkNpmToken, workshopNeedsWarpgogolToken } from "./npm-token-check.js";
|
|
43
45
|
import { execSync } from "node:child_process";
|
|
@@ -185,9 +187,10 @@ async function checkStaleKnowledgeFiles(workspaceRoot, forgeRoot) {
|
|
|
185
187
|
const srcExists = await pathExists(srcPath);
|
|
186
188
|
const destExists = await pathExists(destPath);
|
|
187
189
|
if (srcExists && destExists) {
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
190
|
+
// Append-only contract: local copies legitimately accumulate entries.
|
|
191
|
+
// Stale = source has entries the local copy lacks (sync would merge).
|
|
192
|
+
const plan = planKnowledgeSync(srcPath, destPath);
|
|
193
|
+
if (plan.action === "merged") {
|
|
191
194
|
stale.push(`${skill.name}/${kf}`);
|
|
192
195
|
}
|
|
193
196
|
}
|
|
@@ -213,9 +216,8 @@ async function checkStaleKnowledgeFiles(workspaceRoot, forgeRoot) {
|
|
|
213
216
|
const srcExists = await pathExists(srcPath);
|
|
214
217
|
const destExists = await pathExists(destPath);
|
|
215
218
|
if (srcExists && destExists) {
|
|
216
|
-
const
|
|
217
|
-
|
|
218
|
-
if (srcContent !== destContent) {
|
|
219
|
+
const plan = planKnowledgeSync(srcPath, destPath);
|
|
220
|
+
if (plan.action === "merged") {
|
|
219
221
|
stale.push(`${skill.name}/${kf}`);
|
|
220
222
|
}
|
|
221
223
|
}
|
|
@@ -707,7 +709,7 @@ async function checkNestedAgentsMd(workspaceRoot, workspaceTypes) {
|
|
|
707
709
|
message: "forge.yaml not loadable — nested AGENTS.md check skipped",
|
|
708
710
|
};
|
|
709
711
|
}
|
|
710
|
-
const workspaces = discoverWorkspaces(workspaceRoot, workspaceTypes);
|
|
712
|
+
const workspaces = discoverWorkspaces(workspaceRoot, workspaceTypes, config.bindings?.workspaces?.skipDirs);
|
|
711
713
|
if (workspaces.length === 0) {
|
|
712
714
|
return {
|
|
713
715
|
name: "nested-AGENTS.md",
|
|
@@ -1045,8 +1047,9 @@ function checkPrerequisites(prerequisites) {
|
|
|
1045
1047
|
};
|
|
1046
1048
|
}
|
|
1047
1049
|
export async function runDoctor(input, context) {
|
|
1048
|
-
const { workspaceRoot, logger, outputFormat } = context;
|
|
1050
|
+
const { workspaceRoot, logger, outputFormat, dryRun } = context;
|
|
1049
1051
|
const strict = input.flags["strict"] === true;
|
|
1052
|
+
const fix = input.flags["fix"] === true;
|
|
1050
1053
|
const checks = [];
|
|
1051
1054
|
// Check forge.yaml
|
|
1052
1055
|
const forgeYamlExists = await pathExists(join(workspaceRoot, "forge.yaml"));
|
|
@@ -1220,6 +1223,8 @@ export async function runDoctor(input, context) {
|
|
|
1220
1223
|
checks.push(sharedKnowledgeCheck);
|
|
1221
1224
|
// RFC-0664: Check memory layer health (budget, gitignore coverage, leak risk)
|
|
1222
1225
|
checks.push(checkMemoryLayer(workspaceRoot));
|
|
1226
|
+
// RFC-1151: Check dist freshness — stale dist/ silently shadows src/ in source checkouts
|
|
1227
|
+
checks.push(checkDistFreshness(forgeRoot));
|
|
1223
1228
|
// RFC-0539: Check pack skills — stale/missing copies and config validation
|
|
1224
1229
|
const packCheck = await checkPackSkills(workspaceRoot);
|
|
1225
1230
|
checks.push(packCheck);
|
|
@@ -1234,8 +1239,8 @@ export async function runDoctor(input, context) {
|
|
|
1234
1239
|
// RFC-0640 fix: previously gated by isSoftwareDomain, which skipped the check
|
|
1235
1240
|
// entirely for non-software domains. Now runs for all domains — profile-driven
|
|
1236
1241
|
// wsTypes replace hardcoded detection when present.
|
|
1242
|
+
let wsTypes;
|
|
1237
1243
|
{
|
|
1238
|
-
let wsTypes;
|
|
1239
1244
|
try {
|
|
1240
1245
|
const config = loadForgeConfig(workspaceRoot);
|
|
1241
1246
|
// RFC-0643: prefer config.profile (loaded by loadForgeConfig)
|
|
@@ -1268,6 +1273,15 @@ export async function runDoctor(input, context) {
|
|
|
1268
1273
|
: checks;
|
|
1269
1274
|
const allPass = finalChecks.every((c) => c.status === "pass");
|
|
1270
1275
|
const hasFails = finalChecks.some((c) => c.status === "fail");
|
|
1276
|
+
// RFC-1151: --fix applies registered safe remediations for warn/fail checks
|
|
1277
|
+
const fixes = [];
|
|
1278
|
+
if (fix) {
|
|
1279
|
+
for (const check of finalChecks) {
|
|
1280
|
+
if (check.status === "pass")
|
|
1281
|
+
continue;
|
|
1282
|
+
fixes.push(await applyDoctorRemediation(check, workspaceRoot, wsTypes, dryRun === true));
|
|
1283
|
+
}
|
|
1284
|
+
}
|
|
1271
1285
|
if (outputFormat === "pretty") {
|
|
1272
1286
|
logger.section(`Forge Doctor — ${workspaceRoot}`);
|
|
1273
1287
|
for (const check of finalChecks) {
|
|
@@ -1275,6 +1289,10 @@ export async function runDoctor(input, context) {
|
|
|
1275
1289
|
const fn = check.status === "pass" ? logger.success : check.status === "warn" ? logger.warn : logger.error;
|
|
1276
1290
|
fn(`${icon} ${check.name}: ${check.message}`);
|
|
1277
1291
|
}
|
|
1292
|
+
for (const f of fixes) {
|
|
1293
|
+
const fn = f.action === "fixed" ? logger.success : f.action === "failed" ? logger.error : logger.info;
|
|
1294
|
+
fn(` fix ${f.check}: ${f.action} — ${f.detail}`);
|
|
1295
|
+
}
|
|
1278
1296
|
if (allPass) {
|
|
1279
1297
|
logger.success("All checks passed — forge is properly configured.");
|
|
1280
1298
|
}
|
|
@@ -1285,12 +1303,104 @@ export async function runDoctor(input, context) {
|
|
|
1285
1303
|
logger.warn("Some checks warn — review above.");
|
|
1286
1304
|
}
|
|
1287
1305
|
}
|
|
1306
|
+
const fixFailed = fixes.some((f) => f.action === "failed");
|
|
1288
1307
|
return {
|
|
1289
|
-
data: { command: "forge.doctor", checks: finalChecks, allPass, forbiddenImports, bindings: bindingsResult, domain: domainReport },
|
|
1290
|
-
exitCode: hasFails ? 1 : 0,
|
|
1308
|
+
data: { command: "forge.doctor", checks: finalChecks, allPass, forbiddenImports, bindings: bindingsResult, domain: domainReport, ...(fix ? { fixes } : {}) },
|
|
1309
|
+
exitCode: hasFails || fixFailed ? 1 : 0,
|
|
1291
1310
|
summary: allPass
|
|
1292
1311
|
? "forge.doctor: all checks passed"
|
|
1293
|
-
: `forge.doctor: ${finalChecks.filter((c) => c.status === "fail").length} fail(s), ${finalChecks.filter((c) => c.status === "warn").length} warn(s)`,
|
|
1312
|
+
: `forge.doctor: ${finalChecks.filter((c) => c.status === "fail").length} fail(s), ${finalChecks.filter((c) => c.status === "warn").length} warn(s)${fix ? `, ${fixes.filter((f) => f.action === "fixed").length} fixed` : ""}`,
|
|
1294
1313
|
};
|
|
1295
1314
|
}
|
|
1315
|
+
// RFC-1151: dist-freshness — a stale dist/ silently shadows src/ because
|
|
1316
|
+
// bin/cli.js prefers dist when present. Warn-only; rebuild is a pnpm script,
|
|
1317
|
+
// not forge's call. Pass (skip) when src/ or dist/ is absent — npm consumers
|
|
1318
|
+
// ship dist-only, so this activates only in source checkouts.
|
|
1319
|
+
function checkDistFreshness(forgeRoot) {
|
|
1320
|
+
const srcDir = join(forgeRoot, "src");
|
|
1321
|
+
const distDir = join(forgeRoot, "dist");
|
|
1322
|
+
if (!fs.existsSync(srcDir) || !fs.existsSync(distDir)) {
|
|
1323
|
+
return {
|
|
1324
|
+
name: "dist-freshness",
|
|
1325
|
+
status: "pass",
|
|
1326
|
+
message: "no src+dist pair — not a source checkout",
|
|
1327
|
+
};
|
|
1328
|
+
}
|
|
1329
|
+
const newestSrc = newestMtime(srcDir);
|
|
1330
|
+
const distMtime = fs.statSync(distDir).mtimeMs;
|
|
1331
|
+
if (newestSrc > distMtime) {
|
|
1332
|
+
return {
|
|
1333
|
+
name: "dist-freshness",
|
|
1334
|
+
status: "warn",
|
|
1335
|
+
message: `dist/ older than newest src/ file — run 'pnpm run build' in ${forgeRoot}`,
|
|
1336
|
+
};
|
|
1337
|
+
}
|
|
1338
|
+
return { name: "dist-freshness", status: "pass", message: "dist/ is fresh" };
|
|
1339
|
+
}
|
|
1340
|
+
function newestMtime(dir) {
|
|
1341
|
+
let newest = 0;
|
|
1342
|
+
for (const entry of fs.readdirSync(dir, { withFileTypes: true, recursive: true })) {
|
|
1343
|
+
if (!entry.isFile())
|
|
1344
|
+
continue;
|
|
1345
|
+
const m = fs.statSync(join(entry.parentPath, entry.name)).mtimeMs;
|
|
1346
|
+
if (m > newest)
|
|
1347
|
+
newest = m;
|
|
1348
|
+
}
|
|
1349
|
+
return newest;
|
|
1350
|
+
}
|
|
1351
|
+
// RFC-1151: remediation dispatch — check name → safe fix action.
|
|
1352
|
+
// Remediations reuse existing generators; hand-written files are never touched
|
|
1353
|
+
// (generated-marker edit guard inside generateNestedAgentsMd).
|
|
1354
|
+
async function applyDoctorRemediation(check, workspaceRoot, workspaceTypes, dryRun) {
|
|
1355
|
+
switch (check.name) {
|
|
1356
|
+
case "nested-AGENTS.md": {
|
|
1357
|
+
try {
|
|
1358
|
+
const config = loadForgeConfig(workspaceRoot);
|
|
1359
|
+
const res = await generateNestedAgentsMd(workspaceRoot, config, dryRun, workspaceTypes);
|
|
1360
|
+
return {
|
|
1361
|
+
check: check.name,
|
|
1362
|
+
action: res.generated.length > 0 ? "fixed" : "skipped",
|
|
1363
|
+
detail: `${res.generated.length} file(s) ${dryRun ? "would be " : ""}regenerated, ${res.skipped.length} skipped`,
|
|
1364
|
+
};
|
|
1365
|
+
}
|
|
1366
|
+
catch (err) {
|
|
1367
|
+
return { check: check.name, action: "failed", detail: err.message };
|
|
1368
|
+
}
|
|
1369
|
+
}
|
|
1370
|
+
case "memory-layer": {
|
|
1371
|
+
try {
|
|
1372
|
+
const memoryPath = join(workspaceRoot, ".agents", "memory", "MEMORY.md");
|
|
1373
|
+
if (!fs.existsSync(memoryPath)) {
|
|
1374
|
+
return { check: check.name, action: "skipped", detail: "MEMORY.md absent" };
|
|
1375
|
+
}
|
|
1376
|
+
const content = fs.readFileSync(memoryPath, "utf8");
|
|
1377
|
+
const budget = resolveMemoryBudget(workspaceRoot);
|
|
1378
|
+
const { lines, removedLines, fitsBudget } = compactMemoryMd(content, budget);
|
|
1379
|
+
if (!fitsBudget) {
|
|
1380
|
+
return {
|
|
1381
|
+
check: check.name,
|
|
1382
|
+
action: "failed",
|
|
1383
|
+
detail: "still over budget after Environment notes truncation — manual editorial compaction required",
|
|
1384
|
+
};
|
|
1385
|
+
}
|
|
1386
|
+
if (removedLines.length === 0) {
|
|
1387
|
+
return { check: check.name, action: "skipped", detail: "within budget" };
|
|
1388
|
+
}
|
|
1389
|
+
if (!dryRun) {
|
|
1390
|
+
fs.writeFileSync(memoryPath, lines.join("\n"), "utf8");
|
|
1391
|
+
}
|
|
1392
|
+
return {
|
|
1393
|
+
check: check.name,
|
|
1394
|
+
action: "fixed",
|
|
1395
|
+
detail: `${dryRun ? "would remove" : "removed"} ${removedLines.length} bullet(s)`,
|
|
1396
|
+
};
|
|
1397
|
+
}
|
|
1398
|
+
catch (err) {
|
|
1399
|
+
return { check: check.name, action: "failed", detail: err.message };
|
|
1400
|
+
}
|
|
1401
|
+
}
|
|
1402
|
+
default:
|
|
1403
|
+
return { check: check.name, action: "skipped", detail: "no-remediation" };
|
|
1404
|
+
}
|
|
1405
|
+
}
|
|
1296
1406
|
//# sourceMappingURL=doctor.js.map
|