@sdsrs/codeagent 0.3.0 → 0.4.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 (48) hide show
  1. package/dist/adapters/__tests__/code-graph.test.js +36 -1
  2. package/dist/adapters/__tests__/code-graph.test.js.map +1 -1
  3. package/dist/adapters/__tests__/memory.test.js +18 -0
  4. package/dist/adapters/__tests__/memory.test.js.map +1 -1
  5. package/dist/adapters/code-graph.d.ts +4 -0
  6. package/dist/adapters/code-graph.d.ts.map +1 -1
  7. package/dist/adapters/code-graph.js +50 -17
  8. package/dist/adapters/code-graph.js.map +1 -1
  9. package/dist/adapters/memory.d.ts.map +1 -1
  10. package/dist/adapters/memory.js +21 -16
  11. package/dist/adapters/memory.js.map +1 -1
  12. package/dist/broker/__tests__/broker.test.js +83 -1
  13. package/dist/broker/__tests__/broker.test.js.map +1 -1
  14. package/dist/broker/__tests__/compressor.test.js +133 -0
  15. package/dist/broker/__tests__/compressor.test.js.map +1 -1
  16. package/dist/broker/broker.d.ts +1 -1
  17. package/dist/broker/broker.d.ts.map +1 -1
  18. package/dist/broker/broker.js +30 -17
  19. package/dist/broker/broker.js.map +1 -1
  20. package/dist/broker/compressor.d.ts.map +1 -1
  21. package/dist/broker/compressor.js +47 -1
  22. package/dist/broker/compressor.js.map +1 -1
  23. package/dist/broker/context-pack.d.ts +3 -0
  24. package/dist/broker/context-pack.d.ts.map +1 -1
  25. package/dist/broker/context-pack.js +18 -0
  26. package/dist/broker/context-pack.js.map +1 -1
  27. package/dist/hooks/__tests__/stop.test.d.ts +2 -0
  28. package/dist/hooks/__tests__/stop.test.d.ts.map +1 -0
  29. package/dist/hooks/__tests__/stop.test.js +88 -0
  30. package/dist/hooks/__tests__/stop.test.js.map +1 -0
  31. package/dist/hooks/post-compact.js +8 -7
  32. package/dist/hooks/post-compact.js.map +1 -1
  33. package/dist/hooks/session-start.js +6 -6
  34. package/dist/hooks/session-start.js.map +1 -1
  35. package/dist/hooks/stop.d.ts +6 -0
  36. package/dist/hooks/stop.d.ts.map +1 -1
  37. package/dist/hooks/stop.js +59 -42
  38. package/dist/hooks/stop.js.map +1 -1
  39. package/dist/providers/anthropic-api.js +6 -6
  40. package/dist/providers/anthropic-api.js.map +1 -1
  41. package/dist/providers/claude-cli.d.ts.map +1 -1
  42. package/dist/providers/claude-cli.js +4 -16
  43. package/dist/providers/claude-cli.js.map +1 -1
  44. package/dist/providers/claude-sdk.d.ts +3 -2
  45. package/dist/providers/claude-sdk.d.ts.map +1 -1
  46. package/dist/providers/claude-sdk.js +12 -11
  47. package/dist/providers/claude-sdk.js.map +1 -1
  48. package/package.json +1 -1
