@zhixuan92/multi-model-agent-core 5.2.2 → 5.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/dist/config/model-profile-registry.d.ts +0 -1
  2. package/dist/config/model-profile-registry.d.ts.map +1 -1
  3. package/dist/config/model-profile-registry.js +0 -3
  4. package/dist/config/model-profile-registry.js.map +1 -1
  5. package/dist/config/schema.d.ts +10 -17
  6. package/dist/config/schema.d.ts.map +1 -1
  7. package/dist/config/schema.js +11 -22
  8. package/dist/config/schema.js.map +1 -1
  9. package/dist/error-codes.d.ts +0 -2
  10. package/dist/error-codes.d.ts.map +1 -1
  11. package/dist/error-codes.js +0 -15
  12. package/dist/error-codes.js.map +1 -1
  13. package/dist/events/to-wire-record.d.ts.map +1 -1
  14. package/dist/events/to-wire-record.js +2 -4
  15. package/dist/events/to-wire-record.js.map +1 -1
  16. package/dist/research/adapters/crossref.d.ts +7 -0
  17. package/dist/research/adapters/crossref.d.ts.map +1 -0
  18. package/dist/research/adapters/crossref.js +80 -0
  19. package/dist/research/adapters/crossref.js.map +1 -0
  20. package/dist/research/adapters/index.d.ts +4 -0
  21. package/dist/research/adapters/index.d.ts.map +1 -1
  22. package/dist/research/adapters/index.js +10 -1
  23. package/dist/research/adapters/index.js.map +1 -1
  24. package/dist/research/adapters/openalex.d.ts +7 -0
  25. package/dist/research/adapters/openalex.d.ts.map +1 -0
  26. package/dist/research/adapters/openalex.js +77 -0
  27. package/dist/research/adapters/openalex.js.map +1 -0
  28. package/dist/research/adapters/pubmed.d.ts +7 -0
  29. package/dist/research/adapters/pubmed.d.ts.map +1 -0
  30. package/dist/research/adapters/pubmed.js +108 -0
  31. package/dist/research/adapters/pubmed.js.map +1 -0
  32. package/dist/research/adapters/redact-adapter-url.d.ts +3 -0
  33. package/dist/research/adapters/redact-adapter-url.d.ts.map +1 -0
  34. package/dist/research/adapters/redact-adapter-url.js +21 -0
  35. package/dist/research/adapters/redact-adapter-url.js.map +1 -0
  36. package/dist/research/adapters/types.d.ts +1 -1
  37. package/dist/research/adapters/types.d.ts.map +1 -1
  38. package/dist/research/evidence-pack.d.ts +2 -2
  39. package/dist/research/evidence-pack.d.ts.map +1 -1
  40. package/dist/research/evidence-pack.js +6 -3
  41. package/dist/research/evidence-pack.js.map +1 -1
  42. package/dist/research/index.d.ts +2 -2
  43. package/dist/research/index.d.ts.map +1 -1
  44. package/dist/research/index.js +1 -1
  45. package/dist/research/index.js.map +1 -1
  46. package/dist/research/orchestrator.d.ts +40 -2
  47. package/dist/research/orchestrator.d.ts.map +1 -1
  48. package/dist/research/orchestrator.js +102 -16
  49. package/dist/research/orchestrator.js.map +1 -1
  50. package/dist/research/query-plan.d.ts +17 -1
  51. package/dist/research/query-plan.d.ts.map +1 -1
  52. package/dist/research/query-plan.js +13 -3
  53. package/dist/research/query-plan.js.map +1 -1
  54. package/dist/research/web-search.d.ts +8 -1
  55. package/dist/research/web-search.d.ts.map +1 -1
  56. package/dist/research/web-search.js +16 -4
  57. package/dist/research/web-search.js.map +1 -1
  58. package/dist/unified/two-phase-pipeline.d.ts +2 -0
  59. package/dist/unified/two-phase-pipeline.d.ts.map +1 -1
  60. package/dist/unified/two-phase-pipeline.js +13 -1
  61. package/dist/unified/two-phase-pipeline.js.map +1 -1
  62. package/package.json +1 -5
  63. package/src/skills/journal_recall/implement.md +3 -3
  64. package/src/skills/journal_recall/review.md +1 -0
  65. package/src/skills/journal_record/implement.md +20 -4
  66. package/src/skills/journal_record/review.md +6 -3
  67. package/src/skills/research/implement.md +30 -2
@@ -1,34 +1,86 @@
1
- //
2
- // Step 2 of the /research pipeline. Deterministic Node-only fan-out across
3
- // enabled adapters + Brave, with per-adapter timeout, concurrency cap scoped
4
- // to this single call, and post-budget evidence pack assembly.
5
1
  import { applyBudget, } from './evidence-pack.js';
6
2
  const TASK_TO_GROUP = {
7
3
  brave: 'brave',
4
+ brave_news: 'brave_news',
8
5
  arxiv: 'arxiv',
9
6
  ss: 'semantic_scholar',
10
7
  gh_repo: 'github_repo',
11
8
  gh_code: 'github_code',
9
+ openalex: 'openalex',
10
+ crossref: 'crossref',
11
+ pubmed: 'pubmed',
12
12
  };
