knitbrain 0.1.1 → 0.2.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.
Files changed (58) hide show
  1. package/README.md +66 -23
  2. package/dist/engine/agents.d.ts +4 -0
  3. package/dist/engine/agents.js +3 -2
  4. package/dist/engine/agents.js.map +1 -1
  5. package/dist/engine/feedback.js +1 -1
  6. package/dist/engine/feedback.js.map +1 -1
  7. package/dist/engine/meter.d.ts +2 -0
  8. package/dist/engine/meter.js +5 -0
  9. package/dist/engine/meter.js.map +1 -1
  10. package/dist/evals.d.ts +53 -0
  11. package/dist/evals.js +189 -0
  12. package/dist/evals.js.map +1 -0
  13. package/dist/index.js +20 -0
  14. package/dist/index.js.map +1 -1
  15. package/dist/learn.d.ts +39 -0
  16. package/dist/learn.js +289 -0
  17. package/dist/learn.js.map +1 -0
  18. package/dist/lib.d.ts +37 -0
  19. package/dist/lib.js +17 -0
  20. package/dist/lib.js.map +1 -0
  21. package/dist/mcp/instructions.d.ts +7 -0
  22. package/dist/mcp/instructions.js +29 -0
  23. package/dist/mcp/instructions.js.map +1 -0
  24. package/dist/mcp/tools.js +50 -12
  25. package/dist/mcp/tools.js.map +1 -1
  26. package/dist/optimizer/ast.d.ts +11 -0
  27. package/dist/optimizer/ast.js +99 -29
  28. package/dist/optimizer/ast.js.map +1 -1
  29. package/dist/optimizer/code.js +1 -1
  30. package/dist/optimizer/code.js.map +1 -1
  31. package/dist/optimizer/router.d.ts +3 -1
  32. package/dist/optimizer/router.js +32 -7
  33. package/dist/optimizer/router.js.map +1 -1
  34. package/dist/optimizer/structured.d.ts +43 -0
  35. package/dist/optimizer/structured.js +196 -0
  36. package/dist/optimizer/structured.js.map +1 -0
  37. package/dist/optimizer/text.js +38 -7
  38. package/dist/optimizer/text.js.map +1 -1
  39. package/dist/optimizer/types.d.ts +4 -2
  40. package/dist/platforms.d.ts +11 -1
  41. package/dist/platforms.js +34 -1
  42. package/dist/platforms.js.map +1 -1
  43. package/dist/proxy/cache-aligner.d.ts +25 -4
  44. package/dist/proxy/cache-aligner.js +45 -4
  45. package/dist/proxy/cache-aligner.js.map +1 -1
  46. package/dist/proxy/optimize-request.d.ts +10 -0
  47. package/dist/proxy/optimize-request.js +96 -6
  48. package/dist/proxy/optimize-request.js.map +1 -1
  49. package/dist/proxy/server.js +2 -2
  50. package/dist/proxy/server.js.map +1 -1
  51. package/dist/server.js +5 -1
  52. package/dist/server.js.map +1 -1
  53. package/dist/setup.d.ts +1 -1
  54. package/dist/setup.js +30 -1
  55. package/dist/setup.js.map +1 -1
  56. package/dist/version.d.ts +1 -1
  57. package/dist/version.js +1 -1
  58. package/package.json +11 -2