@@ -0,0 +1,88 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import { extractMemories } from '../stop.js';
3
+ describe('extractMemories — sentence-level extraction', () => {
4
+ // Single-line summaries (existing behaviour preserved)
5
+ it('extracts a bugfix from a single sentence', () => {
6
+ const memories = extractMemories('We fixed a null-pointer crash in validateToken.');
7
+ const bugfix = memories.find((m) => m.type === 'bugfix');
8
+ expect(bugfix).toBeDefined();
9
+ expect(bugfix.title).toContain('null-pointer crash');
10
+ });
11
+ it('extracts a decision from a single sentence', () => {
12
+ const memories = extractMemories('We decided to use Promise.allSettled for parallel saves.');
13
+ const decision = memories.find((m) => m.type === 'decision');
14
+ expect(decision).toBeDefined();
15
+ expect(decision.title.toLowerCase()).toContain('promise.allsettled');
16
+ });
17
+ it('extracts a discovery from a single sentence', () => {
18
+ const memories = extractMemories('We discovered that execSafe blocks the event loop.');
19
+ const discovery = memories.find((m) => m.type === 'discovery');
20
+ expect(discovery).toBeDefined();
21
+ expect(discovery.title).toContain('execSafe');
22
+ });
23
+ // Multi-line / multi-sentence summaries — the key improvement
24
+ it('extracts bugfix from second sentence of a multi-sentence summary', () => {
25
+ const summary = 'We refactored the broker pipeline to run queries in parallel. ' +
26
+ 'We fixed a token budget overflow in the compressor. ' +
27
+ 'The system is now much faster.';
28
+ const memories = extractMemories(summary);
29
+ const bugfix = memories.find((m) => m.type === 'bugfix');
30
+ expect(bugfix).toBeDefined();
31
+ expect(bugfix.title).toContain('token budget overflow');
32
+ });
33
+ it('extracts decision from later sentence', () => {
34
+ const summary = 'The session covered multiple topics. ' +
35
+ 'We chose SQLite WAL mode for better read concurrency. ' +
36
+ 'Tests are now green.';
37
+ const memories = extractMemories(summary);
38
+ const decision = memories.find((m) => m.type === 'decision');
39
+ expect(decision).toBeDefined();
40
+ expect(decision.title.toLowerCase()).toContain('sqlite wal mode');
41
+ });
42
+ it('extracts discovery from later sentence', () => {
43
+ const summary = 'We did a lot of cleanup today. ' +
44
+ 'We discovered that the hook process must exit within 3 seconds. ' +
45
+ 'We updated the timeout accordingly.';
46
+ const memories = extractMemories(summary);
47
+ const discovery = memories.find((m) => m.type === 'discovery');
48
+ expect(discovery).toBeDefined();
49
+ expect(discovery.title).toContain('hook process');
50
+ });
51
+ // Body includes full sentence context
52
+ it('body contains Session discovery prefix', () => {
53
+ const memories = extractMemories('We fixed a missing null check in the auth module.');
54
+ const bugfix = memories.find((m) => m.type === 'bugfix');
55
+ expect(bugfix).toBeDefined();
56
+ expect(bugfix.body).toMatch(/^Session discovery:/);
57
+ });
58
+ // Limits
59
+ it('returns at most one memory per type', () => {
60
+ const summary = 'We fixed bug A in module X. ' +
61
+ 'We also resolved bug B in module Y.';
62
+ const memories = extractMemories(summary);
63
+ const bugfixes = memories.filter((m) => m.type === 'bugfix');
64
+ expect(bugfixes).toHaveLength(1);
65
+ });
66
+ it('title is capped at 100 chars', () => {
67
+ const longPhrase = 'a'.repeat(200);
68
+ const memories = extractMemories(`We fixed ${longPhrase}.`);
69
+ const bugfix = memories.find((m) => m.type === 'bugfix');
70
+ if (bugfix) {
71
+ expect(bugfix.title.length).toBeLessThanOrEqual(100);
72
+ }
73
+ });
74
+ it('returns empty array for empty string', () => {
75
+ expect(extractMemories('')).toEqual([]);
76
+ });
77
+ it('returns empty array when no patterns match', () => {
78
+ const memories = extractMemories('We had a great session today. Everything went smoothly. No issues.');
79
+ expect(memories).toHaveLength(0);
80
+ });
81
+ // Chinese pattern support
82
+ it('extracts bugfix from Chinese text', () => {
83
+ const memories = extractMemories('我们修复了认证模块中的空指针崩溃。');
84
+ const bugfix = memories.find((m) => m.type === 'bugfix');
85
+ expect(bugfix).toBeDefined();
86
+ });
87
+ });
88
+ //# sourceMappingURL=stop.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stop.test.js","sourceRoot":"","sources":["../../../src/hooks/__tests__/stop.test.ts"],"names":[],"mappings":"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"}
@@ -13,16 +13,17 @@
13
13
  */
14
14
  import { ContextBroker } from '../broker/broker.js';
15
15
  import { truncateToTokenBudget } from '../utils/tokens.js';
