@autonav/core 1.3.4 → 1.5.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/adapter/claude-adapter.d.ts.map +1 -1
- package/dist/adapter/claude-adapter.js +6 -20
- package/dist/adapter/claude-adapter.js.map +1 -1
- package/dist/cli/autonav.js +6 -0
- package/dist/cli/autonav.js.map +1 -1
- package/dist/cli/nav-chat.js +1 -1
- package/dist/cli/nav-chat.js.map +1 -1
- package/dist/cli/nav-init.js +222 -47
- package/dist/cli/nav-init.js.map +1 -1
- package/dist/cli/nav-install.js +4 -12
- package/dist/cli/nav-install.js.map +1 -1
- package/dist/cli/nav-mend.d.ts +3 -0
- package/dist/cli/nav-mend.d.ts.map +1 -0
- package/dist/cli/nav-mend.js +157 -0
- package/dist/cli/nav-mend.js.map +1 -0
- package/dist/cli/nav-query.js +42 -15
- package/dist/cli/nav-query.js.map +1 -1
- package/dist/cli/nav-uninstall.js +4 -4
- package/dist/cli/nav-uninstall.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/interview/ui/test-indicator.js +0 -0
- package/dist/mend/index.d.ts +47 -0
- package/dist/mend/index.d.ts.map +1 -0
- package/dist/mend/index.js +457 -0
- package/dist/mend/index.js.map +1 -0
- package/dist/mend/llm-review.d.ts +18 -0
- package/dist/mend/llm-review.d.ts.map +1 -0
- package/dist/mend/llm-review.js +81 -0
- package/dist/mend/llm-review.js.map +1 -0
- package/dist/migrations/index.d.ts.map +1 -1
- package/dist/migrations/index.js +10 -0
- package/dist/migrations/index.js.map +1 -1
- package/dist/migrations/versions/v1.3.1-submit-answer.d.ts.map +1 -1
- package/dist/migrations/versions/v1.3.1-submit-answer.js +27 -23
- package/dist/migrations/versions/v1.3.1-submit-answer.js.map +1 -1
- package/dist/migrations/versions/v1.3.5-navigator-authority.d.ts +15 -0
- package/dist/migrations/versions/v1.3.5-navigator-authority.d.ts.map +1 -0
- package/dist/migrations/versions/v1.3.5-navigator-authority.js +153 -0
- package/dist/migrations/versions/v1.3.5-navigator-authority.js.map +1 -0
- package/dist/migrations/versions/v1.4.0-agent-identity.d.ts +15 -0
- package/dist/migrations/versions/v1.4.0-agent-identity.d.ts.map +1 -0
- package/dist/migrations/versions/v1.4.0-agent-identity.js +410 -0
- package/dist/migrations/versions/v1.4.0-agent-identity.js.map +1 -0
- package/dist/migrations/versions/v1.4.1-update-skill.d.ts +16 -0
- package/dist/migrations/versions/v1.4.1-update-skill.d.ts.map +1 -0
- package/dist/migrations/versions/v1.4.1-update-skill.js +146 -0
- package/dist/migrations/versions/v1.4.1-update-skill.js.map +1 -0
- package/dist/migrations/versions/v1.5.0-rfc2119-skills.d.ts +18 -0
- package/dist/migrations/versions/v1.5.0-rfc2119-skills.d.ts.map +1 -0
- package/dist/migrations/versions/v1.5.0-rfc2119-skills.js +207 -0
- package/dist/migrations/versions/v1.5.0-rfc2119-skills.js.map +1 -0
- package/dist/migrations/versions/v1.5.1-mend-instruction.d.ts +13 -0
- package/dist/migrations/versions/v1.5.1-mend-instruction.d.ts.map +1 -0
- package/dist/migrations/versions/v1.5.1-mend-instruction.js +156 -0
- package/dist/migrations/versions/v1.5.1-mend-instruction.js.map +1 -0
- package/dist/query-engine/navigator-loader.js +1 -1
- package/dist/query-engine/navigator-loader.js.map +1 -1
- package/dist/query-engine/output-formatter.d.ts +1 -1
- package/dist/query-engine/output-formatter.d.ts.map +1 -1
- package/dist/query-engine/output-formatter.js +2 -0
- package/dist/query-engine/output-formatter.js.map +1 -1
- package/dist/query-engine/response-validator.d.ts.map +1 -1
- package/dist/query-engine/response-validator.js +6 -7
- package/dist/query-engine/response-validator.js.map +1 -1
- package/dist/skill-generator/index.d.ts +13 -8
- package/dist/skill-generator/index.d.ts.map +1 -1
- package/dist/skill-generator/index.js +74 -30
- package/dist/skill-generator/index.js.map +1 -1
- package/dist/templates/CLAUDE-pack.md.template +71 -0
- package/dist/templates/CLAUDE.md.template +71 -0
- package/package.json +1 -1
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Navigator Health Check and Repair (Mend)
|
|
3
|
+
*
|
|
4
|
+
* Validates navigator configuration and health, auto-fixes issues when possible.
|
|
5
|
+
*/
|
|
6
|
+
export interface MendCheckResult {
|
|
7
|
+
check: string;
|
|
8
|
+
status: "pass" | "fail" | "warning";
|
|
9
|
+
message: string;
|
|
10
|
+
details?: string;
|
|
11
|
+
autoFixable: boolean;
|
|
12
|
+
}
|
|
13
|
+
export interface MendResult {
|
|
14
|
+
healthy: boolean;
|
|
15
|
+
checks: MendCheckResult[];
|
|
16
|
+
fixes: Array<{
|
|
17
|
+
check: string;
|
|
18
|
+
action: string;
|
|
19
|
+
success: boolean;
|
|
20
|
+
}>;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Run all health checks on a navigator
|
|
24
|
+
*/
|
|
25
|
+
export declare function checkNavigatorHealth(navPath: string): Promise<MendResult>;
|
|
26
|
+
/**
|
|
27
|
+
* Auto-fix issues that can be fixed automatically
|
|
28
|
+
*/
|
|
29
|
+
export declare function autoFixNavigator(navPath: string, checks: MendCheckResult[]): Promise<Array<{
|
|
30
|
+
check: string;
|
|
31
|
+
action: string;
|
|
32
|
+
success: boolean;
|
|
33
|
+
}>>;
|
|
34
|
+
/**
|
|
35
|
+
* Run LLM-powered quality review on CLAUDE.md
|
|
36
|
+
* Uses Claude Opus to check for contradictions, best practices, hallucination risks, etc.
|
|
37
|
+
*/
|
|
38
|
+
export declare function reviewNavigatorQuality(navPath: string): Promise<MendCheckResult[]>;
|
|
39
|
+
/**
|
|
40
|
+
* Run full mend operation: check health and auto-fix issues
|
|
41
|
+
*/
|
|
42
|
+
export declare function mendNavigator(navPath: string, options?: {
|
|
43
|
+
autoFix?: boolean;
|
|
44
|
+
quiet?: boolean;
|
|
45
|
+
review?: boolean;
|
|
46
|
+
}): Promise<MendResult>;
|
|
47
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mend/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAiBH,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,KAAK,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CACnE;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CA6Q/E;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,eAAe,EAAE,GACxB,OAAO,CAAC,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CAAC,CAwGrE;AAED;;;GAGG;AACH,wBAAsB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CA4CxF;AAED;;GAEG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,MAAM,EACf,OAAO,GAAE;IACP,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;CACb,GACL,OAAO,CAAC,UAAU,CAAC,CA6BrB"}
|
|
@@ -0,0 +1,457 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Navigator Health Check and Repair (Mend)
|
|
3
|
+
*
|
|
4
|
+
* Validates navigator configuration and health, auto-fixes issues when possible.
|
|
5
|
+
*/
|
|
6
|
+
import * as fs from "node:fs";
|
|
7
|
+
import * as path from "node:path";
|
|
8
|
+
import { NavigatorConfigSchema, getSkillName, getUpdateSkillName, localSkillExists, skillExists, isSkillSymlink, createAndSymlinkSkill, createAndSymlinkUpdateSkill, } from "@autonav/communication-layer";
|
|
9
|
+
import { reviewClaudeMd } from "./llm-review.js";
|
|
10
|
+
/**
|
|
11
|
+
* Run all health checks on a navigator
|
|
12
|
+
*/
|
|
13
|
+
export async function checkNavigatorHealth(navPath) {
|
|
14
|
+
const checks = [];
|
|
15
|
+
const fixes = [];
|
|
16
|
+
// 1. Check navigator directory exists
|
|
17
|
+
if (!fs.existsSync(navPath)) {
|
|
18
|
+
checks.push({
|
|
19
|
+
check: "Navigator directory",
|
|
20
|
+
status: "fail",
|
|
21
|
+
message: "Navigator directory does not exist",
|
|
22
|
+
details: `Path: ${navPath}`,
|
|
23
|
+
autoFixable: false,
|
|
24
|
+
});
|
|
25
|
+
return { healthy: false, checks, fixes };
|
|
26
|
+
}
|
|
27
|
+
// 2. Check config.json exists and is valid
|
|
28
|
+
const configPath = path.join(navPath, "config.json");
|
|
29
|
+
let config = null;
|
|
30
|
+
if (!fs.existsSync(configPath)) {
|
|
31
|
+
checks.push({
|
|
32
|
+
check: "config.json",
|
|
33
|
+
status: "fail",
|
|
34
|
+
message: "config.json not found",
|
|
35
|
+
autoFixable: false,
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
try {
|
|
40
|
+
const configContent = fs.readFileSync(configPath, "utf-8");
|
|
41
|
+
config = JSON.parse(configContent);
|
|
42
|
+
// Validate against schema
|
|
43
|
+
const parseResult = NavigatorConfigSchema.safeParse(config);
|
|
44
|
+
if (!parseResult.success) {
|
|
45
|
+
checks.push({
|
|
46
|
+
check: "config.json schema",
|
|
47
|
+
status: "fail",
|
|
48
|
+
message: "config.json schema validation failed",
|
|
49
|
+
details: parseResult.error.errors.map(e => `${e.path.join('.')}: ${e.message}`).join("; "),
|
|
50
|
+
autoFixable: false,
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
checks.push({
|
|
55
|
+
check: "config.json",
|
|
56
|
+
status: "pass",
|
|
57
|
+
message: "Valid configuration",
|
|
58
|
+
autoFixable: false,
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
catch (error) {
|
|
63
|
+
checks.push({
|
|
64
|
+
check: "config.json",
|
|
65
|
+
status: "fail",
|
|
66
|
+
message: "Failed to parse config.json",
|
|
67
|
+
details: error instanceof Error ? error.message : String(error),
|
|
68
|
+
autoFixable: false,
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
if (!config) {
|
|
73
|
+
return { healthy: false, checks, fixes };
|
|
74
|
+
}
|
|
75
|
+
// 3. Check CLAUDE.md exists
|
|
76
|
+
const claudeMdPath = path.join(navPath, "CLAUDE.md");
|
|
77
|
+
let claudeMdContent = null;
|
|
78
|
+
if (!fs.existsSync(claudeMdPath)) {
|
|
79
|
+
checks.push({
|
|
80
|
+
check: "CLAUDE.md",
|
|
81
|
+
status: "fail",
|
|
82
|
+
message: "CLAUDE.md not found",
|
|
83
|
+
autoFixable: false,
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
// Check for required sections
|
|
88
|
+
claudeMdContent = fs.readFileSync(claudeMdPath, "utf-8");
|
|
89
|
+
const requiredSections = ["## Grounding Rules"];
|
|
90
|
+
const missingSections = requiredSections.filter(section => !claudeMdContent.includes(section));
|
|
91
|
+
if (missingSections.length > 0) {
|
|
92
|
+
checks.push({
|
|
93
|
+
check: "CLAUDE.md sections",
|
|
94
|
+
status: "warning",
|
|
95
|
+
message: "Missing recommended sections",
|
|
96
|
+
details: `Missing: ${missingSections.join(", ")}`,
|
|
97
|
+
autoFixable: false,
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
else {
|
|
101
|
+
checks.push({
|
|
102
|
+
check: "CLAUDE.md",
|
|
103
|
+
status: "pass",
|
|
104
|
+
message: "CLAUDE.md exists with required sections",
|
|
105
|
+
autoFixable: false,
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
// 3a. Check CLAUDE.md doesn't have submit_answer instructions
|
|
109
|
+
// (submit_answer is injected at query-time by createAnswerQuestionPrompt)
|
|
110
|
+
if (claudeMdContent.includes("submit_answer")) {
|
|
111
|
+
checks.push({
|
|
112
|
+
check: "submit_answer in CLAUDE.md",
|
|
113
|
+
status: "warning",
|
|
114
|
+
message: "CLAUDE.md contains submit_answer instructions",
|
|
115
|
+
details: "submit_answer is injected at query-time and should not be in CLAUDE.md. Run 'autonav migrate' to fix, or manually remove the references.",
|
|
116
|
+
autoFixable: false, // Migration v1.3.1 handles this
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
checks.push({
|
|
121
|
+
check: "submit_answer in CLAUDE.md",
|
|
122
|
+
status: "pass",
|
|
123
|
+
message: "CLAUDE.md correctly omits submit_answer (injected at query-time)",
|
|
124
|
+
autoFixable: false,
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
// 3b. Check CLAUDE.md has autonav mend instruction
|
|
128
|
+
if (!claudeMdContent.includes("autonav mend")) {
|
|
129
|
+
checks.push({
|
|
130
|
+
check: "autonav mend instruction",
|
|
131
|
+
status: "warning",
|
|
132
|
+
message: "CLAUDE.md missing 'autonav mend' instruction",
|
|
133
|
+
details: "Navigators should remind users to run mend after config changes. Consider regenerating CLAUDE.md or adding the instruction manually.",
|
|
134
|
+
autoFixable: false,
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
else {
|
|
138
|
+
checks.push({
|
|
139
|
+
check: "autonav mend instruction",
|
|
140
|
+
status: "pass",
|
|
141
|
+
message: "CLAUDE.md includes mend instruction",
|
|
142
|
+
autoFixable: false,
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
// 4. Check knowledge base directory exists
|
|
147
|
+
const knowledgePath = config.knowledgeBasePath
|
|
148
|
+
? path.join(navPath, config.knowledgeBasePath)
|
|
149
|
+
: path.join(navPath, "knowledge");
|
|
150
|
+
if (!fs.existsSync(knowledgePath)) {
|
|
151
|
+
checks.push({
|
|
152
|
+
check: "Knowledge base",
|
|
153
|
+
status: "fail",
|
|
154
|
+
message: "Knowledge base directory not found",
|
|
155
|
+
details: `Expected at: ${knowledgePath}`,
|
|
156
|
+
autoFixable: true,
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
else {
|
|
160
|
+
// Check if it has any content
|
|
161
|
+
const files = fs.readdirSync(knowledgePath);
|
|
162
|
+
if (files.length === 0) {
|
|
163
|
+
checks.push({
|
|
164
|
+
check: "Knowledge base",
|
|
165
|
+
status: "warning",
|
|
166
|
+
message: "Knowledge base is empty",
|
|
167
|
+
autoFixable: false,
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
else {
|
|
171
|
+
checks.push({
|
|
172
|
+
check: "Knowledge base",
|
|
173
|
+
status: "pass",
|
|
174
|
+
message: `Knowledge base has ${files.length} file(s)`,
|
|
175
|
+
autoFixable: false,
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
// 5. Check ask-<nav> skill exists
|
|
180
|
+
const askSkillName = getSkillName(config.name);
|
|
181
|
+
const askSkillLocalExists = localSkillExists(navPath, askSkillName);
|
|
182
|
+
const askSkillGlobalExists = skillExists(askSkillName);
|
|
183
|
+
const askSkillIsSymlink = askSkillGlobalExists && isSkillSymlink(askSkillName);
|
|
184
|
+
if (!askSkillLocalExists) {
|
|
185
|
+
checks.push({
|
|
186
|
+
check: `ask-${config.name} skill (local)`,
|
|
187
|
+
status: "fail",
|
|
188
|
+
message: "Local skill not found",
|
|
189
|
+
details: `Expected in ${navPath}/.autonav/skills/${askSkillName}`,
|
|
190
|
+
autoFixable: true,
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
else if (!askSkillGlobalExists) {
|
|
194
|
+
checks.push({
|
|
195
|
+
check: `ask-${config.name} skill (global)`,
|
|
196
|
+
status: "fail",
|
|
197
|
+
message: "Global skill not found (symlink missing)",
|
|
198
|
+
autoFixable: true,
|
|
199
|
+
});
|
|
200
|
+
}
|
|
201
|
+
else if (!askSkillIsSymlink) {
|
|
202
|
+
checks.push({
|
|
203
|
+
check: `ask-${config.name} skill (symlink)`,
|
|
204
|
+
status: "warning",
|
|
205
|
+
message: "Global skill exists but is not a symlink",
|
|
206
|
+
details: "Should be a symlink to local skill for version control",
|
|
207
|
+
autoFixable: false,
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
else {
|
|
211
|
+
checks.push({
|
|
212
|
+
check: `ask-${config.name} skill`,
|
|
213
|
+
status: "pass",
|
|
214
|
+
message: "Skill exists and is properly symlinked",
|
|
215
|
+
autoFixable: false,
|
|
216
|
+
});
|
|
217
|
+
}
|
|
218
|
+
// 6. Check update-<nav> skill exists
|
|
219
|
+
const updateSkillName = getUpdateSkillName(config.name);
|
|
220
|
+
const updateSkillLocalExists = localSkillExists(navPath, updateSkillName);
|
|
221
|
+
const updateSkillGlobalExists = skillExists(updateSkillName);
|
|
222
|
+
const updateSkillIsSymlink = updateSkillGlobalExists && isSkillSymlink(updateSkillName);
|
|
223
|
+
if (!updateSkillLocalExists) {
|
|
224
|
+
checks.push({
|
|
225
|
+
check: `update-${config.name} skill (local)`,
|
|
226
|
+
status: "fail",
|
|
227
|
+
message: "Local skill not found",
|
|
228
|
+
details: `Expected in ${navPath}/.autonav/skills/${updateSkillName}`,
|
|
229
|
+
autoFixable: true,
|
|
230
|
+
});
|
|
231
|
+
}
|
|
232
|
+
else if (!updateSkillGlobalExists) {
|
|
233
|
+
checks.push({
|
|
234
|
+
check: `update-${config.name} skill (global)`,
|
|
235
|
+
status: "fail",
|
|
236
|
+
message: "Global skill not found (symlink missing)",
|
|
237
|
+
autoFixable: true,
|
|
238
|
+
});
|
|
239
|
+
}
|
|
240
|
+
else if (!updateSkillIsSymlink) {
|
|
241
|
+
checks.push({
|
|
242
|
+
check: `update-${config.name} skill (symlink)`,
|
|
243
|
+
status: "warning",
|
|
244
|
+
message: "Global skill exists but is not a symlink",
|
|
245
|
+
details: "Should be a symlink to local skill for version control",
|
|
246
|
+
autoFixable: false,
|
|
247
|
+
});
|
|
248
|
+
}
|
|
249
|
+
else {
|
|
250
|
+
checks.push({
|
|
251
|
+
check: `update-${config.name} skill`,
|
|
252
|
+
status: "pass",
|
|
253
|
+
message: "Skill exists and is properly symlinked",
|
|
254
|
+
autoFixable: false,
|
|
255
|
+
});
|
|
256
|
+
}
|
|
257
|
+
// 7. Check .autonav directory exists
|
|
258
|
+
const autonavDir = path.join(navPath, ".autonav");
|
|
259
|
+
if (!fs.existsSync(autonavDir)) {
|
|
260
|
+
checks.push({
|
|
261
|
+
check: ".autonav directory",
|
|
262
|
+
status: "fail",
|
|
263
|
+
message: ".autonav directory not found",
|
|
264
|
+
autoFixable: true,
|
|
265
|
+
});
|
|
266
|
+
}
|
|
267
|
+
else {
|
|
268
|
+
checks.push({
|
|
269
|
+
check: ".autonav directory",
|
|
270
|
+
status: "pass",
|
|
271
|
+
message: ".autonav directory exists",
|
|
272
|
+
autoFixable: false,
|
|
273
|
+
});
|
|
274
|
+
}
|
|
275
|
+
// Determine overall health
|
|
276
|
+
const hasFailures = checks.some(c => c.status === "fail");
|
|
277
|
+
const healthy = !hasFailures;
|
|
278
|
+
return { healthy, checks, fixes };
|
|
279
|
+
}
|
|
280
|
+
/**
|
|
281
|
+
* Auto-fix issues that can be fixed automatically
|
|
282
|
+
*/
|
|
283
|
+
export async function autoFixNavigator(navPath, checks) {
|
|
284
|
+
const fixes = [];
|
|
285
|
+
// Load config for fixes that need it
|
|
286
|
+
const configPath = path.join(navPath, "config.json");
|
|
287
|
+
let config = null;
|
|
288
|
+
try {
|
|
289
|
+
const configContent = fs.readFileSync(configPath, "utf-8");
|
|
290
|
+
config = JSON.parse(configContent);
|
|
291
|
+
}
|
|
292
|
+
catch {
|
|
293
|
+
return fixes;
|
|
294
|
+
}
|
|
295
|
+
// Fix 1: Create missing .autonav directory
|
|
296
|
+
const autonavDirCheck = checks.find(c => c.check === ".autonav directory" && c.status === "fail");
|
|
297
|
+
if (autonavDirCheck && autonavDirCheck.autoFixable) {
|
|
298
|
+
try {
|
|
299
|
+
const autonavDir = path.join(navPath, ".autonav");
|
|
300
|
+
fs.mkdirSync(autonavDir, { recursive: true });
|
|
301
|
+
fixes.push({
|
|
302
|
+
check: ".autonav directory",
|
|
303
|
+
action: "Created .autonav directory",
|
|
304
|
+
success: true,
|
|
305
|
+
});
|
|
306
|
+
}
|
|
307
|
+
catch (error) {
|
|
308
|
+
fixes.push({
|
|
309
|
+
check: ".autonav directory",
|
|
310
|
+
action: "Failed to create .autonav directory",
|
|
311
|
+
success: false,
|
|
312
|
+
});
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
// Fix 2: Create missing knowledge base directory
|
|
316
|
+
const knowledgeCheck = checks.find(c => c.check === "Knowledge base" && c.status === "fail");
|
|
317
|
+
if (knowledgeCheck && knowledgeCheck.autoFixable) {
|
|
318
|
+
try {
|
|
319
|
+
const knowledgePath = config.knowledgeBasePath
|
|
320
|
+
? path.join(navPath, config.knowledgeBasePath)
|
|
321
|
+
: path.join(navPath, "knowledge");
|
|
322
|
+
fs.mkdirSync(knowledgePath, { recursive: true });
|
|
323
|
+
fixes.push({
|
|
324
|
+
check: "Knowledge base",
|
|
325
|
+
action: "Created knowledge base directory",
|
|
326
|
+
success: true,
|
|
327
|
+
});
|
|
328
|
+
}
|
|
329
|
+
catch (error) {
|
|
330
|
+
fixes.push({
|
|
331
|
+
check: "Knowledge base",
|
|
332
|
+
action: "Failed to create knowledge base directory",
|
|
333
|
+
success: false,
|
|
334
|
+
});
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
// Fix 3: Create missing skills
|
|
338
|
+
// Skills should be created from navigator's config for proper templating
|
|
339
|
+
const skillConfig = {
|
|
340
|
+
navigatorName: config.name,
|
|
341
|
+
navigatorPath: navPath,
|
|
342
|
+
description: config.description || "Knowledge navigator",
|
|
343
|
+
scope: config.scope,
|
|
344
|
+
audience: config.audience,
|
|
345
|
+
};
|
|
346
|
+
const askSkillCheck = checks.find(c => c.check.startsWith(`ask-${config.name}`) && c.status === "fail");
|
|
347
|
+
if (askSkillCheck && askSkillCheck.autoFixable) {
|
|
348
|
+
try {
|
|
349
|
+
await createAndSymlinkSkill(navPath, skillConfig, { force: true, quiet: true });
|
|
350
|
+
fixes.push({
|
|
351
|
+
check: `ask-${config.name} skill`,
|
|
352
|
+
action: "Created and symlinked ask skill",
|
|
353
|
+
success: true,
|
|
354
|
+
});
|
|
355
|
+
}
|
|
356
|
+
catch (error) {
|
|
357
|
+
fixes.push({
|
|
358
|
+
check: `ask-${config.name} skill`,
|
|
359
|
+
action: "Failed to create ask skill",
|
|
360
|
+
success: false,
|
|
361
|
+
});
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
// Fix 4: Create missing update skill
|
|
365
|
+
const updateSkillCheck = checks.find(c => c.check.startsWith(`update-${config.name}`) && c.status === "fail");
|
|
366
|
+
if (updateSkillCheck && updateSkillCheck.autoFixable) {
|
|
367
|
+
try {
|
|
368
|
+
await createAndSymlinkUpdateSkill(navPath, skillConfig, { force: true, quiet: true });
|
|
369
|
+
fixes.push({
|
|
370
|
+
check: `update-${config.name} skill`,
|
|
371
|
+
action: "Created and symlinked update skill",
|
|
372
|
+
success: true,
|
|
373
|
+
});
|
|
374
|
+
}
|
|
375
|
+
catch (error) {
|
|
376
|
+
fixes.push({
|
|
377
|
+
check: `update-${config.name} skill`,
|
|
378
|
+
action: "Failed to create update skill",
|
|
379
|
+
success: false,
|
|
380
|
+
});
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
return fixes;
|
|
384
|
+
}
|
|
385
|
+
/**
|
|
386
|
+
* Run LLM-powered quality review on CLAUDE.md
|
|
387
|
+
* Uses Claude Opus to check for contradictions, best practices, hallucination risks, etc.
|
|
388
|
+
*/
|
|
389
|
+
export async function reviewNavigatorQuality(navPath) {
|
|
390
|
+
const checks = [];
|
|
391
|
+
const claudeMdPath = path.join(navPath, "CLAUDE.md");
|
|
392
|
+
if (!fs.existsSync(claudeMdPath)) {
|
|
393
|
+
return checks; // Skip review if no CLAUDE.md
|
|
394
|
+
}
|
|
395
|
+
const content = fs.readFileSync(claudeMdPath, "utf-8");
|
|
396
|
+
const review = await reviewClaudeMd(content);
|
|
397
|
+
if (review.passed && review.issues.length === 0) {
|
|
398
|
+
checks.push({
|
|
399
|
+
check: "CLAUDE.md quality review",
|
|
400
|
+
status: "pass",
|
|
401
|
+
message: review.summary,
|
|
402
|
+
autoFixable: false,
|
|
403
|
+
});
|
|
404
|
+
}
|
|
405
|
+
else {
|
|
406
|
+
// Add a check for each issue
|
|
407
|
+
for (const issue of review.issues) {
|
|
408
|
+
checks.push({
|
|
409
|
+
check: `CLAUDE.md: ${issue.category}`,
|
|
410
|
+
status: issue.severity === "error" ? "fail" : "warning",
|
|
411
|
+
message: issue.description,
|
|
412
|
+
details: issue.suggestion
|
|
413
|
+
? `${issue.location ? `Location: ${issue.location}. ` : ""}Suggestion: ${issue.suggestion}`
|
|
414
|
+
: issue.location,
|
|
415
|
+
autoFixable: false,
|
|
416
|
+
});
|
|
417
|
+
}
|
|
418
|
+
// Add summary as info
|
|
419
|
+
if (review.summary) {
|
|
420
|
+
checks.push({
|
|
421
|
+
check: "CLAUDE.md quality summary",
|
|
422
|
+
status: review.passed ? "pass" : "warning",
|
|
423
|
+
message: review.summary,
|
|
424
|
+
autoFixable: false,
|
|
425
|
+
});
|
|
426
|
+
}
|
|
427
|
+
}
|
|
428
|
+
return checks;
|
|
429
|
+
}
|
|
430
|
+
/**
|
|
431
|
+
* Run full mend operation: check health and auto-fix issues
|
|
432
|
+
*/
|
|
433
|
+
export async function mendNavigator(navPath, options = {}) {
|
|
434
|
+
// Run health checks
|
|
435
|
+
const result = await checkNavigatorHealth(navPath);
|
|
436
|
+
// Auto-fix if requested and there are fixable issues
|
|
437
|
+
if (options.autoFix) {
|
|
438
|
+
const fixableChecks = result.checks.filter(c => c.status === "fail" && c.autoFixable);
|
|
439
|
+
if (fixableChecks.length > 0) {
|
|
440
|
+
const fixes = await autoFixNavigator(navPath, result.checks);
|
|
441
|
+
result.fixes = fixes;
|
|
442
|
+
// Re-run health checks to verify fixes
|
|
443
|
+
const recheckResult = await checkNavigatorHealth(navPath);
|
|
444
|
+
result.healthy = recheckResult.healthy;
|
|
445
|
+
result.checks = recheckResult.checks;
|
|
446
|
+
}
|
|
447
|
+
}
|
|
448
|
+
// Run LLM quality review if requested
|
|
449
|
+
if (options.review) {
|
|
450
|
+
const reviewChecks = await reviewNavigatorQuality(navPath);
|
|
451
|
+
result.checks.push(...reviewChecks);
|
|
452
|
+
// Re-evaluate overall health (review errors can affect health)
|
|
453
|
+
result.healthy = !result.checks.some(c => c.status === "fail");
|
|
454
|
+
}
|
|
455
|
+
return result;
|
|
456
|
+
}
|
|
457
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/mend/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LLM-powered quality review of CLAUDE.md files
|
|
3
|
+
* Uses Claude Opus to check for issues that static analysis can't catch
|
|
4
|
+
*/
|
|
5
|
+
export interface QualityIssue {
|
|
6
|
+
severity: "error" | "warning" | "suggestion";
|
|
7
|
+
category: string;
|
|
8
|
+
description: string;
|
|
9
|
+
location?: string;
|
|
10
|
+
suggestion?: string;
|
|
11
|
+
}
|
|
12
|
+
export interface QualityReviewResult {
|
|
13
|
+
passed: boolean;
|
|
14
|
+
issues: QualityIssue[];
|
|
15
|
+
summary: string;
|
|
16
|
+
}
|
|
17
|
+
export declare function reviewClaudeMd(claudeMdContent: string): Promise<QualityReviewResult>;
|
|
18
|
+
//# sourceMappingURL=llm-review.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"llm-review.d.ts","sourceRoot":"","sources":["../../src/mend/llm-review.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,OAAO,GAAG,SAAS,GAAG,YAAY,CAAC;IAC7C,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;CACjB;AAsCD,wBAAsB,cAAc,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,CA0C1F"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LLM-powered quality review of CLAUDE.md files
|
|
3
|
+
* Uses Claude Opus to check for issues that static analysis can't catch
|
|
4
|
+
*/
|
|
5
|
+
import Anthropic from "@anthropic-ai/sdk";
|
|
6
|
+
const REVIEW_PROMPT = `You are reviewing a CLAUDE.md file for a knowledge navigator. Analyze it for quality issues.
|
|
7
|
+
|
|
8
|
+
Check for:
|
|
9
|
+
1. **Contradictions**: Instructions that conflict with each other
|
|
10
|
+
2. **Prompt Engineering Best Practices** (per Anthropic guidelines):
|
|
11
|
+
- Clear role definition
|
|
12
|
+
- Specific, actionable instructions
|
|
13
|
+
- No vague or ambiguous language
|
|
14
|
+
- Proper use of formatting (headers, lists)
|
|
15
|
+
- Instructions are ordered by importance
|
|
16
|
+
3. **Completeness**: Missing essential sections (grounding rules, response format, etc.)
|
|
17
|
+
4. **Hallucination Risks**: Instructions that might encourage making things up
|
|
18
|
+
5. **Consistency**: Tone, terminology, and style are consistent throughout
|
|
19
|
+
|
|
20
|
+
CLAUDE.md content:
|
|
21
|
+
\`\`\`markdown
|
|
22
|
+
{content}
|
|
23
|
+
\`\`\`
|
|
24
|
+
|
|
25
|
+
Respond with a JSON object:
|
|
26
|
+
{
|
|
27
|
+
"passed": boolean,
|
|
28
|
+
"issues": [
|
|
29
|
+
{
|
|
30
|
+
"severity": "error" | "warning" | "suggestion",
|
|
31
|
+
"category": "contradiction" | "best-practice" | "completeness" | "hallucination-risk" | "consistency",
|
|
32
|
+
"description": "what's wrong",
|
|
33
|
+
"location": "section or context where issue occurs",
|
|
34
|
+
"suggestion": "how to fix it"
|
|
35
|
+
}
|
|
36
|
+
],
|
|
37
|
+
"summary": "1-2 sentence overall assessment"
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
Only include actual issues found. An empty issues array means the file passes review.`;
|
|
41
|
+
export async function reviewClaudeMd(claudeMdContent) {
|
|
42
|
+
const client = new Anthropic();
|
|
43
|
+
const response = await client.messages.create({
|
|
44
|
+
model: "claude-opus-4-20250514",
|
|
45
|
+
max_tokens: 2000,
|
|
46
|
+
messages: [{
|
|
47
|
+
role: "user",
|
|
48
|
+
content: REVIEW_PROMPT.replace("{content}", claudeMdContent)
|
|
49
|
+
}],
|
|
50
|
+
});
|
|
51
|
+
// Extract JSON from response
|
|
52
|
+
const firstBlock = response.content[0];
|
|
53
|
+
const text = firstBlock && firstBlock.type === "text" ? firstBlock.text : "";
|
|
54
|
+
const jsonMatch = text.match(/\{[\s\S]*\}/);
|
|
55
|
+
if (!jsonMatch) {
|
|
56
|
+
return {
|
|
57
|
+
passed: false,
|
|
58
|
+
issues: [{
|
|
59
|
+
severity: "error",
|
|
60
|
+
category: "review-failed",
|
|
61
|
+
description: "Failed to parse LLM review response",
|
|
62
|
+
}],
|
|
63
|
+
summary: "Review could not be completed",
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
try {
|
|
67
|
+
return JSON.parse(jsonMatch[0]);
|
|
68
|
+
}
|
|
69
|
+
catch {
|
|
70
|
+
return {
|
|
71
|
+
passed: false,
|
|
72
|
+
issues: [{
|
|
73
|
+
severity: "error",
|
|
74
|
+
category: "review-failed",
|
|
75
|
+
description: "Failed to parse LLM review response as JSON",
|
|
76
|
+
}],
|
|
77
|
+
summary: "Review could not be completed",
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=llm-review.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"llm-review.js","sourceRoot":"","sources":["../../src/mend/llm-review.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,SAAS,MAAM,mBAAmB,CAAC;AAgB1C,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sFAkCgE,CAAC;AAEvF,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,eAAuB;IAC1D,MAAM,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;IAE/B,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;QAC5C,KAAK,EAAE,wBAAwB;QAC/B,UAAU,EAAE,IAAI;QAChB,QAAQ,EAAE,CAAC;gBACT,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC,WAAW,EAAE,eAAe,CAAC;aAC7D,CAAC;KACH,CAAC,CAAC;IAEH,6BAA6B;IAC7B,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACvC,MAAM,IAAI,GAAG,UAAU,IAAI,UAAU,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7E,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IAE5C,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO;YACL,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,CAAC;oBACP,QAAQ,EAAE,OAAO;oBACjB,QAAQ,EAAE,eAAe;oBACzB,WAAW,EAAE,qCAAqC;iBACnD,CAAC;YACF,OAAO,EAAE,+BAA+B;SACzC,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAwB,CAAC;IACzD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO;YACL,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,CAAC;oBACP,QAAQ,EAAE,OAAO;oBACjB,QAAQ,EAAE,eAAe;oBACzB,WAAW,EAAE,6CAA6C;iBAC3D,CAAC;YACF,OAAO,EAAE,+BAA+B;SACzC,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/migrations/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/migrations/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAoB7E;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAalE;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;IAAE,SAAS,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,cAAc,CAAA;CAAE,CAAC,CAAC,CAWtH;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,GAC7D,OAAO,CAAC,eAAe,CAAC,CAE1B;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,GAC7D,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,SAAS,EAAE,SAAS,CAAC;QAAC,MAAM,EAAE,eAAe,CAAA;KAAE,CAAC,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CAiBlG;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,SAAS,EAAE,CAE9C;AAGD,YAAY,EAAE,SAAS,EAAE,cAAc,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC"}
|
package/dist/migrations/index.js
CHANGED
|
@@ -7,11 +7,21 @@
|
|
|
7
7
|
import * as fs from "node:fs";
|
|
8
8
|
import * as path from "node:path";
|
|
9
9
|
import { migration as v1_3_1_submitAnswer } from "./versions/v1.3.1-submit-answer.js";
|
|
10
|
+
import { migration as v1_3_5_navigatorAuthority } from "./versions/v1.3.5-navigator-authority.js";
|
|
11
|
+
import { migration as v1_4_0_agentIdentity } from "./versions/v1.4.0-agent-identity.js";
|
|
12
|
+
import { migration as v1_4_1_updateSkill } from "./versions/v1.4.1-update-skill.js";
|
|
13
|
+
import { migration as v1_5_0_rfc2119Skills } from "./versions/v1.5.0-rfc2119-skills.js";
|
|
14
|
+
import { migration as v1_5_1_mendInstruction } from "./versions/v1.5.1-mend-instruction.js";
|
|
10
15
|
/**
|
|
11
16
|
* All available migrations in order
|
|
12
17
|
*/
|
|
13
18
|
const MIGRATIONS = [
|
|
14
19
|
v1_3_1_submitAnswer,
|
|
20
|
+
v1_3_5_navigatorAuthority,
|
|
21
|
+
v1_4_0_agentIdentity,
|
|
22
|
+
v1_4_1_updateSkill,
|
|
23
|
+
v1_5_0_rfc2119Skills,
|
|
24
|
+
v1_5_1_mendInstruction,
|
|
15
25
|
];
|
|
16
26
|
/**
|
|
17
27
|
* Get the current version of a navigator
|