package/dist/learn.js ADDED
@@ -0,0 +1,289 @@
1
+ import { createReadStream, existsSync, readdirSync, readFileSync, statSync, writeFileSync } from "node:fs";
2
+ import { homedir } from "node:os";
3
+ import { basename, join, resolve } from "node:path";
4
+ import { createInterface } from "node:readline";
5
+ const FAIL_TEXT = /\b(does not exist|No such file|not found|command not found|ModuleNotFoundError|No module named|ENOENT|Permission denied|is a directory|InputValidationError)\b/i;
6
+ const TOO_LARGE = /\b(exceeds maximum|too large|File content \(\d+|truncated)\b/i;
7
+ /** Secrets must never reach CLAUDE.md (it's often committed). */
8
+ const SECRET = /\b(hf_|sk-|ghp_|gho_|github_pat_|xox[abps]-|AKIA|ASIA)[A-Za-z0-9_-]{8,}/;
9
+ const SECRET_WORDS = /\b(password|secret|api[_-]?key|token)\s*[:=]/i;
10
+ /** A learning is publishable only if it's short, single-line, and secret-free. */
11
+ function publishable(text) {
12
+ return text.length <= 220 && !text.includes("\n") && !SECRET.test(text) && !SECRET_WORDS.test(text);
13
+ }
14
+ /** Generic basenames that collide across unrelated files — useless as anchors. */
15
+ const GENERIC_BASENAMES = new Set([
16
+ "route.ts",
17
+ "route.js",
18
+ "index.ts",
19
+ "index.js",
20
+ "index.tsx",
21
+ "page.tsx",
22
+ "layout.tsx",
23
+ "main.py",
24
+ "main.go",
25
+ "mod.rs",
26
+ "lib.rs",
27
+ "__init__.py",
28
+ "types.ts",
29
+ "utils.ts",
30
+ "README.md",
31
+ "CLAUDE.md",
32
+ "package.json",
33
+ ]);
34
+ /** Parse one transcript: ordered tool events (use+result matched by id). */
35
+ export async function parseSession(file) {
36
+ const uses = new Map();
37
+ const events = [];
38
+ let seq = 0;
39
+ const rl = createInterface({ input: createReadStream(file), crlfDelay: Infinity });
40
+ for await (const line of rl) {
41
+ let msg;
42
+ try {
43
+ msg = JSON.parse(line);
44
+ }
45
+ catch {
46
+ continue;
47
+ }
48
+ const content = msg?.message?.content;
49
+ if (!Array.isArray(content))
50
+ continue;
51
+ for (const block of content) {
52
+ if (block["type"] === "tool_use" && typeof block["id"] === "string") {
53
+ uses.set(block["id"], {
54
+ tool: String(block["name"] ?? ""),
55
+ input: block["input"] ?? {},
56
+ });
57
+ }
58
+ if (block["type"] === "tool_result" && typeof block["tool_use_id"] === "string") {
59
+ const use = uses.get(block["tool_use_id"]);
60
+ if (!use)
61
+ continue;
62
+ const raw = block["content"];
63
+ const text = typeof raw === "string"
64
+ ? raw
65
+ : Array.isArray(raw)
66
+ ? raw
67
+ .filter((b) => b.type === "text")
68
+ .map((b) => b.text ?? "")
69
+ .join("\n")
70
+ : "";
71
+ // Trust the explicit flag; the regex is only a fallback when the
72
+ // transcript doesn't carry one (ordinary output often CONTAINS the
73
+ // words "not found" without being a failure).
74
+ const error = block["is_error"] === true ||
75
+ (block["is_error"] === undefined && FAIL_TEXT.test(text.slice(0, 500)));
76
+ events.push({ tool: use.tool, input: use.input, error, errText: text.slice(0, 500), seq: (seq += 1) });
77
+ }
78
+ }
79
+ }
80
+ return events;
81
+ }
82
+ /**
83
+ * The FILE a command targets (a token with a path-like extension), ignoring
84
+ * redirections and pipe tails. High precision beats recall here: a wrong
85
+ * "correction" in CLAUDE.md misleads every future session.
86
+ */
87
+ function targetFile(cmd) {
88
+ const m = /(?:^|\s)((?:[\w./~-]+\/)?[\w.-]+\.(?:py|ts|tsx|js|mjs|go|rs|java|rb|sh|json|yml|yaml|toml|md))(?=\s|$)/.exec(cmd);
89
+ return m?.[1] ?? "";
90
+ }
91
+ /** Mine one session's events for failure→success corrections. */
92
+ export function mineSession(events) {
93
+ const out = [];
94
+ const WINDOW = 12; // a fix usually lands within a few steps of the failure
95
+ for (let i = 0; i < events.length; i += 1) {
96
+ const ev = events[i];
97
+ if (!ev.error)
98
+ continue;
99
+ const later = events.slice(i + 1, i + 1 + WINDOW).filter((e) => !e.error);
100
+ // 1. FILE PATH CORRECTIONS — failed file op, later success on the same
101
+ // basename. Generic basenames (route.ts, index.ts) collide across
102
+ // unrelated files, so they're excluded.
103
+ const failedPath = typeof ev.input["file_path"] === "string" ? ev.input["file_path"] : "";
104
+ if (failedPath && ["Read", "Edit", "Write"].includes(ev.tool) && !GENERIC_BASENAMES.has(basename(failedPath))) {
105
+ const fix = later.find((e) => typeof e.input["file_path"] === "string" &&
106
+ e.input["file_path"] !== failedPath &&
107
+ basename(e.input["file_path"]) === basename(failedPath));
108
+ if (fix) {
109
+ const text = `\`${failedPath}\` → actually at \`${fix.input["file_path"]}\``;
110
+ if (publishable(text))
111
+ out.push({ category: "paths", text, count: 1 });
112
+ continue;
113
+ }
114
+ }
115
+ // 2. COMMAND CORRECTIONS — failed command, later success on the SAME
116
+ // target file with a different runner (python3 x.py → uv run python
117
+ // x.py). Single-line, short commands only: a correction must be
118
+ // readable and unambiguous or it's noise.
119
+ const failedCmd = typeof ev.input["command"] === "string" ? ev.input["command"] : "";
120
+ if (failedCmd && ev.tool === "Bash" && !failedCmd.includes("\n") && failedCmd.length <= 120) {
121
+ const target = targetFile(failedCmd);
122
+ const fix = later.find((e) => e.tool === "Bash" &&
123
+ typeof e.input["command"] === "string" &&
124
+ !e.input["command"].includes("\n") &&
125
+ e.input["command"].length <= 120 &&
126
+ e.input["command"] !== failedCmd &&
127
+ target.length > 0 &&
128
+ targetFile(e.input["command"]) === target);
129
+ if (fix) {
130
+ const text = `use \`${fix.input["command"]}\` (not \`${failedCmd}\`)`;
131
+ if (publishable(text))
132
+ out.push({ category: "commands", text, count: 1 });
133
+ continue;
134
+ }
135
+ }
136
+ // 4. LARGE FILES — reads that blew the size limit need offset/limit.
137
+ // Ephemeral paths (/tmp task outputs) won't exist next session — skip.
138
+ if (ev.tool === "Read" && failedPath && TOO_LARGE.test(ev.errText) && !/^(\/private)?\/tmp\//.test(failedPath)) {
139
+ const text = `\`${failedPath}\` is too large for a whole-file Read — use offset/limit`;
140
+ if (publishable(text))
141
+ out.push({ category: "large-files", text, count: 1 });
142
+ }
143
+ }
144
+ // 3. ENVIRONMENT FACTS — runners that failed repeatedly and never succeeded.
145
+ const firstTok = (c) => c.trim().split(/\s+/)[0] ?? "";
146
+ // Shell builtins / generic helpers say nothing about the environment.
147
+ const NOISE_RUNNERS = new Set(["cd", "echo", "ls", "cat", "#", "[", "for", "if", "while", "sleep", "true"]);
148
+ const cmdStats = new Map();
149
+ for (const e of events) {
150
+ if (e.tool !== "Bash" || typeof e.input["command"] !== "string")
151
+ continue;
152
+ const tok = firstTok(e.input["command"]);
153
+ if (!tok || tok.length < 2 || NOISE_RUNNERS.has(tok))
154
+ continue;
155
+ const s = cmdStats.get(tok) ?? { fail: 0, ok: 0 };
156
+ if (e.error)
157
+ s.fail += 1;
158
+ else
159
+ s.ok += 1;
160
+ cmdStats.set(tok, s);
161
+ }
162
+ for (const [tok, s] of cmdStats) {
163
+ if (s.fail >= 3 && s.ok === 0) {
164
+ out.push({
165
+ category: "environment",
166
+ text: `\`${tok}\` failed ${s.fail}× and never succeeded in past sessions — prefer an alternative`,
167
+ count: 1,
168
+ });
169
+ }
170
+ }
171
+ return out;
172
+ }
173
+ /** Merge duplicate learnings across sessions, summing evidence counts. */
174
+ export function mergeLearnings(all) {
175
+ const map = new Map();
176
+ for (const l of all) {
177
+ const key = `${l.category}:${l.text}`;
178
+ const cur = map.get(key);
179
+ if (cur)
180
+ cur.count += l.count;
181
+ else
182
+ map.set(key, { ...l });
183
+ }
184
+ return [...map.values()].sort((a, b) => b.count - a.count);
185
+ }
186
+ const START = "<!-- knitbrain:learn:start -->";
187
+ const END = "<!-- knitbrain:learn:end -->";
188
+ const TITLES = {
189
+ paths: "File locations (corrected from failed lookups)",
190
+ commands: "Command patterns (what actually worked)",
191
+ environment: "Environment facts",
192
+ "large-files": "Known large files (Read with offset/limit)",
193
+ };
194
+ /** Render the marker-managed CLAUDE.md section. */
195
+ export function renderSection(learnings) {
196
+ const lines = [START, "## Learned from past sessions (knitbrain learn)", ""];
197
+ lines.push("*Auto-generated by `knitbrain learn --apply` — edits inside the markers are overwritten.*", "");
198
+ for (const cat of ["paths", "commands", "environment", "large-files"]) {
199
+ const items = learnings.filter((l) => l.category === cat);
200
+ if (items.length === 0)
201
+ continue;
202
+ lines.push(`### ${TITLES[cat]}`);
203
+ for (const l of items)
204
+ lines.push(`- ${l.text}${l.count > 1 ? ` (seen ${l.count}×)` : ""}`);
205
+ lines.push("");
206
+ }
207
+ lines.push(END);
208
+ return lines.join("\n");
209
+ }
210
+ /** Write/replace the marker section in the project's CLAUDE.md. */
211
+ export function applyToClaudeMd(projectRoot, section) {
212
+ const path = join(projectRoot, "CLAUDE.md");
213
+ const existing = existsSync(path) ? readFileSync(path, "utf8") : "";
214
+ let next;
215
+ if (existing.includes(START) && existing.includes(END)) {
216
+ const pre = existing.slice(0, existing.indexOf(START));
217
+ const post = existing.slice(existing.indexOf(END) + END.length);
218
+ next = pre + section + post;
219
+ }
220
+ else {
221
+ next = existing.length > 0 ? `${existing.replace(/\n+$/, "")}\n\n${section}\n` : `${section}\n`;
222
+ }
223
+ writeFileSync(path, next);
224
+ return path;
225
+ }
226
+ /** Claude Code's transcript-directory slug for a project path. */
227
+ export function projectSlug(projectRoot) {
228
+ return resolve(projectRoot).replace(/[/.]/g, "-");
229
+ }
230
+ /** Transcript files for one project (or all projects with --all). */
231
+ export function transcriptsFor(projectRoot, all) {
232
+ const base = join(homedir(), ".claude", "projects");
233
+ if (!existsSync(base))
234
+ return [];
235
+ const slug = projectSlug(projectRoot);
236
+ const files = [];
237
+ for (const dir of readdirSync(base)) {
238
+ if (!all && dir !== slug)
239
+ continue;
240
+ const pd = join(base, dir);
241
+ try {
242
+ if (!statSync(pd).isDirectory())
243
+ continue;
244
+ for (const f of readdirSync(pd))
245
+ if (f.endsWith(".jsonl"))
246
+ files.push(join(pd, f));
247
+ }
248
+ catch {
249
+ /* skip unreadable */
250
+ }
251
+ }
252
+ return files;
253
+ }
254
+ /** CLI entry: `knitbrain learn [--apply] [--all] [--project <path>]`. */
255
+ export async function runLearn(args, log = console.log) {
256
+ const apply = args.includes("--apply");
257
+ const all = args.includes("--all");
258
+ const pIdx = args.indexOf("--project");
259
+ const projectRoot = pIdx >= 0 && args[pIdx + 1] ? resolve(args[pIdx + 1]) : process.cwd();
260
+ const files = transcriptsFor(projectRoot, all);
261
+ log(`[learn] project: ${projectRoot}${all ? " (+ all projects)" : ""}`);
262
+ log(`[learn] transcripts: ${files.length}`);
263
+ if (files.length === 0) {
264
+ log("[learn] no transcripts found — has this project been worked on with Claude Code?");
265
+ return 0;
266
+ }
267
+ const collected = [];
268
+ for (const f of files)
269
+ collected.push(...mineSession(await parseSession(f)));
270
+ const learnings = mergeLearnings(collected);
271
+ if (learnings.length === 0) {
272
+ log("[learn] no failure→success corrections found — clean sessions, nothing to write");
273
+ return 0;
274
+ }
275
+ log(`[learn] ${learnings.length} corrections mined from real failures:`);
276
+ for (const l of learnings.slice(0, 30))
277
+ log(` [${l.category}] ${l.text}${l.count > 1 ? ` (×${l.count})` : ""}`);
278
+ if (learnings.length > 30)
279
+ log(` … and ${learnings.length - 30} more`);
280
+ if (apply) {
281
+ const path = applyToClaudeMd(projectRoot, renderSection(learnings));
282
+ log(`[learn] written to ${path} (marker-managed section)`);
283
+ }
284
+ else {
285
+ log("[learn] dry-run — pass --apply to write these into CLAUDE.md");
286
+ }
287
+ return learnings.length;
288
+ }
289
+ //# sourceMappingURL=learn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"learn.js","sourceRoot":"","sources":["../src/learn.ts"],"names":[],"mappings":"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"}
package/dist/lib.d.ts ADDED
@@ -0,0 +1,37 @@
1
+ import { type CCRStore } from "./ccr/store.js";
2
+ import { type RouteResult, type CompressOptions } from "./optimizer/router.js";
3
+ import { countTokens } from "./tokenizer.js";
4
+ /**
5
+ * Public library API — use knitbrain inline, no proxy or MCP required.
6
+ *
7
+ * ```ts
8
+ * import { createOptimizer } from "knitbrain";
9
+ * const kb = createOptimizer();
10
+ * const r = kb.compress(bigToolOutput);
11
+ * // r.skeleton → hand to the model
12
+ * // kb.retrieve(r.handle) → exact original, byte-for-byte
13
+ * ```
14
+ *
15
+ * Same router as the proxy and MCP server: detect → route → compress, with
16
+ * the never-expand guard and lossless CCR recovery. Originals live under
17
+ * `~/.knitbrain/ccr` unless `root` is given.
18
+ */
19
+ export interface Optimizer {
20
+ /** Compress one payload. Lossless: original recoverable via retrieve(). */
21
+ compress(text: string, options?: CompressOptions): RouteResult;
22
+ /** Exact original for a handle a skeleton referenced. Throws if absent. */
23
+ retrieve(handle: string): string;
24
+ /** Whether a handle is still recoverable. */
25
+ has(handle: string): boolean;
26
+ /** Resolves when the tree-sitter AST parsers are warm (optional — the
27
+ * scanner fallback serves code until then). */
28
+ ready(): Promise<void>;
29
+ }
30
+ export interface OptimizerOptions {
31
+ /** CCR storage directory (default: `~/.knitbrain/ccr`). */
32
+ root?: string;
33
+ }
34
+ export declare function createOptimizer(options?: OptimizerOptions): Optimizer;
35
+ export { countTokens };
36
+ export type { RouteResult, CompressOptions, CCRStore };
37
+ export type { ContentType } from "./optimizer/types.js";
package/dist/lib.js ADDED
@@ -0,0 +1,17 @@
1
+ import { createFileCCRStore } from "./ccr/store.js";
2
+ import { compress as routeCompress } from "./optimizer/router.js";
3
+ import { ensureAst } from "./optimizer/ast.js";
4
+ import { ccrRoot } from "./paths.js";
5
+ import { countTokens } from "./tokenizer.js";
6
+ export function createOptimizer(options = {}) {
7
+ const store = createFileCCRStore(options.root ?? ccrRoot());
8
+ void ensureAst(); // warm the WASM parsers in the background
9
+ return {
10
+ compress: (text, opts) => routeCompress(text, store, opts),
11
+ retrieve: (handle) => store.get(handle),
12
+ has: (handle) => store.has(handle),
13
+ ready: () => ensureAst(),
14
+ };
15
+ }
16
+ export { countTokens };
17
+ //# sourceMappingURL=lib.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lib.js","sourceRoot":"","sources":["../src/lib.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAiB,MAAM,gBAAgB,CAAC;AACnE,OAAO,EAAE,QAAQ,IAAI,aAAa,EAA0C,MAAM,uBAAuB,CAAC;AAC1G,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AACrC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAkC7C,MAAM,UAAU,eAAe,CAAC,UAA4B,EAAE;IAC5D,MAAM,KAAK,GAAa,kBAAkB,CAAC,OAAO,CAAC,IAAI,IAAI,OAAO,EAAE,CAAC,CAAC;IACtE,KAAK,SAAS,EAAE,CAAC,CAAC,0CAA0C;IAC5D,OAAO;QACL,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC;QAC1D,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC;QACvC,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC;QAClC,KAAK,EAAE,GAAG,EAAE,CAAC,SAAS,EAAE;KACzB,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,WAAW,EAAE,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Handshake instructions — injected at MCP initialize, so EVERY connected
3
+ * agent (Claude Code, Cursor, Codex, …) operates the closed loop without any
4
+ * file setup. This is the adherence layer: the protocol travels with the
5
+ * server, not with per-project config.
6
+ */
7
+ export declare const INSTRUCTIONS = "knitbrain operating protocol (closed loop \u2014 follow in order):\n\nSESSION START\n1. Call knitbrain_load_session first. If it reports unfinished work, resume that before anything else.\n\nEVERY NON-TRIVIAL TASK\n2. Call knitbrain_run with the task (or knitbrain_classify_task with the files you plan to touch).\n3. ADHERE TO THE VERDICT:\n - autoPlanMode=true \u2192 ENTER YOUR HOST'S PLAN MODE NOW, before any file edit. Present the plan, get approval, then execute.\n - tier=trivial \u2192 just execute; skip ceremony.\n - Follow the returned phases in order (RESEARCH \u2192 PLAN \u2192 EXECUTE \u2192 REVIEW \u2192 LEARN).\n - If the verdict was wrong, say so: knitbrain_record_false_positive \u2014 the classifier self-calibrates after 3 same-direction reports.\n4. Use the returned SKILL; refine it while working; persist with knitbrain_skill_save.\n5. For complex tasks, spawn the proposed agents via your host's sub-agent mechanism; coordinate on knitbrain_team_post.\n\nCONTEXT DISCIPLINE (tokens are the budget)\n6. Big file? knitbrain_read (not raw Read). Big output to keep? knitbrain_optimize. Exact original back? knitbrain_retrieve with the \u27E8ccr:hash\u27E9.\n7. Check knitbrain_context_meter when the session runs long; follow its advice.\n\nBEFORE SAYING DONE\n8. Verify claims (run the tests/build \u2014 don't assert green without output).\n9. Record what you learned: knitbrain_record_learning (and knitbrain_skill_save if the skill improved). The next session starts smarter \u2014 that's the loop.";
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Handshake instructions — injected at MCP initialize, so EVERY connected
3
+ * agent (Claude Code, Cursor, Codex, …) operates the closed loop without any
4
+ * file setup. This is the adherence layer: the protocol travels with the
5
+ * server, not with per-project config.
6
+ */
7
+ export const INSTRUCTIONS = `knitbrain operating protocol (closed loop — follow in order):
8
+
9
+ SESSION START
10
+ 1. Call knitbrain_load_session first. If it reports unfinished work, resume that before anything else.
11
+
12
+ EVERY NON-TRIVIAL TASK
13
+ 2. Call knitbrain_run with the task (or knitbrain_classify_task with the files you plan to touch).
14
+ 3. ADHERE TO THE VERDICT:
15
+ - autoPlanMode=true → ENTER YOUR HOST'S PLAN MODE NOW, before any file edit. Present the plan, get approval, then execute.
16
+ - tier=trivial → just execute; skip ceremony.
17
+ - Follow the returned phases in order (RESEARCH → PLAN → EXECUTE → REVIEW → LEARN).
18
+ - If the verdict was wrong, say so: knitbrain_record_false_positive — the classifier self-calibrates after 3 same-direction reports.
19
+ 4. Use the returned SKILL; refine it while working; persist with knitbrain_skill_save.
20
+ 5. For complex tasks, spawn the proposed agents via your host's sub-agent mechanism; coordinate on knitbrain_team_post.
21
+
22
+ CONTEXT DISCIPLINE (tokens are the budget)
23
+ 6. Big file? knitbrain_read (not raw Read). Big output to keep? knitbrain_optimize. Exact original back? knitbrain_retrieve with the ⟨ccr:hash⟩.
24
+ 7. Check knitbrain_context_meter when the session runs long; follow its advice.
25
+
26
+ BEFORE SAYING DONE
27
+ 8. Verify claims (run the tests/build — don't assert green without output).
28
+ 9. Record what you learned: knitbrain_record_learning (and knitbrain_skill_save if the skill improved). The next session starts smarter — that's the loop.`;
29
+ //# sourceMappingURL=instructions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instructions.js","sourceRoot":"","sources":["../../src/mcp/instructions.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;2JAqB+H,CAAC"}
package/dist/mcp/tools.js CHANGED
@@ -40,6 +40,7 @@ export const TOOLS = [
40
40
  if (!r.compressed)
41
41
  return text;
42
42
  ctx.feedback.onCompress(r.contentType, r.handle);
43
+ ctx.meter.onSaved(r.originalTokens - r.skeletonTokens);
43
44
  return `${r.skeleton}\n\n[optimized: ${r.originalTokens}→${r.skeletonTokens} tokens, saved ${r.savedPct}% · retrieve the ⟨ccr:…⟩ handle for the exact original]`;
44
45
  },
45
46
  },