16
- import { execSafe } from '../utils/exec.js';
16
+ import { execSafeAsync } from '../utils/exec.js';
17
17
  async function main() {
18
18
  const repoRoot = process.cwd();
19
19
  const broker = new ContextBroker(repoRoot);
20
- // Re-build session-level context (lighter than full Broker query)
21
- const pack = await broker.buildSessionContext();
22
- // Also re-inject recent bug warnings (high priority)
23
- const bugResult = execSafe('claude-mem-lite', ['timeline', '--type', 'bugfix', '--limit', '3'], {
24
- timeout: 2000,
25
- });
20
+ // Run both in parallel
21
+ const [pack, bugResult] = await Promise.all([
22
+ broker.buildSessionContext(),
23
+ execSafeAsync('claude-mem-lite', ['timeline', '--type', 'bugfix', '--limit', '3'], {
24
+ timeout: 2000,
25
+ }),
26
+ ]);
26
27
  const sections = [];
27
28
  // Orchestration state (critical to preserve across compaction)
28
29
  const orchLines = [];
@@ -1 +1 @@
1
- {"version":3,"file":"post-compact.js","sourceRoot":"","sources":["../../src/hooks/post-compact.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,KAAK,UAAU,IAAI;IACjB,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC/B,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,QAAQ,CAAC,CAAC;IAE3C,kEAAkE;IAClE,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,mBAAmB,EAAE,CAAC;IAEhD,qDAAqD;IACrD,MAAM,SAAS,GAAG,QAAQ,CAAC,iBAAiB,EAAE,CAAC,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,CAAC,EAAE;QAC9F,OAAO,EAAE,IAAI;KACd,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,+DAA+D;IAC/D,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,IAAI,IAAI,CAAC,YAAY;QAAE,SAAS,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;IACvE,IAAI,IAAI,CAAC,UAAU;QAAE,SAAS,CAAC,IAAI,CAAC,kBAAkB,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC;IAC/E,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjC,SAAS,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QACnC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;YAC9C,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;IACD,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,QAAQ,CAAC,IAAI,CAAC,sBAAsB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED,2DAA2D;IAC3D,IAAI,SAAS,CAAC,EAAE,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;QACrC,QAAQ,CAAC,IAAI,CAAC,2BAA2B,qBAAqB,CAAC,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IAC3F,CAAC;IAED,yDAAyD;IACzD,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;QACrB,QAAQ,CAAC,IAAI,CAAC,yBAAyB,qBAAqB,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IACzF,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,yBAAyB,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,yBAAyB,CACxE,CAAC;IACJ,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE;IAChB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"post-compact.js","sourceRoot":"","sources":["../../src/hooks/post-compact.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,KAAK,UAAU,IAAI;IACjB,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC/B,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,QAAQ,CAAC,CAAC;IAE3C,uBAAuB;IACvB,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC1C,MAAM,CAAC,mBAAmB,EAAE;QAC5B,aAAa,CAAC,iBAAiB,EAAE,CAAC,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,CAAC,EAAE;YACjF,OAAO,EAAE,IAAI;SACd,CAAC;KACH,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,+DAA+D;IAC/D,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,IAAI,IAAI,CAAC,YAAY;QAAE,SAAS,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;IACvE,IAAI,IAAI,CAAC,UAAU;QAAE,SAAS,CAAC,IAAI,CAAC,kBAAkB,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC;IAC/E,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjC,SAAS,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QACnC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;YAC9C,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;IACD,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,QAAQ,CAAC,IAAI,CAAC,sBAAsB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED,2DAA2D;IAC3D,IAAI,SAAS,CAAC,EAAE,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;QACrC,QAAQ,CAAC,IAAI,CAAC,2BAA2B,qBAAqB,CAAC,SAAS,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IAC3F,CAAC;IAED,yDAAyD;IACzD,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;QACrB,QAAQ,CAAC,IAAI,CAAC,yBAAyB,qBAAqB,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IACzF,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,yBAAyB,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,yBAAyB,CACxE,CAAC;IACJ,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE;IAChB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -8,16 +8,16 @@
8
8
  * Runs once per session. Can be slower than UserPromptSubmit (5s budget).
9
9
  */
10
10
  import { ContextBroker } from '../broker/broker.js';
11
- import { execQuiet } from '../utils/exec.js';
11
+ import { execQuietAsync } from '../utils/exec.js';
12
12
  import { truncateToTokenBudget } from '../utils/tokens.js';
13
13
  async function main() {
14
14
  const repoRoot = process.cwd();
15
15
  const broker = new ContextBroker(repoRoot);
16
- // Get session context (repo map + orchestration state)
17
- const pack = await broker.buildSessionContext();
18
- // Also get recent memory summary
19
- // Use 'timeline' to get recent memories (avoids relying on empty-string search behavior)
20
- const recentMem = execQuiet('claude-mem-lite', ['timeline', '--limit', '5'], { timeout: 2000 });
16
+ // Run session context and recent memory in parallel
17
+ const [pack, recentMem] = await Promise.all([
18
+ broker.buildSessionContext(),
19
+ execQuietAsync('claude-mem-lite', ['timeline', '--limit', '5'], { timeout: 2000 }),
20
+ ]);
21
21
  const sections = [];
22
22
  // Repo overview
23
23
  if (pack.repoSummary) {
@@ -1 +1 @@
1
- {"version":3,"file":"session-start.js","sourceRoot":"","sources":["../../src/hooks/session-start.ts"],"names":[],"mappings":";AACA;;;;;;;GAOG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,KAAK,UAAU,IAAI;IACjB,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC/B,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,QAAQ,CAAC,CAAC;IAE3C,uDAAuD;IACvD,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,mBAAmB,EAAE,CAAC;IAEhD,iCAAiC;IACjC,yFAAyF;IACzF,MAAM,SAAS,GAAG,SAAS,CACzB,iBAAiB,EAAE,CAAC,UAAU,EAAE,SAAS,EAAE,GAAG,CAAC,EAC/C,EAAE,OAAO,EAAE,IAAI,EAAE,CAClB,CAAC;IAEF,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,gBAAgB;IAChB,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;QACrB,QAAQ,CAAC,IAAI,CAAC,wBAAwB,qBAAqB,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IACxF,CAAC;IAED,6BAA6B;IAC7B,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,IAAI,IAAI,CAAC,YAAY;QAAE,SAAS,CAAC,IAAI,CAAC,oBAAoB,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;IAC/E,IAAI,IAAI,CAAC,UAAU;QAAE,SAAS,CAAC,IAAI,CAAC,kBAAkB,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC;IAC/E,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjC,SAAS,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QACnC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;YAC9C,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;IACD,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,QAAQ,CAAC,IAAI,CAAC,mBAAmB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED,kBAAkB;IAClB,IAAI,SAAS,EAAE,CAAC;QACd,QAAQ,CAAC,IAAI,CAAC,qBAAqB,qBAAqB,CAAC,SAAS,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IAC9E,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,wBAAwB,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,wBAAwB,CACtE,CAAC;IACJ,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE;IAChB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"session-start.js","sourceRoot":"","sources":["../../src/hooks/session-start.ts"],"names":[],"mappings":";AACA;;;;;;;GAOG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAE3D,KAAK,UAAU,IAAI;IACjB,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC/B,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,QAAQ,CAAC,CAAC;IAE3C,oDAAoD;IACpD,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC1C,MAAM,CAAC,mBAAmB,EAAE;QAC5B,cAAc,CAAC,iBAAiB,EAAE,CAAC,UAAU,EAAE,SAAS,EAAE,GAAG,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;KACnF,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,gBAAgB;IAChB,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;QACrB,QAAQ,CAAC,IAAI,CAAC,wBAAwB,qBAAqB,CAAC,IAAI,CAAC,WAAW,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IACxF,CAAC;IAED,6BAA6B;IAC7B,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,IAAI,IAAI,CAAC,YAAY;QAAE,SAAS,CAAC,IAAI,CAAC,oBAAoB,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;IAC/E,IAAI,IAAI,CAAC,UAAU;QAAE,SAAS,CAAC,IAAI,CAAC,kBAAkB,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,CAAC;IAC/E,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjC,SAAS,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QACnC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;YAC9C,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;IACD,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,QAAQ,CAAC,IAAI,CAAC,mBAAmB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED,kBAAkB;IAClB,IAAI,SAAS,EAAE,CAAC;QACd,QAAQ,CAAC,IAAI,CAAC,qBAAqB,qBAAqB,CAAC,SAAS,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IAC9E,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,wBAAwB,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,wBAAwB,CACtE,CAAC;IACJ,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE;IAChB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -7,5 +7,11 @@
7
7
  *
8
8
  * Extracts: file modifications, error resolutions, architecture decisions.
9
9
  */
10
+ interface MemoryCandidate {
11
+ type: string;
12
+ title: string;
13
+ body: string;
14
+ }
15
+ export declare function extractMemories(summary: string): MemoryCandidate[];
10
16
  export {};
11
17
  //# sourceMappingURL=stop.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"stop.d.ts","sourceRoot":"","sources":["../../src/hooks/stop.ts"],"names":[],"mappings":";AACA;;;;;;;GAOG"}
1
+ {"version":3,"file":"stop.d.ts","sourceRoot":"","sources":["../../src/hooks/stop.ts"],"names":[],"mappings":";AACA;;;;;;;GAOG;AAyCH,UAAU,eAAe;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,EAAE,CAoElE"}
@@ -8,7 +8,7 @@
8
8
  * Extracts: file modifications, error resolutions, architecture decisions.
9
9
  */
10
10
  import fs from 'node:fs';
11
- import { execSafe } from '../utils/exec.js';
11
+ import { execSafeAsync } from '../utils/exec.js';
12
12
  async function main() {
13
13
  // Read input from stdin
14
14
  let input = {};
@@ -26,65 +26,82 @@ async function main() {
26
26
  }
27
27
  // Extract potential memories using simple heuristics
28
28
  const memories = extractMemories(summary);
29
- // Save each memory
30
- for (const mem of memories) {
31
- execSafe('claude-mem-lite', ['save', '--type', mem.type, '--title', mem.title, '--body', mem.body], { timeout: 3000 });
32
- }
29
+ // Save all memories in parallel
30
+ await Promise.allSettled(memories.map((mem) => execSafeAsync('claude-mem-lite', ['save', '--type', mem.type, '--title', mem.title, '--body', mem.body], { timeout: 3000 })));
33
31
  }
34
- function extractMemories(summary) {
32
+ export function extractMemories(summary) {
35
33
  const memories = [];
36
- // Detect bug fixes
34
+ // Split on sentence boundaries (period/Chinese period followed by whitespace and uppercase/CJK)
35
+ // More conservative than splitting on every period (avoids breaking on file paths, versions)
36
+ const sentences = summary.split(/(?<=[.。])\s+(?=[A-Z\u4e00-\u9fff])/);
37
+ // Detect bug fixes — search across sentences
37
38
  const bugPatterns = [
38
- /(?:fixed|resolved|debugged|solved)\s+(.+?)(?:\.|$)/i,
39
- /(?:bug|error|issue)\s*(?:was|:)\s*(.+?)(?:\.|$)/i,
40
- /(?:修复|解决|排查)\s*[了]?\s*(.+?)(?:。|$)/i,
39
+ /(?:fixed|resolved|debugged|solved)\s+(.+)/i,
40
+ /(?:bug|error|issue)\s*(?:was|:)\s*(.+)/i,
41
+ /(?:修复|解决|排查)\s*[了]?\s*(.+)/i,
41
42
  ];
42
- for (const pattern of bugPatterns) {
43
- const match = pattern.exec(summary);
44
- if (match?.[1]) {
45
- memories.push({
46
- type: 'bugfix',
47
- title: match[1].trim().slice(0, 100),
48
- body: `Extracted from session summary: ${match[0].trim()}`,
49
- });
50
- break; // One bug memory per session max
43
+ for (const sentence of sentences) {
44
+ if (memories.some((m) => m.type === 'bugfix'))
45
+ break;
46
+ for (const pattern of bugPatterns) {
47
+ const match = pattern.exec(sentence);
48
+ if (match?.[1]) {
49
+ memories.push({
50
+ type: 'bugfix',
51
+ title: match[1].trim().slice(0, 100),
52
+ body: `Session discovery: ${sentence.trim().slice(0, 300)}`,
53
+ });
54
+ break;
55
+ }
51
56
  }
52
57
  }
53
58
  // Detect architecture decisions
54
59
  const decisionPatterns = [
55
- /(?:decided|chose|selected|went with)\s+(.+?)(?:\.|$)/i,
56
- /(?:决定|选择|采用)\s*[了]?\s*(.+?)(?:。|$)/i,
60
+ /(?:decided|chose|selected|went with)\s+(.+)/i,
61
+ /(?:决定|选择|采用)\s*[了]?\s*(.+)/i,
57
62
  ];
58
- for (const pattern of decisionPatterns) {
59
- const match = pattern.exec(summary);
60
- if (match?.[1]) {
61
- memories.push({
62
- type: 'decision',
63
- title: match[1].trim().slice(0, 100),
64
- body: `Extracted from session summary: ${match[0].trim()}`,
65
- });
63
+ for (const sentence of sentences) {
64
+ if (memories.some((m) => m.type === 'decision'))
66
65
  break;
66
+ for (const pattern of decisionPatterns) {
67
+ const match = pattern.exec(sentence);
68
+ if (match?.[1]) {
69
+ memories.push({
70
+ type: 'decision',
71
+ title: match[1].trim().slice(0, 100),
72
+ body: `Session discovery: ${sentence.trim().slice(0, 300)}`,
73
+ });
74
+ break;
75
+ }
67
76
  }
68
77
  }
69
78
  // Detect discoveries
70
79
  const discoveryPatterns = [
71
- /(?:discovered|found out|learned|realized)\s+(.+?)(?:\.|$)/i,
72
- /(?:发现|了解到|学到)\s*[了]?\s*(.+?)(?:。|$)/i,
80
+ /(?:discovered|found out|learned|realized)\s+(.+)/i,
81
+ /(?:发现|了解到|学到)\s*[了]?\s*(.+)/i,
73
82
  ];
74
- for (const pattern of discoveryPatterns) {
75
- const match = pattern.exec(summary);
76
- if (match?.[1]) {
77
- memories.push({
78
- type: 'discovery',
79
- title: match[1].trim().slice(0, 100),
80
- body: `Extracted from session summary: ${match[0].trim()}`,
81
- });
83
+ for (const sentence of sentences) {
84
+ if (memories.some((m) => m.type === 'discovery'))
82
85
  break;
86
+ for (const pattern of discoveryPatterns) {
87
+ const match = pattern.exec(sentence);
88
+ if (match?.[1]) {
89
+ memories.push({
90
+ type: 'discovery',
91
+ title: match[1].trim().slice(0, 100),
92
+ body: `Session discovery: ${sentence.trim().slice(0, 300)}`,
93
+ });
94
+ break;
95
+ }
83
96
  }
84
97
  }
85
98
  return memories;
86
99
  }
87
- main().catch(() => {
88
- process.exit(0);
89
- });
100
+ // Only run when executed directly (not when imported for testing)
101
+ const isMain = import.meta.url === new URL(process.argv[1] ?? '', 'file://').href;
102
+ if (isMain) {
103
+ main().catch(() => {
104
+ process.exit(0);
105
+ });
106
+ }
90
107
  //# sourceMappingURL=stop.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"stop.js","sourceRoot":"","sources":["../../src/hooks/stop.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stop.js","sourceRoot":"","sources":["../../src/hooks/stop.ts"],"names":[],"mappings":"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"}
@@ -43,12 +43,12 @@ export class AnthropicAPIProvider {
43
43
  return { sessionId: providerSessionId, providerSessionId };
44
44
  }
45
45
  async *sendTurn(handle, input) {
46
- // Build message with context
47
- let userMessage = input.userMessage;
46
+ // Build dynamic system prompt with context
47
+ let systemPrompt = input.systemPrompt || 'You are a helpful coding assistant with deep project context.';
48
48
  if (input.contextPack && hasContent(input.contextPack)) {
49
49
  const contextStr = formatContextPack(input.contextPack);
50
50
  if (contextStr) {
51
- userMessage = `${contextStr}\n\n${input.userMessage}`;
51
+ systemPrompt = `${systemPrompt}\n\n${contextStr}`;
52
52
  }
53
53
  }
54
54
  // Get or create message history (cap at 50 messages to prevent unbounded growth)
@@ -64,13 +64,13 @@ export class AnthropicAPIProvider {
64
64
  history = history.slice(startIdx);
65
65
  this.messageHistory.set(handle.sessionId, history);
66
66
  }
67
- history.push({ role: 'user', content: userMessage });
67
+ // Store only raw user message in history (no context injection)
68
+ history.push({ role: 'user', content: input.userMessage });
68
69
  try {
69
- // Stream the response
70
70
  const stream = this.client.messages.stream({
71
71
  model: this.sessionModels.get(handle.sessionId) || this.defaultModel,
72
72
  max_tokens: this.sessionMaxTokens.get(handle.sessionId) || 4096,
73
- system: input.systemPrompt || 'You are a helpful coding assistant with deep project context.',
73
+ system: systemPrompt,
74
74
  messages: history,
75
75
  });
76
76
  let fullResponse = '';
@@ -1 +1 @@
1
- {"version":3,"file":"anthropic-api.js","sourceRoot":"","sources":["../../src/providers/anthropic-api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"anthropic-api.js","sourceRoot":"","sources":["../../src/providers/anthropic-api.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"claude-cli.d.ts","sourceRoot":"","sources":["../../src/providers/claude-cli.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,aAAa,EACb,aAAa,EACb,WAAW,EACX,SAAS,EACT,SAAS,EACV,MAAM,gBAAgB,CAAC;AAExB;;;;;;GAMG;AACH,qBAAa,iBAAkB,YAAW,aAAa;IACrD,QAAQ,CAAC,IAAI,gBAAgB;IAEvB,YAAY,CAAC,KAAK,GAAE,WAAgB,GAAG,OAAO,CAAC,aAAa,CAAC;IAM7D,aAAa,CACjB,iBAAiB,EAAE,MAAM,EACzB,KAAK,GAAE,WAAgB,GACtB,OAAO,CAAC,aAAa,CAAC;IAOlB,QAAQ,CACb,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,SAAS,GACf,aAAa,CAAC,SAAS,CAAC;IAsDrB,UAAU,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;CAGxD"}
1
+ {"version":3,"file":"claude-cli.d.ts","sourceRoot":"","sources":["../../src/providers/claude-cli.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,aAAa,EACb,aAAa,EACb,WAAW,EACX,SAAS,EACT,SAAS,EACV,MAAM,gBAAgB,CAAC;AAExB;;;;;;GAMG;AACH,qBAAa,iBAAkB,YAAW,aAAa;IACrD,QAAQ,CAAC,IAAI,gBAAgB;IAEvB,YAAY,CAAC,KAAK,GAAE,WAAgB,GAAG,OAAO,CAAC,aAAa,CAAC;IAM7D,aAAa,CACjB,iBAAiB,EAAE,MAAM,EACzB,KAAK,GAAE,WAAgB,GACtB,OAAO,CAAC,aAAa,CAAC;IAOlB,QAAQ,CACb,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,SAAS,GACf,aAAa,CAAC,SAAS,CAAC;IA0CrB,UAAU,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;CAGxD"}
@@ -1,4 +1,4 @@
1
- import { execFileSync } from 'node:child_process';
1
+ import { execSafeAsync } from '../utils/exec.js';
2
2
  import { formatContextPack } from '../broker/broker.js';
3
3
  import { hasContent } from '../broker/context-pack.js';
4
4
  /**
@@ -37,21 +37,9 @@ export class ClaudeCLIProvider {
37
37
  }
38
38
  args.push(prompt);
39
39
  yield { type: 'text', content: '[executing claude -p...]' };
40
- let stdout;
41
- try {
42
- stdout = execFileSync('claude', args, {
43
- timeout: 120000,
44
- encoding: 'utf8',
45
- stdio: ['pipe', 'pipe', 'pipe'],
46
- maxBuffer: 2 * 1024 * 1024,
47
- }).trim();
48
- }
49
- catch {
50
- yield { type: 'error', content: 'claude -p execution failed' };
51
- return;
52
- }
53
- if (!stdout) {
54
- yield { type: 'error', content: 'claude -p returned empty output' };
40
+ const { stdout, ok, stderr } = await execSafeAsync('claude', args, { timeout: 120000 });
41
+ if (!ok || !stdout) {
42
+ yield { type: 'error', content: stderr || 'claude -p execution failed' };
55
43
  return;
56
44
  }
57
45
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"claude-cli.js","sourceRoot":"","sources":["../../src/providers/claude-cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"claude-cli.js","sourceRoot":"","sources":["../../src/providers/claude-cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AASvD;;;;;;GAMG;AACH,MAAM,OAAO,iBAAiB;IACnB,IAAI,GAAG,YAAY,CAAC;IAE7B,KAAK,CAAC,YAAY,CAAC,QAAqB,EAAE;QACxC,OAAO;YACL,SAAS,EAAE,OAAO,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;SACzE,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,aAAa,CACjB,iBAAyB,EACzB,QAAqB,EAAE;QAEvB,OAAO;YACL,SAAS,EAAE,cAAc,IAAI,CAAC,GAAG,EAAE,EAAE;YACrC,iBAAiB;SAClB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,CAAC,QAAQ,CACb,MAAqB,EACrB,KAAgB;QAEhB,4BAA4B;QAC5B,IAAI,MAAM,GAAG,KAAK,CAAC,WAAW,CAAC;QAC/B,IAAI,KAAK,CAAC,WAAW,IAAI,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;YACvD,MAAM,UAAU,GAAG,iBAAiB,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YACxD,IAAI,UAAU,EAAE,CAAC;gBACf,MAAM,GAAG,GAAG,UAAU,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC;YACnD,CAAC;QACH,CAAC;QAED,oDAAoD;QACpD,MAAM,IAAI,GAAG,CAAC,IAAI,EAAE,iBAAiB,EAAE,MAAM,CAAC,CAAC;QAE/C,IAAI,MAAM,CAAC,iBAAiB,EAAE,CAAC;YAC7B,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,iBAAiB,CAAC,CAAC;QAClD,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAElB,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,0BAA0B,EAAE,CAAC;QAE5D,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,MAAM,aAAa,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;QACxF,IAAI,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;YACnB,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,4BAA4B,EAAE,CAAC;YACzE,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAClC,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;gBACtB,MAAM,CAAC,iBAAiB,GAAG,MAAM,CAAC,UAAU,CAAC;YAC/C,CAAC;YACD,MAAM;gBACJ,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,IAAI,MAAM;gBAC/C,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,cAAc,EAAE;aAC1C,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QAC1C,CAAC;IACH,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,OAAsB;QACrC,kCAAkC;IACpC,CAAC;CACF"}
@@ -10,8 +10,9 @@ import type { AgentProvider, SessionHandle, SessionOpts, TurnEvent, TurnInput }
10
10
  export declare class ClaudeSDKProvider implements AgentProvider {
11
11
  readonly name = "claude-sdk";
12
12
  private activeQueries;
13
- startSession(_opts?: SessionOpts): Promise<SessionHandle>;
14
- resumeSession(providerSessionId: string, _opts?: SessionOpts): Promise<SessionHandle>;
13
+ private sessionOpts;
14
+ startSession(opts?: SessionOpts): Promise<SessionHandle>;
15
+ resumeSession(providerSessionId: string, opts?: SessionOpts): Promise<SessionHandle>;
15
16
  sendTurn(handle: SessionHandle, input: TurnInput): AsyncIterable<TurnEvent>;
16
17
  endSession(handle: SessionHandle): Promise<void>;
17
18
  }
@@ -1 +1 @@
1
- {"version":3,"file":"claude-sdk.d.ts","sourceRoot":"","sources":["../../src/providers/claude-sdk.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,aAAa,EACb,aAAa,EACb,WAAW,EACX,SAAS,EACT,SAAS,EACV,MAAM,gBAAgB,CAAC;AAExB;;;;;;;GAOG;AACH,qBAAa,iBAAkB,YAAW,aAAa;IACrD,QAAQ,CAAC,IAAI,gBAAgB;IAC7B,OAAO,CAAC,aAAa,CAA4B;IAE3C,YAAY,CAAC,KAAK,GAAE,WAAgB,GAAG,OAAO,CAAC,aAAa,CAAC;IAO7D,aAAa,CACjB,iBAAiB,EAAE,MAAM,EACzB,KAAK,GAAE,WAAgB,GACtB,OAAO,CAAC,aAAa,CAAC;IAOlB,QAAQ,CACb,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,SAAS,GACf,aAAa,CAAC,SAAS,CAAC;IA2HrB,UAAU,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;CAOvD"}
1
+ {"version":3,"file":"claude-sdk.d.ts","sourceRoot":"","sources":["../../src/providers/claude-sdk.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,aAAa,EACb,aAAa,EACb,WAAW,EACX,SAAS,EACT,SAAS,EACV,MAAM,gBAAgB,CAAC;AAExB;;;;;;;GAOG;AACH,qBAAa,iBAAkB,YAAW,aAAa;IACrD,QAAQ,CAAC,IAAI,gBAAgB;IAC7B,OAAO,CAAC,aAAa,CAA4B;IACjD,OAAO,CAAC,WAAW,CAAkC;IAE/C,YAAY,CAAC,IAAI,GAAE,WAAgB,GAAG,OAAO,CAAC,aAAa,CAAC;IAM5D,aAAa,CACjB,iBAAiB,EAAE,MAAM,EACzB,IAAI,GAAE,WAAgB,GACrB,OAAO,CAAC,aAAa,CAAC;IAMlB,QAAQ,CACb,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,SAAS,GACf,aAAa,CAAC,SAAS,CAAC;IA4HrB,UAAU,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;CAQvD"}
@@ -12,17 +12,16 @@ import { hasContent } from '../broker/context-pack.js';
12
12
  export class ClaudeSDKProvider {
13
13
  name = 'claude-sdk';
14
14
  activeQueries = new Map();
15
- async startSession(_opts = {}) {
16
- // We don't actually start the session until the first turn.
17
- // The session ID will come back from the SDK's init message.
15
+ sessionOpts = new Map();
16
+ async startSession(opts = {}) {
18
17
  const sessionId = `sdk-${globalThis.crypto.randomUUID()}`;
18
+ this.sessionOpts.set(sessionId, opts);
19
19
  return { sessionId };
20
20
  }
21
- async resumeSession(providerSessionId, _opts = {}) {
22
- return {
23
- sessionId: `sdk-resume-${globalThis.crypto.randomUUID()}`,
24
- providerSessionId,
25
- };
21
+ async resumeSession(providerSessionId, opts = {}) {
22
+ const sessionId = `sdk-resume-${globalThis.crypto.randomUUID()}`;
23
+ this.sessionOpts.set(sessionId, opts);
24
+ return { sessionId, providerSessionId };
26
25
  }
27
26
  async *sendTurn(handle, input) {
28
27
  // Build prompt with context pack injection
@@ -33,17 +32,18 @@ export class ClaudeSDKProvider {
33
32
  prompt = `${contextStr}\n\n${input.userMessage}`;
34
33
  }
35
34
  }
36
- // Build query options
35
+ // Build query options (respect SessionOpts from startSession/resumeSession)
36
+ const sessionOpts = this.sessionOpts.get(handle.sessionId) || {};
37
37
  const options = {
38
38
  systemPrompt: input.systemPrompt
39
39
  ? input.systemPrompt
40
40
  : { type: 'preset', preset: 'claude_code' },
41
41
  settingSources: ['project'],
42
- allowedTools: [
42
+ allowedTools: sessionOpts.allowedTools || [
43
43
  'Read', 'Write', 'Edit', 'Bash', 'Glob', 'Grep',
44
44
  'WebSearch', 'WebFetch', 'Agent',
45
45
  ],
46
- permissionMode: 'acceptEdits',
46
+ permissionMode: sessionOpts.permissionMode || 'acceptEdits',
47
47
  persistSession: true,
48
48
  };
49
49
  // Resume existing session if we have a provider session ID
@@ -143,6 +143,7 @@ export class ClaudeSDKProvider {
143
143
  q.close();
144
144
  this.activeQueries.delete(handle.sessionId);
145
145
  }
146
+ this.sessionOpts.delete(handle.sessionId);
146
147
  }
147
148
  }
148
149
  //# sourceMappingURL=claude-sdk.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"claude-sdk.js","sourceRoot":"","sources":["../../src/providers/claude-sdk.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"claude-sdk.js","sourceRoot":"","sources":["../../src/providers/claude-sdk.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sdsrs/codeagent",
3
- "version": "0.3.0",
3
+ "version": "0.4.0",
4
4
  "description": "CodeAgent — Context Broker + CLI for intelligent coding assistance. Integrates code search, memory, and orchestration.",
5
5
  "type": "module",
6
6
  "main": "dist/broker/broker.js",