@sdsrs/codeagent 0.1.0 → 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 (62) hide show
  1. package/README.md +211 -67
  2. package/dist/adapters/code-graph.d.ts.map +1 -1
  3. package/dist/adapters/code-graph.js +53 -71
  4. package/dist/adapters/code-graph.js.map +1 -1
  5. package/dist/adapters/memory.d.ts +0 -1
  6. package/dist/adapters/memory.d.ts.map +1 -1
  7. package/dist/adapters/memory.js +20 -50
  8. package/dist/adapters/memory.js.map +1 -1
  9. package/dist/adapters/orchestration/gsd.d.ts +6 -1
  10. package/dist/adapters/orchestration/gsd.d.ts.map +1 -1
  11. package/dist/adapters/orchestration/gsd.js +23 -20
  12. package/dist/adapters/orchestration/gsd.js.map +1 -1
  13. package/dist/broker/broker.d.ts +4 -2
  14. package/dist/broker/broker.d.ts.map +1 -1
  15. package/dist/broker/broker.js +92 -32
  16. package/dist/broker/broker.js.map +1 -1
  17. package/dist/broker/compressor.d.ts +4 -1
  18. package/dist/broker/compressor.d.ts.map +1 -1
  19. package/dist/broker/compressor.js +52 -11
  20. package/dist/broker/compressor.js.map +1 -1
  21. package/dist/cli/commands/chat.js +15 -36
  22. package/dist/cli/commands/chat.js.map +1 -1
  23. package/dist/cli/commands/config.d.ts.map +1 -1
  24. package/dist/cli/commands/config.js +10 -2
  25. package/dist/cli/commands/config.js.map +1 -1
  26. package/dist/cli/commands/memory.d.ts.map +1 -1
  27. package/dist/cli/commands/memory.js +11 -16
  28. package/dist/cli/commands/memory.js.map +1 -1
  29. package/dist/cli/commands/search.js +7 -7
  30. package/dist/cli/commands/search.js.map +1 -1
  31. package/dist/hooks/post-compact.d.ts +15 -0
  32. package/dist/hooks/post-compact.d.ts.map +1 -0
  33. package/dist/hooks/post-compact.js +57 -0
  34. package/dist/hooks/post-compact.js.map +1 -0
  35. package/dist/hooks/session-start.js +1 -1
  36. package/dist/hooks/session-start.js.map +1 -1
  37. package/dist/hooks/stop.js +9 -12
  38. package/dist/hooks/stop.js.map +1 -1
  39. package/dist/hooks/user-prompt.js +1 -1
  40. package/dist/hooks/user-prompt.js.map +1 -1
  41. package/dist/providers/anthropic-api.d.ts +2 -1
  42. package/dist/providers/anthropic-api.d.ts.map +1 -1
  43. package/dist/providers/anthropic-api.js +14 -8
  44. package/dist/providers/anthropic-api.js.map +1 -1
  45. package/dist/providers/claude-cli.d.ts.map +1 -1
  46. package/dist/providers/claude-cli.js +19 -15
  47. package/dist/providers/claude-cli.js.map +1 -1
  48. package/dist/providers/claude-sdk.d.ts.map +1 -1
  49. package/dist/providers/claude-sdk.js +9 -2
  50. package/dist/providers/claude-sdk.js.map +1 -1
  51. package/dist/scripts/install-hooks.js +9 -3
  52. package/dist/scripts/install-hooks.js.map +1 -1
  53. package/dist/session/manager.d.ts.map +1 -1
  54. package/dist/session/manager.js +2 -1
  55. package/dist/session/manager.js.map +1 -1
  56. package/dist/utils/exec.d.ts +3 -2
  57. package/dist/utils/exec.d.ts.map +1 -1
  58. package/dist/utils/exec.js +7 -6
  59. package/dist/utils/exec.js.map +1 -1
  60. package/package.json +4 -4
  61. package/src/skills/remember.md +40 -0
  62. package/src/skills/spec.md +37 -0
@@ -1,84 +1,56 @@
1
1
  import { execSafe } from '../utils/exec.js';
2
2
  import { truncateToTokenBudget } from '../utils/tokens.js';