@@ -85,6 +86,7 @@ export const TOOLS = [
85
86
  if (!r.compressed)
86
87
  return original; // small/incompressible → exact content
87
88
  ctx.feedback.onCompress(r.contentType, r.handle);
89
+ ctx.meter.onSaved(r.originalTokens - r.skeletonTokens);
88
90
  return `${r.skeleton}\n\n[knitbrain_read: ${requested} · ${r.originalTokens}→${r.skeletonTokens} tokens (saved ${r.savedPct}%) · exact original: knitbrain_retrieve ⟨ccr:${r.handle}⟩]`;
89
91
  },
90
92
  },
@@ -164,6 +166,8 @@ export const TOOLS = [
164
166
  output: "data",
165
167
  run: (_args, ctx) => {
166
168
  ctx.meter.reset(); // new session starts a fresh window
169
+ // (Knowledge self-heals lazily: the first graph query in a fresh
170
+ // project triggers a scan automatically — no manual init step.)
167
171
  return JSON.stringify(ctx.memory.loadSession(), null, 2);
168
172
  },
169
173
  },
@@ -233,7 +237,14 @@ export const TOOLS = [
233
237
  run: (args, ctx) => {
234
238
  const files = Array.isArray(args["files"]) ? args["files"] : [];
235
239
  const scopeAdjust = ctx.calibration.get().scopeAdjust;
236
- return JSON.stringify(classifyTask(str(args, "description"), files, scopeAdjust), null, 2);
240
+ const cls = classifyTask(str(args, "description"), files, scopeAdjust);
241
+ // The JSON alone is too passive — agents follow imperatives, not flags.
242
+ const directive = cls.autoPlanMode
243
+ ? "ENTER YOUR HOST'S PLAN MODE NOW — before any file edit. Present the plan, get approval, then execute the phases in order. Wrong verdict? knitbrain_record_false_positive."
244
+ : cls.tier === "trivial" || cls.tier === "inquiry"
245
+ ? "Execute directly — no ceremony. Wrong verdict? knitbrain_record_false_positive."
246
+ : "Execute the phases in order (no plan-mode needed). Wrong verdict? knitbrain_record_false_positive.";
247
+ return JSON.stringify({ ...cls, directive }, null, 2);
237
248
  },
238
249
  },
