@coralai/sps-cli 0.58.13 → 0.58.15
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/README.md +2 -14
- package/dist/commands/agentCommand.d.ts.map +1 -1
- package/dist/commands/agentCommand.js +29 -26
- package/dist/commands/agentCommand.js.map +1 -1
- package/dist/commands/memoryCommand.d.ts +2 -0
- package/dist/commands/memoryCommand.d.ts.map +1 -0
- package/dist/commands/memoryCommand.js +263 -0
- package/dist/commands/memoryCommand.js.map +1 -0
- package/dist/commands/projectInit.d.ts.map +1 -1
- package/dist/commands/projectInit.js +21 -0
- package/dist/commands/projectInit.js.map +1 -1
- package/dist/commands/tick.d.ts.map +1 -1
- package/dist/commands/tick.js +1 -19
- package/dist/commands/tick.js.map +1 -1
- package/dist/console/index.d.ts.map +1 -1
- package/dist/console/index.js +2 -0
- package/dist/console/index.js.map +1 -1
- package/dist/console/routes/chat.d.ts.map +1 -1
- package/dist/console/routes/chat.js +22 -23
- package/dist/console/routes/chat.js.map +1 -1
- package/dist/console/routes/memory.d.ts +11 -0
- package/dist/console/routes/memory.d.ts.map +1 -0
- package/dist/console/routes/memory.js +63 -0
- package/dist/console/routes/memory.js.map +1 -0
- package/dist/console/routes/system.d.ts.map +1 -1
- package/dist/console/routes/system.js +6 -3
- package/dist/console/routes/system.js.map +1 -1
- package/dist/console-assets/assets/index-DENsMsFy.css +10 -0
- package/dist/console-assets/assets/{index-BiGbp-FL.js → index-R6Y8wve3.js} +194 -194
- package/dist/console-assets/index.html +2 -2
- package/dist/core/agents/AcpBackend.d.ts +2 -0
- package/dist/core/agents/AcpBackend.d.ts.map +1 -1
- package/dist/core/agents/AcpBackend.js +5 -0
- package/dist/core/agents/AcpBackend.js.map +1 -1
- package/dist/core/agents/ClaudeSdkBackend.d.ts +0 -1
- package/dist/core/agents/ClaudeSdkBackend.d.ts.map +1 -1
- package/dist/core/agents/ClaudeSdkBackend.js +1 -1
- package/dist/core/agents/ClaudeSdkBackend.js.map +1 -1
- package/dist/core/agents/CodexAppServerBackend.d.ts +0 -1
- package/dist/core/agents/CodexAppServerBackend.d.ts.map +1 -1
- package/dist/core/agents/CodexAppServerBackend.js +1 -1
- package/dist/core/agents/CodexAppServerBackend.js.map +1 -1
- package/dist/core/agents/OpenAiAgentBackend.d.ts +0 -2
- package/dist/core/agents/OpenAiAgentBackend.d.ts.map +1 -1
- package/dist/core/agents/OpenAiAgentBackend.js +5 -4
- package/dist/core/agents/OpenAiAgentBackend.js.map +1 -1
- package/dist/core/agents/resolveBackend.d.ts +0 -1
- package/dist/core/agents/resolveBackend.d.ts.map +1 -1
- package/dist/core/agents/resolveBackend.js +3 -4
- package/dist/core/agents/resolveBackend.js.map +1 -1
- package/dist/core/codegraph/claudeMdRule.d.ts +7 -0
- package/dist/core/codegraph/claudeMdRule.d.ts.map +1 -0
- package/dist/core/codegraph/claudeMdRule.js +79 -0
- package/dist/core/codegraph/claudeMdRule.js.map +1 -0
- package/dist/core/memory2/capture.d.ts +33 -0
- package/dist/core/memory2/capture.d.ts.map +1 -0
- package/dist/core/memory2/capture.js +91 -0
- package/dist/core/memory2/capture.js.map +1 -0
- package/dist/core/memory2/claudeMdRule.d.ts +7 -0
- package/dist/core/memory2/claudeMdRule.d.ts.map +1 -0
- package/dist/core/memory2/claudeMdRule.js +65 -0
- package/dist/core/memory2/claudeMdRule.js.map +1 -0
- package/dist/core/memory2/config.d.ts +20 -0
- package/dist/core/memory2/config.d.ts.map +1 -0
- package/dist/core/memory2/config.js +26 -0
- package/dist/core/memory2/config.js.map +1 -0
- package/dist/core/memory2/digest.d.ts +16 -0
- package/dist/core/memory2/digest.d.ts.map +1 -0
- package/dist/core/memory2/digest.js +52 -0
- package/dist/core/memory2/digest.js.map +1 -0
- package/dist/core/memory2/gc.d.ts +9 -0
- package/dist/core/memory2/gc.d.ts.map +1 -0
- package/dist/core/memory2/gc.js +45 -0
- package/dist/core/memory2/gc.js.map +1 -0
- package/dist/core/memory2/inject.d.ts +16 -0
- package/dist/core/memory2/inject.d.ts.map +1 -0
- package/dist/core/memory2/inject.js +45 -0
- package/dist/core/memory2/inject.js.map +1 -0
- package/dist/core/memory2/lock.d.ts +7 -0
- package/dist/core/memory2/lock.d.ts.map +1 -0
- package/dist/core/memory2/lock.js +59 -0
- package/dist/core/memory2/lock.js.map +1 -0
- package/dist/core/memory2/migrate.d.ts +12 -0
- package/dist/core/memory2/migrate.d.ts.map +1 -0
- package/dist/core/memory2/migrate.js +119 -0
- package/dist/core/memory2/migrate.js.map +1 -0
- package/dist/core/memory2/redact.d.ts +21 -0
- package/dist/core/memory2/redact.d.ts.map +1 -0
- package/dist/core/memory2/redact.js +116 -0
- package/dist/core/memory2/redact.js.map +1 -0
- package/dist/core/memory2/retrieve.d.ts +16 -0
- package/dist/core/memory2/retrieve.d.ts.map +1 -0
- package/dist/core/memory2/retrieve.js +70 -0
- package/dist/core/memory2/retrieve.js.map +1 -0
- package/dist/core/memory2/store.d.ts +30 -0
- package/dist/core/memory2/store.d.ts.map +1 -0
- package/dist/core/memory2/store.js +217 -0
- package/dist/core/memory2/store.js.map +1 -0
- package/dist/core/memory2/types.d.ts +53 -0
- package/dist/core/memory2/types.d.ts.map +1 -0
- package/dist/core/memory2/types.js +12 -0
- package/dist/core/memory2/types.js.map +1 -0
- package/dist/engines/StageEngine.d.ts.map +1 -1
- package/dist/engines/StageEngine.js +13 -8
- package/dist/engines/StageEngine.js.map +1 -1
- package/dist/main.js +17 -154
- package/dist/main.js.map +1 -1
- package/dist/manager/worker-manager-impl.d.ts +10 -0
- package/dist/manager/worker-manager-impl.d.ts.map +1 -1
- package/dist/manager/worker-manager-impl.js +50 -5
- package/dist/manager/worker-manager-impl.js.map +1 -1
- package/dist/providers/llm/workerTools.js +1 -1
- package/dist/providers/mcp/spsMcpServer.d.ts +13 -7
- package/dist/providers/mcp/spsMcpServer.d.ts.map +1 -1
- package/dist/providers/mcp/spsMcpServer.js +90 -28
- package/dist/providers/mcp/spsMcpServer.js.map +1 -1
- package/dist/providers/mcp/spsMcpStdio.js +3 -15
- package/dist/providers/mcp/spsMcpStdio.js.map +1 -1
- package/dist/providers/mcp/spsMcpStdioConfig.d.ts +2 -1
- package/dist/providers/mcp/spsMcpStdioConfig.d.ts.map +1 -1
- package/dist/providers/mcp/spsMcpStdioConfig.js +3 -1
- package/dist/providers/mcp/spsMcpStdioConfig.js.map +1 -1
- package/dist/services/MemoryService.d.ts +69 -0
- package/dist/services/MemoryService.d.ts.map +1 -0
- package/dist/services/MemoryService.js +178 -0
- package/dist/services/MemoryService.js.map +1 -0
- package/dist/services/SystemService.d.ts +17 -3
- package/dist/services/SystemService.d.ts.map +1 -1
- package/dist/services/SystemService.js +75 -17
- package/dist/services/SystemService.js.map +1 -1
- package/dist/services/container.d.ts +2 -0
- package/dist/services/container.d.ts.map +1 -1
- package/dist/services/container.js +2 -0
- package/dist/services/container.js.map +1 -1
- package/package.json +1 -2
- package/project-template/.claude/CLAUDE.md +0 -23
- package/skills/sps-pipeline/SKILL.md +12 -15
- package/dist/console-assets/assets/index-BHtTCxMY.css +0 -10
- package/dist/core/memory.d.ts +0 -85
- package/dist/core/memory.d.ts.map +0 -1
- package/dist/core/memory.js +0 -374
- package/dist/core/memory.js.map +0 -1
- package/dist/core/memoryIngest.d.ts +0 -18
- package/dist/core/memoryIngest.d.ts.map +0 -1
- package/dist/core/memoryIngest.js +0 -56
- package/dist/core/memoryIngest.js.map +0 -1
- package/dist/core/memoryProvider.d.ts +0 -63
- package/dist/core/memoryProvider.d.ts.map +0 -1
- package/dist/core/memoryProvider.js +0 -205
- package/dist/core/memoryProvider.js.map +0 -1
- package/dist/core/transcriptIngest.d.ts +0 -37
- package/dist/core/transcriptIngest.d.ts.map +0 -1
- package/dist/core/transcriptIngest.js +0 -137
- package/dist/core/transcriptIngest.js.map +0 -1
- package/skills/sps-memory/SKILL.md +0 -51
|
@@ -7,8 +7,8 @@
|
|
|
7
7
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
8
8
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
9
9
|
<link href="https://fonts.googleapis.com/css2?family=Fredoka:wght@400;500;600;700&family=DM+Sans:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet">
|
|
10
|
-
<script type="module" crossorigin src="/assets/index-
|
|
11
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
10
|
+
<script type="module" crossorigin src="/assets/index-R6Y8wve3.js"></script>
|
|
11
|
+
<link rel="stylesheet" crossorigin href="/assets/index-DENsMsFy.css">
|
|
12
12
|
</head>
|
|
13
13
|
<body>
|
|
14
14
|
<div id="root"></div>
|
|
@@ -9,6 +9,8 @@ export interface AcpBackendOpts {
|
|
|
9
9
|
/** durable resume 种子:上次持久的底层 claude sessionId。给定则首次 ensure 走 loadSession 续
|
|
10
10
|
* (跨"进程被杀/tick 重启"续同一会话与记忆);缺省=全新会话。 */
|
|
11
11
|
resumeSessionId?: string;
|
|
12
|
+
/** 项目名:挂 SPS 共享 MCP(memory_* 工具)时给记忆工具作 project scope 上下文。 */
|
|
13
|
+
project?: string;
|
|
12
14
|
}
|
|
13
15
|
export declare class AcpBackend implements AgentBackend {
|
|
14
16
|
private readonly opts;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AcpBackend.d.ts","sourceRoot":"","sources":["../../../src/core/agents/AcpBackend.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AcpBackend.d.ts","sourceRoot":"","sources":["../../../src/core/agents/AcpBackend.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtG,MAAM,WAAW,cAAc;IAC7B,yEAAyE;IACzE,IAAI,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;6CACyC;IACzC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,8DAA8D;IAC9D,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,UAAW,YAAW,YAAY;IAejC,OAAO,CAAC,QAAQ,CAAC,IAAI;IAdjC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAqB;IAC1C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAwB;IAC/C,OAAO,CAAC,KAAK,CAAS;IACtB,sEAAsE;IACtE,OAAO,CAAC,UAAU,CAAuB;IACzC,mDAAmD;IACnD,OAAO,CAAC,aAAa,CAAC,CAAW;IAEjC,6DAA6D;IAC7D,IAAI,SAAS,IAAI,MAAM,GAAG,IAAI,CAE7B;gBAE4B,IAAI,EAAE,cAAc;IAW3C,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAoCvB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAM5D,QAAQ,IAAI,OAAO,CAAC,aAAa,CAAC;IAKlC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAU3B,sEAAsE;IAChE,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAU9B,sCAAsC;IAChC,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ7B,8CAA8C;IAC9C,SAAS,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,iBAAiB,KAAK,IAAI,GAAG,MAAM,IAAI;CAyBjE"}
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
* @boundedContext agents
|
|
10
10
|
*/
|
|
11
11
|
import { LocalACPClient } from '@coralai/claude-code-agent';
|
|
12
|
+
import { spsMcpStdioConfig } from '../../providers/mcp/spsMcpStdioConfig.js';
|
|
12
13
|
export class AcpBackend {
|
|
13
14
|
opts;
|
|
14
15
|
kind;
|
|
@@ -37,6 +38,9 @@ export class AcpBackend {
|
|
|
37
38
|
if (this.ready)
|
|
38
39
|
return;
|
|
39
40
|
const resume = this._sessionId != null; // 曾被 reclaim,留了身份 → 尝试 loadSession 续
|
|
41
|
+
// SPS 共享 MCP(memory_recall/read/save 等)挂进 claude-acp worker——让默认 worker 也能主动
|
|
42
|
+
// 读写记忆(读注入/自动捕获走 prompt/subscribe 是被动路径,这里补主动工具)。收在适配器内=守红线。
|
|
43
|
+
const sps = spsMcpStdioConfig({ cwd: this.opts.cwd, project: this.opts.project ?? 'unknown' });
|
|
40
44
|
const base = {
|
|
41
45
|
sessionName: this.opts.sessionName,
|
|
42
46
|
tool: 'claude',
|
|
@@ -44,6 +48,7 @@ export class AcpBackend {
|
|
|
44
48
|
logsDir: this.opts.logsDir,
|
|
45
49
|
// claude 专属:进程监控可见性标记(闸门 CLAUDE_CODE_ENTRYPOINT=sdk-ts,SPS_WORKER_SLOT 归类 worker)。
|
|
46
50
|
extraEnv: { CLAUDE_CODE_ENTRYPOINT: 'sdk-ts', SPS_WORKER_SLOT: 'smartarrange', ...this.opts.extraEnv },
|
|
51
|
+
mcpServers: [{ name: 'sps', command: sps.command, args: sps.args }],
|
|
47
52
|
...(this.pendingSkills ? { skills: this.pendingSkills } : {}),
|
|
48
53
|
};
|
|
49
54
|
let result;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AcpBackend.js","sourceRoot":"","sources":["../../../src/core/agents/AcpBackend.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"AcpBackend.js","sourceRoot":"","sources":["../../../src/core/agents/AcpBackend.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClaudeSdkBackend.d.ts","sourceRoot":"","sources":["../../../src/core/agents/ClaudeSdkBackend.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAKxF,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"ClaudeSdkBackend.d.ts","sourceRoot":"","sources":["../../../src/core/agents/ClaudeSdkBackend.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAKxF,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,qBAAa,gBAAiB,YAAW,YAAY;IAavC,OAAO,CAAC,QAAQ,CAAC,IAAI;IAZjC,QAAQ,CAAC,IAAI,gBAAgB;IAC7B,OAAO,CAAC,UAAU,CAAC,CAAS;IAC5B,OAAO,CAAC,KAAK,CAAC,CAAkB;IAEhC,wCAAwC;IACxC,IAAI,SAAS,IAAI,MAAM,GAAG,IAAI,CAE7B;IACD,OAAO,CAAC,KAAK,CAAyB;IACtC,OAAO,CAAC,OAAO,CAA8B;IAC7C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA8C;gBAE3C,IAAI,EAAE,oBAAoB;IAEvD,SAAS,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,iBAAiB,KAAK,IAAI,GAAG,MAAM,IAAI;IAIhE,OAAO,CAAC,IAAI;IAUN,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAIvB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA6B7C,2CAA2C;IAC3C,OAAO,CAAC,SAAS;IA0BX,QAAQ,IAAI,OAAO,CAAC,aAAa,CAAC;IAIlC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAK5B"}
|
|
@@ -48,7 +48,7 @@ export class ClaudeSdkBackend {
|
|
|
48
48
|
this.abort = new AbortController();
|
|
49
49
|
this.running = (async () => {
|
|
50
50
|
try {
|
|
51
|
-
const sps = spsMcpStdioConfig({ cwd: this.opts.cwd,
|
|
51
|
+
const sps = spsMcpStdioConfig({ cwd: this.opts.cwd, project: this.opts.project });
|
|
52
52
|
for await (const m of query({
|
|
53
53
|
prompt,
|
|
54
54
|
options: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClaudeSdkBackend.js","sourceRoot":"","sources":["../../../src/core/agents/ClaudeSdkBackend.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,KAAK,EAAE,MAAM,gCAAgC,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0CAA0C,CAAC;AAE7E,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,eAAe,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"ClaudeSdkBackend.js","sourceRoot":"","sources":["../../../src/core/agents/ClaudeSdkBackend.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CodexAppServerBackend.d.ts","sourceRoot":"","sources":["../../../src/core/agents/CodexAppServerBackend.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAExF,MAAM,WAAW,yBAAyB;IACxC,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"CodexAppServerBackend.d.ts","sourceRoot":"","sources":["../../../src/core/agents/CodexAppServerBackend.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAExF,MAAM,WAAW,yBAAyB;IACxC,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,qBAAa,qBAAsB,YAAW,YAAY;IAU5C,OAAO,CAAC,QAAQ,CAAC,IAAI;IATjC,QAAQ,CAAC,IAAI,WAAW;IACxB,OAAO,CAAC,IAAI,CAA+C;IAC3D,OAAO,CAAC,QAAQ,CAAuB;IACvC,OAAO,CAAC,KAAK,CAAyB;IACtC,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,GAAG,CAAM;IACjB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA2E;IACnG,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA8C;gBAE3C,IAAI,EAAE,yBAAyB;IAE5D,SAAS,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,iBAAiB,KAAK,IAAI,GAAG,MAAM,IAAI;IAIhE,OAAO,CAAC,IAAI;IAUZ,OAAO,CAAC,IAAI;IAGZ,0CAA0C;IAC1C,OAAO,CAAC,GAAG;IAQX,kEAAkE;IAClE,OAAO,CAAC,MAAM;IAyBd,qCAAqC;IACrC,OAAO,CAAC,cAAc;IA+BhB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IA4BvB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAevC,QAAQ,IAAI,OAAO,CAAC,aAAa,CAAC;IAIlC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAU5B"}
|
|
@@ -123,7 +123,7 @@ export class CodexAppServerBackend {
|
|
|
123
123
|
await this.rpc('initialize', { clientInfo: { name: 'sps', title: null, version: '0.1' }, capabilities: null });
|
|
124
124
|
this.send({ jsonrpc: '2.0', method: 'initialized' });
|
|
125
125
|
// SPS 专属能力(skill/memory)经 codex mcp_servers 注入——与其它后端同一个 spsMcpServer(stdio)。
|
|
126
|
-
const sps = spsMcpStdioConfig({ cwd: this.opts.cwd,
|
|
126
|
+
const sps = spsMcpStdioConfig({ cwd: this.opts.cwd, project: this.opts.project });
|
|
127
127
|
const ts = await this.rpc('thread/start', {
|
|
128
128
|
cwd: this.opts.cwd,
|
|
129
129
|
model: this.opts.model,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CodexAppServerBackend.js","sourceRoot":"","sources":["../../../src/core/agents/CodexAppServerBackend.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,KAAK,EAAuC,MAAM,oBAAoB,CAAC;AAChF,OAAO,EAAE,iBAAiB,EAAE,MAAM,0CAA0C,CAAC;
|
|
1
|
+
{"version":3,"file":"CodexAppServerBackend.js","sourceRoot":"","sources":["../../../src/core/agents/CodexAppServerBackend.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,8 +14,6 @@ export interface OpenAiAgentBackendOpts {
|
|
|
14
14
|
cwd: string;
|
|
15
15
|
project: string;
|
|
16
16
|
sessionFile: string;
|
|
17
|
-
/** sandbox 文件记忆:worker 跨卡读/追加学到的东西(经共享 MCP 暴露给 worker)。 */
|
|
18
|
-
memoryFile?: string;
|
|
19
17
|
}
|
|
20
18
|
export declare class OpenAiAgentBackend implements AgentBackend {
|
|
21
19
|
private readonly opts;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OpenAiAgentBackend.d.ts","sourceRoot":"","sources":["../../../src/core/agents/OpenAiAgentBackend.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAA8B,KAAK,KAAK,EAAgB,MAAM,gBAAgB,CAAC;AAItF,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"OpenAiAgentBackend.d.ts","sourceRoot":"","sources":["../../../src/core/agents/OpenAiAgentBackend.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAA8B,KAAK,KAAK,EAAgB,MAAM,gBAAgB,CAAC;AAItF,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAcxF,MAAM,WAAW,sBAAsB;IACrC,KAAK,EAAE,KAAK,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CAErB;AAED,qBAAa,kBAAmB,YAAW,YAAY;IAWzC,OAAO,CAAC,QAAQ,CAAC,IAAI;IAVjC,QAAQ,CAAC,IAAI,YAAY;IACzB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;IAC9B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAU;IAClC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAiB;IACrC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,KAAK,CAAyB;IACtC,OAAO,CAAC,OAAO,CAA8B;IAC7C,OAAO,CAAC,KAAK,CAAC,CAAkB;IAChC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA8C;gBAE3C,IAAI,EAAE,sBAAsB;IAezD,SAAS,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,iBAAiB,KAAK,IAAI,GAAG,MAAM,IAAI;IAIhE,OAAO,CAAC,IAAI;IAUN,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAQvB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA6CvC,QAAQ,IAAI,OAAO,CAAC,aAAa,CAAC;IAIlC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAS5B"}
|
|
@@ -15,10 +15,11 @@ import { useLocalTracing } from './localTracing.js';
|
|
|
15
15
|
import { readAgentsMd } from './agentsMd.js';
|
|
16
16
|
// 用本地 trace 处理器替换默认 OpenAI 导出器(behavior tracking 留本地,不发后端)。
|
|
17
17
|
useLocalTracing();
|
|
18
|
-
|
|
19
|
-
|
|
18
|
+
// 记忆工具(read_memory/recall/append_memory)已随本地记忆系统 v2 重构移除;v2 上线后在此重新加入 memory_* 工具的用法。
|
|
19
|
+
const WORKER_INSTRUCTIONS = '你是一名**编码 worker**,在给定项目目录里真正完成任务。工具:read_file / list_dir / write_file / run_bash(自带),list_skills / search_skills / load_skill(来自 sps 工具集)。\n' +
|
|
20
|
+
'流程:① 动手前,对卡片指定的每个 skill 调 `load_skill` 读其 SOP 并遵守;卡片没点名但任务可能有现成 SOP 时,先 `list_skills`/`search_skills(关键词)` 查、相关再 `load_skill`,别重复造已有 skill 覆盖的轮子;\n' +
|
|
20
21
|
'② 用 `write_file` 落地代码/文档、`run_bash` 跑安装/构建/git——**务必真实落地改动,不要只在回复里描述**;\n' +
|
|
21
|
-
'③
|
|
22
|
+
'③ 完成后用一两句话总结你改了什么。';
|
|
22
23
|
export class OpenAiAgentBackend {
|
|
23
24
|
opts;
|
|
24
25
|
kind = 'openai';
|
|
@@ -33,7 +34,7 @@ export class OpenAiAgentBackend {
|
|
|
33
34
|
constructor(opts) {
|
|
34
35
|
this.opts = opts;
|
|
35
36
|
// 与 claude-sdk 后端同源:SPS 三工具来自同一个 spsMcpServer(stdio 子进程),不在 workerTools 里重复。
|
|
36
|
-
const cfg = spsMcpStdioConfig({ cwd: opts.cwd,
|
|
37
|
+
const cfg = spsMcpStdioConfig({ cwd: opts.cwd, project: opts.project });
|
|
37
38
|
this.sps = new MCPServerStdio({ name: 'sps', command: cfg.command, args: cfg.args, cwd: opts.cwd });
|
|
38
39
|
this.agent = new Agent({
|
|
39
40
|
name: 'worker',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OpenAiAgentBackend.js","sourceRoot":"","sources":["../../../src/core/agents/OpenAiAgentBackend.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,GAAG,EAA4B,MAAM,gBAAgB,CAAC;AACtF,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0CAA0C,CAAC;AAE7E,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,4DAA4D;AAC5D,eAAe,EAAE,CAAC;AAElB,MAAM,mBAAmB,GACvB,
|
|
1
|
+
{"version":3,"file":"OpenAiAgentBackend.js","sourceRoot":"","sources":["../../../src/core/agents/OpenAiAgentBackend.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,GAAG,EAA4B,MAAM,gBAAgB,CAAC;AACtF,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,oCAAoC,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0CAA0C,CAAC;AAE7E,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAE7C,4DAA4D;AAC5D,eAAe,EAAE,CAAC;AAElB,sFAAsF;AACtF,MAAM,mBAAmB,GACvB,8IAA8I;IAC9I,qJAAqJ;IACrJ,2EAA2E;IAC3E,oBAAoB,CAAC;AAUvB,MAAM,OAAO,kBAAkB;IAWA;IAVpB,IAAI,GAAG,QAAQ,CAAC;IACR,KAAK,CAAQ;IACb,OAAO,CAAU;IACjB,GAAG,CAAiB,CAAC,yCAAyC;IACvE,QAAQ,GAAG,KAAK,CAAC;IACjB,KAAK,GAAkB,MAAM,CAAC;IAC9B,OAAO,GAAyB,IAAI,CAAC;IACrC,KAAK,CAAmB;IACf,SAAS,GAAG,IAAI,GAAG,EAAmC,CAAC;IAExE,YAA6B,IAA4B;QAA5B,SAAI,GAAJ,IAAI,CAAwB;QACvD,6EAA6E;QAC7E,MAAM,GAAG,GAAG,iBAAiB,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QACxE,IAAI,CAAC,GAAG,GAAG,IAAI,cAAc,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QACpG,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC;YACrB,IAAI,EAAE,QAAQ;YACd,uEAAuE;YACvE,YAAY,EAAE,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,mBAAmB;YAC3D,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,KAAK,EAAE,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,yCAAyC;YACvE,UAAU,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC;SACvB,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IACnE,CAAC;IAED,SAAS,CAAC,QAAyC;QACjD,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC7B,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC/C,CAAC;IACO,IAAI,CAAC,EAAqB;QAChC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YAC/B,IAAI,CAAC;gBACH,CAAC,CAAC,EAAE,CAAC,CAAC;YACR,CAAC;YAAC,MAAM,CAAC;gBACP,oBAAoB;YACtB,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,MAAM;QACV,oDAAoD;QACpD,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;YACzB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACvB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,MAAc;QAC3B,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,oCAAoC;QACzD,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;QACvB,IAAI,CAAC,KAAK,GAAG,IAAI,eAAe,EAAE,CAAC;QACnC,qDAAqD;QACrD,IAAI,CAAC,OAAO,GAAG,CAAC,KAAK,IAAI,EAAE;YACzB,IAAI,CAAC;gBACH,MAAM,CAAC,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,KAAM,CAAC,MAAM,EAAE,CAAC,CAAC;gBAC7G,oDAAoD;gBACpD,IAAI,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC;oBACzB,IAAI,EAAE,CAAC,IAAI,KAAK,wBAAwB,EAAE,CAAC;wBACzC,MAAM,IAAI,GAAG,EAAE,CAAC,IAA0C,CAAC;wBAC3D,IAAI,OAAO,IAAI,EAAE,KAAK,KAAK,QAAQ,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;4BAC/F,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;wBAChD,CAAC;oBACH,CAAC;yBAAM,IAAI,EAAE,CAAC,IAAI,KAAK,uBAAuB,EAAE,CAAC;wBAC/C,MAAM,IAAI,GAAI,EAAwB,CAAC,IAAI,CAAC;wBAC5C,MAAM,GAAG,GAAI,EAAiD,CAAC,IAAI,EAAE,OAAO,CAAC;wBAC7E,IAAI,IAAI,KAAK,aAAa;4BAAE,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,IAAI,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;6BAC9F,IAAI,IAAI,KAAK,aAAa;4BAAE,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,IAAI,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;oBACxG,CAAC;gBACH,CAAC;gBACD,MAAM,CAAC,CAAC,SAAS,CAAC;gBAClB,6DAA6D;gBAC7D,IAAI,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,KAAK,WAAW,EAAE,CAAC;oBAC7D,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC;oBACzB,OAAO;gBACT,CAAC;gBACD,MAAM,KAAK,GAAI,CAA6E,CAAC,KAAK,EAAE,KAAK,CAAC;gBAC1G,IAAI,KAAK;oBAAE,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,YAAY,IAAI,CAAC,EAAE,CAAC,CAAC;gBACpH,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAE,CAA+B,CAAC,WAAW,IAAI,QAAQ,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;gBAC3H,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC;YAC3B,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,oCAAoC;gBACpC,IAAI,IAAI,CAAC,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC;oBAC/B,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;oBAC/D,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC;gBAC3B,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;oBACxG,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;gBACxB,CAAC;YACH,CAAC;QACH,CAAC,CAAC,EAAE,CAAC;IACP,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,4BAA4B;QACjD,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,MAAM,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YACvC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACxB,CAAC;IACH,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolveBackend.d.ts","sourceRoot":"","sources":["../../../src/core/agents/resolveBackend.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAE5C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAKtD,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAElB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oFAAoF;IACpF,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,SAAS,EAAE,MAAM,KAAK,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"resolveBackend.d.ts","sourceRoot":"","sources":["../../../src/core/agents/resolveBackend.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAE5C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAKtD,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAElB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oFAAoF;IACpF,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,SAAS,EAAE,MAAM,KAAK,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE;IAAE,KAAK,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAAC,IAAI,EAAE,KAAK,GAAG,KAAK,CAAA;CAAE,EAAE,GAAG,EAAE,UAAU,GAAG,YAAY,CAoBtH"}
|
|
@@ -6,20 +6,19 @@ export function resolveBackend(cfg, ctx) {
|
|
|
6
6
|
const key = `${cfg.agent}-${cfg.mode}`;
|
|
7
7
|
switch (key) {
|
|
8
8
|
case 'claude-acp':
|
|
9
|
-
return new AcpBackend({ tool: 'claude', sessionName: ctx.sessionName, cwd: ctx.cwd, extraEnv: ctx.acpExtraEnv, logsDir: ctx.logsDir, resumeSessionId: ctx.resumeSessionId });
|
|
9
|
+
return new AcpBackend({ tool: 'claude', sessionName: ctx.sessionName, cwd: ctx.cwd, extraEnv: ctx.acpExtraEnv, logsDir: ctx.logsDir, resumeSessionId: ctx.resumeSessionId, project: ctx.project });
|
|
10
10
|
case 'openai-sdk':
|
|
11
11
|
return new OpenAiAgentBackend({
|
|
12
12
|
model: ctx.makeModel(),
|
|
13
13
|
cwd: ctx.cwd,
|
|
14
14
|
project: ctx.project,
|
|
15
15
|
sessionFile: ctx.sessionFile,
|
|
16
|
-
memoryFile: ctx.memoryFile,
|
|
17
16
|
});
|
|
18
17
|
case 'claude-sdk':
|
|
19
|
-
return new ClaudeSdkBackend({ model: ctx.modelName, cwd: ctx.cwd, project: ctx.project
|
|
18
|
+
return new ClaudeSdkBackend({ model: ctx.modelName, cwd: ctx.cwd, project: ctx.project });
|
|
20
19
|
case 'openai-acp':
|
|
21
20
|
// codex 是 openai 的 CLI;acp/子进程模式 = codex app-server(JSON-RPC over stdio)。
|
|
22
|
-
return new CodexAppServerBackend({ cwd: ctx.cwd, project: ctx.project, model: ctx.modelName
|
|
21
|
+
return new CodexAppServerBackend({ cwd: ctx.cwd, project: ctx.project, model: ctx.modelName });
|
|
23
22
|
default:
|
|
24
23
|
throw new Error(`未支持的后端组合: ${key}`);
|
|
25
24
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolveBackend.js","sourceRoot":"","sources":["../../../src/core/agents/resolveBackend.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"resolveBackend.js","sourceRoot":"","sources":["../../../src/core/agents/resolveBackend.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAiB7D,MAAM,UAAU,cAAc,CAAC,GAAwD,EAAE,GAAe;IACtG,MAAM,GAAG,GAAG,GAAG,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,IAAI,EAAW,CAAC;IAChD,QAAQ,GAAG,EAAE,CAAC;QACZ,KAAK,YAAY;YACf,OAAO,IAAI,UAAU,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,CAAC,WAAW,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,CAAC,WAAW,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,eAAe,EAAE,GAAG,CAAC,eAAe,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QACrM,KAAK,YAAY;YACf,OAAO,IAAI,kBAAkB,CAAC;gBAC5B,KAAK,EAAE,GAAG,CAAC,SAAS,EAAE;gBACtB,GAAG,EAAE,GAAG,CAAC,GAAG;gBACZ,OAAO,EAAE,GAAG,CAAC,OAAO;gBACpB,WAAW,EAAE,GAAG,CAAC,WAAW;aAC7B,CAAC,CAAC;QACL,KAAK,YAAY;YACf,OAAO,IAAI,gBAAgB,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,SAAS,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;QAC5F,KAAK,YAAY;YACf,0EAA0E;YAC1E,OAAO,IAAI,qBAAqB,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC;QACjG;YACE,MAAM,IAAI,KAAK,CAAC,aAAa,GAAa,EAAE,CAAC,CAAC;IAClD,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export type CodegraphRuleAction = 'created' | 'appended' | 'updated' | 'unchanged';
|
|
2
|
+
/**
|
|
3
|
+
* 幂等确保 `<repoDir>/.claude/CLAUDE.md` 含 codegraph 托管块。
|
|
4
|
+
* @returns 发生的动作(created=新建文件 / appended=追加块 / updated=更新块 / unchanged=已最新)。
|
|
5
|
+
*/
|
|
6
|
+
export declare function ensureCodegraphRuleBlock(repoDir: string): CodegraphRuleAction;
|
|
7
|
+
//# sourceMappingURL=claudeMdRule.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claudeMdRule.d.ts","sourceRoot":"","sources":["../../../src/core/codegraph/claudeMdRule.ts"],"names":[],"mappings":"AAwDA,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,WAAW,CAAC;AAEnF;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,mBAAmB,CAuB7E"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module core/codegraph/claudeMdRule
|
|
3
|
+
* @description 往项目 `.claude/CLAUDE.md` 幂等注入「读代码优先用代码图谱」的托管块。
|
|
4
|
+
* 只管理 START..END 标记之间的内容:用户自己的内容原样保留;块不存在→追加、
|
|
5
|
+
* 已存在→按当前版本更新、无文件→新建。覆盖新建 / 升级老项目 / 日后改规则三种场景。
|
|
6
|
+
* @layer core
|
|
7
|
+
* @boundedContext codegraph
|
|
8
|
+
*/
|
|
9
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
10
|
+
import { dirname, join } from 'node:path';
|
|
11
|
+
const START = '<!-- sps:codegraph:start — auto-managed by sps (regenerated on init/doctor); edit outside these markers -->';
|
|
12
|
+
const END = '<!-- sps:codegraph:end -->';
|
|
13
|
+
/** 块内正文(不含标记)。改规则改这里,重跑 init/doctor 即更新到所有项目。 */
|
|
14
|
+
const RULE = `## Reading code (token-efficient — do this)
|
|
15
|
+
|
|
16
|
+
This project may have a **code graph** (a structural index of every symbol and
|
|
17
|
+
call edge). When it exists, use it INSTEAD of reading files one-by-one — one
|
|
18
|
+
query returns the relevant symbols, their source, and call paths, far cheaper in
|
|
19
|
+
tokens than grepping and reading whole files. Run everything below from the
|
|
20
|
+
project root (your cwd).
|
|
21
|
+
|
|
22
|
+
**When to use it — follow this order:**
|
|
23
|
+
|
|
24
|
+
1. **At task start — orient.** Before opening any file, run
|
|
25
|
+
\`sps graph explore <keywords from the card>\` to pull the subsystem you're
|
|
26
|
+
about to touch (entry points + related symbols + verbatim source + call paths)
|
|
27
|
+
in a single call.
|
|
28
|
+
2. **Before changing a shared symbol — check blast radius.** Run
|
|
29
|
+
\`sps graph impact <symbol>\` (or \`sps graph callers <symbol>\`) to see everything
|
|
30
|
+
that depends on it, so you don't silently break callers.
|
|
31
|
+
3. **To locate something — query, don't grep.** Use \`sps graph query <name>\` or
|
|
32
|
+
\`sps graph node <symbol>\` instead of scanning files.
|
|
33
|
+
|
|
34
|
+
**Commands:**
|
|
35
|
+
|
|
36
|
+
- \`sps graph explore <keywords>\` — an area: entry points + related symbols + source + call paths
|
|
37
|
+
- \`sps graph node <symbol>\` — one symbol's definition + its callers/callees
|
|
38
|
+
- \`sps graph query <name>\` — find symbols by name
|
|
39
|
+
- \`sps graph callers <symbol>\` / \`sps graph impact <symbol>\` — who calls it / what a change affects
|
|
40
|
+
- \`sps graph status\` — whether the graph is built and how large
|
|
41
|
+
|
|
42
|
+
**Important:**
|
|
43
|
+
|
|
44
|
+
- The graph reflects the code **as of the last completed task** — it does NOT yet
|
|
45
|
+
include the changes you make in the *current* task. That's fine for orienting on
|
|
46
|
+
existing code. If you need it to reflect your own just-written code mid-task, run
|
|
47
|
+
\`sps graph sync\` first.
|
|
48
|
+
- If the graph isn't built (\`sps graph status\` says so) or it misses what you need,
|
|
49
|
+
fall back to reading files directly.`;
|
|
50
|
+
function escapeRegex(s) {
|
|
51
|
+
return s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* 幂等确保 `<repoDir>/.claude/CLAUDE.md` 含 codegraph 托管块。
|
|
55
|
+
* @returns 发生的动作(created=新建文件 / appended=追加块 / updated=更新块 / unchanged=已最新)。
|
|
56
|
+
*/
|
|
57
|
+
export function ensureCodegraphRuleBlock(repoDir) {
|
|
58
|
+
const claudeMd = join(repoDir, '.claude', 'CLAUDE.md');
|
|
59
|
+
const block = `${START}\n\n${RULE}\n\n${END}`;
|
|
60
|
+
if (!existsSync(claudeMd)) {
|
|
61
|
+
mkdirSync(dirname(claudeMd), { recursive: true });
|
|
62
|
+
writeFileSync(claudeMd, `# Project Rules (Claude Code Worker)\n\n${block}\n`);
|
|
63
|
+
return 'created';
|
|
64
|
+
}
|
|
65
|
+
const content = readFileSync(claudeMd, 'utf-8');
|
|
66
|
+
const re = new RegExp(`${escapeRegex(START)}[\\s\\S]*?${escapeRegex(END)}`);
|
|
67
|
+
if (re.test(content)) {
|
|
68
|
+
const next = content.replace(re, block);
|
|
69
|
+
if (next === content)
|
|
70
|
+
return 'unchanged';
|
|
71
|
+
writeFileSync(claudeMd, next);
|
|
72
|
+
return 'updated';
|
|
73
|
+
}
|
|
74
|
+
// 没有块 → 在文件末尾追加(保留用户已有内容)。
|
|
75
|
+
const sep = content.endsWith('\n') ? '\n' : '\n\n';
|
|
76
|
+
writeFileSync(claudeMd, `${content}${sep}${block}\n`);
|
|
77
|
+
return 'appended';
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=claudeMdRule.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claudeMdRule.js","sourceRoot":"","sources":["../../../src/core/codegraph/claudeMdRule.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAE1C,MAAM,KAAK,GAAG,6GAA6G,CAAC;AAC5H,MAAM,GAAG,GAAG,4BAA4B,CAAC;AAEzC,iDAAiD;AACjD,MAAM,IAAI,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uCAmC0B,CAAC;AAExC,SAAS,WAAW,CAAC,CAAS;IAC5B,OAAO,CAAC,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;AAClD,CAAC;AAID;;;GAGG;AACH,MAAM,UAAU,wBAAwB,CAAC,OAAe;IACtD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;IACvD,MAAM,KAAK,GAAG,GAAG,KAAK,OAAO,IAAI,OAAO,GAAG,EAAE,CAAC;IAE9C,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAClD,aAAa,CAAC,QAAQ,EAAE,2CAA2C,KAAK,IAAI,CAAC,CAAC;QAC9E,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAChD,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,aAAa,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC5E,IAAI,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QACxC,IAAI,IAAI,KAAK,OAAO;YAAE,OAAO,WAAW,CAAC;QACzC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QAC9B,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,2BAA2B;IAC3B,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;IACnD,aAAa,CAAC,QAAQ,EAAE,GAAG,OAAO,GAAG,GAAG,GAAG,KAAK,IAAI,CAAC,CAAC;IACtD,OAAO,UAAU,CAAC;AACpB,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module core/memory2/capture
|
|
3
|
+
* @description 自动捕获(设计 §3 写路 · 默认开):派活前起订 AgentBackend.subscribe 的归一化
|
|
4
|
+
* WorkerOutputEvent,按 project:cardId 缓冲;卡片完成(StageEngine.releaseAndDone)
|
|
5
|
+
* 抽结论段 → 去重 → 落 store(source: capture)。**只吃归一化事件,绝不碰 jsonl**(红线)。
|
|
6
|
+
* 进程内单例登记表:worker-manager(写)与 StageEngine(读+提交)同进程共享(executors.ts)。
|
|
7
|
+
* SPS_MEMORY_CAPTURE=off 关。
|
|
8
|
+
* @layer core
|
|
9
|
+
* @boundedContext memory
|
|
10
|
+
*/
|
|
11
|
+
import type { WorkerOutputEvent } from '../agents/AgentBackend.js';
|
|
12
|
+
import type { MemoryEntry } from './types.js';
|
|
13
|
+
/** 归一化文本用于去重:小写、去 markdown 标点、压空白。 */
|
|
14
|
+
export declare function normalizeForDedup(s: string): string;
|
|
15
|
+
/** 派活前起订:建空 buffer(幂等)。off 时不建(flush 会返 skipped)。 */
|
|
16
|
+
export declare function captureStart(project: string, cardId: string): void;
|
|
17
|
+
/** 绑退订函数(subscribe 的返回值);flush/discard 时自动调用。buffer 不存在则立即退订。 */
|
|
18
|
+
export declare function captureBindUnsub(project: string, cardId: string, unsub: () => void): void;
|
|
19
|
+
/** 把一条归一化事件喂进 buffer(text 累积;result 记为最终结论)。无 buffer 则忽略。 */
|
|
20
|
+
export declare function captureNote(project: string, cardId: string, ev: WorkerOutputEvent): void;
|
|
21
|
+
/** 丢弃 buffer 不提交(失败/取消卡片用),并退订。 */
|
|
22
|
+
export declare function captureDiscard(project: string, cardId: string): void;
|
|
23
|
+
export type CaptureOutcome = {
|
|
24
|
+
saved: MemoryEntry;
|
|
25
|
+
} | {
|
|
26
|
+
skipped: 'off' | 'empty' | 'too-short' | 'duplicate' | 'redacted';
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* 卡片完成时调用:抽结论 → 去重(vs 本项目已有)→ 落 store(source: capture, salience 2)→ 重建 digest。
|
|
30
|
+
* 无论结果都清 buffer。捕获层任何异常都不该阻断卡片完成(调用方仍应 try/catch 兜底)。
|
|
31
|
+
*/
|
|
32
|
+
export declare function captureFlush(project: string, cardId: string): CaptureOutcome;
|
|
33
|
+
//# sourceMappingURL=capture.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capture.d.ts","sourceRoot":"","sources":["../../../src/core/memory2/capture.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAKnE,OAAO,KAAK,EAAE,WAAW,EAAY,MAAM,YAAY,CAAC;AAiBxD,sCAAsC;AACtC,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED,qDAAqD;AACrD,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAGlE;AAED,iEAAiE;AACjE,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,IAAI,GAAG,IAAI,CAIzF;AAED,6DAA6D;AAC7D,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,iBAAiB,GAAG,IAAI,CAKxF;AAED,mCAAmC;AACnC,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAIpE;AAmBD,MAAM,MAAM,cAAc,GACtB;IAAE,KAAK,EAAE,WAAW,CAAA;CAAE,GACtB;IAAE,OAAO,EAAE,KAAK,GAAG,OAAO,GAAG,WAAW,GAAG,WAAW,GAAG,UAAU,CAAA;CAAE,CAAC;AAE1E;;;GAGG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,cAAc,CAwB5E"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { isMemoryOff } from './config.js';
|
|
2
|
+
import { writeMemoryIndex } from './digest.js';
|
|
3
|
+
import { RedactedEntryDropped } from './redact.js';
|
|
4
|
+
import { listEntries, saveEntry } from './store.js';
|
|
5
|
+
const buffers = new Map();
|
|
6
|
+
const key = (project, cardId) => `${project}::${cardId}`;
|
|
7
|
+
function isOff() {
|
|
8
|
+
// mode=none 整体关,或显式 SPS_MEMORY_CAPTURE=off 细关。
|
|
9
|
+
return isMemoryOff() || (process.env.SPS_MEMORY_CAPTURE ?? '').toLowerCase() === 'off';
|
|
10
|
+
}
|
|
11
|
+
/** 归一化文本用于去重:小写、去 markdown 标点、压空白。 */
|
|
12
|
+
export function normalizeForDedup(s) {
|
|
13
|
+
return s.toLowerCase().replace(/[#*`_>\-\s]+/g, ' ').replace(/[^\p{L}\p{N} ]+/gu, '').trim();
|
|
14
|
+
}
|
|
15
|
+
/** 派活前起订:建空 buffer(幂等)。off 时不建(flush 会返 skipped)。 */
|
|
16
|
+
export function captureStart(project, cardId) {
|
|
17
|
+
if (isOff())
|
|
18
|
+
return;
|
|
19
|
+
buffers.set(key(project, cardId), { texts: [] });
|
|
20
|
+
}
|
|
21
|
+
/** 绑退订函数(subscribe 的返回值);flush/discard 时自动调用。buffer 不存在则立即退订。 */
|
|
22
|
+
export function captureBindUnsub(project, cardId, unsub) {
|
|
23
|
+
const buf = buffers.get(key(project, cardId));
|
|
24
|
+
if (buf)
|
|
25
|
+
buf.unsub = unsub;
|
|
26
|
+
else
|
|
27
|
+
unsub();
|
|
28
|
+
}
|
|
29
|
+
/** 把一条归一化事件喂进 buffer(text 累积;result 记为最终结论)。无 buffer 则忽略。 */
|
|
30
|
+
export function captureNote(project, cardId, ev) {
|
|
31
|
+
const buf = buffers.get(key(project, cardId));
|
|
32
|
+
if (!buf)
|
|
33
|
+
return;
|
|
34
|
+
if (ev.kind === 'text' && ev.text.trim())
|
|
35
|
+
buf.texts.push(ev.text);
|
|
36
|
+
else if (ev.kind === 'result' && ev.status === 'completed' && ev.text.trim())
|
|
37
|
+
buf.result = ev.text;
|
|
38
|
+
}
|
|
39
|
+
/** 丢弃 buffer 不提交(失败/取消卡片用),并退订。 */
|
|
40
|
+
export function captureDiscard(project, cardId) {
|
|
41
|
+
const k = key(project, cardId);
|
|
42
|
+
buffers.get(k)?.unsub?.();
|
|
43
|
+
buffers.delete(k);
|
|
44
|
+
}
|
|
45
|
+
const MIN_LEN = 30;
|
|
46
|
+
const MAX_BODY = 1500;
|
|
47
|
+
/** 从 buffer 抽结论:优先 result,退而取最后一段实质 text。 */
|
|
48
|
+
function distill(buf) {
|
|
49
|
+
const raw = (buf.result ?? [...buf.texts].reverse().find((t) => t.trim().length >= MIN_LEN) ?? '').trim();
|
|
50
|
+
if (raw.length < MIN_LEN)
|
|
51
|
+
return null;
|
|
52
|
+
return raw.length > MAX_BODY ? `${raw.slice(0, MAX_BODY)}…` : raw;
|
|
53
|
+
}
|
|
54
|
+
/** 结论首行/首句当标题(截断 80)。 */
|
|
55
|
+
function titleOf(body) {
|
|
56
|
+
const first = body.split(/\n/).find((l) => l.trim()) ?? body;
|
|
57
|
+
const t = first.replace(/^#+\s*/, '').trim();
|
|
58
|
+
return t.length > 80 ? `${t.slice(0, 80)}…` : t;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* 卡片完成时调用:抽结论 → 去重(vs 本项目已有)→ 落 store(source: capture, salience 2)→ 重建 digest。
|
|
62
|
+
* 无论结果都清 buffer。捕获层任何异常都不该阻断卡片完成(调用方仍应 try/catch 兜底)。
|
|
63
|
+
*/
|
|
64
|
+
export function captureFlush(project, cardId) {
|
|
65
|
+
const k = key(project, cardId);
|
|
66
|
+
const buf = buffers.get(k);
|
|
67
|
+
buffers.delete(k);
|
|
68
|
+
if (!buf)
|
|
69
|
+
return { skipped: 'off' };
|
|
70
|
+
buf.unsub?.();
|
|
71
|
+
const body = distill(buf);
|
|
72
|
+
if (!body)
|
|
73
|
+
return { skipped: buf.texts.length || buf.result ? 'too-short' : 'empty' };
|
|
74
|
+
const ref = { scope: 'project', project };
|
|
75
|
+
const norm = normalizeForDedup(body);
|
|
76
|
+
for (const e of listEntries(ref)) {
|
|
77
|
+
if (normalizeForDedup(e.body) === norm)
|
|
78
|
+
return { skipped: 'duplicate' };
|
|
79
|
+
}
|
|
80
|
+
try {
|
|
81
|
+
const saved = saveEntry(ref, { title: titleOf(body), body, category: 'note', source: 'capture', salience: 2 });
|
|
82
|
+
writeMemoryIndex(ref);
|
|
83
|
+
return { saved };
|
|
84
|
+
}
|
|
85
|
+
catch (err) {
|
|
86
|
+
if (err instanceof RedactedEntryDropped)
|
|
87
|
+
return { skipped: 'redacted' };
|
|
88
|
+
throw err;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=capture.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capture.js","sourceRoot":"","sources":["../../../src/core/memory2/capture.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export type MemoryRuleAction = 'created' | 'appended' | 'updated' | 'unchanged';
|
|
2
|
+
/**
|
|
3
|
+
* 幂等确保 `<repoDir>/.claude/CLAUDE.md` 含记忆托管块。
|
|
4
|
+
* @returns created=新建文件 / appended=追加块 / updated=更新块 / unchanged=已最新。
|
|
5
|
+
*/
|
|
6
|
+
export declare function ensureMemoryRuleBlock(repoDir: string): MemoryRuleAction;
|
|
7
|
+
//# sourceMappingURL=claudeMdRule.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claudeMdRule.d.ts","sourceRoot":"","sources":["../../../src/core/memory2/claudeMdRule.ts"],"names":[],"mappings":"AA2CA,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,WAAW,CAAC;AAEhF;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,gBAAgB,CAsBvE"}
|