3
- /**
4
- * Determine which memory types to search based on the current stage.
5
- */
3
+ const MEM = 'claude-mem-lite';
6
4
  function getSearchTypes(stage) {
7
5
  switch (stage) {
8
- case 'brainstorm':
9
- return ['decision', 'discovery'];
10
- case 'plan':
11
- return ['decision', 'discovery', 'task'];
12
- case 'implement':
13
- return ['bugfix', 'decision'];
14
- case 'review':
15
- return ['bugfix'];
16
- case 'debug':
17
- return ['bugfix', 'discovery'];
18
- default:
19
- return []; // empty = search all types
6
+ case 'brainstorm': return ['decision', 'discovery'];
7
+ case 'plan': return ['decision', 'discovery', 'task'];
8
+ case 'implement': return ['bugfix', 'decision'];
9
+ case 'review': return ['bugfix'];
10
+ case 'debug': return ['bugfix', 'discovery'];
11
+ default: return [];
20
12
  }
21
13
  }
22
14
  /**
23
15
  * Query memory engine via claude-mem-lite CLI.
24
- * Searches for relevant memories based on query and stage.
25
16
  */
26
17
  export async function queryMemory(parsed, tokenBudget, stage) {
27
- const result = {
28
- memories: [],
29
- bugWarnings: [],
30
- raw: '',
31
- };
18
+ const result = { memories: [], bugWarnings: [], raw: '' };
32
19
  const searchQuery = [...parsed.symbols, ...parsed.keywords.slice(0, 3)].join(' ');
33
20
  if (!searchQuery)
34
21
  return result;
35
22
  const types = getSearchTypes(stage);
36
23
  const allRaw = [];
37
- try {
38
- if (types.length === 0) {
39
- // Search all types
40
- const { stdout, ok } = execSafe(`claude-mem-lite search "${searchQuery}" --limit 8`, { timeout: 2000 });
41
- if (ok && stdout)
42
- allRaw.push(stdout);
43
- }
44
- else {
45
- // Search each type separately (in parallel we'd Promise.all, but using CLI so sequential)
46
- for (const type of types.slice(0, 2)) {
47
- const { stdout, ok } = execSafe(`claude-mem-lite search "${searchQuery}" --type ${type} --limit 5`, { timeout: 2000 });
48
- if (ok && stdout)
49
- allRaw.push(stdout);
50
- }
51
- }
52
- // Also always search for bug warnings (high priority)
53
- if (!types.includes('bugfix')) {
54
- const { stdout, ok } = execSafe(`claude-mem-lite search "${searchQuery}" --type bugfix --limit 3`, { timeout: 2000 });
24
+ if (types.length === 0) {
25
+ const { stdout, ok } = execSafe(MEM, ['search', searchQuery, '--limit', '8'], { timeout: 2000 });
26
+ if (ok && stdout)
27
+ allRaw.push(stdout);
28
+ }
29
+ else {
30
+ for (const type of types.slice(0, 2)) {
31
+ const { stdout, ok } = execSafe(MEM, ['search', searchQuery, '--type', type, '--limit', '5'], { timeout: 2000 });
55
32
  if (ok && stdout)
56
33
  allRaw.push(stdout);
57
34
  }
58
35
  }
59
- catch {
60
- // Graceful degradation
36
+ if (!types.includes('bugfix')) {
37
+ const { stdout, ok } = execSafe(MEM, ['search', searchQuery, '--type', 'bugfix', '--limit', '3'], { timeout: 2000 });
38
+ if (ok && stdout)
39
+ allRaw.push(stdout);
61
40
  }
62
41
  result.raw = allRaw.join('\n---\n');
63
- // Truncate to budget
64
42
  if (result.raw) {
65
43
  result.raw = truncateToTokenBudget(result.raw, tokenBudget);
66
44
  }
67
- // Parse raw into structured entries
68
45
  const entries = parseMemoryEntries(result.raw);
69
46
  result.memories = entries.filter((e) => e.type !== 'bugfix');
70
47
  result.bugWarnings = entries.filter((e) => e.type === 'bugfix');
71
48
  return result;
72
49
  }
73
- // --- Parse memory search output ---
74
50
  function parseMemoryEntries(raw) {
75
51
  if (!raw)
76
52
  return [];
77
53
  const entries = [];
78
- // claude-mem-lite search output format varies, but typically:
79
- // [ID] [type] title
80
- // body text...
81
- // ---
82
54
  const blocks = raw.split(/(?:^|\n)---\n/);
83
55
  for (const block of blocks) {
84
56
  const trimmed = block.trim();
@@ -86,7 +58,6 @@ function parseMemoryEntries(raw) {
86
58
  continue;
87
59
  const lines = trimmed.split('\n');
88
60
  const firstLine = lines[0] || '';
89
- // Try to parse structured format: "#123 [bugfix] Title here"
90
61
  const match = firstLine.match(/^#?(\d+)\s*\[(\w+)]\s*(.+)/);
91
62
  if (match) {
92
63
  entries.push({
@@ -97,7 +68,6 @@ function parseMemoryEntries(raw) {
97
68
  });
98
69
  }
99
70
  else {
100
- // Fallback: treat as unstructured
101
71
  entries.push({
102
72
  type: 'semantic',
103
73
  title: firstLine.slice(0, 100),
@@ -1 +1 @@
1
- {"version":3,"file":"memory.js","sourceRoot":"","sources":["../../src/adapters/memory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAU3D;;GAEG;AACH,SAAS,cAAc,CAAC,KAAa;IACnC,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,YAAY;YACf,OAAO,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;QACnC,KAAK,MAAM;YACT,OAAO,CAAC,UAAU,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;QAC3C,KAAK,WAAW;YACd,OAAO,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAChC,KAAK,QAAQ;YACX,OAAO,CAAC,QAAQ,CAAC,CAAC;QACpB,KAAK,OAAO;YACV,OAAO,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;QACjC;YACE,OAAO,EAAE,CAAC,CAAC,2BAA2B;IAC1C,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,MAAmB,EACnB,WAAmB,EACnB,KAAa;IAEb,MAAM,MAAM,GAAiB;QAC3B,QAAQ,EAAE,EAAE;QACZ,WAAW,EAAE,EAAE;QACf,GAAG,EAAE,EAAE;KACR,CAAC;IAEF,MAAM,WAAW,GAAG,CAAC,GAAG,MAAM,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAClF,IAAI,CAAC,WAAW;QAAE,OAAO,MAAM,CAAC;IAEhC,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IACpC,MAAM,MAAM,GAAa,EAAE,CAAC;IAE5B,IAAI,CAAC;QACH,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,mBAAmB;YACnB,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,QAAQ,CAC7B,2BAA2B,WAAW,aAAa,EACnD,EAAE,OAAO,EAAE,IAAI,EAAE,CAClB,CAAC;YACF,IAAI,EAAE,IAAI,MAAM;gBAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACxC,CAAC;aAAM,CAAC;YACN,0FAA0F;YAC1F,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;gBACrC,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,QAAQ,CAC7B,2BAA2B,WAAW,YAAY,IAAI,YAAY,EAClE,EAAE,OAAO,EAAE,IAAI,EAAE,CAClB,CAAC;gBACF,IAAI,EAAE,IAAI,MAAM;oBAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACxC,CAAC;QACH,CAAC;QAED,sDAAsD;QACtD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC9B,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,QAAQ,CAC7B,2BAA2B,WAAW,2BAA2B,EACjE,EAAE,OAAO,EAAE,IAAI,EAAE,CAClB,CAAC;YACF,IAAI,EAAE,IAAI,MAAM;gBAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,uBAAuB;IACzB,CAAC;IAED,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAEpC,qBAAqB;IACrB,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC;QACf,MAAM,CAAC,GAAG,GAAG,qBAAqB,CAAC,MAAM,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;IAC9D,CAAC;IAED,oCAAoC;IACpC,MAAM,OAAO,GAAG,kBAAkB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC/C,MAAM,CAAC,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;IAC7D,MAAM,CAAC,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;IAEhE,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,qCAAqC;AAErC,SAAS,kBAAkB,CAAC,GAAW;IACrC,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,CAAC;IACpB,MAAM,OAAO,GAAkB,EAAE,CAAC;IAElC,8DAA8D;IAC9D,oBAAoB;IACpB,eAAe;IACf,MAAM;IACN,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IAC1C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QAC7B,IAAI,CAAC,OAAO;YAAE,SAAS;QAEvB,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAClC,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAEjC,6DAA6D;QAC7D,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAC5D,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,CAAC,IAAI,CAAC;gBACX,EAAE,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;gBAC1B,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;gBACd,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;gBACtB,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE;aACvC,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,kCAAkC;YAClC,OAAO,CAAC,IAAI,CAAC;gBACX,IAAI,EAAE,UAAU;gBAChB,KAAK,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;gBAC9B,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE;aACvC,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"memory.js","sourceRoot":"","sources":["../../src/adapters/memory.ts"],"names":[],"mappings":"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"}
@@ -2,10 +2,15 @@ import type { SpecSummary, Stage, TaskSummary } from '../../broker/context-pack.
2
2
  import type { Evidence, OrchestrationAdapter, StageTransition } from './interface.js';
3
3
  /**
4
4
  * GSD-Lite orchestration adapter.
5
- * Reads state directly from .gsd/state.json for speed.
5
+ * Reads state from .gsd/state.json with short-lived cache (500ms TTL).
6
+ * The cache prevents redundant reads when getCurrentStage, getActiveSpec,
7
+ * and getActiveTasks are called in parallel within a single queryOrch().
6
8
  */
7
9
  export declare class GsdAdapter implements OrchestrationAdapter {
8
10
  private repoRoot;
11
+ private cachedState;
12
+ private cacheTime;
13
+ private static readonly CACHE_TTL_MS;
9
14
  constructor(repoRoot: string);
10
15
  private getStatePath;
11
16
  private readState;
@@ -1 +1 @@
1
- {"version":3,"file":"gsd.d.ts","sourceRoot":"","sources":["../../../src/adapters/orchestration/gsd.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AACpF,OAAO,KAAK,EAAE,QAAQ,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AA6BtF;;;GAGG;AACH,qBAAa,UAAW,YAAW,oBAAoB;IACrD,OAAO,CAAC,QAAQ,CAAS;gBAEb,QAAQ,EAAE,MAAM;IAI5B,OAAO,CAAC,YAAY;IAIpB,OAAO,CAAC,SAAS;IAWX,eAAe,IAAI,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAMxC,aAAa,IAAI,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAU5C,cAAc,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IAYxC,YAAY,CAAC,SAAS,EAAE,QAAQ,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;IAMlE,cAAc,CAAC,SAAS,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxD,aAAa,IAAI,MAAM;IAIvB,kBAAkB,IAAI,KAAK,EAAE;CAG9B"}
1
+ {"version":3,"file":"gsd.d.ts","sourceRoot":"","sources":["../../../src/adapters/orchestration/gsd.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AACpF,OAAO,KAAK,EAAE,QAAQ,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AA2BtF;;;;;GAKG;AACH,qBAAa,UAAW,YAAW,oBAAoB;IACrD,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,WAAW,CAAyB;IAC5C,OAAO,CAAC,SAAS,CAAK;IACtB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAO;gBAE/B,QAAQ,EAAE,MAAM;IAI5B,OAAO,CAAC,YAAY;YAIN,SAAS;IAiBjB,eAAe,IAAI,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC;IAMxC,aAAa,IAAI,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC;IAU5C,cAAc,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IAQxC,YAAY,CAAC,SAAS,EAAE,QAAQ,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;IAIlE,cAAc,CAAC,SAAS,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxD,aAAa,IAAI,MAAM;IAIvB,kBAAkB,IAAI,KAAK,EAAE;CAG9B"}
@@ -1,6 +1,5 @@
1
- import fs from 'node:fs';
1
+ import fs from 'node:fs/promises';
2
2
  import path from 'node:path';
3
- // Map GSD phases to our Stage type
4
3
  const PHASE_TO_STAGE = {
5
4
  research: 'brainstorm',
6
5
  planning: 'plan',
@@ -10,36 +9,46 @@ const PHASE_TO_STAGE = {
10
9
  };
11
10
  /**
12
11
  * GSD-Lite orchestration adapter.
13
- * Reads state directly from .gsd/state.json for speed.
12
+ * Reads state from .gsd/state.json with short-lived cache (500ms TTL).
13
+ * The cache prevents redundant reads when getCurrentStage, getActiveSpec,
14
+ * and getActiveTasks are called in parallel within a single queryOrch().
14
15
  */
15
16
  export class GsdAdapter {
16
17
  repoRoot;
18
+ cachedState = null;
19
+ cacheTime = 0;
20
+ static CACHE_TTL_MS = 500;
17
21
  constructor(repoRoot) {
18
22
  this.repoRoot = repoRoot;
19
23
  }
20
24
  getStatePath() {
21
25
  return path.join(this.repoRoot, '.gsd', 'state.json');
22
26
  }
23
- readState() {
24
- const statePath = this.getStatePath();
27
+ async readState() {
28
+ // Return cached state if still fresh
29
+ if (this.cachedState !== null && Date.now() - this.cacheTime < GsdAdapter.CACHE_TTL_MS) {
30
+ return this.cachedState;
31
+ }
25
32
  try {
26
- if (!fs.existsSync(statePath))
27
- return null;
28
- const raw = fs.readFileSync(statePath, 'utf8');
29
- return JSON.parse(raw);
33
+ const raw = await fs.readFile(this.getStatePath(), 'utf8');
34
+ this.cachedState = JSON.parse(raw);
35
+ this.cacheTime = Date.now();
36
+ return this.cachedState;
30
37
  }
31
38
  catch {
39
+ this.cachedState = null;
40
+ this.cacheTime = Date.now();
32
41
  return null;
33
42
  }
34
43
  }
35
44
  async getCurrentStage() {
36
- const state = this.readState();
45
+ const state = await this.readState();
37
46
  if (!state?.phase)
38
47
  return null;
39
48
  return PHASE_TO_STAGE[state.phase] || 'general';
40
49
  }
41
50
  async getActiveSpec() {
42
- const state = this.readState();
51
+ const state = await this.readState();
43
52
  if (!state?.spec?.title)
44
53
  return null;
45
54
  return {
@@ -49,24 +58,18 @@ export class GsdAdapter {
49
58
  };
50
59
  }
51
60
  async getActiveTasks() {
52
- const state = this.readState();
61
+ const state = await this.readState();
53
62
  if (!state?.tasks)
54
63
  return [];
55
64
  return state.tasks
56
65
  .filter((t) => t.status !== 'completed' && t.status !== 'deleted')
57
- .map((t) => ({
58
- id: t.id,
59
- title: t.title,
60
- status: t.status,
61
- }));
66
+ .map((t) => ({ id: t.id, title: t.title, status: t.status }));
62
67
  }
63
68
  async advanceStage(_evidence) {
64
- // For now, stage advancement is done through GSD MCP tools
65
- // This adapter is read-only
66
69
  return null;
67
70
  }
68
71
  async recordEvidence(_evidence) {
69
- // Read-only adapter — evidence recording done through GSD MCP
72
+ // Read-only adapter
70
73
  }
71
74
  getEngineName() {
72
75
  return 'gsd';
@@ -1 +1 @@
1
- {"version":3,"file":"gsd.js","sourceRoot":"","sources":["../../../src/adapters/orchestration/gsd.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAsB7B,mCAAmC;AACnC,MAAM,cAAc,GAA0B;IAC5C,QAAQ,EAAE,YAAY;IACtB,QAAQ,EAAE,MAAM;IAChB,SAAS,EAAE,WAAW;IACtB,MAAM,EAAE,QAAQ;IAChB,SAAS,EAAE,OAAO;CACnB,CAAC;AAEF;;;GAGG;AACH,MAAM,OAAO,UAAU;IACb,QAAQ,CAAS;IAEzB,YAAY,QAAgB;QAC1B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAEO,YAAY;QAClB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;IACxD,CAAC;IAEO,SAAS;QACf,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QACtC,IAAI,CAAC;YACH,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC;gBAAE,OAAO,IAAI,CAAC;YAC3C,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YAC/C,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAa,CAAC;QACrC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,KAAK,CAAC,eAAe;QACnB,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAC/B,IAAI,CAAC,KAAK,EAAE,KAAK;YAAE,OAAO,IAAI,CAAC;QAC/B,OAAO,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC;IAClD,CAAC;IAED,KAAK,CAAC,aAAa;QACjB,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAC/B,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK;YAAE,OAAO,IAAI,CAAC;QACrC,OAAO;YACL,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE;YACjB,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK;YACvB,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO;SAC5B,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,cAAc;QAClB,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAC/B,IAAI,CAAC,KAAK,EAAE,KAAK;YAAE,OAAO,EAAE,CAAC;QAC7B,OAAO,KAAK,CAAC,KAAK;aACf,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,WAAW,IAAI,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC;aACjE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACX,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,MAAM,EAAE,CAAC,CAAC,MAAM;SACjB,CAAC,CAAC,CAAC;IACR,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,SAAmB;QACpC,2DAA2D;QAC3D,4BAA4B;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,SAAmB;QACtC,8DAA8D;IAChE,CAAC;IAED,aAAa;QACX,OAAO,KAAK,CAAC;IACf,CAAC;IAED,kBAAkB;QAChB,OAAO,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IAChE,CAAC;CACF"}
1
+ {"version":3,"file":"gsd.js","sourceRoot":"","sources":["../../../src/adapters/orchestration/gsd.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,6 @@ import type { BrokerInput, ContextPack, TokenBudget } from './context-pack.js';
2
2
  export interface BrokerOptions {
3
3
  budget?: Partial<TokenBudget>;
4
4
  orchestrationEngine?: 'gsd' | 'superpowers';
5
- totalTimeout?: number;
6
5
  }
7
6
  /**
8
7
  * Context Broker — the core of CodeAgent.
@@ -30,8 +29,11 @@ export declare class ContextBroker {
30
29
  */
31
30
  buildSessionContext(): Promise<ContextPack>;
32
31
  private queryCode;
33
- private queryMem;
34
32
  private queryOrch;
33
+ /** Run impact analysis on changed files */
34
+ private queryChangedFiles;
35
+ /** Fill suggestedApproach and risks based on heuristics (no LLM needed) */
36
+ private fillHeuristics;
35
37
  }
36
38
  /**
37
39
  * Format a ContextPack as plain text for injection into Claude Code prompt.
@@ -1 +1 @@
1
- {"version":3,"file":"broker.d.ts","sourceRoot":"","sources":["../../src/broker/broker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,WAAW,EAEX,WAAW,EACZ,MAAM,mBAAmB,CAAC;AAU3B,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IAC9B,mBAAmB,CAAC,EAAE,KAAK,GAAG,aAAa,CAAC;IAC5C,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;;;GASG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,MAAM,CAAc;gBAEhB,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB;IAYzD;;;OAGG;IACG,gBAAgB,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IA8ChE;;;OAGG;IACG,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC;YAwBnC,SAAS;YAKT,QAAQ;YAIR,SAAS;CAQxB;AAID;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,CA+D3D"}
1
+ {"version":3,"file":"broker.d.ts","sourceRoot":"","sources":["../../src/broker/broker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,WAAW,EAEX,WAAW,EACZ,MAAM,mBAAmB,CAAC;AAW3B,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IAC9B,mBAAmB,CAAC,EAAE,KAAK,GAAG,aAAa,CAAC;CAC7C;AAED;;;;;;;;;GASG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,MAAM,CAAc;gBAEhB,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB;IAYzD;;;OAGG;IACG,gBAAgB,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IA2DhE;;;OAGG;IACG,mBAAmB,IAAI,OAAO,CAAC,WAAW,CAAC;YAqBnC,SAAS;YAKT,SAAS;IASvB,2CAA2C;YAC7B,iBAAiB;IAuB/B,2EAA2E;IAC3E,OAAO,CAAC,cAAc;CA+BvB;AAID;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,CA+D3D"}
@@ -2,6 +2,7 @@ import { DEFAULT_BUDGET, emptyContextPack, hasContent } from './context-pack.js'
2
2
  import { parseQuery } from './query-parser.js';
3
3
  import { queryCodeGraph, getRepoMap } from '../adapters/code-graph.js';
4
4
  import { queryMemory } from '../adapters/memory.js';
5
+ import { execSafe } from '../utils/exec.js';
5
6
  import { GsdAdapter } from '../adapters/orchestration/gsd.js';
6
7
  import { SuperpowersAdapter } from '../adapters/orchestration/superpowers.js';
7
8
  import { compressContextPack } from './compressor.js';
@@ -40,17 +41,24 @@ export class ContextBroker {
40
41
  const parsed = parseQuery(input.userQuery);
41
42
  if (parsed.isActionOnly)
42
43
  return pack;
43
- // Determine stage (explicit > inferred > orchestration)
44
- const orchStage = await this.orchAdapter.getCurrentStage().catch(() => null);
45
- const stage = input.stage || parsed.impliedStage || orchStage || undefined;
46
- if (stage)
47
- pack.currentStage = stage;
48
- // Step 2-4: Parallel queries with timeout
49
- const [codeResult, memResult, orchResult] = await Promise.allSettled([
44
+ // Step 2-4: Parallel queries (code + orch), plus changedFiles impact if provided
45
+ const [codeResult, orchResult] = await Promise.allSettled([
50
46
  this.queryCode(parsed),
51
- this.queryMem(parsed, stage),
52
47
  this.queryOrch(),
53
48
  ]);
49
+ // changedFiles impact — runs separately to avoid positional coupling
50
+ let changedImpact = null;
51
+ if (input.changedFiles?.length) {
52
+ changedImpact = await this.queryChangedFiles(input.changedFiles).catch(() => null);
53
+ }
54
+ // Extract stage: explicit > inferred > orchestration
55
+ const orchStage = orchResult.status === 'fulfilled' ? orchResult.value.stage : null;
56
+ const stage = input.stage || parsed.impliedStage || orchStage || undefined;
57
+ if (stage)
58
+ pack.currentStage = stage;
59
+ // Memory query uses resolved stage for type filtering
60
+ const memResult = await queryMemory(parsed, this.budget.memory, stage)
61
+ .catch(() => ({ memories: [], bugWarnings: [], raw: '' }));
54
62
  // Merge Code Graph results
55
63
  if (codeResult.status === 'fulfilled') {
56
64
  const code = codeResult.value;
@@ -59,11 +67,8 @@ export class ContextBroker {
59
67
  pack.repoSummary = code.repoSummary;
60
68
  }
61
69
  // Merge Memory results
62
- if (memResult.status === 'fulfilled') {
63
- const mem = memResult.value;
64
- pack.priorMemories = mem.memories;
65
- pack.bugWarnings = mem.bugWarnings;
66
- }
70
+ pack.priorMemories = memResult.memories;
71
+ pack.bugWarnings = memResult.bugWarnings;
67
72
  // Merge Orchestration results
68
73
  if (orchResult.status === 'fulfilled') {
69
74
  const orch = orchResult.value;
@@ -71,7 +76,13 @@ export class ContextBroker {
71
76
  pack.activeSpec = orch.spec;
72
77
  pack.pendingTasks = orch.tasks;
73
78
  }
74
- // Step 5: Compress to budget
79
+ // Merge changedFiles impact
80
+ if (changedImpact) {
81
+ pack.relevantFiles = [...changedImpact.files, ...pack.relevantFiles];
82
+ pack.risks = [...changedImpact.risks, ...pack.risks];
83
+ }
84
+ // Step 5: Generate heuristics + Compress to budget
85
+ this.fillHeuristics(pack, parsed, stage);
75
86
  return compressContextPack(pack, this.budget);
76
87
  }
77
88
  /**
@@ -80,21 +91,20 @@ export class ContextBroker {
80
91
  */
81
92
  async buildSessionContext() {
82
93
  const pack = emptyContextPack();
83
- const [mapResult, orchResult] = await Promise.allSettled([
84
- Promise.resolve(getRepoMap(this.repoRoot, 3000)),
85
- this.queryOrch(),
86
- ]);
87
- if (mapResult.status === 'fulfilled') {
88
- pack.repoSummary = mapResult.value;
89
- }
90
- if (orchResult.status === 'fulfilled') {
91
- const orch = orchResult.value;
92
- if (orch.stage)
93
- pack.currentStage = orch.stage;
94
- if (orch.spec)
95
- pack.activeSpec = orch.spec;
96
- pack.pendingTasks = orch.tasks;
97
- }
94
+ // getRepoMap is synchronous (execFileSync) — run it directly, then orch in parallel
95
+ const repoMap = getRepoMap(this.repoRoot, 3000);
96
+ const orchResult = await this.queryOrch().catch(() => ({
97
+ stage: null,
98
+ spec: null,
99
+ tasks: [],
100
+ }));
101
+ if (repoMap)
102
+ pack.repoSummary = repoMap;
103
+ if (orchResult.stage)
104
+ pack.currentStage = orchResult.stage;
105
+ if (orchResult.spec)
106
+ pack.activeSpec = orchResult.spec;
107
+ pack.pendingTasks = orchResult.tasks;
98
108
  return compressContextPack(pack, this.budget);
99
109
  }
100
110
  // --- Private query methods ---
@@ -102,9 +112,6 @@ export class ContextBroker {
102
112
  const code = await queryCodeGraph(parsed, this.budget.code, this.repoRoot);
103
113
  return code;
104
114
  }
105
- async queryMem(parsed, stage) {
106
- return queryMemory(parsed, this.budget.memory, stage);
107
- }
108
115
  async queryOrch() {
109
116
  const [stage, spec, tasks] = await Promise.all([
110
117
  this.orchAdapter.getCurrentStage().catch(() => null),
@@ -113,6 +120,59 @@ export class ContextBroker {
113
120
  ]);
114
121
  return { stage, spec, tasks };
115
122
  }
123
+ /** Run impact analysis on changed files */
124
+ async queryChangedFiles(files) {
125
+ const impactFiles = [];
126
+ const risks = [];
127
+ for (const file of files.slice(0, 3)) {
128
+ const { stdout, ok } = execSafe('code-graph-mcp', ['impact', file], {
129
+ cwd: this.repoRoot,
130
+ timeout: 2000,
131
+ });
132
+ if (ok && stdout) {
133
+ impactFiles.push({ path: file, reason: 'changed file — impact analysis', snippet: stdout.slice(0, 200) });
134
+ // Extract risk indicators from impact output
135
+ if (/high|critical|many callers/i.test(stdout)) {
136
+ risks.push(`High-impact change: ${file}`);
137
+ }
138
+ }
139
+ else {
140
+ impactFiles.push({ path: file, reason: 'changed file' });
141
+ }
142
+ }
143
+ return { files: impactFiles, risks };
144
+ }
145
+ /** Fill suggestedApproach and risks based on heuristics (no LLM needed) */
146
+ fillHeuristics(pack, parsed, stage) {
147
+ // suggestedApproach: based on intent + stage + available context
148
+ if (!pack.suggestedApproach) {
149
+ const parts = [];
150
+ if (stage === 'brainstorm') {
151
+ parts.push('Explore alternatives before implementing.');
152
+ }
153
+ if (parsed.intent === 'impact' && pack.relevantFiles.length > 0) {
154
+ parts.push(`Review ${pack.relevantFiles.length} affected files before making changes.`);
155
+ }
156
+ if (parsed.intent === 'debug' && pack.bugWarnings.length > 0) {
157
+ parts.push('Check prior bug fixes for related patterns.');
158
+ }
159
+ if (pack.activeSpec && (stage === 'implement' || stage === 'plan')) {
160
+ parts.push(`Align with active spec: ${pack.activeSpec.title}`);
161
+ }
162
+ if (parts.length > 0) {
163
+ pack.suggestedApproach = parts.join(' ');
164
+ }
165
+ }
166
+ // risks: derive from bug warnings + impact analysis
167
+ if (pack.bugWarnings.length > 0) {
168
+ for (const bug of pack.bugWarnings.slice(0, 2)) {
169
+ const risk = `Prior bug in this area: ${bug.title}`;
170
+ if (!pack.risks.includes(risk)) {
171
+ pack.risks.push(risk);
172
+ }
173
+ }
174
+ }
175
+ }
116
176
  }
117
177
  // --- Formatting ---
118
178
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"broker.js","sourceRoot":"","sources":["../../src/broker/broker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"broker.js","sourceRoot":"","sources":["../../src/broker/broker.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,10 @@
1
1
  import type { ContextPack, TokenBudget } from './context-pack.js';
2
2
  /**
3
3
  * Compress a ContextPack to fit within the total token budget.
4
- * Priority: bugWarnings > exact symbol hits > semantic search > memories > repoSummary
4
+ * Features dynamic budget reallocation: when a source returns empty,
5
+ * its budget is redistributed to other sources proportionally.
6
+ *
7
+ * Priority: bugWarnings > code context > memories > orchestration > meta
5
8
  */
6
9
  export declare function compressContextPack(pack: ContextPack, budget: TokenBudget): ContextPack;
7
10
  //# sourceMappingURL=compressor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"compressor.d.ts","sourceRoot":"","sources":["../../src/broker/compressor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGlE;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,WAAW,EACjB,MAAM,EAAE,WAAW,GAClB,WAAW,CAsEb"}
1
+ {"version":3,"file":"compressor.d.ts","sourceRoot":"","sources":["../../src/broker/compressor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGlE;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,WAAW,EACjB,MAAM,EAAE,WAAW,GAClB,WAAW,CA4Eb"}