239
250
  {
@@ -294,7 +305,7 @@ export const TOOLS = [
294
305
  additionalProperties: false,
295
306
  },
296
307
  output: "verbatim",
297
- run: (args) => {
308
+ run: (args, ctx) => {
298
309
  const path = writeAgent(process.cwd(), {
299
310
  name: str(args, "name"),
300
311
  ...(typeof args["description"] === "string" ? { description: args["description"] } : {}),
@@ -303,7 +314,11 @@ export const TOOLS = [
303
314
  ...(typeof args["reviewGate"] === "boolean" ? { reviewGate: args["reviewGate"] } : {}),
304
315
  ...(typeof args["contextBudget"] === "number" ? { contextBudget: args["contextBudget"] } : {}),
305
316
  });
306
- return `created agent at ${path}`;
317
+ const ev = ctx.team.post("knitbrain", `agent created: ${str(args, "name")} · scope ${typeof args["scope"] === "string" ? args["scope"] : "(whole project)"}`);
318
+ const hubCfg = loadHubConfig();
319
+ if (hubCfg)
320
+ mirrorToHub(hubCfg, { author: "knitbrain", summary: ev.summary, original: `agent created at ${path}` });
321
+ return `created agent at ${path}${hubCfg ? " (announced on hub)" : ""}`;
307
322
  },
308
323
  },
309
324
  {
@@ -329,15 +344,37 @@ export const TOOLS = [
329
344
  const skill = found
330
345
  ? { status: "found", name: found.name, uses: found.uses, body: found.body }
331
346
  : { status: "drafted — refine while working, then knitbrain_skill_save", body: ctx.skills.draft(task, seed) };
332
- // AGENTS: only when the task is complex/multi-domain (never at start).
347
+ // AGENTS (puppeteer mode): on complex tasks the agent FILES are
348
+ // written, not just proposed — same persistence model as skills.
349
+ // Each .claude/agents/<name>.md carries guardrails + the task's
350
+ // telegraphic skill body as its mission brief, so a cold sub-agent
351
+ // starts optimized: scoped tools, scoped files, compressed context,
352
+ // findings flowing back through the team board.
333
353
  const agents = cls.tier === "complex"
334
- ? proposeAgents(ctx.knowledge.listFiles()).slice(0, 4).map((p) => ({
335
- name: p.name,
336
- scope: p.scope,
337
- tools: p.tools,
338
- reviewGate: p.reviewGate,
339
- brief: "spawn via your host's sub-agent mechanism; brief it with the SKILL body + its guardrails; post findings to knitbrain_team_post",
340
- }))
354
+ ? proposeAgents(ctx.knowledge.listFiles()).slice(0, 4).map((p) => {
355
+ const file = writeAgent(process.cwd(), {
356
+ name: p.name,
357
+ scope: p.scope,
358
+ tools: p.tools,
359
+ reviewGate: p.reviewGate,
360
+ brief: `task: ${task}\n${skill.body}`,
361
+ });
362
+ // Agent lifecycle is team-visible: the creation event lands on
363
+ // the board (and mirrors to the hub when joined), so individual
364
+ // and team views see which agents exist, for what, and where.
365
+ const ev = ctx.team.post("knitbrain", `agent created: ${p.name} · scope ${p.scope} · task: ${task}`);
366
+ const hub = loadHubConfig();
367
+ if (hub)
368
+ mirrorToHub(hub, { author: "knitbrain", summary: ev.summary, original: `agent created: ${p.name} · scope ${p.scope} · file ${file} · task: ${task}` });
369
+ return {
370
+ name: p.name,
371
+ scope: p.scope,
372
+ tools: p.tools,
373
+ reviewGate: p.reviewGate,
374
+ file,
375
+ spawn: `agent file WRITTEN — spawn via your host's sub-agent mechanism (Claude Code: Task tool with subagent_type "${p.name}"); it is pre-briefed; findings arrive on knitbrain_team_board`,
376
+ };
377
+ })
341
378
  : [];
342
379
  // HOST COMMANDS the agent can run itself (autonomous loop).
343
380
  const platforms = detectPlatforms({ env: process.env, exists: existsSync, home: homedir() });
@@ -349,7 +386,7 @@ export const TOOLS = [
349
386
  host_commands: commands,
350
387
  meter: ctx.meter.read(),
351
388
  directive: cls.tier === "complex"
352
- ? "Plan first. Spawn the proposed agents in parallel; each works its scope w/ its skill; consolidate via team board; verify; record learning + skill update."
389
+ ? "ENTER YOUR HOST'S PLAN MODE NOW (before any file edit). Agent files are already written under .claude/agents/ — after the plan is approved, spawn them in parallel; each is pre-briefed and scope-guarded; consolidate via team board; verify; record learning + skill update."
353
390
  : "Execute with the skill. Verify before claiming done. Record learning + skill update if anything non-obvious surfaced.",
354
391
  }, null, 2);
355
392
  },
@@ -445,6 +482,7 @@ export function dispatch(tool, args, ctx) {
445
482
  const r = compress(raw, ctx.ccr, { allowProse: !ctx.feedback.shouldSkip("prose") });
446
483
  if (r.compressed) {
447
484
  ctx.feedback.onCompress(r.contentType, r.handle);
485
+ ctx.meter.onSaved(r.originalTokens - r.skeletonTokens);
448
486
  out = r.skeleton;
449
487
  }
450
488
  }
@@ -1 +1 @@
1
- {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/mcp/tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/mcp/tools.ts"],"names":[],"mappings":"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"}