@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.
- package/dist/adapters/__tests__/code-graph.test.js +36 -1
- package/dist/adapters/__tests__/code-graph.test.js.map +1 -1
- package/dist/adapters/__tests__/memory.test.js +18 -0
- package/dist/adapters/__tests__/memory.test.js.map +1 -1
- package/dist/adapters/code-graph.d.ts +4 -0
- package/dist/adapters/code-graph.d.ts.map +1 -1
- package/dist/adapters/code-graph.js +50 -17
- package/dist/adapters/code-graph.js.map +1 -1
- package/dist/adapters/memory.d.ts.map +1 -1
- package/dist/adapters/memory.js +21 -16
- package/dist/adapters/memory.js.map +1 -1
- package/dist/broker/__tests__/broker.test.js +83 -1
- package/dist/broker/__tests__/broker.test.js.map +1 -1
- package/dist/broker/__tests__/compressor.test.js +133 -0
- package/dist/broker/__tests__/compressor.test.js.map +1 -1
- package/dist/broker/broker.d.ts +1 -1
- package/dist/broker/broker.d.ts.map +1 -1
- package/dist/broker/broker.js +30 -17
- package/dist/broker/broker.js.map +1 -1
- package/dist/broker/compressor.d.ts.map +1 -1
- package/dist/broker/compressor.js +47 -1
- package/dist/broker/compressor.js.map +1 -1
- package/dist/broker/context-pack.d.ts +3 -0
- package/dist/broker/context-pack.d.ts.map +1 -1
- package/dist/broker/context-pack.js +18 -0
- package/dist/broker/context-pack.js.map +1 -1
- package/dist/hooks/__tests__/stop.test.d.ts +2 -0
- package/dist/hooks/__tests__/stop.test.d.ts.map +1 -0
- package/dist/hooks/__tests__/stop.test.js +88 -0
- package/dist/hooks/__tests__/stop.test.js.map +1 -0
- package/dist/hooks/post-compact.js +8 -7
- package/dist/hooks/post-compact.js.map +1 -1
- package/dist/hooks/session-start.js +6 -6
- package/dist/hooks/session-start.js.map +1 -1
- package/dist/hooks/stop.d.ts +6 -0
- package/dist/hooks/stop.d.ts.map +1 -1
- package/dist/hooks/stop.js +59 -42
- package/dist/hooks/stop.js.map +1 -1
- package/dist/providers/anthropic-api.js +6 -6
- package/dist/providers/anthropic-api.js.map +1 -1
- package/dist/providers/claude-cli.d.ts.map +1 -1
- package/dist/providers/claude-cli.js +4 -16
- package/dist/providers/claude-cli.js.map +1 -1
- package/dist/providers/claude-sdk.d.ts +3 -2
- package/dist/providers/claude-sdk.d.ts.map +1 -1
- package/dist/providers/claude-sdk.js +12 -11
- package/dist/providers/claude-sdk.js.map +1 -1
- 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 {
|
|
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
|
-
//
|
|
21
|
-
const pack = await
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
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,
|
|
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 {
|
|
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
|
-
//
|
|
17
|
-
const pack = await
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
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,
|
|
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"}
|
package/dist/hooks/stop.d.ts
CHANGED
|
@@ -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
|
package/dist/hooks/stop.d.ts.map
CHANGED
|
@@ -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"}
|
package/dist/hooks/stop.js
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* Extracts: file modifications, error resolutions, architecture decisions.
|
|
9
9
|
*/
|
|
10
10
|
import fs from 'node:fs';
|
|
11
|
-
import {
|
|
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
|
|
30
|
-
|
|
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
|
-
//
|
|
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+(
|
|
39
|
-
/(?:bug|error|issue)\s*(?:was|:)\s*(
|
|
40
|
-
/(?:修复|解决|排查)\s*[了]?\s*(
|
|
39
|
+
/(?:fixed|resolved|debugged|solved)\s+(.+)/i,
|
|
40
|
+
/(?:bug|error|issue)\s*(?:was|:)\s*(.+)/i,
|
|
41
|
+
/(?:修复|解决|排查)\s*[了]?\s*(.+)/i,
|
|
41
42
|
];
|
|
42
|
-
for (const
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
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+(
|
|
56
|
-
/(?:决定|选择|采用)\s*[了]?\s*(
|
|
60
|
+
/(?:decided|chose|selected|went with)\s+(.+)/i,
|
|
61
|
+
/(?:决定|选择|采用)\s*[了]?\s*(.+)/i,
|
|
57
62
|
];
|
|
58
|
-
for (const
|
|
59
|
-
|
|
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+(
|
|
72
|
-
/(?:发现|了解到|学到)\s*[了]?\s*(
|
|
80
|
+
/(?:discovered|found out|learned|realized)\s+(.+)/i,
|
|
81
|
+
/(?:发现|了解到|学到)\s*[了]?\s*(.+)/i,
|
|
73
82
|
];
|
|
74
|
-
for (const
|
|
75
|
-
|
|
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
|
-
|
|
88
|
-
|
|
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
|
package/dist/hooks/stop.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stop.js","sourceRoot":"","sources":["../../src/hooks/stop.ts"],"names":[],"mappings":";AACA;;;;;;;GAOG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,
|
|
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
|
|
47
|
-
let
|
|
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
|
-
|
|
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
|
-
|
|
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:
|
|
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":"AAAA,OAAO,SAAS,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AASvD;;;;;;;;GAQG;AACH,MAAM,OAAO,oBAAoB;IACtB,IAAI,GAAG,eAAe,CAAC;IACxB,MAAM,CAAY;IAClB,YAAY,CAAS;IACrB,aAAa,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC1C,gBAAgB,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC7C,cAAc,GAAG,IAAI,GAAG,EAAkE,CAAC;IAEnG,YAAY,IAA0C;QACpD,IAAI,CAAC,MAAM,GAAG,IAAI,SAAS,CAAC;YAC1B,MAAM,EAAE,IAAI,EAAE,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB;SACtD,CAAC,CAAC;QACH,IAAI,CAAC,YAAY,GAAG,IAAI,EAAE,KAAK,IAAI,0BAA0B,CAAC;IAChE,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,OAAoB,EAAE;QACvC,MAAM,SAAS,GAAG,OAAO,UAAU,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,CAAC;QAC1D,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QACvC,IAAI,IAAI,CAAC,KAAK;YAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9D,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI;YAAE,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;QAC7F,OAAO,EAAE,SAAS,EAAE,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,aAAa,CACjB,iBAAyB,EACzB,OAAoB,EAAE;QAEtB,IAAI,IAAI,CAAC,KAAK;YAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,iBAAiB,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACtE,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI;YAAE,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,iBAAiB,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;QACrG,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE,CAAC;YAChD,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;QACjD,CAAC;QACD,OAAO,EAAE,SAAS,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,CAAC;IAC7D,CAAC;IAED,KAAK,CAAC,CAAC,QAAQ,CACb,MAAqB,EACrB,KAAgB;QAEhB,
|
|
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;
|
|
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 {
|
|
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
|
-
|
|
41
|
-
|
|
42
|
-
|
|
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":"AAAA,OAAO,EAAE,
|
|
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
|
-
|
|
14
|
-
|
|
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;
|
|
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
|
-
|
|
16
|
-
|
|
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,
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
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":"AAAA,OAAO,EAAE,KAAK,EAAc,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AASvD;;;;;;;GAOG;AACH,MAAM,OAAO,iBAAiB;IACnB,IAAI,GAAG,YAAY,CAAC;IACrB,aAAa,GAAG,IAAI,GAAG,EAAiB,CAAC;
|
|
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
|
+
"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",
|