13
13
  function buildTasks(plan) {
14
14
  const tasks = [];
15
- for (const q of plan.braveQueries)
16
- tasks.push({ kind: 'brave', query: q });
15
+ for (const bq of plan.braveQueries) {
16
+ const query = bq.siteFilter ? `${bq.siteFilter} ${bq.q}` : bq.q;
17
+ if (bq.endpoint === 'news') {
18
+ tasks.push({ kind: 'brave_news', query, freshness: bq.freshness, siteFilter: bq.siteFilter });
19
+ }
20
+ else {
21
+ tasks.push({ kind: 'brave', query, freshness: bq.freshness, siteFilter: bq.siteFilter });
22
+ }
23
+ }
17
24
  for (const q of plan.arxivQueries)
18
25
  tasks.push({ kind: 'arxiv', query: q });
19
26
  for (const q of plan.semanticScholarQueries)
20
27
  tasks.push({ kind: 'ss', query: q });
21
28
  for (const g of plan.githubQueries)
22
29
  tasks.push({ kind: g.kind === 'repo' ? 'gh_repo' : 'gh_code', query: g.q });
30
+ for (const q of plan.openalexQueries)
31
+ tasks.push({ kind: 'openalex', query: q });
32
+ for (const q of plan.crossrefQueries)
33
+ tasks.push({ kind: 'crossref', query: q });
34
+ for (const q of plan.pubmedQueries)
35
+ tasks.push({ kind: 'pubmed', query: q });
23
36
  return tasks;
24
37
  }
25
38
  function isAdapterEnabled(kind, enabled) {
26
39
  switch (kind) {
40
+ case 'brave':
41
+ case 'brave_news': return true;
27
42
  case 'arxiv': return enabled.includes('arxiv');
28
43
  case 'ss': return enabled.includes('semantic_scholar');
29
44
  case 'gh_repo':
30
45
  case 'gh_code': return enabled.includes('github_search');
31
- case 'brave': return true;
46
+ case 'openalex': return enabled.includes('openalex');
47
+ case 'crossref': return enabled.includes('crossref');
48
+ case 'pubmed': return enabled.includes('pubmed');
49
+ }
50
+ }
51
+ /** Per-adapter concurrency limits per spec (rate-limiting, timeouts, and error recovery). */
52
+ const ADAPTER_CONCURRENCY = {
53
+ brave: 5,
54
+ brave_news: 5,
55
+ openalex: 10,
56
+ crossref: 5,
57
+ pubmed: 2, // 3 req/s hard limit without key; conservative
58
+ arxiv: 1, // arXiv asks for sequential access
59
+ ss: 3,
60
+ gh_repo: 3,
61
+ gh_code: 3,
62
+ };
63
+ /** Simple semaphore for per-adapter concurrency control. */
64
+ class Semaphore {
65
+ max;
66
+ running = 0;
67
+ queue = [];
68
+ constructor(max) {
69
+ this.max = max;
70
+ }
71
+ async acquire() {
72
+ if (this.running < this.max) {
73
+ this.running++;
74
+ return;
75
+ }
76
+ await new Promise(resolve => this.queue.push(resolve));
77
+ this.running++;
78
+ }
79
+ release() {
80
+ this.running--;
81
+ const next = this.queue.shift();
82
+ if (next)
83
+ next();
32
84
  }
33
85
  }
34
86
  function withTimeout(p, ms) {
@@ -37,7 +89,7 @@ function withTimeout(p, ms) {
37
89
  p.then(v => { clearTimeout(t); resolve(v); }, e => { clearTimeout(t); reject(e); });
38
90
  });
39
91
  }
40
- async function runOne(task, deps, sources, fails) {
92
+ async function runOne(task, deps, sources, fails, semaphores) {
41
93
  if (!isAdapterEnabled(task.kind, deps.enabledAdapters)) {
42
94
  fails.push({
43
95
  source: TASK_TO_GROUP[task.kind],
@@ -47,12 +99,21 @@ async function runOne(task, deps, sources, fails) {
47
99
  return;
48
100
  }
49
101
  const queryStr = task.query;
102
+ const sem = semaphores.get(task.kind);
103
+ await sem.acquire();
50
104
  try {
51
105
  let raw;
52
106
  switch (task.kind) {
53
107
  case 'brave':
54
- raw = await withTimeout(deps.brave.search(task.query), deps.perAdapterTimeoutMs);
108
+ case 'brave_news': {
109
+ const opts = {
110
+ endpoint: task.kind === 'brave_news' ? 'news' : 'web',
111
+ freshness: task.freshness,
112
+ extraSnippets: true,
113
+ };
114
+ raw = await withTimeout(deps.brave.search(task.query, opts), deps.perAdapterTimeoutMs);
55
115
  break;
116
+ }
56
117
  case 'arxiv':
57
118
  raw = await withTimeout(deps.adapters.arxiv(task.query), deps.perAdapterTimeoutMs);
58
119
  break;
@@ -65,14 +126,30 @@ async function runOne(task, deps, sources, fails) {
65
126
  case 'gh_code':
66
127
  raw = await withTimeout(deps.adapters.github(task.query, 'code'), deps.perAdapterTimeoutMs);
67
128
  break;
129
+ case 'openalex':
130
+ raw = await withTimeout(deps.adapters.openalex(task.query), deps.perAdapterTimeoutMs);
131
+ break;
132
+ case 'crossref':
133
+ raw = await withTimeout(deps.adapters.crossref(task.query), deps.perAdapterTimeoutMs);
134
+ break;
135
+ case 'pubmed':
136
+ raw = await withTimeout(deps.adapters.pubmed(task.query), deps.perAdapterTimeoutMs);
137
+ break;
68
138
  }
69
- // Normalize each task's result to EvidenceSource[].
70
- if (task.kind === 'brave') {
139
+ if (task.kind === 'brave' || task.kind === 'brave_news') {
71
140
  const br = raw;
72
- br.results.forEach((r, i) => sources.push({
73
- source: 'brave', query: queryStr,
74
- title: r.title, url: r.url, snippet: r.snippet, rank: i,
75
- }));
141
+ br.results.forEach((r, i) => {
142
+ const snippetParts = [r.snippet];
143
+ if (r.extraSnippets)
144
+ snippetParts.push(...r.extraSnippets);
145
+ sources.push({
146
+ source: TASK_TO_GROUP[task.kind], query: queryStr,
147
+ title: r.title, url: r.url,
148
+ snippet: snippetParts.join('\n'),
149
+ publishedAt: r.pageAge,
150
+ rank: i,
151
+ });
152
+ });
76
153
  }
77
154
  else {
78
155
  const arr = raw;
@@ -89,11 +166,19 @@ async function runOne(task, deps, sources, fails) {
89
166
  reason: e.message || 'unknown',
90
167
  });
91
168
  }
169
+ finally {
170
+ sem.release();
171
+ }
92
172
  }
93
173
  export async function runOrchestrator(plan, deps) {
94
174
  const tasks = buildTasks(plan);
95
175
  const sources = [];
96
176
  const fails = [];
177
+ // Per-adapter semaphores for concurrency enforcement
178
+ const semaphores = new Map();
179
+ for (const kind of Object.keys(ADAPTER_CONCURRENCY)) {
180
+ semaphores.set(kind, new Semaphore(ADAPTER_CONCURRENCY[kind]));
181
+ }
97
182
  let cursor = 0;
98
183
  const workers = [];
99
184
  const worker = async () => {
@@ -101,7 +186,7 @@ export async function runOrchestrator(plan, deps) {
101
186
  const idx = cursor++;
102
187
  if (idx >= tasks.length)
103
188
  return;
104
- await runOne(tasks[idx], deps, sources, fails);
189
+ await runOne(tasks[idx], deps, sources, fails, semaphores);
105
190
  }
106
191
  };
107
192
  for (let i = 0; i < Math.min(deps.concurrencyCap, tasks.length); i++) {
@@ -110,4 +195,5 @@ export async function runOrchestrator(plan, deps) {
110
195
  await Promise.all(workers);
111
196
  return applyBudget(sources, fails);
112
197
  }
198
+ export { ADAPTER_CONCURRENCY };
113
199
  //# sourceMappingURL=orchestrator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../src/research/orchestrator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../src/research/orchestrator.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,19 @@
1
1
  import { z } from 'zod';
2
2
  export declare const QueryPlanSchema: z.ZodObject<{
3
- braveQueries: z.ZodArray<z.ZodString>;
3
+ braveQueries: z.ZodArray<z.ZodObject<{
4
+ q: z.ZodString;
5
+ freshness: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
6
+ pd: "pd";
7
+ pw: "pw";
8
+ pm: "pm";
9
+ py: "py";
10
+ }>, z.ZodString]>>;
11
+ endpoint: z.ZodDefault<z.ZodEnum<{
12
+ web: "web";
13
+ news: "news";
14
+ }>>;
15
+ siteFilter: z.ZodOptional<z.ZodString>;
16
+ }, z.core.$strip>>;
4
17
  arxivQueries: z.ZodArray<z.ZodString>;
5
18
  semanticScholarQueries: z.ZodArray<z.ZodString>;
6
19
  githubQueries: z.ZodArray<z.ZodObject<{
@@ -10,6 +23,9 @@ export declare const QueryPlanSchema: z.ZodObject<{
10
23
  repo: "repo";
11
24
  }>;
12
25
  }, z.core.$strip>>;
26
+ openalexQueries: z.ZodDefault<z.ZodArray<z.ZodString>>;
27
+ crossrefQueries: z.ZodDefault<z.ZodArray<z.ZodString>>;
28
+ pubmedQueries: z.ZodDefault<z.ZodArray<z.ZodString>>;
13
29
  }, z.core.$strict>;
14
30
  export type QueryPlan = z.infer<typeof QueryPlanSchema>;
15
31
  export declare function parseQueryPlan(json: string): QueryPlan;
@@ -1 +1 @@
1
- {"version":3,"file":"query-plan.d.ts","sourceRoot":"","sources":["../../src/research/query-plan.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,eAAO,MAAM,eAAe;;;;;;;;;;;kBAQjB,CAAC;AAEZ,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAExD,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAYtD"}
1
+ {"version":3,"file":"query-plan.d.ts","sourceRoot":"","sources":["../../src/research/query-plan.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAexB,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAWjB,CAAC;AAEZ,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAExD,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAYtD"}
@@ -1,16 +1,26 @@
1
- // Zod schema for the structured output the worker emits in turn 1.
2
- // Bounds: 0..8 entries per query list, ≤ 200 chars per query.
3
1
  import { z } from 'zod';
4
2
  const Query200 = z.string().min(1).max(200);
5
3
  const Queries = z.array(Query200).max(8);
4
+ const BraveQuery = z.object({
5
+ q: Query200,
6
+ freshness: z.union([
7
+ z.enum(['pd', 'pw', 'pm', 'py']),
8
+ z.string().regex(/^\d{4}-\d{2}-\d{2}to\d{4}-\d{2}-\d{2}$/),
9
+ ]).optional(),
10
+ endpoint: z.enum(['web', 'news']).default('web'),
11
+ siteFilter: z.string().max(100).optional(),
12
+ });
6
13
  export const QueryPlanSchema = z.object({
7
- braveQueries: Queries,
14
+ braveQueries: z.array(BraveQuery).max(8),
8
15
  arxivQueries: Queries,
9
16
  semanticScholarQueries: Queries,
10
17
  githubQueries: z.array(z.object({
11
18
  q: Query200,
12
19
  kind: z.enum(['repo', 'code']),
13
20
  })).max(8),
21
+ openalexQueries: Queries.default([]),
22
+ crossrefQueries: Queries.default([]),
23
+ pubmedQueries: Queries.default([]),
14
24
  }).strict();
15
25
  export function parseQueryPlan(json) {
16
26
  let raw;
@@ -1 +1 @@
1
- {"version":3,"file":"query-plan.js","sourceRoot":"","sources":["../../src/research/query-plan.ts"],"names":[],"mappings":"AAAA,mEAAmE;AACnE,8DAA8D;AAC9D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,QAAQ,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC5C,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAEzC,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,YAAY,EAAY,OAAO;IAC/B,YAAY,EAAY,OAAO;IAC/B,sBAAsB,EAAE,OAAO;IAC/B,aAAa,EAAW,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;QACvC,CAAC,EAAK,QAAQ;QACd,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAC/B,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;CACX,CAAC,CAAC,MAAM,EAAE,CAAC;AAIZ,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,IAAI,GAAY,CAAC;IACjB,IAAI,CAAC;QACH,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,gCAAiC,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;IAC1E,CAAC;IACD,MAAM,CAAC,GAAG,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IACzC,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IAC5E,CAAC;IACD,OAAO,CAAC,CAAC,IAAI,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"query-plan.js","sourceRoot":"","sources":["../../src/research/query-plan.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,QAAQ,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAC5C,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAEzC,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC;IAC1B,CAAC,EAAW,QAAQ;IACpB,SAAS,EAAG,CAAC,CAAC,KAAK,CAAC;QAClB,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAChC,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,wCAAwC,CAAC;KAC3D,CAAC,CAAC,QAAQ,EAAE;IACb,QAAQ,EAAI,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC;IAClD,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE;CAC3C,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,YAAY,EAAY,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAClD,YAAY,EAAY,OAAO;IAC/B,sBAAsB,EAAE,OAAO;IAC/B,aAAa,EAAW,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;QACvC,CAAC,EAAK,QAAQ;QACd,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KAC/B,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACV,eAAe,EAAS,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;IAC3C,eAAe,EAAS,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;IAC3C,aAAa,EAAW,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;CAC5C,CAAC,CAAC,MAAM,EAAE,CAAC;AAIZ,MAAM,UAAU,cAAc,CAAC,IAAY;IACzC,IAAI,GAAY,CAAC;IACjB,IAAI,CAAC;QACH,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,gCAAiC,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;IAC1E,CAAC;IACD,MAAM,CAAC,GAAG,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IACzC,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IAC5E,CAAC;IACD,OAAO,CAAC,CAAC,IAAI,CAAC;AAChB,CAAC"}
@@ -1,8 +1,15 @@
1
1
  import type { ResearchConfig } from '../config/schema.js';
2
+ export interface BraveSearchOptions {
3
+ freshness?: string;
4
+ endpoint?: 'web' | 'news';
5
+ extraSnippets?: boolean;
6
+ }
2
7
  export interface BraveSearchResult {
3
8
  title: string;
4
9
  url: string;
5
10
  snippet: string;
11
+ pageAge?: string;
12
+ extraSnippets?: string[];
6
13
  }
7
14
  export interface BraveSearchResponse {
8
15
  results: BraveSearchResult[];
@@ -24,6 +31,6 @@ export declare class BraveClient {
24
31
  random?: () => number;
25
32
  });
26
33
  private takeKeySlot;
27
- search(query: string, siteFilter?: string): Promise<BraveSearchResponse>;
34
+ search(query: string, options?: BraveSearchOptions): Promise<BraveSearchResponse>;
28
35
  }
29
36
  //# sourceMappingURL=web-search.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"web-search.d.ts","sourceRoot":"","sources":["../../src/research/web-search.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D,MAAM,WAAW,iBAAiB;IAAG,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;CAAE;AACnF,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC,CAAC;CACjE;AAsBD,qBAAa,WAAW;IAoBpB,OAAO,CAAC,QAAQ,CAAC,GAAG;IAnBtB,OAAO,CAAC,YAAY,CAAK;IAKzB,OAAO,CAAC,aAAa,CAAgB;IAOrC,OAAO,CAAC,SAAS,CAAoC;IAGrD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgC;IACvD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAe;gBAGpB,GAAG,EAAE,cAAc,CAAC,OAAO,CAAC,EAC7C,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,MAAM,CAAA;KAAE;YAY3D,WAAW;IA2BnB,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;CAgF/E"}
1
+ {"version":3,"file":"web-search.d.ts","sourceRoot":"","sources":["../../src/research/web-search.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D,MAAM,WAAW,kBAAkB;IACjC,SAAS,CAAC,EAAM,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAO,KAAK,GAAG,MAAM,CAAC;IAC/B,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AACD,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B;AACD,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC,CAAC;CACjE;AA2BD,qBAAa,WAAW;IAoBpB,OAAO,CAAC,QAAQ,CAAC,GAAG;IAnBtB,OAAO,CAAC,YAAY,CAAK;IAKzB,OAAO,CAAC,aAAa,CAAgB;IAOrC,OAAO,CAAC,SAAS,CAAoC;IAGrD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgC;IACvD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAe;gBAGpB,GAAG,EAAE,cAAc,CAAC,OAAO,CAAC,EAC7C,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,MAAM,CAAA;KAAE;YAY3D,WAAW;IA2BnB,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,mBAAmB,CAAC;CAwFxF"}
@@ -15,10 +15,15 @@ function validateBraveResults(body) {
15
15
  return { title: `[invalid entry ${i}]`, url: '', snippet: '' };
16
16
  }
17
17
  const item = r;
18
+ const extraSnippets = Array.isArray(item.extra_snippets)
19
+ ? item.extra_snippets.filter((s) => typeof s === 'string')
20
+ : undefined;
18
21
  return {
19
22
  title: typeof item.title === 'string' ? item.title : `[missing title ${i}]`,
20
23
  url: typeof item.url === 'string' ? item.url : '',
21
24
  snippet: typeof item.snippet === 'string' ? item.snippet : '',
25
+ pageAge: typeof item.page_age === 'string' ? item.page_age : undefined,
26
+ extraSnippets: extraSnippets && extraSnippets.length > 0 ? extraSnippets : undefined,
22
27
  };
23
28
  });
24
29
  }
@@ -77,13 +82,20 @@ export class BraveClient {
77
82
  release();
78
83
  }
79
84
  }
80
- async search(query, siteFilter) {
85
+ async search(query, options) {
81
86
  if (this.cfg.apiKeys.length === 0) {
82
87
  throw new Error('brave_not_configured: no API keys configured');
83
88
  }
84
- const url = new URL('https://api.search.brave.com/res/v1/web/search');
85
- url.searchParams.set('q', siteFilter ? `${siteFilter} ${query}` : query);
86
- url.searchParams.set('count', String(this.cfg.maxResultsPerQuery));
89
+ const endpoint = options?.endpoint ?? 'web';
90
+ const basePath = endpoint === 'news' ? '/res/v1/news/search' : '/res/v1/web/search';
91
+ const count = endpoint === 'news' ? 50 : 20;
92
+ const url = new URL(`https://api.search.brave.com${basePath}`);
93
+ url.searchParams.set('q', query);
94
+ url.searchParams.set('count', String(count));
95
+ if (options?.freshness) {
96
+ url.searchParams.set('freshness', options.freshness);
97
+ }
98
+ url.searchParams.set('extra_snippets', 'true');
87
99
  const maxAttempts = Math.min(this.cfg.apiKeys.length, 4);
88
100
  const attempts = [];
89
101
  const deadline = Date.now() + this.cfg.timeoutMs;
@@ -1 +1 @@
1
- {"version":3,"file":"web-search.js","sourceRoot":"","sources":["../../src/research/web-search.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"web-search.js","sourceRoot":"","sources":["../../src/research/web-search.ts"],"names":[],"mappings":"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"}
@@ -24,6 +24,8 @@ export interface PipelineInput {
24
24
  implementerGoal?: string;
25
25
  /** Goal condition for the reviewer. */
26
26
  reviewerGoal?: string;
27
+ /** EnvelopeBus for provider-level event streaming (stderr + JSONL + telemetry). */
28
+ bus?: object;
27
29
  }
28
30
  export interface SessionInfo {
29
31
  tier: AgentType;
@@ -1 +1 @@
1
- {"version":3,"file":"two-phase-pipeline.d.ts","sourceRoot":"","sources":["../../src/unified/two-phase-pipeline.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAW,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAC5E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,EAAuB,KAAK,cAAc,EAAE,MAAM,6BAA6B,CAAC;AACvF,OAAO,EAAmB,KAAK,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE3E,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,QAAQ,CAAC;IACf,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,mBAAmB,EAAE,QAAQ,CAAC;IAC9B,gBAAgB,EAAE,QAAQ,CAAC;IAC3B,eAAe,EAAE,SAAS,CAAC;IAC3B,YAAY,EAAE,SAAS,CAAC;IACxB,YAAY,EAAE,UAAU,GAAG,MAAM,CAAC;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,aAAa,EAAE,aAAa,CAAC;IAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8EAA8E;IAC9E,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,uCAAuC;IACvC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,SAAS,CAAC;IAChB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,GAAG,oBAAoB,GAAG,QAAQ,CAAC;IACjD,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,UAAU,CAAC;IAC5B,cAAc,EAAE,cAAc,GAAG,IAAI,CAAC;IACtC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,YAAY,EAAE,UAAU,GAAG,IAAI,CAAC;IAChC,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,QAAQ,EAAE;QACR,WAAW,EAAE,WAAW,CAAC;QACzB,QAAQ,EAAE,WAAW,GAAG,IAAI,CAAC;KAC9B,CAAC;IACF,IAAI,EAAE;QACJ,cAAc,EAAE,MAAM,CAAC;QACvB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;KAC5B,CAAC;IACF,QAAQ,EAAE,YAAY,GAAG,IAAI,CAAC;CAC/B;AAED,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC,CAsGvF"}
1
+ {"version":3,"file":"two-phase-pipeline.d.ts","sourceRoot":"","sources":["../../src/unified/two-phase-pipeline.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAW,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAC5E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,EAAuB,KAAK,cAAc,EAAE,MAAM,6BAA6B,CAAC;AACvF,OAAO,EAAmB,KAAK,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE3E,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,QAAQ,CAAC;IACf,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,mBAAmB,EAAE,QAAQ,CAAC;IAC9B,gBAAgB,EAAE,QAAQ,CAAC;IAC3B,eAAe,EAAE,SAAS,CAAC;IAC3B,YAAY,EAAE,SAAS,CAAC;IACxB,YAAY,EAAE,UAAU,GAAG,MAAM,CAAC;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,aAAa,EAAE,aAAa,CAAC;IAC7B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8EAA8E;IAC9E,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,uCAAuC;IACvC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,mFAAmF;IACnF,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,SAAS,CAAC;IAChB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,eAAe,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,GAAG,oBAAoB,GAAG,QAAQ,CAAC;IACjD,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,UAAU,CAAC;IAC5B,cAAc,EAAE,cAAc,GAAG,IAAI,CAAC;IACtC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,YAAY,EAAE,UAAU,GAAG,IAAI,CAAC;IAChC,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,QAAQ,EAAE;QACR,WAAW,EAAE,WAAW,CAAC;QACzB,QAAQ,EAAE,WAAW,GAAG,IAAI,CAAC;KAC9B,CAAC;IACF,IAAI,EAAE;QACJ,cAAc,EAAE,MAAM,CAAC;QACvB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;KAC5B,CAAC;IACF,QAAQ,EAAE,YAAY,GAAG,IAAI,CAAC;CAC/B;AAED,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,cAAc,CAAC,CAmHvF"}
@@ -13,6 +13,16 @@ export async function runTwoPhasePipeline(input) {
13
13
  effectiveCwd = created.path;
14
14
  wtInfo = { branch: created.branch, path: created.path };
15
15
  }
16
+ // --- Rewrite file paths in the payload to use the worktree cwd ---
17
+ // When a worktree is active, the taskPayload may contain absolute paths
18
+ // referencing the original cwd (e.g. plan file paths). The implementer's
19
+ // session cwd is the worktree, so it will infer the repo root from those
20
+ // paths and write files to the original repo instead of the worktree.
21
+ // Rewriting the paths removes this ambiguity.
22
+ let effectivePayload = input.taskPayload;
23
+ if (effectiveCwd !== input.cwd) {
24
+ effectivePayload = input.taskPayload.replaceAll(input.cwd, effectiveCwd);
25
+ }
16
26
  const sessions = [];
17
27
  // --- Worktree cleanup helper ---
18
28
  const resolveWorktree = async () => {
@@ -32,9 +42,10 @@ export async function runTwoPhasePipeline(input) {
32
42
  abortSignal: ac.signal,
33
43
  taskId: input.taskId ?? 'pipeline',
34
44
  taskIndex: 0,
45
+ bus: input.bus,
35
46
  });
36
47
  sessions.push(implSession);
37
- const implPrompt = `${input.implementerSkill}\n\n---\n\n## Task\n\n${input.taskPayload}`;
48
+ const implPrompt = `${input.implementerSkill}\n\n---\n\n## Task\n\n${effectivePayload}`;
38
49
  const implTurn = await implSession.send(implPrompt, {
39
50
  ...(input.implementerGoal && { goalCondition: input.implementerGoal }),
40
51
  });
@@ -63,6 +74,7 @@ export async function runTwoPhasePipeline(input) {
63
74
  abortSignal: ac.signal,
64
75
  taskId: input.taskId ?? 'pipeline',
65
76
  taskIndex: 1,
77
+ bus: input.bus,
66
78
  });
67
79
  sessions.push(revSession);
68
80
  const revPrompt = `${input.reviewerSkill}\n\n---\n\n## Implementer Output\n\n${implTurn.output}`;
@@ -1 +1 @@
1
- {"version":3,"file":"two-phase-pipeline.js","sourceRoot":"","sources":["../../src/unified/two-phase-pipeline.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"two-phase-pipeline.js","sourceRoot":"","sources":["../../src/unified/two-phase-pipeline.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zhixuan92/multi-model-agent-core",
3
- "version": "5.2.2",
3
+ "version": "5.3.1",
4
4
  "type": "module",
5
5
  "license": "MIT",
6
6
  "description": "Core library for multi-model-agent: provider runners (Claude, Codex, OpenAI-compatible), routing logic, config schema, and tool/sandbox primitives.",
@@ -89,10 +89,6 @@
89
89
  "types": "./dist/events/stderr-log-subscriber.d.ts",
90
90
  "import": "./dist/events/stderr-log-subscriber.js"
91
91
  },
92
- "./bounded-execution/file-artifact-check": {
93
- "types": "./dist/bounded-execution/file-artifact-check.d.ts",
94
- "import": "./dist/bounded-execution/file-artifact-check.js"
95
- },
96
92
  "./events/consent-rules": {
97
93
  "types": "./dist/events/consent-rules.d.ts",
98
94
  "import": "./dist/events/consent-rules.js"
@@ -4,7 +4,7 @@ You search a project's learnings journal at `.mmagent/journal/` to answer a conc
4
4
 
5
5
  ## Why This Exists
6
6
 
7
- mma-journal-recall is the read side of the learnings graph. The caller is about to design or attempt something and wants to know what THIS project already learned. Your output replaces their own journal search — they will take your synthesis at face value and use it to avoid re-treading ground already explored.
7
+ mma-journal-recall is the read side of the team knowledge graph. The caller is about to design, attempt, or decide something and wants to know what THIS project already learned — decisions made, design rationale, user behavior patterns, process learnings, research findings, and style conventions. Your output replaces their own journal search — they will take your synthesis at face value and use it to avoid re-treading ground already explored.
8
8
 
9
9
  **Completion test:** would the caller, reading your synthesis and the cited nodes, reach the same conclusion if they searched the journal themselves — or would they find relevant nodes you missed, or nodes you cited that do not actually say what you claimed?
10
10
 
@@ -12,7 +12,7 @@ mma-journal-recall is the read side of the learnings graph. The caller is about
12
12
 
13
13
  Apply ALL perspectives regardless of the question. Each may yield candidate answers:
14
14
 
15
- 1. **KEYWORD-MATCH** — Read `index.md` (or list `nodes/`), then open nodes whose title/tags/body share the query's key terms. Your candidate answers are those nodes, each cited with its id, status, and the lesson that answers the query.
15
+ 1. **KEYWORD-MATCH** — Read `index.md` (or list `nodes/`), then open nodes whose title/tags/body/category share the query's key terms. When the query targets a specific knowledge type (e.g., "what conventions do we follow" → `style` category, "how does the user prefer to work" → `behavior` category), prioritize nodes in that category. Your candidate answers are those nodes, each cited with its id, category, status, and the lesson that answers the query.
16
16
 
17
17
  2. **GRAPH-NEIGHBORHOOD** — From the nodes that match the query, follow `refines`/`depends-on`/`parent` edges and supersedes chains (to the current head) to gather connected context. Your candidate answers are the neighborhood nodes that explain or qualify the direct matches.
18
18
 
@@ -56,5 +56,5 @@ Before finishing, verify:
56
56
  Output exactly one JSON block:
57
57
 
58
58
  ```json
59
- {"results": [{"learning": "<lesson from node>", "context": "<surrounding edges and related nodes>", "relevance": "critical|high|medium|low", "nodeId": "<id>", "nodePath": "<file path>", "status": "<adopted|dropped|inconclusive|superseded>"}], "summary": "<synthesis answering the query, naming how nodes relate>"}
59
+ {"results": [{"learning": "<lesson from node>", "context": "<surrounding edges and related nodes>", "relevance": "critical|high|medium|low", "nodeId": "<id>", "nodePath": "<file path>", "category": "<decision|design|behavior|process|knowledge|style>", "status": "<adopted|dropped|inconclusive|superseded>"}], "summary": "<synthesis answering the query, naming how nodes relate>"}
60
60
  ```
@@ -20,6 +20,7 @@ Every cited node must be real and correctly quoted:
20
20
  - Was each cited node actually read this session, or is the citation from memory/hallucination?
21
21
  - Does the `learning` field accurately represent what the node says, or has it been paraphrased beyond recognition?
22
22
  - Is the `status` field correct for each cited node?
23
+ - Is the `category` field correct for each cited node (matches the node's frontmatter)?
23
24
 
24
25
  Remove findings that cite non-existent or unread nodes. This is the highest-priority check.
25
26
 
@@ -4,7 +4,7 @@ You maintain a project's learnings journal at `.mmagent/journal/`. Integrate one
4
4
 
5
5
  ## Why This Exists
6
6
 
7
- The journal is a persistent graph of project learnings — decisions, constraints, patterns, and mistakes. Each learning is a node with typed edges to related nodes. The graph survives across sessions so future work can recall what this project already learned. Your job is to integrate new learnings while maintaining graph integrity.
7
+ The journal is a persistent graph of team knowledge — decisions, design rationale, user behavior patterns, process learnings, research findings, and style conventions. Each entry is a categorized node with typed edges to related nodes. The graph survives across sessions so future work can recall what this project already learned. Your job is to integrate new entries while maintaining graph integrity.
8
8
 
9
9
  ## Integration Procedure
10
10
 
@@ -20,9 +20,9 @@ Process learnings IN ORDER (learningIndex 0, 1, 2, ...). For EACH learning:
20
20
  - **merge**: adds no new causal claim/constraint/consequence. Fold into the existing node.
21
21
  - **create**: matches no existing node.
22
22
 
23
- 4. **Write node files** as `nodes/<id>-<kebab-title>.md` with YAML frontmatter (`id`, `title`, `status`, `tags` [lowercase-kebab], `date`, `links` [typed edges], `supersededBy`) + `## Context` and `## Consequences`. id = max(existing)+1, zero-padded 4 digits (collision-free because you integrate strictly in order).
23
+ 4. **Write node files** as `nodes/<id>-<kebab-title>.md` with YAML frontmatter (`id`, `title`, `category`, `status`, `tags` [lowercase-kebab], `date`, `links` [typed edges], `supersededBy`) + `## Context` and `## Consequences`. id = max(existing)+1, zero-padded 4 digits (collision-free because you integrate strictly in order).
24
24
 
25
- 5. **Update catalog.** Append ONE `log.md` line (`<ISO-8601 date> <op> <id> <title>`), then update `index.md` (table: id | date | status | title | tags, sorted by id asc). FLUSH all writes for this learning to disk BEFORE starting the next learning.
25
+ 5. **Update catalog.** Append ONE `log.md` line (`<ISO-8601 date> <op> <id> <title>`), then update `index.md` (table: id | date | category | status | title | tags, sorted by id asc). FLUSH all writes for this learning to disk BEFORE starting the next learning.
26
26
 
27
27
  6. **Handle failures.** If a single learning cannot be integrated, record it in `failed` (see report format) and CONTINUE to the next learning — do not abort the batch.
28
28
 
@@ -34,8 +34,24 @@ Process learnings IN ORDER (learningIndex 0, 1, 2, ...). For EACH learning:
34
34
 
35
35
  - **Edge types** (only): `supersedes`, `refines`, `relates`, `depends-on`, `contradicts`, `parent`.
36
36
  - **Status values** (only): `adopted`, `dropped`, `inconclusive`, `superseded`.
37
+ - **Category values** (only): `decision`, `design`, `behavior`, `process`, `knowledge`, `style`.
37
38
 
38
- Do not invent edge types or status values outside this vocabulary.
39
+ Do not invent edge types, status values, or categories outside these vocabularies.
40
+
41
+ ## Category Classification
42
+
43
+ Every node MUST have a `category` field. Classify based on what the entry captures:
44
+
45
+ | Category | Signal words / patterns | `## Context` describes | `## Consequences` describes |
46
+ |----------|------------------------|------------------------|---------------------------|
47
+ | `decision` | tried, dropped, chose, trade-off, instead | What was tried and what happened | What to do instead, when this applies |
48
+ | `design` | architecture, pattern, why, rationale, layer | Why the system is structured this way | Constraints this creates, what breaks if violated |
49
+ | `behavior` | user, workflow, prefers, communication, style | What the user/team does and when | How to adapt, what to expect |
50
+ | `process` | SDLC, phase, audit, pipeline, release, gate | How the process works, what was observed | When to use this process, what to watch for |
51
+ | `knowledge` | found, API, library, feasibility, ecosystem | What was discovered, the evidence | How to apply it, where it's relevant |
52
+ | `style` | convention, naming, format, documentation | What the convention is, where it applies | When to follow it, exceptions |
53
+
54
+ When an entry spans categories (e.g., a design decision informed by user behavior), pick the **primary** category and use `relates` edges to connect to nodes in the other category.
39
55
 
40
56
  ## Trust Boundary
41
57
 
@@ -24,10 +24,12 @@ Reclassify when the existing graph contradicts the chosen operation.
24
24
 
25
25
  ### 3. Node Quality
26
26
 
27
- - Does each node have correct YAML frontmatter (`id`, `title`, `status`, `tags`, `date`, `links`)?
27
+ - Does each node have correct YAML frontmatter (`id`, `title`, `category`, `status`, `tags`, `date`, `links`)?
28
+ - Is the `category` field one of the fixed enum values: `decision`, `design`, `behavior`, `process`, `knowledge`, `style`?
29
+ - Does the category match the content? A `decision` has a trade-off outcome; a `behavior` describes a user/team pattern; a `knowledge` states a factual finding; etc.
28
30
  - Does each node have `## Context` and `## Consequences` sections?
29
31
  - Are tags lowercase-kebab format?
30
- - Is the node body an actionable lesson (not just an observation)? A good learning states what to do differently; a mere observation ("X happened") is not actionable.
32
+ - Is the node body actionable (not just an observation)? Every category should state what to do with the knowledge — a `behavior` says how to adapt; a `knowledge` says how to apply it; a `decision` says what to do instead.
31
33
  - Are secrets/credentials redacted from recorded content?
32
34
 
33
35
  ### 4. Catalog Consistency
@@ -51,8 +53,9 @@ Reclassify when the existing graph contradicts the chosen operation.
51
53
 
52
54
  - Reclassify operations when the existing graph contradicts the chosen op.
53
55
  - Fix edge types that use non-vocabulary terms.
56
+ - Fix missing or incorrect `category` fields.
54
57
  - Add missing `supersededBy` links on superseded nodes.
55
- - Flag learnings recorded as observations rather than actionable lessons.
58
+ - Flag entries recorded as observations rather than actionable knowledge.
56
59
  - Report any writes outside `.mmagent/journal/`.
57
60
  - Fix catalog inconsistencies (missing index entries, out-of-order sorting).
58
61